public RIFFHeader(int format, int channels, int bitsPerSample, int sampleRate, int numSamples) { _tag = RIFFTag; _waveTag = WAVETag; _fmtChunk = new fmtChunk(format, channels, bitsPerSample, sampleRate); uint dataLen = (uint)(numSamples * _fmtChunk._blockAlign); _dataChunk = new dataChunk(dataLen); _length = (dataLen + Size) - 8; }
public RIFFHeader(VoidPtr wav) { _tag = wav[0, 4]; int format, channels, bitsPerSample, sampleRate, numSamples; _waveTag = WAVETag; _fmtChunk = new fmtChunk(1, 1, 1, 1); uint dataLen = ( uint )(1 * _fmtChunk._blockAlign); _dataChunk = new dataChunk(dataLen); _length = (dataLen + Size) - 8; }
internal PCMStream(FileMap map) { _sourceMap = map; RIFFHeader *header = (RIFFHeader *)_sourceMap.Address; //May be more subchunks between RIFF and data, so search for data. dataChunk realDataChunk = new dataChunk(); VoidPtr dataPtr = 0; for (int i = 0; i < _sourceMap.Length; i++) { byte *dat = (byte *)_sourceMap.Address.address; dat += i; if (i == 0xa6) { i = 0xa6; } if (*dat == 'd') { if (*(++dat) == 'a' && *(++dat) == 't' && *(++dat) == 'a') { realDataChunk._chunkTag = *( uint * )dat - 3; realDataChunk._chunkSize = *( uint * )(dat + 1); dataPtr = dat + 5; break; } } } _bps = header->_fmtChunk._bitsPerSample; _numChannels = header->_fmtChunk._channels; _frequency = (int)header->_fmtChunk._samplesSec; _numSamples = (int)(realDataChunk._chunkSize / header->_fmtChunk._blockAlign); _source = ( short * )(dataPtr); _samplePos = 0; }
public RIFFHeader(int format, int channels, int bitsPerSample, int sampleRate, int numSamples) { _tag = RIFFTag; _waveTag = WAVETag; _fmtChunk = new fmtChunk(format, channels, bitsPerSample, sampleRate); uint dataLen = (uint)(numSamples * _fmtChunk._blockAlign); _length = 0; _dataChunk = new dataChunk(dataLen); _length = (dataLen + GetSize()) - 8; }