Example #1
0
        public WaveformReader(WaweformFormat aFormat, string aFilePath, int aBasePosition, bool aIsOnMemory, AByteArray.Endian aEndian)
        {
            objectLock = new object();

            format       = aFormat;
            filePath     = aFilePath;
            basePosition = aBasePosition;

            if (aIsOnMemory == true || LENGTH_BUFFER == 0)
            {
                bufferLength = aFormat.samples;
            }
            else
            {
                bufferLength = LENGTH_BUFFER;
            }

            sampleArray = new float[format.channels][];

            for (int i = 0; i < format.channels; i++)
            {
                sampleArray[i] = new float[bufferLength];
            }

            startPosition = int.MaxValue;
            endian        = aEndian;
        }
Example #2
0
        public WaveformData(WaweformFormat aFormat, AByteArray aByteArray, int aBasePosition)
        {
            format          = aFormat;
            sampleByteArray = new sbyte[format.channels][];

            for (int i = 0; i < format.channels; i++)
            {
                sampleByteArray[i] = new sbyte[format.samples];
            }

            ReadSampleArray(aByteArray, aBasePosition);
        }
Example #3
0
        public WaveformReaderPcm(RiffChunkListSdta[] sdtaBodyList, ShdrData shdrData, int startAddrsOffset, int endAddrsOffset, string aName)
            : base()
        {
            string name     = aName;
            int    position = ( int )sdtaBodyList[0].smplBody.position + ( int )(shdrData.start + startAddrsOffset) * 2;
            int    length   = ( int )((shdrData.end + endAddrsOffset) - (shdrData.start + startAddrsOffset)) * 2;

            int channels   = 1;
            int sampleRate = ( int )shdrData.sampleRate;
            int sampleBits = 16;
            int samples    = length / channels;

            format = new WaweformFormat(channels, samples, sampleRate, sampleBits);
            reader = new WaveformReader(format, name, position, true, AByteArray.Endian.Little);
        }
Example #4
0
        public WaveformReaderPcm(RiffWaveRiff aRiffWaveRiff, bool aIsOnMemory)
        {
            RiffWaveData lRiffWaveData = ( RiffWaveData )aRiffWaveRiff.GetChunk(RiffWaveData.ID);
            int          lPosition     = ( int )lRiffWaveData.position;
            int          lLength       = ( int )lRiffWaveData.Size;

            RiffWaveFmt_ lRiffWaveFmt_ = ( RiffWaveFmt_ )aRiffWaveRiff.GetChunk(RiffWaveFmt_.ID);
            int          lChannels     = lRiffWaveFmt_.channels;
            int          lSampleRate   = ( int )lRiffWaveFmt_.samplesPerSec;
            int          lSampleBits   = lRiffWaveFmt_.bitsPerSample;
            int          lSamples      = lLength / (lSampleBits / 8) / lChannels;

            format = new WaweformFormat(lChannels, lSamples, lSampleRate, lSampleBits);
            reader = new WaveformReader(format, aRiffWaveRiff.name, lPosition, aIsOnMemory, AByteArray.Endian.Little);
        }
Example #5
0
        public WaveformReaderPcm(FormAiffForm aFormFile, bool aIsOnMemory)
        {
            FormAiffSsnd lSsndChunk = ( FormAiffSsnd )aFormFile.GetChunk(FormAiffSsnd.ID);
            int          lPosition  = ( int )(lSsndChunk.position + lSsndChunk.offset + 8);
            int          lLength    = lSsndChunk.dataSize;

            FormAiffComm lChunkComm  = ( FormAiffComm )aFormFile.GetChunk(FormAiffComm.ID);
            int          lChannels   = lChunkComm.numberOfChannels;
            int          lSampleRate = ( int )lChunkComm.sampleRate;
            int          lSampleBits = lChunkComm.bitsPerSamples;
            int          lSamples    = lLength / (lSampleBits / 8) / lChannels;

            format = new WaweformFormat(lChannels, lSamples, lSampleRate, lSampleBits);
            reader = new WaveformReader(format, aFormFile.name, lPosition, aIsOnMemory, AByteArray.Endian.Big);
        }
Example #6
0
        public WaveformReaderPcm(RiffChunkListWave aWaveList, string aName)
            : base()
        {
            RiffDls_Fmt_ fmt_Chunk = aWaveList.fmt_Chunk;
            RiffDls_Data dataChunk = aWaveList.dataChunk;

            int position = ( int )dataChunk.position;
            int length   = ( int )dataChunk.Size;

            int channels   = fmt_Chunk.channles;
            int sampleRate = ( int )fmt_Chunk.samplesPerSec;
            int sampleBits = ( int )fmt_Chunk.bitsPerSample;
            int samples    = length / (sampleBits / 8) / channels;

            format = new WaweformFormat(channels, samples, sampleRate, sampleBits);
            reader = new WaveformReader(format, aName, position, true, AByteArray.Endian.Little);
        }
Example #7
0
        public WaveformPcm(RiffWaveRiff aRiffFile)
        {
            RiffWaveData lRiffWaveData = ( RiffWaveData )aRiffFile.GetChunk(RiffWaveData.ID);
            int          lPosition     = ( int )lRiffWaveData.position;
            int          lLength       = ( int )lRiffWaveData.Size;

            RiffWaveFmt_ lRiffWaveFmt_ = ( RiffWaveFmt_ )aRiffFile.GetChunk(RiffWaveFmt_.ID);
            int          lChannels     = lRiffWaveFmt_.channels;
            int          lSampleRate   = ( int )lRiffWaveFmt_.samplesPerSec;
            int          lSampleBits   = lRiffWaveFmt_.bitsPerSample;
            int          lSamples      = lLength / (lSampleBits / 8) / lChannels;

            format = new WaweformFormat(lChannels, lSamples, lSampleRate, lSampleBits);

            using (FileStream u = new FileStream(aRiffFile.name, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                AByteArray lByteArray = new ByteArrayLittle(u);
                data = new WaveformData(format, lByteArray, lPosition);
            }
        }
Example #8
0
        public WaveformPcm(FormAiffForm aFormFile)
        {
            FormAiffSsnd lSsndChunk = ( FormAiffSsnd )aFormFile.GetChunk(FormAiffSsnd.ID);
            int          lPosition  = ( int )(lSsndChunk.position + lSsndChunk.offset + 8);
            int          lLength    = lSsndChunk.dataSize;

            FormAiffComm lChunkComm  = ( FormAiffComm )aFormFile.GetChunk(FormAiffComm.ID);
            int          lChannels   = lChunkComm.numberOfChannels;
            int          lSampleRate = ( int )lChunkComm.sampleRate;
            int          lSampleBits = lChunkComm.bitsPerSamples;
            int          lSamples    = lLength / (lSampleBits / 8) / lChannels;

            format = new WaweformFormat(lChannels, lSamples, lSampleRate, lSampleBits);

            using (FileStream u = new FileStream(aFormFile.name, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                AByteArray lByteArray = new ByteArrayLittle(u);
                data = new WaveformData(format, lByteArray, lPosition);
            }
        }