PWM出力によって圧電スピーカーで容易に音を鳴らすことができるライブラリです。

Dependents:   kiokuryoku_game escapeFromYou junirobo_sample001 ROBOX_Sample_IRcon ... more

Committer:
RBH
Date:
Sat Oct 08 17:05:44 2016 +0000
Revision:
7:5f1b0adb25ec
Parent:
6:adb925f93199
Child:
8:26cb94806201
???????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RBH 0:c9832831c73f 1 #ifndef BEEP_SOUND_H
RBH 0:c9832831c73f 2 #define BEEP_SOUND_H
RBH 0:c9832831c73f 3 #include "mbed.h"
RBH 3:86238dba1529 4 #include <queue>
RBH 3:86238dba1529 5 struct gakuhu{
RBH 3:86238dba1529 6 int octave;
RBH 3:86238dba1529 7 int note;
RBH 3:86238dba1529 8 float time_s;
RBH 3:86238dba1529 9 };
RBH 4:237b642c2ffa 10 /*
RBH 4:237b642c2ffa 11 struct beep{
RBH 4:237b642c2ffa 12 float userPeriod;
RBH 4:237b642c2ffa 13 float userWrite;
RBH 4:237b642c2ffa 14 float time_s;
RBH 4:237b642c2ffa 15 }
RBH 4:237b642c2ffa 16 */
RBH 0:c9832831c73f 17 const int frequencyTable[] = {261, 277, 294, 311, 330, 349,
RBH 4:237b642c2ffa 18 370, 392, 415, 440, 466, 494, 100};
RBH 0:c9832831c73f 19
RBH 2:259899b723ab 20
RBH 0:c9832831c73f 21 class beep_sound
RBH 0:c9832831c73f 22 {
RBH 0:c9832831c73f 23 public:
RBH 0:c9832831c73f 24 beep_sound(PinName pwm);
RBH 0:c9832831c73f 25 ~beep_sound();
RBH 0:c9832831c73f 26 void SetFrequency(int octave, int note, bool on_off);
RBH 0:c9832831c73f 27 void onpu(int octave, int note, float time_s);
RBH 0:c9832831c73f 28 void sinwave(float center,int speed,int width);
RBH 0:c9832831c73f 29 void setwave(float frequency,float duty,float wait);
RBH 7:5f1b0adb25ec 30 // 以下サンプル音集
RBH 0:c9832831c73f 31 void beep_right(int nTimes);
RBH 0:c9832831c73f 32 void beep_wrong(int nTimes);
RBH 0:c9832831c73f 33 void beep_1up(int nTimes);
RBH 7:5f1b0adb25ec 34 void beep_notif1(int nTimes);
RBH 7:5f1b0adb25ec 35 void beep_notif2(int nTimes);
RBH 7:5f1b0adb25ec 36 void beep_potatoKansei(int nTimes);
RBH 0:c9832831c73f 37 void beep_konbini(int nTimes);
RBH 2:259899b723ab 38 void beep_readyGo(int nTimes);
RBH 0:c9832831c73f 39 void beep_encount(int nTimes);
RBH 3:86238dba1529 40 // 以下並列で鳴らすための関数
RBH 5:a64e653b0ce1 41 void stop();
RBH 3:86238dba1529 42 void setGakuhu(int argOc, int argNo, float argTi);
RBH 3:86238dba1529 43 void setKyuhu(float argTi);
RBH 3:86238dba1529 44 void playGakuhu();
RBH 3:86238dba1529 45 void NoteOn(int octave, int note);
RBH 0:c9832831c73f 46 private:
RBH 0:c9832831c73f 47 PwmOut* m_pwm;
RBH 3:86238dba1529 48 int frequency;
RBH 3:86238dba1529 49 // 以下並列で鳴らすための宣言
RBH 3:86238dba1529 50 queue<gakuhu> otoQue;
RBH 4:237b642c2ffa 51 gakuhu bufG;
RBH 3:86238dba1529 52 Timeout interruptStop;
RBH 6:adb925f93199 53 // 再生中にキューにsetGakuhuをさせないためのフラグ
RBH 6:adb925f93199 54 bool playing; // false:停止中 true:再生中
RBH 0:c9832831c73f 55 };
RBH 0:c9832831c73f 56
RBH 0:c9832831c73f 57 #endif