RUOFAN LI / Mbed 2 deprecated el17rl

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers bgm.cpp Source File

bgm.cpp

00001 #include "bgm.h"
00002 
00003 // construct & destruct/
00004 bgm::bgm()
00005     :
00006     _timeout(new Timeout()),
00007     _buzzer(new PwmOut(PTC10))
00008 {}
00009 
00010 bgm::~bgm()
00011 {
00012     
00013 }
00014 
00015 void Sound::tone(float frequency, float duration)
00016 {
00017     _buzzer->period(1.0f/frequency);
00018     _buzzer->write(0.5);  // 50% duty cycle - square wave
00019     _timeout->attach(callback(this, &Sound::tone_off), duration );
00020 }
00021 // The number "1,2,3,4,5,6,7" means each number note in the notation
00022 
00023 // Excerpted from famous Chinese and English songs
00024 void bgm::welcome(){
00025     tone(784.0f,0.4f);
00026     wait(0.4f);
00027     tone(784.0f,0.1f);
00028     wait(0.1f);
00029     tone(880.0f,0.4f);
00030     wait(0.4f);
00031     tone(587.0f,0.8f);
00032     wait(0.8f);
00033     tone(523.0f,0.4f);
00034     wait(0.4f);
00035     tone(523.0f,0.1f);
00036     wait(0.1f);
00037     tone(440.0f,0.4f);
00038     wait(0.4f);
00039     tone(587.0f,0.8f);
00040     wait(0.8f);
00041     tone(784.0f,0.4f);
00042     wait(0.4f);
00043     tone(784.0f,0.4f);
00044     wait(0.4f);
00045     tone(880.0f,0.1f);
00046     wait(0.1f);
00047     tone(1046.0f,0.4f);
00048     wait(0.4f);
00049     tone(880.0f,0.2f);
00050     wait(0.2f);
00051     tone(784.0f,0.2f);
00052     wait(0.2f);
00053     tone(523.0f,0.4f);
00054     wait(0.4f);
00055     tone(523.0f,0.1f);
00056     wait(0.1f);
00057     tone(440.0f,0.1f);
00058     wait(0.1f);
00059     tone(587.0f,0.8f);
00060     wait(0.8f);
00061     
00062 }
00063 
00064 void bgm::battlefield(){
00065     tone(659.0f,0.3f);
00066     wait(0.3f);
00067     tone(659.0f,0.2f);
00068     wait(0.2f);
00069     tone(587.0f,0.3f);
00070     wait(0.3f);
00071     tone(523.0f,0.2f);
00072     wait(0.2f);
00073     tone(523.0f,0.3f);
00074     wait(0.3f);
00075     tone(659.0f,0.2f);
00076     wait(0.2f);
00077     tone(784.0f,0.3f);
00078     wait(0.3f);
00079     tone(1046.0f,0.3f);
00080     wait(0.3f);
00081     tone(1046.0f,0.2f);
00082     wait(0.2f);
00083     tone(1046.0f,0.2f);
00084     wait(0.2f);
00085     tone(880.0f,0.5f);
00086     wait(0.5f);
00087     tone(784.0f,0.3f);
00088     wait(0.3f);
00089     tone(784.0f,0.2f);
00090     wait(0.2f);
00091     tone(880.0f,0.3f);
00092     wait(0.3f);
00093     tone(784.0f,0.3f);
00094     wait(0.3f);
00095     tone(659.0f,0.2f);
00096     wait(0.2f);
00097     tone(523.0f,0.3f);
00098     wait(0.3f);
00099     tone(587.0f,0.3f);
00100     wait(0.3f);
00101     tone(587.0f,0.2f);
00102     wait(0.2f);
00103     tone(659.0f,0.3f);
00104     wait(0.3f);
00105     tone(587.0f,0.2f);
00106     wait(0.2f);
00107     
00108 }
00109 
00110 void bgm::died(){
00111     tone(784.0f,0.2f);
00112     wait(0.2f);
00113     tone(880.0f,0.3f);
00114     wait(0.3f);
00115     tone(784.0f,0.2f);
00116     wait(0.2f);
00117     tone(698.0f,0.3f);
00118     wait(0.3f);
00119     tone(659.0f,0.2f);
00120     wait(0.2f);
00121     tone(698.0f,0.3f);
00122     wait(0.3f);
00123     tone(784.0f,0.3f);
00124     wait(0.3f);
00125     tone(587.0f,0.3f);
00126     wait(0.3f);
00127     tone(784.0f,0.2f);
00128     wait(0.2f);
00129     tone(784.0f,0.3f);
00130     wait(0.3f);
00131     tone(659.0f,0.2f);
00132     wait(0.2f);
00133     tone(523.0f,0.3f);
00134     wait(0.3f);
00135     
00136 }
00137 
00138 void bgm::tone_off()
00139 {
00140     // called after timeout
00141     _buzzer->write(0.0);
00142 }