Gugen展示版
Fork of MagneWave by
Diff: MagneWave.cpp
- Revision:
- 3:500b992880b3
- Parent:
- 2:0fc5df933021
- Child:
- 4:8b4be75fd97a
diff -r 0fc5df933021 -r 500b992880b3 MagneWave.cpp --- a/MagneWave.cpp Thu Oct 31 15:07:37 2013 +0000 +++ b/MagneWave.cpp Sat Nov 02 08:14:03 2013 +0000 @@ -1,36 +1,27 @@ #include "MagneWave.h" #define DATA_OFFSET 44 -#define DAC_CENTER 32768 +#define DAC16_CENTER 32768 MagneWave::MagneWave( SoftMCP4922 *dac ) { m_wave_DAC = dac; - m_wave_DAC->write_u16( DAC_CENTER ); + m_wave_DAC->write_u16( DAC16_CENTER ); } 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 + m_timer.start(); + m_timer.reset(); // jump to wave data fseek( wavefile, DATA_OFFSET, SEEK_SET ); while(1){ - //16bit - /* +#if 1 //16bit int tmpL = 0; int tmpH = 0; - unsigned short dacVal16 = 0; + long dacVal16 = 0; tmpL = fgetc( wavefile ); if( tmpL == EOF ){ break; @@ -41,10 +32,15 @@ } dacVal16 = tmpL; dacVal16 |= ( tmpH << 8 ); + dacVal16 += DAC16_CENTER; m_wave_DAC->write_u16( dacVal16 ); - */ + + // TODO: adjust cycle + while( m_timer.read_us()< 125){} + m_timer.reset(); + +#else // 8bit - // 8bit int dacVal8 = fgetc( wavefile ); if( dacVal8 == EOF ){ @@ -53,6 +49,11 @@ m_wave_DAC->write_u8( ( unsigned short )dacVal8 ); // TODO: adjust cycle - wait_us( 75 ); + while( m_timer.read_us()< 125){} + m_timer.reset(); +#endif + } + m_timer.stop(); } +