tankkk
Dependencies: USBHost USBHostXpad mbed-rtos mbed
Audio.h
- Committer:
- hotwheelharry
- Date:
- 2014-12-06
- Revision:
- 9:789350244478
- Parent:
- 8:36b2ef26a0b1
File content as of revision 9:789350244478:
#include "Speaker.h" #include <vector> //This needs work to get threading working class Audio{ private: Mutex mutex; Speaker& speaker; bool playing; int code; //sound code bool getplaying(){ bool b; mutex.lock(); b = playing; mutex.unlock(); return b; } int getcode(){ int c; mutex.lock(); c = code; mutex.unlock(); return c; } public: Audio(Speaker& ao) : speaker(ao) { } void play(int code){ mutex.lock(); this->code = code; this->playing = true; mutex.unlock(); } void stop(){ mutex.lock(); this->playing = false; mutex.unlock(); } void run(){ while(true){ //service audio requests... //if not playing, wait fast if(!getplaying()){ Thread::wait(1); continue; } int code = getcode(); switch(code){ case 0: // up speaker.PlayNote(500.0, 0.05, 1.0); speaker.PlayNote(600.0, 0.05, 1.0); speaker.PlayNote(700.0, 0.05, 1.0); break; case 1: // down speaker.PlayNote(500.0, 0.05, 1.0); speaker.PlayNote(550.0, 0.05, 1.0); break; case 2: //left speaker.PlayNote(400.0, 0.1, 1.0); speaker.PlayNote(500.0, 0.1, 1.0); break; case 3: // right speaker.PlayNote(600.0, 0.05, 1.0); speaker.PlayNote(500.0, 0.05, 1.0); break; // trigger sound case 4: speaker.PlayNote(500.0, 0.05, 1.0); speaker.PlayNote(600.0, 0.05, 1.0); speaker.PlayNote(700.0, 0.05, 1.0); break; // mario! case 5: playMario(); break; default: break; } //Thread::wait(10); } } void playNote(float a, float b, float c){ speaker.PlayNote(a,b,c); } public: void playMario(){ playNote(660.0, 0.08, 1.0); Thread::wait(113); playNote(660.0, 0.08, 1.0); Thread::wait(225); playNote(660.0, 0.08, 1.0); Thread::wait(225); playNote(510.0, 0.08, 1.0); Thread::wait(75); playNote(660.0, 0.08, 1.0); Thread::wait(225); playNote(770.0, 0.08, 1.0); Thread::wait(413); playNote(380.0, 0.08, 1.0); Thread::wait(431); playNote(510.0, 0.08, 1.0); Thread::wait(338); playNote(380.0, 0.08, 1.0); Thread::wait(300); playNote(320.0, 0.08, 1.0); Thread::wait(375); playNote(440.0, 0.08, 1.0); Thread::wait(225); playNote(480.0, 0.06, 1.0); Thread::wait(248); playNote(450.0, 0.08, 1.0); Thread::wait(113); playNote(430.0, 0.08, 1.0); Thread::wait(225); playNote(380.0, 0.08, 1.0); Thread::wait(150); playNote(660.0, 0.06, 1.0); Thread::wait(150); playNote(760.0, 0.04, 1.0); Thread::wait(113); playNote(860.0, 0.08, 1.0); Thread::wait(225); playNote(700.0, 0.06, 1.0); Thread::wait(113); playNote(760.0, 0.04, 1.0); Thread::wait(263); playNote(660.0, 0.06, 1.0); Thread::wait(225); playNote(520.0, 0.06, 1.0); Thread::wait(113); playNote(580.0, 0.06, 1.0); Thread::wait(113); playNote(480.0, 0.06, 1.0); Thread::wait(375); playNote(510.0, 0.08, 1.0); Thread::wait(338); playNote(380.0, 0.08, 1.0); Thread::wait(300); playNote(320.0, 0.08, 1.0); Thread::wait(375); playNote(440.0, 0.08, 1.0); Thread::wait(225); playNote(480.0, 0.06, 1.0); Thread::wait(248); playNote(450.0, 0.08, 1.0); Thread::wait(113); playNote(430.0, 0.08, 1.0); Thread::wait(225); playNote(380.0, 0.08, 1.0); Thread::wait(150); playNote(660.0, 0.06, 1.0); Thread::wait(150); playNote(760.0, 0.04, 1.0); Thread::wait(113); playNote(860.0, 0.08, 1.0); Thread::wait(225); playNote(700.0, 0.06, 1.0); Thread::wait(113); playNote(760.0, 0.04, 1.0); Thread::wait(263); playNote(660.0, 0.06, 1.0); Thread::wait(225); playNote(520.0, 0.06, 1.0); Thread::wait(113); playNote(580.0, 0.06, 1.0); Thread::wait(113); playNote(480.0, 0.06, 1.0); Thread::wait(375); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(760.0, 0.08, 1.0); Thread::wait(75); playNote(720.0, 0.08, 1.0); Thread::wait(113); playNote(680.0, 0.08, 1.0); Thread::wait(113); playNote(620.0, 0.11, 1.0); Thread::wait(225); playNote(650.0, 0.11, 1.0); Thread::wait(225); playNote(380.0, 0.08, 1.0); Thread::wait(113); playNote(430.0, 0.08, 1.0); Thread::wait(113); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(430.0, 0.08, 1.0); Thread::wait(113); playNote(500.0, 0.08, 1.0); Thread::wait(75); playNote(570.0, 0.08, 1.0); Thread::wait(165); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(760.0, 0.08, 1.0); Thread::wait(75); playNote(720.0, 0.08, 1.0); Thread::wait(113); playNote(680.0, 0.08, 1.0); Thread::wait(113); playNote(620.0, 0.11, 1.0); Thread::wait(225); playNote(650.0, 0.15, 1.0); Thread::wait(225); playNote(1020.0, 0.06, 1.0); Thread::wait(225); playNote(1020.0, 0.06, 1.0); Thread::wait(113); playNote(1020.0, 0.06, 1.0); Thread::wait(225); playNote(380.0, 0.08, 1.0); Thread::wait(225); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(760.0, 0.08, 1.0); Thread::wait(75); playNote(720.0, 0.08, 1.0); Thread::wait(113); playNote(680.0, 0.08, 1.0); Thread::wait(113); playNote(620.0, 0.11, 1.0); Thread::wait(225); playNote(650.0, 0.11, 1.0); Thread::wait(225); playNote(380.0, 0.08, 1.0); Thread::wait(113); playNote(430.0, 0.08, 1.0); Thread::wait(113); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(430.0, 0.08, 1.0); Thread::wait(113); playNote(500.0, 0.08, 1.0); Thread::wait(75); playNote(570.0, 0.08, 1.0); Thread::wait(315); playNote(585.0, 0.08, 1.0); Thread::wait(338); playNote(550.0, 0.08, 1.0); Thread::wait(315); playNote(500.0, 0.08, 1.0); Thread::wait(270); playNote(380.0, 0.08, 1.0); Thread::wait(225); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(500.0, 0.08, 1.0); Thread::wait(113); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(760.0, 0.08, 1.0); Thread::wait(75); playNote(720.0, 0.08, 1.0); Thread::wait(113); playNote(680.0, 0.08, 1.0); Thread::wait(113); playNote(620.0, 0.11, 1.0); Thread::wait(225); playNote(650.0, 0.11, 1.0); Thread::wait(225); playNote(380.0, 0.08, 1.0); Thread::wait(113); playNote(430.0, 0.08, 1.0); Thread::wait(113); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(430.0, 0.08, 1.0); Thread::wait(113); playNote(500.0, 0.08, 1.0); Thread::wait(75); playNote(570.0, 0.08, 1.0); Thread::wait(165); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(760.0, 0.08, 1.0); Thread::wait(75); playNote(720.0, 0.08, 1.0); Thread::wait(113); playNote(680.0, 0.08, 1.0); Thread::wait(113); playNote(620.0, 0.11, 1.0); Thread::wait(225); playNote(650.0, 0.15, 1.0); Thread::wait(225); playNote(1020.0, 0.06, 1.0); Thread::wait(225); playNote(1020.0, 0.06, 1.0); Thread::wait(113); playNote(1020.0, 0.06, 1.0); Thread::wait(225); playNote(380.0, 0.08, 1.0); Thread::wait(225); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(760.0, 0.08, 1.0); Thread::wait(75); playNote(720.0, 0.08, 1.0); Thread::wait(113); playNote(680.0, 0.08, 1.0); Thread::wait(113); playNote(620.0, 0.11, 1.0); Thread::wait(225); playNote(650.0, 0.11, 1.0); Thread::wait(225); playNote(380.0, 0.08, 1.0); Thread::wait(113); playNote(430.0, 0.08, 1.0); Thread::wait(113); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(430.0, 0.08, 1.0); Thread::wait(113); playNote(500.0, 0.08, 1.0); Thread::wait(75); playNote(570.0, 0.08, 1.0); Thread::wait(315); playNote(585.0, 0.08, 1.0); Thread::wait(338); playNote(550.0, 0.08, 1.0); Thread::wait(315); playNote(500.0, 0.08, 1.0); Thread::wait(270); playNote(380.0, 0.08, 1.0); Thread::wait(225); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(500.0, 0.08, 1.0); Thread::wait(113); playNote(500.0, 0.08, 1.0); Thread::wait(225); playNote(500.0, 0.04, 1.0); Thread::wait(113); playNote(500.0, 0.06, 1.0); Thread::wait(225); playNote(500.0, 0.04, 1.0); Thread::wait(263); playNote(500.0, 0.06, 1.0); Thread::wait(113); playNote(580.0, 0.06, 1.0); Thread::wait(263); playNote(660.0, 0.06, 1.0); Thread::wait(113); playNote(500.0, 0.06, 1.0); Thread::wait(225); playNote(430.0, 0.06, 1.0); Thread::wait(113); playNote(380.0, 0.06, 1.0); Thread::wait(450); playNote(500.0, 0.04, 1.0); Thread::wait(113); playNote(500.0, 0.06, 1.0); Thread::wait(225); playNote(500.0, 0.04, 1.0); Thread::wait(263); playNote(500.0, 0.06, 1.0); Thread::wait(113); playNote(580.0, 0.06, 1.0); Thread::wait(113); playNote(660.0, 0.06, 1.0); Thread::wait(413); playNote(870.0, 0.06, 1.0); Thread::wait(244); playNote(760.0, 0.06, 1.0); Thread::wait(450); playNote(500.0, 0.04, 1.0); Thread::wait(113); playNote(500.0, 0.06, 1.0); Thread::wait(225); playNote(500.0, 0.04, 1.0); Thread::wait(263); playNote(500.0, 0.06, 1.0); Thread::wait(113); playNote(580.0, 0.06, 1.0); Thread::wait(263); playNote(660.0, 0.06, 1.0); Thread::wait(113); playNote(500.0, 0.06, 1.0); Thread::wait(225); playNote(430.0, 0.06, 1.0); Thread::wait(113); playNote(380.0, 0.06, 1.0); Thread::wait(450); playNote(660.0, 0.08, 1.0); Thread::wait(113); playNote(660.0, 0.08, 1.0); Thread::wait(225); playNote(660.0, 0.08, 1.0); Thread::wait(225); playNote(510.0, 0.08, 1.0); Thread::wait(75); playNote(660.0, 0.08, 1.0); Thread::wait(225); playNote(770.0, 0.08, 1.0); Thread::wait(413); playNote(380.0, 0.08, 1.0); Thread::wait(431); } };