MIDI

Dependencies:   mbed USBDevice

Revision:
0:81e431d882ef
Child:
1:185dc77ef1ee
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Jul 06 00:47:29 2020 +0000
@@ -0,0 +1,50 @@
+// Edited from the Hello World example for the USBMIDI library
+// to play notes from the PwmOut using beep.....
+ 
+#include "mbed.h"
+#include "USBMIDI.h"
+#include "beep.h"
+ 
+//USBMIDI object
+USBMIDI midi;
+ 
+Beep buzzer(D13); // piezo one of two( this only needs one,
+Beep buzzer2(D12); // but piezo two made it more fun).....
+AnalogIn pot (D11); // and a potentiometer.....
+ 
+int freq = 0;
+ 
+// an array of frequencies from C2-C4 for freq.....
+int freqs[] = {261,277,293,311,329,349,369,391,415,440,466,493,523,
+                554,587,622,659,698,739,783,830,880,932,987,1046};
+ 
+//defining your midi notes as points in the array.....
+void show_message(MIDIMessage msg) {
+    if (msg.type() == MIDIMessage::NoteOnType) {
+        if (msg.velocity()!=0) {
+            freq = freqs[(msg.key()-48)];
+        }
+        else {
+            freq = 0;
+        }
+    }
+}
+ 
+int main() {
+    
+    // call back for midi messages received
+    midi.attach(show_message);
+    
+    while (1) {
+    
+    float time = (pot/2); // assign the pot to the time...
+    if (freq > 0){
+        buzzer.beep(freq,0.1); // between this beep...
+        wait (time);
+        buzzer2.beep((freq*2),0.1); // and this beep (1 octave up).
+        wait (time);
+        }
+    
+    wait (0.0001); // wait a millesecond and carry on...
+    }
+}
\ No newline at end of file