Gugen展示版
Fork of MagneWave by
Diff: MagneWave.cpp
- Revision:
- 9:486d9fde3e64
- Parent:
- 8:34dc92a836a3
- Child:
- 10:8b31cb1e385b
diff -r 34dc92a836a3 -r 486d9fde3e64 MagneWave.cpp --- a/MagneWave.cpp Sat Nov 09 13:39:43 2013 +0000 +++ b/MagneWave.cpp Sat Nov 16 05:27:07 2013 +0000 @@ -1,9 +1,7 @@ #include "MagneWave.h" - #define DATA_OFFSET 44 #define DAC16_CENTER 32768 -#define NEW_CODE MagneWave::MagneWave( SoftMCP4922 *dac ) { @@ -21,48 +19,30 @@ void MagneWave::play( FILE *wavefile ) { - printf("seek\n"); // jump to wave data fseek( wavefile, DATA_OFFSET, SEEK_SET ); - printf("1\n"); m_dacOn = true; - printf("2\n"); m_fileEnd = false; - printf("loop\n"); while( m_dacOn ){ - if( m_rptr != ( m_wptr + 1 ) & 0x7f ){ -#ifdef NEW_CODE - int tmpL = 0; - int tmpH = 0; - long dacVal16 = 0; - tmpL = fgetc( wavefile ); - if( tmpL == EOF ){ - printf("eofL\n."); + if( m_rptr != ( ( m_wptr + 1 ) & 0x7f ) ){ + + short dacVal16 = 0; + unsigned char tmp[2]; + + int ret = fread( tmp, 1, 2, wavefile); + if( ret < 2 ){ + printf("eof\n."); m_fileEnd = true; break; } - tmpH = fgetc( wavefile ); - if( tmpH == EOF ){ - printf("eofH\n."); - m_fileEnd = true; - break; - } - dacVal16 = tmpL; - dacVal16 |= ( tmpH << 8 ); + dacVal16 = tmp[0]; + dacVal16 |= ( tmp[1] << 8 ); dacVal16 += DAC16_CENTER; + m_fifo[m_wptr]= ( unsigned short )dacVal16; -#else - size_t readSize = fread( (char *)m_fifo[m_wptr], 2, 1, wavefile); - if( readSize < 1 ){ - m_fileEnd = true; - break; - } -#endif m_wptr = ( m_wptr + 1 ) & 0x7f; - }else{ - printf("full\n"); } } printf("off\n"); @@ -72,16 +52,7 @@ { if ( m_dacOn ) { if( m_rptr != m_wptr ){ -#ifdef NEW_CODE m_wave_DAC->write_u16( m_fifo[ m_rptr ] ); -#else - unsigned short tmpL = ( m_fifo[ m_rptr ] >> 8) & 0x00ff; - unsigned short tmpH = ( m_fifo[ m_rptr ] << 8) & 0xff00; - short dacVal16 = tmpH | tmpL; - - dacVal16 += DAC16_CENTER; - m_wave_DAC->write_u16( dacVal16 ); -#endif m_rptr = ( m_rptr + 1 ) & 0x7f; }else{ //printf("nohit r=%d,w=%d\n", m_rptr, m_wptr);