Dependencies:   SoundWaveGenerator mbed

Committer:
peccu
Date:
Tue Jun 28 07:16:11 2011 +0000
Revision:
0:8697fedc1d62
add coin sound

Who changed what in which revision?

UserRevisionLine numberNew contents of line
peccu 0:8697fedc1d62 1 #include "mbed.h"
peccu 0:8697fedc1d62 2 #include "snd_wave_generator/SoundWaveGenerator.h"
peccu 0:8697fedc1d62 3 #include "snd_wave_generator/TriangleWave.h"
peccu 0:8697fedc1d62 4 #include "snd_wave_generator/SineWave.h"
peccu 0:8697fedc1d62 5 #include "snd_wave_generator/WaveCombo.h"
peccu 0:8697fedc1d62 6 #include <math.h>
peccu 0:8697fedc1d62 7
peccu 0:8697fedc1d62 8 using namespace snd_wave_generator;
peccu 0:8697fedc1d62 9 Serial pc(USBTX, USBRX); // tx, rx
peccu 0:8697fedc1d62 10 BusOut leds(LED1, LED2, LED4);
peccu 0:8697fedc1d62 11 SoundWaveGenerator g(16000);
peccu 0:8697fedc1d62 12
peccu 0:8697fedc1d62 13 // code to code number
peccu 0:8697fedc1d62 14 int code2int(char c){
peccu 0:8697fedc1d62 15 int ret = -1;
peccu 0:8697fedc1d62 16 switch(c){
peccu 0:8697fedc1d62 17 case 'C': ret = 0; break;
peccu 0:8697fedc1d62 18 case 'c': ret = 1; break; // C#/Db
peccu 0:8697fedc1d62 19 case 'D': ret = 2; break;
peccu 0:8697fedc1d62 20 case 'd': ret = 3; break; // D#/Eb
peccu 0:8697fedc1d62 21 case 'E': ret = 4; break;
peccu 0:8697fedc1d62 22 case 'F': ret = 5; break;
peccu 0:8697fedc1d62 23 case 'f': ret = 6; break; // F#/Gb
peccu 0:8697fedc1d62 24 case 'G': ret = 7; break;
peccu 0:8697fedc1d62 25 case 'g': ret = 8; break; // G#/Ab
peccu 0:8697fedc1d62 26 case 'A': ret = 9; break;
peccu 0:8697fedc1d62 27 case 'a': ret = 10; break; // A#/Bb
peccu 0:8697fedc1d62 28 case 'B': ret = 11; break;
peccu 0:8697fedc1d62 29 default:
peccu 0:8697fedc1d62 30 ret = -1;
peccu 0:8697fedc1d62 31 }
peccu 0:8697fedc1d62 32 //printf("case%d\r\n",ret);
peccu 0:8697fedc1d62 33 return ret;
peccu 0:8697fedc1d62 34 }
peccu 0:8697fedc1d62 35
peccu 0:8697fedc1d62 36 // (C, C#, D, D#, E, F, F#, G, G#, A, A#, B)
peccu 0:8697fedc1d62 37 float w(int ov,char code) {
peccu 0:8697fedc1d62 38 int note_no = code2int(code) + (ov + 2) * 12;
peccu 0:8697fedc1d62 39 return 440 * pow(2.0 , (note_no - 69) / 12.0 );
peccu 0:8697fedc1d62 40 }
peccu 0:8697fedc1d62 41
peccu 0:8697fedc1d62 42 SineWave C3(w(3,'C'));SineWave C4(w(4,'C'));SineWave C5(w(5,'C'));
peccu 0:8697fedc1d62 43 SineWave c3(w(3,'c'));SineWave c4(w(4,'c'));SineWave c5(w(5,'c'));
peccu 0:8697fedc1d62 44 SineWave D3(w(3,'D'));SineWave D4(w(4,'D'));SineWave D5(w(5,'D'));
peccu 0:8697fedc1d62 45 SineWave d3(w(3,'d'));SineWave d4(w(4,'d'));SineWave d5(w(5,'d'));
peccu 0:8697fedc1d62 46 SineWave E3(w(3,'E'));SineWave E4(w(4,'E'));SineWave E5(w(5,'E'));
peccu 0:8697fedc1d62 47 SineWave F3(w(3,'F'));SineWave F4(w(4,'F'));SineWave F5(w(5,'F'));
peccu 0:8697fedc1d62 48 SineWave f3(w(3,'f'));SineWave f4(w(4,'f'));SineWave f5(w(5,'f'));
peccu 0:8697fedc1d62 49 SineWave G3(w(3,'G'));SineWave G4(w(4,'G'));SineWave G5(w(5,'G'));
peccu 0:8697fedc1d62 50 SineWave g3(w(3,'g'));SineWave g4(w(4,'g'));SineWave g5(w(5,'g'));
peccu 0:8697fedc1d62 51 SineWave A3(w(3,'A'));SineWave A4(w(4,'A'));SineWave A5(w(5,'A'));
peccu 0:8697fedc1d62 52 SineWave a3(w(3,'a'));SineWave a4(w(4,'a'));SineWave a5(w(5,'a'));
peccu 0:8697fedc1d62 53 SineWave B3(w(3,'B'));SineWave B4(w(4,'B'));SineWave B5(w(5,'B'));
peccu 0:8697fedc1d62 54 //3cdefgab 4cdefgab 5cdefgab
peccu 0:8697fedc1d62 55
peccu 0:8697fedc1d62 56 // play with length
peccu 0:8697fedc1d62 57 void p(SineWave *s,float length){
peccu 0:8697fedc1d62 58 g.play(s);wait(length);
peccu 0:8697fedc1d62 59 }
peccu 0:8697fedc1d62 60 // stop length
peccu 0:8697fedc1d62 61 void s(float stop){
peccu 0:8697fedc1d62 62 g.stop();wait(stop);
peccu 0:8697fedc1d62 63 }
peccu 0:8697fedc1d62 64
peccu 0:8697fedc1d62 65 // defines of sound sequenses
peccu 0:8697fedc1d62 66 void coin(void){
peccu 0:8697fedc1d62 67 p(&B4,0.05);
peccu 0:8697fedc1d62 68 p(&E5,0.35);
peccu 0:8697fedc1d62 69 s(0.2);
peccu 0:8697fedc1d62 70 }
peccu 0:8697fedc1d62 71
peccu 0:8697fedc1d62 72 void mainTheme(void){
peccu 0:8697fedc1d62 73 p(&C3,0.3);
peccu 0:8697fedc1d62 74 s(0.2);
peccu 0:8697fedc1d62 75 }
peccu 0:8697fedc1d62 76
peccu 0:8697fedc1d62 77
peccu 0:8697fedc1d62 78 // main routin
peccu 0:8697fedc1d62 79 int main() {
peccu 0:8697fedc1d62 80 // while(1) {
peccu 0:8697fedc1d62 81 coin();coin();coin();coin();coin();coin();coin();coin();coin();
peccu 0:8697fedc1d62 82 exit(0);
peccu 0:8697fedc1d62 83 //}
peccu 0:8697fedc1d62 84 }