Dependencies: SoundWaveGenerator mbed
main.cpp
00001 #include "mbed.h" 00002 #include "snd_wave_generator/SoundWaveGenerator.h" 00003 #include "snd_wave_generator/TriangleWave.h" 00004 #include "snd_wave_generator/SineWave.h" 00005 #include "snd_wave_generator/WaveCombo.h" 00006 #include <math.h> 00007 00008 using namespace snd_wave_generator; 00009 Serial pc(USBTX, USBRX); // tx, rx 00010 BusOut leds(LED1, LED2, LED4); 00011 SoundWaveGenerator g(16000); 00012 00013 // code to code number 00014 int code2int(char c){ 00015 int ret = -1; 00016 switch(c){ 00017 case 'C': ret = 0; break; 00018 case 'c': ret = 1; break; // C#/Db 00019 case 'D': ret = 2; break; 00020 case 'd': ret = 3; break; // D#/Eb 00021 case 'E': ret = 4; break; 00022 case 'F': ret = 5; break; 00023 case 'f': ret = 6; break; // F#/Gb 00024 case 'G': ret = 7; break; 00025 case 'g': ret = 8; break; // G#/Ab 00026 case 'A': ret = 9; break; 00027 case 'a': ret = 10; break; // A#/Bb 00028 case 'B': ret = 11; break; 00029 default: 00030 ret = -1; 00031 } 00032 //printf("case%d\r\n",ret); 00033 return ret; 00034 } 00035 00036 // (C, C#, D, D#, E, F, F#, G, G#, A, A#, B) 00037 float w(int ov,char code) { 00038 int note_no = code2int(code) + (ov + 2) * 12; 00039 return 440 * pow(2.0 , (note_no - 69) / 12.0 ); 00040 } 00041 00042 SineWave C3(w(3,'C'));SineWave C4(w(4,'C'));SineWave C5(w(5,'C')); 00043 SineWave c3(w(3,'c'));SineWave c4(w(4,'c'));SineWave c5(w(5,'c')); 00044 SineWave D3(w(3,'D'));SineWave D4(w(4,'D'));SineWave D5(w(5,'D')); 00045 SineWave d3(w(3,'d'));SineWave d4(w(4,'d'));SineWave d5(w(5,'d')); 00046 SineWave E3(w(3,'E'));SineWave E4(w(4,'E'));SineWave E5(w(5,'E')); 00047 SineWave F3(w(3,'F'));SineWave F4(w(4,'F'));SineWave F5(w(5,'F')); 00048 SineWave f3(w(3,'f'));SineWave f4(w(4,'f'));SineWave f5(w(5,'f')); 00049 SineWave G3(w(3,'G'));SineWave G4(w(4,'G'));SineWave G5(w(5,'G')); 00050 SineWave g3(w(3,'g'));SineWave g4(w(4,'g'));SineWave g5(w(5,'g')); 00051 SineWave A3(w(3,'A'));SineWave A4(w(4,'A'));SineWave A5(w(5,'A')); 00052 SineWave a3(w(3,'a'));SineWave a4(w(4,'a'));SineWave a5(w(5,'a')); 00053 SineWave B3(w(3,'B'));SineWave B4(w(4,'B'));SineWave B5(w(5,'B')); 00054 //3cdefgab 4cdefgab 5cdefgab 00055 00056 // play with length 00057 void p(SineWave *s,float length){ 00058 g.play(s);wait(length); 00059 } 00060 // stop length 00061 void s(float stop){ 00062 g.stop();wait(stop); 00063 } 00064 00065 // defines of sound sequenses 00066 void coin(void){ 00067 p(&B4,0.05); 00068 p(&E5,0.35); 00069 s(0.2); 00070 } 00071 00072 void mainTheme(void){ 00073 p(&C3,0.3); 00074 s(0.2); 00075 } 00076 00077 00078 // main routin 00079 int main() { 00080 // while(1) { 00081 coin();coin();coin();coin();coin();coin();coin();coin();coin(); 00082 exit(0); 00083 //} 00084 }
Generated on Sat Jul 16 2022 04:30:25 by
1.7.2