Here With You - short and simplified ver.
Dependencies: mbed
main.cpp@0:77987057a515, 2016-11-23 (annotated)
- Committer:
- JosipLupinski
- Date:
- Wed Nov 23 22:37:23 2016 +0000
- Revision:
- 0:77987057a515
END
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JosipLupinski | 0:77987057a515 | 1 | #include "mbed.h" |
JosipLupinski | 0:77987057a515 | 2 | |
JosipLupinski | 0:77987057a515 | 3 | PwmOut speaker(p26); |
JosipLupinski | 0:77987057a515 | 4 | AnalogIn pot1(p19); |
JosipLupinski | 0:77987057a515 | 5 | AnalogIn pot2(p20); |
JosipLupinski | 0:77987057a515 | 6 | DigitalIn joystickCenter(p14); |
JosipLupinski | 0:77987057a515 | 7 | |
JosipLupinski | 0:77987057a515 | 8 | int main() { |
JosipLupinski | 0:77987057a515 | 9 | /* note frequencies in Hz |
JosipLupinski | 0:77987057a515 | 10 | * rows: C C# D Eb E F F# G G# A Bb B |
JosipLupinski | 0:77987057a515 | 11 | * columns: 0 1 2 3 4 5 6 7 8 |
JosipLupinski | 0:77987057a515 | 12 | */ |
JosipLupinski | 0:77987057a515 | 13 | enum noteNames {A3, E4, GH4, A4, B4, CH5, DH5, E5, FH5, GH5, A5, B5, CH6, DH6, E6, FH6, GH6, A6, B6, CH7, DH7, E7, B7}; |
JosipLupinski | 0:77987057a515 | 14 | float nt[23][9] = { {220.0}, {329.63}, {415.30}, {440.0}, {493.88}, {554.37}, {622.25}, {659.25}, {739.99}, {830.61}, {880.0}, {987.77}, {1108.73}, |
JosipLupinski | 0:77987057a515 | 15 | {1244.51}, {1318.51}, {1479.98}, {1661.22}, {1760.0}, {1975.53}, {2217.46}, {2489.02}, {2637.02}, {3951.07} }; |
JosipLupinski | 0:77987057a515 | 16 | for (int i = 0; i < 12; i++) |
JosipLupinski | 0:77987057a515 | 17 | for (int j = 1; j < 9; j++) |
JosipLupinski | 0:77987057a515 | 18 | nt[i][j] = nt[i][j-1] * 2; |
JosipLupinski | 0:77987057a515 | 19 | |
JosipLupinski | 0:77987057a515 | 20 | while(1) { |
JosipLupinski | 0:77987057a515 | 21 | int scale = 0 * 8; |
JosipLupinski | 0:77987057a515 | 22 | float speed = 0.05 + pot1; |
JosipLupinski | 0:77987057a515 | 23 | float notesHere_with_you[] = {nt[E6][scale], 0, nt[E7][scale], 0, nt[DH7][scale], 0, nt[E6][scale], 0, nt[CH7][scale], 0, nt[A5][scale], 0, |
JosipLupinski | 0:77987057a515 | 24 | nt[B4][scale], 0, nt[FH5][scale], 0, nt[FH6][scale], 0, nt[E6][scale], 0, nt[DH6][scale], 0, nt[E5][scale], 0, nt[DH5][scale], 0, |
JosipLupinski | 0:77987057a515 | 25 | nt[CH5][scale], 0, nt[E7][scale], 0, nt[DH7][scale], 0, nt[E6][scale], 0, nt[CH7][scale], 0, nt[A5][scale], 0, nt[B4][scale], 0, |
JosipLupinski | 0:77987057a515 | 26 | nt[FH5][scale], 0, nt[B5][scale], 0, nt[E6][scale], 0, nt[DH6][scale], 0, nt[B5][scale], 0, nt[A3][scale], 0, nt[E4][scale], 0, |
JosipLupinski | 0:77987057a515 | 27 | nt[CH6][scale], 0, nt[E5][scale], 0, nt[DH6][scale], 0, nt[E5][scale], 0, nt[E6][scale], 0, nt[E5][scale], 0, nt[B5][scale], 0, |
JosipLupinski | 0:77987057a515 | 28 | nt[E4][scale], 0, nt[GH4][scale], 0, nt[B4][scale], 0, nt[E5][scale], 0, nt[A3][scale], 0, nt[E4][scale], 0, nt[CH6][scale], 0, |
JosipLupinski | 0:77987057a515 | 29 | nt[E5][scale], 0, nt[DH6][scale], 0, nt[E5][scale], 0, nt[E6][scale], 0, nt[E5][scale], 0, nt[E6][scale], 0, nt[FH6][scale], 0, |
JosipLupinski | 0:77987057a515 | 30 | nt[B6][scale], 0, nt[GH6][scale], 0, nt[E5][scale], 0, nt[GH6][scale], 0, nt[CH6][scale], 0, nt[DH6][scale], 0, nt[E6][scale], 0, |
JosipLupinski | 0:77987057a515 | 31 | nt[A3][scale], 0, nt[A4][scale], 0, nt[A3][scale], 0, nt[E4][scale], 0, nt[E5][scale], 0, nt[B5][scale], 0, nt[E6][scale], 0, |
JosipLupinski | 0:77987057a515 | 32 | nt[B6][scale], 0, nt[A6][scale], 0, nt[E7][scale], 0, nt[E6][scale], 0, nt[A6][scale], 0, nt[E7][scale], 0, nt[B7][scale], 0}; |
JosipLupinski | 0:77987057a515 | 33 | float beatHere_with_you[] = {2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 4, 0.5, 4, 0.5, 2, 0.5, 2, 0.5, 0.25, 0.5, 2.75, 0.5, 1, 0.5, 5, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, |
JosipLupinski | 0:77987057a515 | 34 | 2, 0.5, 4, 0.5, 4, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 4, 4, 0.5, 4, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, |
JosipLupinski | 0:77987057a515 | 35 | 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 4, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 0.25, 0.5, 1.25, 0.5, |
JosipLupinski | 0:77987057a515 | 36 | 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 1, 0.5, 1, 0.5, 2, 0.5, 2, 0.5, 1, 0.5, 3, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, 2, 0.5, |
JosipLupinski | 0:77987057a515 | 37 | 2, 0.5, 2, 0.5, 2, 0.5, 2, 4, 4 }; |
JosipLupinski | 0:77987057a515 | 38 | wait(4); |
JosipLupinski | 0:77987057a515 | 39 | |
JosipLupinski | 0:77987057a515 | 40 | for (int i = 0; i < 100; i++) { |
JosipLupinski | 0:77987057a515 | 41 | speaker.period(1 / (2*notesHere_with_you[i]) ); |
JosipLupinski | 0:77987057a515 | 42 | speaker = 0.5; |
JosipLupinski | 0:77987057a515 | 43 | wait(speed * beatHere_with_you[i]); |
JosipLupinski | 0:77987057a515 | 44 | } |
JosipLupinski | 0:77987057a515 | 45 | if (joystickCenter) // press joystick center to stop playing |
JosipLupinski | 0:77987057a515 | 46 | break; |
JosipLupinski | 0:77987057a515 | 47 | } |
JosipLupinski | 0:77987057a515 | 48 | } |