akira yamada
/
Logibot_sample
Logibotのサンプルプログラミングです
beep_sound.h@0:66a643c36c9e, 2017-03-03 (annotated)
- Committer:
- natuga117
- Date:
- Fri Mar 03 18:32:40 2017 +0000
- Revision:
- 0:66a643c36c9e
Logibot????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
natuga117 | 0:66a643c36c9e | 1 | #ifndef BEEP_SOUND_H |
natuga117 | 0:66a643c36c9e | 2 | #define BEEP_SOUND_H |
natuga117 | 0:66a643c36c9e | 3 | #include "mbed.h" |
natuga117 | 0:66a643c36c9e | 4 | #include <queue> |
natuga117 | 0:66a643c36c9e | 5 | struct gakuhu{ |
natuga117 | 0:66a643c36c9e | 6 | int octave; |
natuga117 | 0:66a643c36c9e | 7 | int note; |
natuga117 | 0:66a643c36c9e | 8 | float time_s; // 長さが-1:通常ノート -2:終了フラグ |
natuga117 | 0:66a643c36c9e | 9 | }; |
natuga117 | 0:66a643c36c9e | 10 | /* |
natuga117 | 0:66a643c36c9e | 11 | struct beep{ |
natuga117 | 0:66a643c36c9e | 12 | float userPeriod; |
natuga117 | 0:66a643c36c9e | 13 | float userWrite; |
natuga117 | 0:66a643c36c9e | 14 | float time_s; |
natuga117 | 0:66a643c36c9e | 15 | } |
natuga117 | 0:66a643c36c9e | 16 | */ |
natuga117 | 0:66a643c36c9e | 17 | const int frequencyTable[] = {261, 277, 294, 311, 330, 349, |
natuga117 | 0:66a643c36c9e | 18 | 370, 392, 415, 440, 466, 494, 100}; |
natuga117 | 0:66a643c36c9e | 19 | |
natuga117 | 0:66a643c36c9e | 20 | |
natuga117 | 0:66a643c36c9e | 21 | class beep_sound |
natuga117 | 0:66a643c36c9e | 22 | { |
natuga117 | 0:66a643c36c9e | 23 | public: |
natuga117 | 0:66a643c36c9e | 24 | beep_sound(PinName pwm); |
natuga117 | 0:66a643c36c9e | 25 | ~beep_sound(); |
natuga117 | 0:66a643c36c9e | 26 | void SetFrequency(int octave, int note, bool on_off); |
natuga117 | 0:66a643c36c9e | 27 | void onpu(int octave, int note, float time_s); |
natuga117 | 0:66a643c36c9e | 28 | void onpu_stop(int octave, int note, float time_s); |
natuga117 | 0:66a643c36c9e | 29 | void sinwave(float center,int speed,int width); |
natuga117 | 0:66a643c36c9e | 30 | void setwave(float frequency,float duty,float wait); |
natuga117 | 0:66a643c36c9e | 31 | // 以下サンプル音集 |
natuga117 | 0:66a643c36c9e | 32 | void boot(); |
natuga117 | 0:66a643c36c9e | 33 | void beep_right(int nTimes); |
natuga117 | 0:66a643c36c9e | 34 | void beep_wrong(int nTimes); |
natuga117 | 0:66a643c36c9e | 35 | void beep_notif1(int nTimes); |
natuga117 | 0:66a643c36c9e | 36 | void beep_notif2(int nTimes); |
natuga117 | 0:66a643c36c9e | 37 | void beep_readyGo(int nTimes); |
natuga117 | 0:66a643c36c9e | 38 | // 以下並列で鳴らすための関数 |
natuga117 | 0:66a643c36c9e | 39 | void stop(); |
natuga117 | 0:66a643c36c9e | 40 | void setGakuhu(int argOc, int argNo, float argTi); |
natuga117 | 0:66a643c36c9e | 41 | void setKyuhu(float argTi); |
natuga117 | 0:66a643c36c9e | 42 | void playGakuhu(); |
natuga117 | 0:66a643c36c9e | 43 | void playContinue(); |
natuga117 | 0:66a643c36c9e | 44 | void NoteOn(int octave, int note); |
natuga117 | 0:66a643c36c9e | 45 | private: |
natuga117 | 0:66a643c36c9e | 46 | PwmOut* m_pwm; |
natuga117 | 0:66a643c36c9e | 47 | int frequency; |
natuga117 | 0:66a643c36c9e | 48 | // 以下並列で鳴らすための宣言 |
natuga117 | 0:66a643c36c9e | 49 | queue<gakuhu> otoQue; |
natuga117 | 0:66a643c36c9e | 50 | gakuhu bufG; |
natuga117 | 0:66a643c36c9e | 51 | Timeout interruptStop; |
natuga117 | 0:66a643c36c9e | 52 | // 再生中にキューにsetGakuhuをさせないためのフラグ |
natuga117 | 0:66a643c36c9e | 53 | bool playing; // false:停止中 true:再生中 |
natuga117 | 0:66a643c36c9e | 54 | bool teishi; // true:再生を強制停止. ノート再生時に必ずチェック. |
natuga117 | 0:66a643c36c9e | 55 | }; |
natuga117 | 0:66a643c36c9e | 56 | |
natuga117 | 0:66a643c36c9e | 57 | #endif |