Diego Arcila
/
Prueba_MIDI
MIDI
main.cpp@0:81e431d882ef, 2020-07-06 (annotated)
- Committer:
- Diego_Mbed
- Date:
- Mon Jul 06 00:47:29 2020 +0000
- Revision:
- 0:81e431d882ef
- Child:
- 1:185dc77ef1ee
MIDI;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Diego_Mbed | 0:81e431d882ef | 1 | // Edited from the Hello World example for the USBMIDI library |
Diego_Mbed | 0:81e431d882ef | 2 | // to play notes from the PwmOut using beep..... |
Diego_Mbed | 0:81e431d882ef | 3 | |
Diego_Mbed | 0:81e431d882ef | 4 | #include "mbed.h" |
Diego_Mbed | 0:81e431d882ef | 5 | #include "USBMIDI.h" |
Diego_Mbed | 0:81e431d882ef | 6 | #include "beep.h" |
Diego_Mbed | 0:81e431d882ef | 7 | |
Diego_Mbed | 0:81e431d882ef | 8 | //USBMIDI object |
Diego_Mbed | 0:81e431d882ef | 9 | USBMIDI midi; |
Diego_Mbed | 0:81e431d882ef | 10 | |
Diego_Mbed | 0:81e431d882ef | 11 | Beep buzzer(D13); // piezo one of two( this only needs one, |
Diego_Mbed | 0:81e431d882ef | 12 | Beep buzzer2(D12); // but piezo two made it more fun)..... |
Diego_Mbed | 0:81e431d882ef | 13 | AnalogIn pot (D11); // and a potentiometer..... |
Diego_Mbed | 0:81e431d882ef | 14 | |
Diego_Mbed | 0:81e431d882ef | 15 | int freq = 0; |
Diego_Mbed | 0:81e431d882ef | 16 | |
Diego_Mbed | 0:81e431d882ef | 17 | // an array of frequencies from C2-C4 for freq..... |
Diego_Mbed | 0:81e431d882ef | 18 | int freqs[] = {261,277,293,311,329,349,369,391,415,440,466,493,523, |
Diego_Mbed | 0:81e431d882ef | 19 | 554,587,622,659,698,739,783,830,880,932,987,1046}; |
Diego_Mbed | 0:81e431d882ef | 20 | |
Diego_Mbed | 0:81e431d882ef | 21 | //defining your midi notes as points in the array..... |
Diego_Mbed | 0:81e431d882ef | 22 | void show_message(MIDIMessage msg) { |
Diego_Mbed | 0:81e431d882ef | 23 | if (msg.type() == MIDIMessage::NoteOnType) { |
Diego_Mbed | 0:81e431d882ef | 24 | if (msg.velocity()!=0) { |
Diego_Mbed | 0:81e431d882ef | 25 | freq = freqs[(msg.key()-48)]; |
Diego_Mbed | 0:81e431d882ef | 26 | } |
Diego_Mbed | 0:81e431d882ef | 27 | else { |
Diego_Mbed | 0:81e431d882ef | 28 | freq = 0; |
Diego_Mbed | 0:81e431d882ef | 29 | } |
Diego_Mbed | 0:81e431d882ef | 30 | } |
Diego_Mbed | 0:81e431d882ef | 31 | } |
Diego_Mbed | 0:81e431d882ef | 32 | |
Diego_Mbed | 0:81e431d882ef | 33 | int main() { |
Diego_Mbed | 0:81e431d882ef | 34 | |
Diego_Mbed | 0:81e431d882ef | 35 | // call back for midi messages received |
Diego_Mbed | 0:81e431d882ef | 36 | midi.attach(show_message); |
Diego_Mbed | 0:81e431d882ef | 37 | |
Diego_Mbed | 0:81e431d882ef | 38 | while (1) { |
Diego_Mbed | 0:81e431d882ef | 39 | |
Diego_Mbed | 0:81e431d882ef | 40 | float time = (pot/2); // assign the pot to the time... |
Diego_Mbed | 0:81e431d882ef | 41 | if (freq > 0){ |
Diego_Mbed | 0:81e431d882ef | 42 | buzzer.beep(freq,0.1); // between this beep... |
Diego_Mbed | 0:81e431d882ef | 43 | wait (time); |
Diego_Mbed | 0:81e431d882ef | 44 | buzzer2.beep((freq*2),0.1); // and this beep (1 octave up). |
Diego_Mbed | 0:81e431d882ef | 45 | wait (time); |
Diego_Mbed | 0:81e431d882ef | 46 | } |
Diego_Mbed | 0:81e431d882ef | 47 | |
Diego_Mbed | 0:81e431d882ef | 48 | wait (0.0001); // wait a millesecond and carry on... |
Diego_Mbed | 0:81e431d882ef | 49 | } |
Diego_Mbed | 0:81e431d882ef | 50 | } |