Simple mbed 5-pin DIN to USB MIDI Converter library

Dependents:   5-PinMIDIDemo

Files at this revision

API Documentation at this revision

Comitter:
mpetrut
Date:
Thu Oct 22 10:02:00 2015 +0000
Child:
1:399a3ad230c8
Commit message:
First Commit

Changed in this revision

Midi5Pin.cpp Show annotated file Show diff for this revision Revisions of this file
Midi5Pin.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Midi5Pin.cpp	Thu Oct 22 10:02:00 2015 +0000
@@ -0,0 +1,46 @@
+/* Simple mbed 5-pin DIN to USB MIDI Converter library
+Marius Petrut, 2015
+*/
+
+#include "Midi5Pin.h"
+#include "mbed.h"
+
+#define NOTE_ON 144
+#define CONT_CTRL 176
+
+Midi5Pin::Midi5Pin(PinName txPin, PinName rxPin) :
+    _pc(USBTX, USBRX), _uart5pin(txPin, rxPin) {
+        _pc.baud(256000);
+        // 31250 is the official specification
+        _uart5pin.baud(31250);
+    }
+ 
+void Midi5Pin::write(char command, char param1, char param2) {
+    _uart5pin.putc(command);
+    _uart5pin.putc(param1);
+    _uart5pin.putc(param2);
+}
+
+void Midi5Pin::noteOn(char note, char velocity) {
+    _uart5pin.putc(NOTE_ON);
+    _uart5pin.putc(note);
+    _uart5pin.putc(velocity);
+}
+
+void Midi5Pin::noteOff(char note) {
+    _uart5pin.putc(NOTE_ON);
+    _uart5pin.putc(note);
+    _uart5pin.putc(0);
+}
+
+void Midi5Pin::contCtrl(char ccNumber, char value) {
+    _uart5pin.putc(CONT_CTRL);
+    _uart5pin.putc(ccNumber);
+    _uart5pin.putc(value);
+}
+
+void Midi5Pin::read() {
+    if (_uart5pin.readable()) {
+        _pc.putc(_uart5pin.getc());
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Midi5Pin.h	Thu Oct 22 10:02:00 2015 +0000
@@ -0,0 +1,38 @@
+/* Simple mbed 5-pin DIN to USB MIDI Converter library
+Marius Petrut, 2015
+*/
+
+#ifndef MBED_MIDI5PIN_H
+#define MBED_MIDI5PIN_H
+ 
+#include "mbed.h"
+ 
+class Midi5Pin {
+public:
+    // Create a Midi5Pin object with the specified
+    // transmit and receive pins
+    Midi5Pin(PinName txPin, PinName rxPin);
+    
+    // Send a command to the 5-pin output port
+    void write(char command, char param1, char param2);
+    
+    // Send a noteOn MIDI message to the 5-pin output
+    void noteOn(char note, char velocity);
+    
+    // Send a noteOff MIDI message to the 5-pin output
+    void noteOff(char note);
+    
+    // Send a continuous control message to the 5-pin output
+    void contCtrl(char ccNumber, char value);
+    
+    // Read from the 5-pin input connection and send
+    // it to the PC through the USB virtual com port
+    void read();
+  
+private:  
+    Serial _pc;
+    Serial _uart5pin;
+};
+ 
+#endif
+ 
\ No newline at end of file