MIDI

Dependencies:   mbed USBDevice

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?

UserRevisionLine numberNew 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 }