Add ability to read in samples.

This commit is contained in:
2024-08-13 15:46:25 -04:00
parent 9841092338
commit eea5a7c8bf
3 changed files with 117 additions and 335 deletions

View File

@@ -7,12 +7,25 @@
#include <common/string.hpp>
void DumpSamplesWORD(PureSampleEx &pureSample);
void DumpSamplesWORD(String &wavePathOuputFileName,PureSampleEx &pureSample);
void DumpSamples(String &wavePathOuputFileName, PureSampleEx &pureSample);
bool LoadSamples(String &samplePathInputFileName,PureSampleEx &pureSample);
bool LoadSamplesWORD(String &samplePathInputFileName,PureSampleEx &pureSample);
void PlaySample(SmartPointer<WaveForm> &waveForm);
void main()
{
String wavePathFileName3="f:\\AudioBounce.wav";
String wavePathFileName="f:\\AudioBounce.wav";
String wavePathOutputFileName="f:\\AudioBounce_AI.wav";
String samplePathOuputFileName = "c:\\work\\proto\\debug\\samples.csv";
String samplePathInputFileName="f:\\samples.audio.out.csv";
// int length = sizeof(SampleData);
// length = sizeof(int); // 4 BYTES 32 BITS
@@ -21,7 +34,8 @@ void main()
// length = sizeof(WORD); // 2 BYTES 16 BITS
SmartPointer<WaveForm> waveForm(::new WaveForm(wavePathFileName3),PointerDisposition::Delete);
// Load the WAV file
SmartPointer<WaveForm> waveForm(::new WaveForm(wavePathFileName),PointerDisposition::Delete);
::OutputDebugString((*waveForm).toString());
PureSampleEx &pureSample=waveForm->getPureSample();
@@ -29,6 +43,38 @@ void main()
DWORD numSamples=pureSample.getNumSamples();
PureSampleEx::BitsPerSample bitsPerSample=pureSample.getBitsPerSample();
// DumpSamples(samplePathOuputFileName,pureSample)
// PlaySample(waveForm);
LoadSamples(samplePathInputFileName,pureSample);
waveForm->save(wavePathOutputFileName);
// SmartPointer<PureWave> pureWave(new PureWave(),PointerDisposition::Delete);
// pureWave->play(*waveForm);
::OutputDebugString("Here");
}
void PlaySample(SmartPointer<WaveForm> &waveForm)
{
SmartPointer<PureWave> pureWave(new PureWave(),PointerDisposition::Delete);
pureWave->play(*waveForm);
}
bool LoadSamples(String &samplePathInputFileName, PureSampleEx &pureSample)
{
bool returnCode(false);
PureSampleEx::BitsPerSample bitsPerSample=pureSample.getBitsPerSample();
switch(bitsPerSample)
{
case PureSampleEx::Bit4 :
@@ -36,26 +82,76 @@ void main()
case PureSampleEx::Bit8 :
break;
case PureSampleEx::Bit16 :
DumpSamplesWORD(pureSample);
returnCode=LoadSamplesWORD(samplePathInputFileName,pureSample);
break;
case PureSampleEx::Bit32 :
break;
}
SmartPointer<PureWave> pureWave(new PureWave(),PointerDisposition::Delete);
pureWave->play(*waveForm);
::OutputDebugString("Here");
return returnCode;
}
void DumpSamplesWORD(PureSampleEx &pureSample)
bool LoadSamplesWORD(String &samplePathInputFileName,PureSampleEx &pureSample)
{
SmartPointer<FileIO> inFile(::new FileIO(samplePathInputFileName), PointerDisposition::Delete);
SmartPointer<String> strLine(:: new String(), PointerDisposition::Delete);
WORD *pSampleDataWORD=(WORD*)pureSample.getSampleData();
DWORD numSamples=pureSample.getNumSamples();
DWORD sampleIndex(0);
int lineCount=0;
while(inFile->readLine(*strLine))lineCount++;
lineCount--;
if(lineCount!=numSamples)
{
return false;
}
inFile->rewind();
lineCount=0;
while(inFile->readLine(*strLine))
{
if(0==lineCount)
{
lineCount++;
continue;
}
String strSampleNo=strLine->betweenString(0,',');
String strSample=strLine->betweenString(',',0);
WORD sample = strSample.toUShort();
pSampleDataWORD[sampleIndex++]=sample;
lineCount++;
}
::OutputDebugString(String().fromInt(lineCount-1));
inFile->close();
return true;
}
void DumpSamples(String &wavePathOuputFileName, PureSampleEx &pureSample)
{
PureSampleEx::BitsPerSample bitsPerSample=pureSample.getBitsPerSample();
switch(bitsPerSample)
{
case PureSampleEx::Bit4 :
break;
case PureSampleEx::Bit8 :
break;
case PureSampleEx::Bit16 :
DumpSamplesWORD(wavePathOuputFileName,pureSample);
break;
case PureSampleEx::Bit32 :
break;
}
}
void DumpSamplesWORD(String &wavePathOuputFileName, PureSampleEx &pureSample)
{
String crlf("\r\n");
SmartPointer<FileHandle> outFile(::new FileHandle("c:\\work\\proto\\debug\\samples.csv",FileHandle::Access::Write,FileHandle::Share::ShareNone,FileHandle::Mode::Create), PointerDisposition::Delete);
SmartPointer<FileHandle> outFile(::new FileHandle(wavePathOuputFileName,FileHandle::Access::Write,FileHandle::Share::ShareNone,FileHandle::Mode::Create), PointerDisposition::Delete);
outFile.disposition(PointerDisposition::Disposition::Delete);
outFile->disposition(FileHandle::Disposition::CloseHandle);

Binary file not shown.

View File

@@ -3,331 +3,16 @@
<pre>
<h1>Build Log</h1>
<h3>
--------------------Configuration: common - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP615.tmp" with contents
[
/nologo /Gz /MTd /GX /Zi /Od /I "\work" /I "\parts" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /D "WIN32" /FR"msvcobj/" /Fo"msvcobj/" /Fd"msvcobj/" /FD /I /work" /I /parts" /I /work" /I /parts" " " " " /c
"F:\work\common\accelerator.cpp"
"F:\work\common\Bitmap.cpp"
"F:\work\common\Bminfo.cpp"
"F:\work\common\Bmplnk.cpp"
"F:\work\common\Brush.cpp"
"F:\work\common\Btnlnk.cpp"
"F:\work\common\calendar.cpp"
"F:\work\common\Catmull.cpp"
"F:\work\common\Cbdata.cpp"
"F:\work\common\Cbdatahk.cpp"
"F:\work\common\Clipbrd.cpp"
"F:\work\common\Console.cpp"
"F:\work\common\Control.cpp"
"F:\work\common\Crsctrl.cpp"
"F:\work\common\Ddemsg.cpp"
"F:\work\common\Dib.cpp"
"F:\work\common\Diskinfo.cpp"
"F:\work\common\Drawbmp.cpp"
"F:\work\common\Dwindow.cpp"
"F:\work\common\elastic.cpp"
"F:\work\common\errormsg.cpp"
"F:\work\common\File.cpp"
"F:\work\common\Fileio.cpp"
"F:\work\common\Filemap.cpp"
"F:\work\common\Finddata.cpp"
"F:\work\common\Font.cpp"
"F:\work\common\gdipoint.cpp"
"F:\work\common\Guiwnd.cpp"
"F:\work\common\Hookproc.cpp"
"F:\work\common\Iconfrm.cpp"
"F:\work\common\Infowin.cpp"
"F:\work\common\Intel.cpp"
"F:\work\common\Iobuff.cpp"
"F:\work\common\Logowin.cpp"
"F:\work\common\Macro.cpp"
"F:\work\common\Math.cpp"
"F:\work\common\Mdifrm.cpp"
"F:\work\common\Mdiwin.cpp"
"F:\work\common\Memfile.cpp"
"F:\work\common\Mmtimer.cpp"
"F:\work\common\Odbutton.cpp"
"F:\work\common\Odlist.cpp"
"F:\work\common\Odlstalt.cpp"
"F:\work\common\Odlstchk.cpp"
"F:\work\common\opendlg.Cpp"
"F:\work\common\Openfile.cpp"
"F:\work\common\opndlgex.cpp"
"F:\work\common\Owner.cpp"
"F:\work\common\Pathfnd.cpp"
"F:\work\common\Point.cpp"
"F:\work\common\Process.cpp"
"F:\work\common\Profile.cpp"
"F:\work\common\Progress.cpp"
"F:\work\common\Purebmp.cpp"
"F:\work\common\Purebyte.cpp"
"F:\work\common\puredbl.cpp"
"F:\work\common\Puredwrd.cpp"
"F:\work\common\Purehdc.cpp"
"F:\work\common\puremenu.Cpp"
"F:\work\common\Purepal.cpp"
"F:\work\common\purewrd.cpp"
"F:\work\common\Pview.cpp"
"F:\work\common\Regkey.cpp"
"F:\work\common\resbmp.cpp"
"F:\work\common\Richedit.cpp"
"F:\work\common\rubber.cpp"
"F:\work\common\Sdate.cpp"
"F:\work\common\Smrtstrm.cpp"
"F:\work\common\snapshot.cpp"
"F:\work\common\static.cpp"
"F:\work\common\String.cpp"
"F:\work\common\Systime.cpp"
"F:\work\common\Vhandler.cpp"
"F:\work\common\Vxdctrl.cpp"
"F:\work\common\widestr.Cpp"
"F:\work\common\Window.cpp"
"F:\work\common\Wintimer.cpp"
]
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP615.tmp"
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP616.tmp" with contents
[
/nologo /Gz /MTd /GX /Zi /Od /I "\work" /I "\parts" /D "_WINDOWS" /D "__FLAT__" /D "STRICT" /D "WIN32" /FR"msvcobj/" /Fp"msvcobj/common.pch" /YX /Fo"msvcobj/" /Fd"msvcobj/" /FD /I /work" /I /parts" /I /work" /I /parts" " " " " /c
"F:\work\common\Bmdata.cpp"
]
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP616.tmp"
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP617.tmp" with contents
[
/nologo /out:"..\exe\mscommon.lib"
.\msvcobj\accelerator.obj
.\msvcobj\Bitmap.obj
.\msvcobj\Bmdata.obj
.\msvcobj\Bminfo.obj
.\msvcobj\Bmplnk.obj
.\msvcobj\Brush.obj
.\msvcobj\Btnlnk.obj
.\msvcobj\calendar.obj
.\msvcobj\Catmull.obj
.\msvcobj\Cbdata.obj
.\msvcobj\Cbdatahk.obj
.\msvcobj\Clipbrd.obj
.\msvcobj\Console.obj
.\msvcobj\Control.obj
.\msvcobj\Crsctrl.obj
.\msvcobj\Ddemsg.obj
.\msvcobj\Dib.obj
.\msvcobj\Diskinfo.obj
.\msvcobj\Drawbmp.obj
.\msvcobj\Dwindow.obj
.\msvcobj\elastic.obj
.\msvcobj\errormsg.obj
.\msvcobj\File.obj
.\msvcobj\Fileio.obj
.\msvcobj\Filemap.obj
.\msvcobj\Finddata.obj
.\msvcobj\Font.obj
.\msvcobj\gdipoint.obj
.\msvcobj\Guiwnd.obj
.\msvcobj\Hookproc.obj
.\msvcobj\Iconfrm.obj
.\msvcobj\Infowin.obj
.\msvcobj\Intel.obj
.\msvcobj\Iobuff.obj
.\msvcobj\Logowin.obj
.\msvcobj\Macro.obj
.\msvcobj\Math.obj
.\msvcobj\Mdifrm.obj
.\msvcobj\Mdiwin.obj
.\msvcobj\Memfile.obj
.\msvcobj\Mmtimer.obj
.\msvcobj\Odbutton.obj
.\msvcobj\Odlist.obj
.\msvcobj\Odlstalt.obj
.\msvcobj\Odlstchk.obj
.\msvcobj\opendlg.obj
.\msvcobj\Openfile.obj
.\msvcobj\opndlgex.obj
.\msvcobj\Owner.obj
.\msvcobj\Pathfnd.obj
.\msvcobj\Point.obj
.\msvcobj\Process.obj
.\msvcobj\Profile.obj
.\msvcobj\Progress.obj
.\msvcobj\Purebmp.obj
.\msvcobj\Purebyte.obj
.\msvcobj\puredbl.obj
.\msvcobj\Puredwrd.obj
.\msvcobj\Purehdc.obj
.\msvcobj\puremenu.obj
.\msvcobj\Purepal.obj
.\msvcobj\purewrd.obj
.\msvcobj\Pview.obj
.\msvcobj\Regkey.obj
.\msvcobj\resbmp.obj
.\msvcobj\Richedit.obj
.\msvcobj\rubber.obj
.\msvcobj\Sdate.obj
.\msvcobj\Smrtstrm.obj
.\msvcobj\snapshot.obj
.\msvcobj\static.obj
.\msvcobj\String.obj
.\msvcobj\Systime.obj
.\msvcobj\Vhandler.obj
.\msvcobj\Vxdctrl.obj
.\msvcobj\widestr.obj
.\msvcobj\Window.obj
.\msvcobj\Wintimer.obj
]
Creating command line "link.exe -lib @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP617.tmp"
<h3>Output Window</h3>
Compiling...
accelerator.cpp
Bitmap.cpp
Bminfo.cpp
Bmplnk.cpp
Brush.cpp
Btnlnk.cpp
calendar.cpp
Catmull.cpp
Cbdata.cpp
Cbdatahk.cpp
Clipbrd.cpp
Console.cpp
Control.cpp
Crsctrl.cpp
Ddemsg.cpp
Dib.cpp
Diskinfo.cpp
Drawbmp.cpp
Dwindow.cpp
elastic.cpp
Generating Code...
Compiling...
errormsg.cpp
File.cpp
Fileio.cpp
Filemap.cpp
Finddata.cpp
Font.cpp
gdipoint.cpp
Guiwnd.cpp
Hookproc.cpp
Iconfrm.cpp
Infowin.cpp
Intel.cpp
Iobuff.cpp
Logowin.cpp
Macro.cpp
Math.cpp
Mdifrm.cpp
Mdiwin.cpp
Memfile.cpp
Mmtimer.cpp
Generating Code...
Compiling...
Odbutton.cpp
Odlist.cpp
Odlstalt.cpp
Odlstchk.cpp
opendlg.Cpp
Openfile.cpp
opndlgex.cpp
Owner.cpp
Pathfnd.cpp
Point.cpp
Process.cpp
Profile.cpp
Progress.cpp
Purebmp.cpp
Purebyte.cpp
puredbl.cpp
Puredwrd.cpp
Purehdc.cpp
puremenu.Cpp
Purepal.cpp
Generating Code...
Compiling...
purewrd.cpp
Pview.cpp
Regkey.cpp
resbmp.cpp
Richedit.cpp
rubber.cpp
Sdate.cpp
Smrtstrm.cpp
snapshot.cpp
static.cpp
String.cpp
Systime.cpp
Vhandler.cpp
Vxdctrl.cpp
widestr.Cpp
Window.cpp
Wintimer.cpp
Generating Code...
Compiling...
Bmdata.cpp
Creating library...
<h3>
--------------------Configuration: bsptree - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP618.tmp" with contents
[
/nologo /Gz /MTd /GX /Zi /Od /I "\work" /I "\parts" /D "_DEBUG" /D "__FLAT__" /D "STRICT" /D "_WINDOWS" /D "WIN32" /FR".\msvcobj/" /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
"F:\work\bsptree\Bsptmpl.cpp"
"F:\work\bsptree\Rgbtree.cpp"
"F:\work\bsptree\Stdtmpl.cpp"
]
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP618.tmp"
Creating command line "link.exe -lib /nologo /out:"..\exe\msbsp.lib" .\msvcobj\Bsptmpl.obj .\msvcobj\Rgbtree.obj .\msvcobj\Stdtmpl.obj "
<h3>Output Window</h3>
Compiling...
Bsptmpl.cpp
Rgbtree.cpp
Stdtmpl.cpp
Generating Code...
Creating library...
<h3>
--------------------Configuration: sample - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP619.tmp" with contents
[
/nologo /Gz /MTd /Zi /Od /D "_DEBUG" /D "__FLAT__" /D "STRICT" /D "WIN32" /D "_WINDOWS" /FR".\msvcobj/" /Fp"\work\exe\msvc42.pch" /YX"windows.h" /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /I /work" /I /parts" /I /work" /I /parts" " " " " /c
"F:\work\sample\Datachnk.cpp"
"F:\work\sample\Devhndlr.cpp"
"F:\work\sample\fmtchnk.cpp"
"F:\work\sample\GenChnk.cpp"
"F:\work\sample\Puresmpl.cpp"
"F:\work\sample\Purewave.cpp"
"F:\work\sample\Wave.cpp"
"F:\work\sample\Wavein.cpp"
"F:\work\sample\Waveout.cpp"
]
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP619.tmp"
Creating command line "link.exe -lib /nologo /out:"..\exe\sample.lib" .\msvcobj\Datachnk.obj .\msvcobj\Devhndlr.obj .\msvcobj\fmtchnk.obj .\msvcobj\GenChnk.obj .\msvcobj\Puresmpl.obj .\msvcobj\Purewave.obj .\msvcobj\Wave.obj .\msvcobj\Wavein.obj .\msvcobj\Waveout.obj "
<h3>Output Window</h3>
Compiling...
Datachnk.cpp
Devhndlr.cpp
fmtchnk.cpp
GenChnk.cpp
Puresmpl.cpp
Purewave.cpp
Wave.cpp
Wavein.cpp
Waveout.cpp
Creating library...
<h3>
--------------------Configuration: proto - Win32 Debug--------------------
</h3>
<h3>Command Lines</h3>
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP61A.tmp" with contents
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSPFA.tmp" with contents
[
/nologo /Gz /MTd /GR /GX /Zi /Od /I "\work" /I "\parts" /I "\parts\sgi_stl" /D "WIN32" /D "_WINDOWS" /D "STRICT" /D "__FLAT__" /D "_MBCS" /D "_COMMON_USENLS_" /FR".\msvcobj/" /Fp".\msvcobj/proto.pch" /YX"windows.hpp" /Fo".\msvcobj/" /Fd".\msvcobj/" /FD /c
"F:\work\proto\Main.cpp"
]
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP61A.tmp"
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP61B.tmp" with contents
Creating command line "cl.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSPFA.tmp"
Creating temporary file "C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSPFB.tmp" with contents
[
comctl32.lib winmm.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib wininet.lib strmiids.lib winmm.lib vfw32.lib debug\HookDLL.lib version.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /out:"f:\work\proto\debug\proto.exe"
.\msvcobj\Main.obj
@@ -335,7 +20,7 @@ comctl32.lib winmm.lib wsock32.lib kernel32.lib user32.lib gdi32.lib winspool.li
\work\exe\msbsp.lib
\work\exe\sample.lib
]
Creating command line "link.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSP61B.tmp"
Creating command line "link.exe @C:\DOCUME~1\TERNET~1\LOCALS~1\Temp\RSPFB.tmp"
<h3>Output Window</h3>
Compiling...
Main.cpp
@@ -343,12 +28,13 @@ Linking...
Creating library f:\work\proto\debug\proto.lib and object f:\work\proto\debug\proto.exp
Creating command line "bscmake.exe /nologo /o".\msvcobj/proto.bsc" .\msvcobj\Main.sbr"
Creating browse info file...
BSCMAKE: warning BK4503 : minor error in .SBR file '.\msvcobj\Main.sbr' ignored
<h3>Output Window</h3>
<h3>Results</h3>
proto.exe - 0 error(s), 0 warning(s)
proto.exe - 0 error(s), 1 warning(s)
</pre>
</body>
</html>