ssss

Committer:
irsanjul
Date:
Tue Aug 18 14:57:00 2020 +0000
Revision:
1:f9ed5024854e
Parent:
0:e9c48701a273
ssss

Who changed what in which revision?

UserRevisionLine numberNew contents of line
irsanjul 0:e9c48701a273 1 #include "Audio.h"
irsanjul 0:e9c48701a273 2
irsanjul 0:e9c48701a273 3 extern Serial dbg;
irsanjul 0:e9c48701a273 4
irsanjul 0:e9c48701a273 5 double nada[10] = {0, 247, 262, 294, 330, 349, 392, 440, 494, 523};
irsanjul 0:e9c48701a273 6 //double nadas[16] = { 6, 6, 0, 6,
irsanjul 0:e9c48701a273 7 // 0, 4, 6, 0,
irsanjul 0:e9c48701a273 8 // 8, 0, 0, 0,
irsanjul 0:e9c48701a273 9 // 1, 0, 0, 0 };
irsanjul 0:e9c48701a273 10 //
irsanjul 0:e9c48701a273 11 unsigned int nadas[8] = { 1, 2, 3, 4,
irsanjul 0:e9c48701a273 12 5, 6, 7, 8 };
irsanjul 0:e9c48701a273 13
irsanjul 0:e9c48701a273 14 Audio::Audio(PinName buzzer): _out(buzzer)
irsanjul 0:e9c48701a273 15 {
irsanjul 0:e9c48701a273 16 }
irsanjul 0:e9c48701a273 17
irsanjul 0:e9c48701a273 18 void Audio::SetVolume(double volume)
irsanjul 0:e9c48701a273 19 {
irsanjul 0:e9c48701a273 20 vol = volume;
irsanjul 0:e9c48701a273 21 }
irsanjul 0:e9c48701a273 22
irsanjul 0:e9c48701a273 23 void Audio::SetDuration(unsigned int milisec)
irsanjul 0:e9c48701a273 24 {
irsanjul 0:e9c48701a273 25 ms = milisec;
irsanjul 0:e9c48701a273 26 }
irsanjul 0:e9c48701a273 27
irsanjul 0:e9c48701a273 28 void Audio::PlayNote(unsigned int angka)
irsanjul 0:e9c48701a273 29 {
irsanjul 0:e9c48701a273 30 if(angka > 8) angka -= 8;
irsanjul 0:e9c48701a273 31
irsanjul 0:e9c48701a273 32 double Nada = nada[angka];
irsanjul 0:e9c48701a273 33 PlayNote(Nada*4.24, ms, vol);
irsanjul 0:e9c48701a273 34 }
irsanjul 0:e9c48701a273 35
irsanjul 0:e9c48701a273 36 void Audio::mute()
irsanjul 0:e9c48701a273 37 {
irsanjul 0:e9c48701a273 38 DigitalOut *out = new DigitalOut(_out);
irsanjul 0:e9c48701a273 39 out->write(0);
irsanjul 0:e9c48701a273 40 delete out;
irsanjul 0:e9c48701a273 41 }
irsanjul 0:e9c48701a273 42
irsanjul 0:e9c48701a273 43 void Audio::PlayNote(double frequency, double duration, double volume)
irsanjul 0:e9c48701a273 44 {
irsanjul 0:e9c48701a273 45 PwmOut *out = new PwmOut(_out);
irsanjul 0:e9c48701a273 46 out->period(1.0/frequency);
irsanjul 0:e9c48701a273 47 out->write(volume/2.0);
irsanjul 0:e9c48701a273 48 wait_ms(duration);
irsanjul 0:e9c48701a273 49 out->write(0.0);
irsanjul 0:e9c48701a273 50 delete out;
irsanjul 0:e9c48701a273 51 }
irsanjul 0:e9c48701a273 52
irsanjul 0:e9c48701a273 53 // -----------------------------------------------------------------------------
irsanjul 0:e9c48701a273 54 MyAudio::MyAudio(PinName buzz) : Audio (buzz)
irsanjul 0:e9c48701a273 55 {}
irsanjul 0:e9c48701a273 56
irsanjul 0:e9c48701a273 57 void MyAudio::play(const int &code)
irsanjul 0:e9c48701a273 58 {
irsanjul 0:e9c48701a273 59 switch(code)
irsanjul 0:e9c48701a273 60 {
irsanjul 0:e9c48701a273 61 case 0 :
irsanjul 0:e9c48701a273 62 mute();
irsanjul 0:e9c48701a273 63 break;
irsanjul 0:e9c48701a273 64 case 1 :
irsanjul 0:e9c48701a273 65 playing(6);
irsanjul 0:e9c48701a273 66 set();
irsanjul 0:e9c48701a273 67 playing(1);
irsanjul 0:e9c48701a273 68 set();
irsanjul 0:e9c48701a273 69 mute();
irsanjul 0:e9c48701a273 70 break;
irsanjul 0:e9c48701a273 71 case 2 :
irsanjul 0:e9c48701a273 72
irsanjul 0:e9c48701a273 73 // break;
irsanjul 0:e9c48701a273 74 case 3 :
irsanjul 0:e9c48701a273 75
irsanjul 0:e9c48701a273 76 // break;
irsanjul 0:e9c48701a273 77 case 4 :
irsanjul 0:e9c48701a273 78 set();
irsanjul 0:e9c48701a273 79 playing(1);
irsanjul 0:e9c48701a273 80 break;
irsanjul 0:e9c48701a273 81 case 5 :
irsanjul 0:e9c48701a273 82 set();
irsanjul 0:e9c48701a273 83 for(int i=0; i<3; i++)playing(4);
irsanjul 0:e9c48701a273 84 break;
irsanjul 0:e9c48701a273 85 default:
irsanjul 0:e9c48701a273 86 set(100, 0.5);
irsanjul 0:e9c48701a273 87 for(int j=0; j<8; j++)
irsanjul 0:e9c48701a273 88 {
irsanjul 0:e9c48701a273 89 playing(nadas[j]);
irsanjul 0:e9c48701a273 90 }
irsanjul 0:e9c48701a273 91 set();
irsanjul 0:e9c48701a273 92 mute();
irsanjul 0:e9c48701a273 93 break;
irsanjul 0:e9c48701a273 94 }
irsanjul 0:e9c48701a273 95 }
irsanjul 0:e9c48701a273 96
irsanjul 0:e9c48701a273 97 void MyAudio::set(double dur, double vol)
irsanjul 0:e9c48701a273 98 {
irsanjul 0:e9c48701a273 99 Audio::SetVolume(vol);
irsanjul 0:e9c48701a273 100 Audio::SetDuration(dur);
irsanjul 0:e9c48701a273 101 }
irsanjul 0:e9c48701a273 102
irsanjul 0:e9c48701a273 103 void MyAudio::playing(unsigned int note)
irsanjul 0:e9c48701a273 104 {
irsanjul 0:e9c48701a273 105 Audio::PlayNote(note);
irsanjul 0:e9c48701a273 106 }
irsanjul 0:e9c48701a273 107
irsanjul 0:e9c48701a273 108 void MyAudio::mute()
irsanjul 0:e9c48701a273 109 {
irsanjul 0:e9c48701a273 110 Audio::mute();
irsanjul 0:e9c48701a273 111 }