Simple mbed 5-pin DIN to USB MIDI Converter library
Diff: Midi5Pin.cpp
- Revision:
- 0:722bbb69c79d
- Child:
- 1:399a3ad230c8
--- /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