Gugen展示版
Fork of MagneWave by
MagneWave.cpp
- Committer:
- doctorura
- Date:
- 2013-11-02
- Revision:
- 3:500b992880b3
- Parent:
- 2:0fc5df933021
- Child:
- 4:8b4be75fd97a
File content as of revision 3:500b992880b3:
#include "MagneWave.h" #define DATA_OFFSET 44 #define DAC16_CENTER 32768 MagneWave::MagneWave( SoftMCP4922 *dac ) { m_wave_DAC = dac; m_wave_DAC->write_u16( DAC16_CENTER ); } void MagneWave::play( FILE *wavefile ) { m_timer.start(); m_timer.reset(); // jump to wave data fseek( wavefile, DATA_OFFSET, SEEK_SET ); while(1){ #if 1 //16bit int tmpL = 0; int tmpH = 0; long dacVal16 = 0; tmpL = fgetc( wavefile ); if( tmpL == EOF ){ break; } tmpH = fgetc( wavefile ); if( tmpH == EOF ){ break; } 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 int dacVal8 = fgetc( wavefile ); if( dacVal8 == EOF ){ break; } m_wave_DAC->write_u8( ( unsigned short )dacVal8 ); // TODO: adjust cycle while( m_timer.read_us()< 125){} m_timer.reset(); #endif } m_timer.stop(); }