Simple mbed 5-pin DIN to USB MIDI Converter library
Revision 0:722bbb69c79d, committed 2015-10-22
- 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
5-Pin DIN MIDI Connector