MIDI

MIDI Communication MIDI, or Musical Instrument Digital Interface, is a specification for a communications protocol between digital synthesizers and other digital music devices. It was developed to be as simple and general as possible, to give synthesizer manufacturers as much flexibility as possible, yet still have their instruments talk to each other without communication problems. …

MidiStroke

MidiStroke is an application for OSX that allows you to trigger keystrokes an any application using MIDI messages. It can be used to automate various tasks using MIDI devices.

MIDI/OSC devices

The Royal Conservatory in Holland has made a number of microcontroller modules with MIDI interfaces, and implementing the Open Sound Control (OSC) protocol. Among them are IPSonLab, an IP to MIDI board; MicroLab, a voltage to MIDI board, and more.

MIDI player in Wiring/Arduino

/* MIDI player by Tom Igoe Reads an analog value in on analog channel 0, and if a switch on pin 10 is pressed, plays a note in the middle C octave corresponding to the analog value. Thanks to Ryan Holsopple for getting MIDI out working using serialWrite() Created 19 Jan. 2006 updated */ // The switch is on Arduino pin 10: #define switchPin 10 // Middle C (MIDI note value 60) is the lowest note we’ll play: #define middleC 60 // Indicator LED: #define LEDpin 13 // Variables: char note = 0; // The MIDI note value to be played int AnalogValue = 0; // value from the analog input int lastNotePlayed = 0; // note turned on when you press the switch int lastSwitchState = 0; // state of the switch during previous time through the main loop //Function prototype: void noteOn(char cmd, char data1, char data2); void blink(); void setup() { // set the states of the I/O pins: pinMode(switchPin, INPUT); pinMode(LEDpin, OUTPUT); // Set MIDI baud rate: beginSerial(31250); blink(3); } void loop() { // My potentiometer gave a range from 0 to 1023: AnalogValue = analogRead(0); // convert to a range from 0 to 11: note = AnalogValue / 100; // Check to see that the switch is pressed: if (digitalRead(switchPin) == 1) { // check to see that the switch wasn’t pressed last time // through the main loop: if (lastSwitchState == 0) { // set the note value based on the analog value note = note + middleC; // start a note playing: noteOn(0x90, note, 0x40); // save the note we played, so we can turn it off: lastNotePlayed = note; } else // if the switch is not pressed: // but the switch was pressed last time through the main loop: if (lastSwitchState == 1) { // stop the last note played: noteOn(0x90, lastNotePlayed, 0x00); } } // save the state of the switch for next time // through the main loop: lastSwitchState = switchPin; } // plays a MIDI note.

All About Microcontrollers

See also Dan O’Sullivan’s notes on microcontrollers. My notes draw heavily from Dan’s. A microcontroller is a small, inexpensive computer, usually used for sensing input from the real world and controlling devices based on that input. Most electronic devices you use today have a microcontroller in them of some form or another. Microcontrollers are easy …