Marc Mitchell
/
Options_slider
Simple audio out with variable tempo using mbed templates
Music_tempo_main.cpp@0:614598ef90dd, 2014-06-10 (annotated)
- Committer:
- mm73
- Date:
- Tue Jun 10 12:11:41 2014 +0000
- Revision:
- 0:614598ef90dd
Tempo using slider
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mm73 | 0:614598ef90dd | 1 | #include "mbed.h" |
mm73 | 0:614598ef90dd | 2 | #include "tsi_sensor.h" |
mm73 | 0:614598ef90dd | 3 | |
mm73 | 0:614598ef90dd | 4 | /* This defines will be replaced by PinNames soon */ |
mm73 | 0:614598ef90dd | 5 | #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) |
mm73 | 0:614598ef90dd | 6 | #define ELEC0 9 |
mm73 | 0:614598ef90dd | 7 | #define ELEC1 10 |
mm73 | 0:614598ef90dd | 8 | #elif defined (TARGET_KL05Z) |
mm73 | 0:614598ef90dd | 9 | #define ELEC0 9 |
mm73 | 0:614598ef90dd | 10 | #define ELEC1 8 |
mm73 | 0:614598ef90dd | 11 | #else |
mm73 | 0:614598ef90dd | 12 | #error TARGET NOT DEFINED |
mm73 | 0:614598ef90dd | 13 | #endif |
mm73 | 0:614598ef90dd | 14 | |
mm73 | 0:614598ef90dd | 15 | #define C3 131 |
mm73 | 0:614598ef90dd | 16 | #define D3 147 |
mm73 | 0:614598ef90dd | 17 | #define E3 165 |
mm73 | 0:614598ef90dd | 18 | #define F3 175 |
mm73 | 0:614598ef90dd | 19 | #define G3 196 |
mm73 | 0:614598ef90dd | 20 | #define A3 220 |
mm73 | 0:614598ef90dd | 21 | #define B3 247 |
mm73 | 0:614598ef90dd | 22 | #define C4 262 |
mm73 | 0:614598ef90dd | 23 | #define D4 294 |
mm73 | 0:614598ef90dd | 24 | #define E4 330 |
mm73 | 0:614598ef90dd | 25 | #define F4 349 |
mm73 | 0:614598ef90dd | 26 | #define G4 392 |
mm73 | 0:614598ef90dd | 27 | #define A4 440 |
mm73 | 0:614598ef90dd | 28 | #define B4 494 |
mm73 | 0:614598ef90dd | 29 | #define C5 523 |
mm73 | 0:614598ef90dd | 30 | #define A5 880 |
mm73 | 0:614598ef90dd | 31 | #define B5 988 |
mm73 | 0:614598ef90dd | 32 | #define Pause 1 |
mm73 | 0:614598ef90dd | 33 | |
mm73 | 0:614598ef90dd | 34 | Ticker tick; |
mm73 | 0:614598ef90dd | 35 | DigitalOut led1(LED_RED); |
mm73 | 0:614598ef90dd | 36 | DigitalOut led2(LED_GREEN); |
mm73 | 0:614598ef90dd | 37 | DigitalOut gpo(D10); |
mm73 | 0:614598ef90dd | 38 | |
mm73 | 0:614598ef90dd | 39 | void flip() { |
mm73 | 0:614598ef90dd | 40 | led2 = !led2; |
mm73 | 0:614598ef90dd | 41 | gpo = !gpo; |
mm73 | 0:614598ef90dd | 42 | } |
mm73 | 0:614598ef90dd | 43 | |
mm73 | 0:614598ef90dd | 44 | int main() { |
mm73 | 0:614598ef90dd | 45 | int Notes_Hz[] = {G4, F4, G4, Pause, D3, B5, A4, Pause, G4, E3, E4, E4, E4, F4, G4,Pause, |
mm73 | 0:614598ef90dd | 46 | G4, F4, G4, Pause, D3, B5, A4, Pause, G4, E3, E4, E4, E4, F4, G4, Pause}; |
mm73 | 0:614598ef90dd | 47 | int i; |
mm73 | 0:614598ef90dd | 48 | float bpm =120; |
mm73 | 0:614598ef90dd | 49 | //tick.attach(&flip, 0.7); // setup ticker to call flip led2 after 0.7 seconds |
mm73 | 0:614598ef90dd | 50 | //PwmOut led3(LED_BLUE); |
mm73 | 0:614598ef90dd | 51 | TSIAnalogSlider tsi(ELEC0, ELEC1, 40); |
mm73 | 0:614598ef90dd | 52 | |
mm73 | 0:614598ef90dd | 53 | while (1) { |
mm73 | 0:614598ef90dd | 54 | //bpm = 2000.0 * tsi.readPercentage(); |
mm73 | 0:614598ef90dd | 55 | //led3 = 1.0 - tsi.readPercentage(); |
mm73 | 0:614598ef90dd | 56 | i = 0; |
mm73 | 0:614598ef90dd | 57 | while (Notes_Hz[i]) { |
mm73 | 0:614598ef90dd | 58 | led1 = !led1; |
mm73 | 0:614598ef90dd | 59 | tick.attach(&flip, 0.5/Notes_Hz[i]); |
mm73 | 0:614598ef90dd | 60 | wait (50.0/bpm); // bpm = beats per minute |
mm73 | 0:614598ef90dd | 61 | tick.attach(&flip, 1); |
mm73 | 0:614598ef90dd | 62 | wait (10.0/bpm); // |
mm73 | 0:614598ef90dd | 63 | bpm = 400.0 * (1.0 - tsi.readPercentage()); |
mm73 | 0:614598ef90dd | 64 | i++; |
mm73 | 0:614598ef90dd | 65 | } |
mm73 | 0:614598ef90dd | 66 | } |
mm73 | 0:614598ef90dd | 67 | } |