Simple mbed 5-pin DIN to USB MIDI Converter library

Dependents:   5-PinMIDIDemo

Committer:
mpetrut
Date:
Thu Oct 22 16:58:11 2015 +0000
Revision:
6:08234a5a8598
Parent:
1:399a3ad230c8
No docs;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mpetrut 0:722bbb69c79d 1 /* Simple mbed 5-pin DIN to USB MIDI Converter library
mpetrut 0:722bbb69c79d 2 Marius Petrut, 2015
mpetrut 0:722bbb69c79d 3 */
mpetrut 0:722bbb69c79d 4
mpetrut 0:722bbb69c79d 5 #include "Midi5Pin.h"
mpetrut 0:722bbb69c79d 6 #include "mbed.h"
mpetrut 0:722bbb69c79d 7
mpetrut 0:722bbb69c79d 8 #define NOTE_ON 144
mpetrut 0:722bbb69c79d 9 #define CONT_CTRL 176
mpetrut 0:722bbb69c79d 10
mpetrut 0:722bbb69c79d 11 Midi5Pin::Midi5Pin(PinName txPin, PinName rxPin) :
mpetrut 0:722bbb69c79d 12 _pc(USBTX, USBRX), _uart5pin(txPin, rxPin) {
mpetrut 1:399a3ad230c8 13 _pc.baud(115200);
mpetrut 0:722bbb69c79d 14 // 31250 is the official specification
mpetrut 0:722bbb69c79d 15 _uart5pin.baud(31250);
mpetrut 0:722bbb69c79d 16 }
mpetrut 0:722bbb69c79d 17
mpetrut 0:722bbb69c79d 18 void Midi5Pin::write(char command, char param1, char param2) {
mpetrut 0:722bbb69c79d 19 _uart5pin.putc(command);
mpetrut 0:722bbb69c79d 20 _uart5pin.putc(param1);
mpetrut 0:722bbb69c79d 21 _uart5pin.putc(param2);
mpetrut 0:722bbb69c79d 22 }
mpetrut 0:722bbb69c79d 23
mpetrut 0:722bbb69c79d 24 void Midi5Pin::noteOn(char note, char velocity) {
mpetrut 0:722bbb69c79d 25 _uart5pin.putc(NOTE_ON);
mpetrut 0:722bbb69c79d 26 _uart5pin.putc(note);
mpetrut 0:722bbb69c79d 27 _uart5pin.putc(velocity);
mpetrut 0:722bbb69c79d 28 }
mpetrut 0:722bbb69c79d 29
mpetrut 0:722bbb69c79d 30 void Midi5Pin::noteOff(char note) {
mpetrut 0:722bbb69c79d 31 _uart5pin.putc(NOTE_ON);
mpetrut 0:722bbb69c79d 32 _uart5pin.putc(note);
mpetrut 0:722bbb69c79d 33 _uart5pin.putc(0);
mpetrut 0:722bbb69c79d 34 }
mpetrut 0:722bbb69c79d 35
mpetrut 0:722bbb69c79d 36 void Midi5Pin::contCtrl(char ccNumber, char value) {
mpetrut 0:722bbb69c79d 37 _uart5pin.putc(CONT_CTRL);
mpetrut 0:722bbb69c79d 38 _uart5pin.putc(ccNumber);
mpetrut 0:722bbb69c79d 39 _uart5pin.putc(value);
mpetrut 0:722bbb69c79d 40 }
mpetrut 0:722bbb69c79d 41
mpetrut 0:722bbb69c79d 42 void Midi5Pin::read() {
mpetrut 0:722bbb69c79d 43 if (_uart5pin.readable()) {
mpetrut 0:722bbb69c79d 44 _pc.putc(_uart5pin.getc());
mpetrut 0:722bbb69c79d 45 }
mpetrut 0:722bbb69c79d 46 }