#include #include #include #include WaveForm::WaveForm(const String &wavePathFileName) { bool result = open(wavePathFileName); } /* bool WaveForm::open(String wavePathFileName) { initWaveForm(); wavePathFileName.lower(); if(!wavePathFileName.strstr(mExtensionString))wavePathFileName+=mExtensionString; mWavePathFileName=wavePathFileName; FileHandle waveFile(wavePathFileName,FileHandle::Read,FileHandle::ShareReadWrite); if(!waveFile.isOkay())return false; if(!waveFile.read((BYTE*)&mHeaderString,sizeof(mHeaderString)))return false; if(!waveFile.read((BYTE*)&mLengthData,sizeof(mLengthData)))return false; if(!waveFile.read((BYTE*)&mSubHeaderString,sizeof(mSubHeaderString)))return false; if(!mFormatChunk.read(waveFile))return false; while(true) { ChunkID chunkID; if(!chunkID.read(waveFile))return false; if(FileHandle::ErrorReturn==waveFile.seek(-chunkID.size(),FileHandle::SeekCurrent))return false; if(chunkID==String("data")) { if(!mDataChunk.read(waveFile))return false; break; } mGenericChunks.insert(&GenericChunk()); mGenericChunks[mGenericChunks.size()-1].read(waveFile); } mSampleData.initialize(PureSampleEx::BitsPerSample(mFormatChunk.bitsPerSample()),mDataChunk.length(),PureSampleEx::ParamIsSizeBytes); if(!mSampleData.read(waveFile))return false; waveFile.close(); return mSampleData.getNumSamples()?true:false; } */ bool WaveForm::open(String wavePathFileName) { if(wavePathFileName.isNull())return false; wavePathFileName.lower(); if(!wavePathFileName.strstr(mExtensionString))wavePathFileName+=mExtensionString; mWavePathFileName=wavePathFileName; FileHandle waveFile(wavePathFileName,FileHandle::Read,FileHandle::ShareReadWrite); if(!read(waveFile))return false; waveFile.close(); return mSampleData.getNumSamples()?true:false; } WaveForm WaveForm::operator+(const WaveForm &someWaveForm) { WaveForm waveForm(*this); waveForm+=someWaveForm; return waveForm; } WaveForm &WaveForm::operator=(const WaveForm &someWaveForm) { initWaveForm(); mLengthData=someWaveForm.mLengthData; mFormatChunk=someWaveForm.mFormatChunk; mDataChunk=someWaveForm.mDataChunk; mSampleData=someWaveForm.mSampleData; return *this; } WaveForm &WaveForm::operator+=(const WaveForm &someWaveForm) { if(mLengthData").append(crlf); strWaveForm.append(" Header=").append(String(mHeaderString).quotes()).append(crlf); strWaveForm.append(" LengthData=").append(String().fromInt(mLengthData).quotes()).append(crlf); strWaveForm.append(" SubHeader=").append(String(mSubHeaderString).quotes()).append(crlf); strWaveForm.append(" ").append(mFormatChunk.toString()).append(crlf); for(int index=0;index&)mGenericChunks)[index].chunkID().toString()).append(crlf); } strWaveForm.append(mDataChunk.toString()).append(crlf); strWaveForm.append(" WavePathFileName=").append(mWavePathFileName.quotes()).append(crlf); strWaveForm.append(" Extension=").append(mExtensionString.quotes()).append(crlf); strWaveForm.append(" WaveString=").append(mWaveString.quotes()).append(crlf); strWaveForm.append(" RiffString=").append(mRiffString.quotes()).append(crlf); strWaveForm.append("").append(crlf); return strWaveForm.toString(); } /* 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+=String(" WavePathFileName=")+mWavePathFileName.quotes(); strWaveForm+=String(" Extension=")+mExtensionString.quotes(); strWaveForm+=String(" WaveString=")+mWaveString.quotes(); strWaveForm+=String(" RiffString=")+mRiffString.quotes(); strWaveForm+=String(""); return strWaveForm; } */