Christian Schmiljun
/
Lib_VS1053b
Sample application for vs1053b library (rev. lkw4hi)
Diff: main.cpp
- Revision:
- 1:62552e038f69
- Parent:
- 0:e1919041e50b
- Child:
- 2:8ef1e4409f20
--- a/main.cpp Thu Dec 16 21:56:36 2010 +0000 +++ b/main.cpp Fri Dec 24 23:56:28 2010 +0000 @@ -22,6 +22,7 @@ #include "mbed.h" +#include "defines.h" #include "VS1053.h" // Volume [ 0x0000 (loud) .. 0xFEFE (quiet) ] @@ -29,7 +30,6 @@ // Switch for local filesystem or SDCard #define USE_SDCARD -#define DEBUG // ---------------------------------------------------------------------------- // // Pin Assigenment for SDCard on Cool Components Workshop Board @@ -83,45 +83,98 @@ // Serial for Debug Serial pc(USBTX, USBRX); +Ticker timer; +Ticker timer2; + +DigitalIn _DREQ(p16); +bool next = false; + +void statisticsOutput(); + void setVolume(void) { if (pc.readable()) { unsigned char c = pc.getc(); -// scanf ("%x",&i); - if (c =='+') - mp3.setVolume(mp3.getVolume() + 0.5); - else if (c == '-') - { - mp3.setVolume(mp3.getVolume() - 0.5); - } - else if (c =='a') - { - mp3.setBalance(mp3.getBalance() + 0.5); - } - else if (c == 'y') +// scanf ("%x",&i); + switch (c) { - mp3.setBalance(mp3.getBalance() - 0.5); - } - else if (c == '1') - { - mp3.setPlaySpeed(1); - } - else if (c == '2') - { - mp3.setPlaySpeed(2); - } - else if (c == '3') - { - mp3.setPlaySpeed(3); - } - else if (c == '4') - { - mp3.setPlaySpeed(4); - } + case '1': + case '2': + case '3': + case '4': + mp3.setPlaySpeed(c - 48); + break; + case '+': + mp3.setVolume(mp3.getVolume() + 0.5); + break; + case '-': + mp3.setVolume(mp3.getVolume() - 0.5); + break; + case 'k': + mp3.setVolume(mp3.getBalance() + 0.5); + break; + case 'l': + mp3.setVolume(mp3.getBalance() - 0.5); + break; + case 'a': + mp3.setTrebleFrequency(mp3.getTrebleFrequency() + 1000); + break; + case 'y': + mp3.setTrebleFrequency(mp3.getTrebleFrequency() - 1000); + break; + case 's': + mp3.setTrebleAmplitude(mp3.getTrebleAmplitude() - 1); + break; + case 'x': + mp3.setTrebleAmplitude(mp3.getTrebleAmplitude() + 1); + break; + case 'd': + mp3.setBassFrequency(mp3.getBassFrequency() + 10); + break; + case 'c': + mp3.setBassFrequency(mp3.getBassFrequency() - 10); + break; + case 'f': + mp3.setBassAmplitude(mp3.getBassAmplitude() - 1); + break; + case 'v': + mp3.setBassAmplitude(mp3.getBassAmplitude() + 1); + break; + case 'z': + timer.attach(&statisticsOutput, 1); + break; + case 'u': + timer.detach(); + break; + case 'i': + statisticsOutput(); + break; + case 'h': + mp3.play(); + break; + case 'j': + mp3.pause(); + break; + case 'n': + next = true; + break; + default: + break; + } } } -int main () { + + +void statisticsOutput() +{ + printf("Statistics\r\n"); + printf("Buffer - Size: %i, Free: %i, Loaded: %i\r\n", BUFFER_SIZE, mp3.bufferFree(), mp3.bufferCount()); + printf("DREQ: %#x\r\n", _DREQ.read()); +} + +int main () { + // ------------------------------------------------------------------------ // MP3 Initialising // ------------------------------------------------------------------------ @@ -131,8 +184,7 @@ mp3.setVolume(VOLUME); - pc.attach(setVolume); - + pc.attach(&setVolume); // ------------------------------------------------------------------------ // Play mp3 file @@ -168,7 +220,7 @@ FILE *song; - unsigned char array[4*1024]; + unsigned char array[2048]; song = fopen(str, "rb"); //song = fopen("/sd/Musik/01.mp3", "rb"); @@ -177,17 +229,35 @@ printf("Couldn't open %s\r\n", str); continue; //exit(1); - } - - while (!feof(song)) { + } + + int count = 0; + bool test = true; + + while (!feof(song) && !next) { int n=fread(&array, 1, sizeof(array), song); - mp3.writeStream(array,n); + while (mp3.bufferFree() < n) + ; + mp3.bufferPutStream(array,n); + if (count > 2 && test) + { + test = false; + mp3.play(); + } + count++; + } + if (next) + { + mp3.stop(); + next = false; } - - mp3.terminateStream(); + else + { + mp3.terminateStream(); + } fclose(song); //close the file - printf("End of song."); + printf("End of song.\r\n"); wait(1.0); } else