Example program for the Midi5Pin library.

Dependencies:   DebounceIn Midi5Pin mbed

main.cpp

Committer:
mpetrut
Date:
2015-10-22
Revision:
0:0798ae015db0

File content as of revision 0:0798ae015db0:

// Demo program that showcases the simple Midi5Pin library
// capable of MIDI input/ouput using two 5-Pin DIN connectors

#include "mbed.h"
#include "DebounceIn.h"
#include "Midi5Pin.h"

AnalogIn distSensor(p20);
DebounceIn btn_on(p27);
DebounceIn btn_off(p26);
Midi5Pin midi(p13, p14);

int main() {   
    // Initialize buttons
    btn_on.mode(PullUp);
    btn_off.mode(PullUp);
    wait(.001);
    int old_btn_on=0, new_btn_on;
    int old_btn_off=0, new_btn_off;

    char controlMessage = (char)(distSensor*127);

    while (1) {  
        // This reads the serial UART (5-pin Input) and outputs
        // to the USB virtual com port
        midi.read();
        
        // When this button is pressed, MIDI message is sent to the
        // 5-Pin serial Output
        new_btn_on = btn_on;  
        if ((new_btn_on==0) && (old_btn_on==1)) midi.noteOn(60, 100);
        old_btn_on = new_btn_on;
        
        new_btn_off = btn_off;
        if ((new_btn_off==0) && (old_btn_off==1)) midi.noteOff(60);
        old_btn_off = new_btn_off;
        
        // Send continuous control messages from the IR distance
        // sensor to the 5-pin Output
        if ( abs((char)(distSensor*127)-controlMessage) > 2) {
            midi.contCtrl(14, (char)(distSensor*127));
        }
    }
}