Gugen展示版
Fork of MagneWave by
Diff: MagneWave.cpp
- Revision:
- 0:5a700113dd87
- Child:
- 1:a82b9af36dbf
diff -r 000000000000 -r 5a700113dd87 MagneWave.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MagneWave.cpp Tue Oct 29 06:49:27 2013 +0000 @@ -0,0 +1,44 @@ +#include "MagneWave.h" + +MagneWave::MagneWave( SoftMCP4922 *dac ) +{ + m_wave_DAC = dac; + m_wave_DAC->write_u16( 32768 ); +} + +void MagneWave::play( FILE *wavefile ) +{ +#if 0 + // data size check + unsiged long dataSize = 0; + seek( wavefile, 40, SEEK_SET ); + dataSize = fgetc( wavefile ); + dataSize |= ( fgetc( wavefile ) << 8 ); + dataSize |= ( fgetc( wavefile ) << 16 ); + dataSize |= ( fgetc( wavefile ) << 24 ); + printf("data size = %ld\n", dataSize ); +#endif + + // jump to wave data + fseek( wavefile, 44, SEEK_SET ); + + while(1){ + int tmpL = 0; + int tmpH = 0; + unsigned short dacVal16 = 0; + tmpL = fgetc( wavefile ); + if( tmpL == EOF ){ + break; + } + tmpH = fgetc( wavefile ); + if( tmpH == EOF ){ + break; + } + dacVal16 = tmpL; + dacVal16 |= ( tmpH << 8 ); + m_wave_DAC->write_u16( dacVal16 ); + + // TODO: adjust cycle + wait( 0.005 ); + } +}