#include #include #include WaveForm::WaveForm(String wavePathFileName) { initWaveForm(); wavePathFileName.lower(); if(!wavePathFileName.strstr(mExtensionString))wavePathFileName+=mExtensionString; mWavePathFileName=wavePathFileName; FileHandle waveFile(wavePathFileName,FileHandle::Read,FileHandle::ShareReadWrite); if(!waveFile.isOkay())return; waveFile.read((BYTE*)&mHeaderString,sizeof(mHeaderString)); waveFile.read((BYTE*)&mLengthData,sizeof(mLengthData)); waveFile.read((BYTE*)&mSubHeaderString,sizeof(mSubHeaderString)); mFormatChunk<>waveFile; mDataChunk.length(mSampleData.numSamples()); for(chunkIndex=0;chunkIndex>waveFile; mDataChunk>>waveFile; mSampleData>>waveFile; return waveFile.flushBuffer(); } bool WaveForm::save(String wavePathFileName,const PureSample &somePureSample,DWORD samplesPerSecond,DWORD avgBytesPerSecond) { DWORD waveFileLength((long)sizeof(mHeaderString)+(long)sizeof(mLengthData)+(long)sizeof(mSubHeaderString)+(long)sizeof(FormatChunk)+(long)sizeof(DataChunk)+(long)somePureSample.numSamples()); wavePathFileName.upper(); if(!wavePathFileName.strstr(mExtensionString))wavePathFileName+=mExtensionString; MemFile waveFile(wavePathFileName,waveFileLength); mLengthData=somePureSample.numSamples()+sizeof(mSubHeaderString)+mFormatChunk.size()+mDataChunk.size(); for(short chunkIndex=0;chunkIndex>waveFile; mDataChunk.length(somePureSample.numSamples()); for(chunkIndex=0;chunkIndex>waveFile; mDataChunk>>waveFile; somePureSample>>waveFile; return waveFile.flushBuffer(); } String WaveForm::toString(void)const { String strWaveForm; strWaveForm+=String(""); strWaveForm+=String(" Header=")+String(mHeaderString).quotes(); strWaveForm+=String(" LengthData=")+String().fromInt(mLengthData).quotes(); strWaveForm+=String(" SubHeader=")+String(mSubHeaderString).quotes(); strWaveForm+=String(" ")+mFormatChunk.toString(); for(int index=0;index&)mGenericChunks)[index].chunkID().toString(); } strWaveForm+=mDataChunk.toString(); strWaveForm+=mSampleData.toString(); strWaveForm+=String(" WavePathFileName=")+mWavePathFileName.quotes(); strWaveForm+=String(" Extension=")+mExtensionString.quotes(); strWaveForm+=String(" WaveString=")+mWaveString.quotes(); strWaveForm+=String(" RiffString=")+mRiffString.quotes(); strWaveForm+=String(""); return strWaveForm; }