Simple example for triggering actuators based on midi signals

Dependencies:   USBMIDI mbed

Committer:
simon
Date:
Sun Feb 20 16:48:11 2011 +0000
Revision:
0:040c2c8ca5eb

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 0:040c2c8ca5eb 1 // Drums via MIDI!
simon 0:040c2c8ca5eb 2 #include "mbed.h"
simon 0:040c2c8ca5eb 3 #include "USBMIDI.h"
simon 0:040c2c8ca5eb 4
simon 0:040c2c8ca5eb 5 DigitalOut drum[] = {p5, p6, p7, p8}; // the four outputs
simon 0:040c2c8ca5eb 6
simon 0:040c2c8ca5eb 7 void drums(int id, bool on) {
simon 0:040c2c8ca5eb 8 if(id >= 0 && id <= 3) {
simon 0:040c2c8ca5eb 9 drum[id] = on;
simon 0:040c2c8ca5eb 10 }
simon 0:040c2c8ca5eb 11 }
simon 0:040c2c8ca5eb 12
simon 0:040c2c8ca5eb 13 void do_message(MIDIMessage msg) {
simon 0:040c2c8ca5eb 14 switch (msg.type()) {
simon 0:040c2c8ca5eb 15 case MIDIMessage::NoteOnType:
simon 0:040c2c8ca5eb 16 drums(msg.key() - 64, msg.velocity() != 0);
simon 0:040c2c8ca5eb 17 break;
simon 0:040c2c8ca5eb 18 case MIDIMessage::NoteOffType:
simon 0:040c2c8ca5eb 19 drums(msg.key() - 64, 0);
simon 0:040c2c8ca5eb 20 break;
simon 0:040c2c8ca5eb 21 }
simon 0:040c2c8ca5eb 22 }
simon 0:040c2c8ca5eb 23
simon 0:040c2c8ca5eb 24 USBMIDI midi;
simon 0:040c2c8ca5eb 25
simon 0:040c2c8ca5eb 26 int main() {
simon 0:040c2c8ca5eb 27 midi.attach(do_message); // call back for messages received
simon 0:040c2c8ca5eb 28 while (1);
simon 0:040c2c8ca5eb 29 }