Example program for the Midi5Pin library.

Dependencies:   DebounceIn Midi5Pin mbed

Committer:
mpetrut
Date:
Thu Oct 22 10:08:58 2015 +0000
Revision:
0:0798ae015db0
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mpetrut 0:0798ae015db0 1 // Demo program that showcases the simple Midi5Pin library
mpetrut 0:0798ae015db0 2 // capable of MIDI input/ouput using two 5-Pin DIN connectors
mpetrut 0:0798ae015db0 3
mpetrut 0:0798ae015db0 4 #include "mbed.h"
mpetrut 0:0798ae015db0 5 #include "DebounceIn.h"
mpetrut 0:0798ae015db0 6 #include "Midi5Pin.h"
mpetrut 0:0798ae015db0 7
mpetrut 0:0798ae015db0 8 AnalogIn distSensor(p20);
mpetrut 0:0798ae015db0 9 DebounceIn btn_on(p27);
mpetrut 0:0798ae015db0 10 DebounceIn btn_off(p26);
mpetrut 0:0798ae015db0 11 Midi5Pin midi(p13, p14);
mpetrut 0:0798ae015db0 12
mpetrut 0:0798ae015db0 13 int main() {
mpetrut 0:0798ae015db0 14 // Initialize buttons
mpetrut 0:0798ae015db0 15 btn_on.mode(PullUp);
mpetrut 0:0798ae015db0 16 btn_off.mode(PullUp);
mpetrut 0:0798ae015db0 17 wait(.001);
mpetrut 0:0798ae015db0 18 int old_btn_on=0, new_btn_on;
mpetrut 0:0798ae015db0 19 int old_btn_off=0, new_btn_off;
mpetrut 0:0798ae015db0 20
mpetrut 0:0798ae015db0 21 char controlMessage = (char)(distSensor*127);
mpetrut 0:0798ae015db0 22
mpetrut 0:0798ae015db0 23 while (1) {
mpetrut 0:0798ae015db0 24 // This reads the serial UART (5-pin Input) and outputs
mpetrut 0:0798ae015db0 25 // to the USB virtual com port
mpetrut 0:0798ae015db0 26 midi.read();
mpetrut 0:0798ae015db0 27
mpetrut 0:0798ae015db0 28 // When this button is pressed, MIDI message is sent to the
mpetrut 0:0798ae015db0 29 // 5-Pin serial Output
mpetrut 0:0798ae015db0 30 new_btn_on = btn_on;
mpetrut 0:0798ae015db0 31 if ((new_btn_on==0) && (old_btn_on==1)) midi.noteOn(60, 100);
mpetrut 0:0798ae015db0 32 old_btn_on = new_btn_on;
mpetrut 0:0798ae015db0 33
mpetrut 0:0798ae015db0 34 new_btn_off = btn_off;
mpetrut 0:0798ae015db0 35 if ((new_btn_off==0) && (old_btn_off==1)) midi.noteOff(60);
mpetrut 0:0798ae015db0 36 old_btn_off = new_btn_off;
mpetrut 0:0798ae015db0 37
mpetrut 0:0798ae015db0 38 // Send continuous control messages from the IR distance
mpetrut 0:0798ae015db0 39 // sensor to the 5-pin Output
mpetrut 0:0798ae015db0 40 if ( abs((char)(distSensor*127)-controlMessage) > 2) {
mpetrut 0:0798ae015db0 41 midi.contCtrl(14, (char)(distSensor*127));
mpetrut 0:0798ae015db0 42 }
mpetrut 0:0798ae015db0 43 }
mpetrut 0:0798ae015db0 44 }