This post is a little late but has been on the fore front of my mind. Gumbo Labs collaborated in a very cool project with Sergio Padilla, Fred Stivers and Jimmy Stamp for the 2009 DesCours event. Sergio and Fred dropped by on a Tuesday night to share their developing vision of their installation and to see if we would be interested in collaborating. They heard about us through Simon’s presentation at Pecha Kucha. Sergio facilitates these events and I hope to check it out someday, sounds very cool. The first step was a brain storming session to develop ideas that might aesthetically match their vision.
Lots of ideas and several meetings later, the ideas started to form into action steps. Sergio and Fred experimented with creating inflatable shapes from plastic sheeting (found at your local hardware store). I think the best results came from using an iron with the bond polyethylene sheeting between sheets of parchment paper. Gumbo Lab members started to experiment with lighting effects. Here is what we landed on…
- Pressure Sensitive Alarm Mat
- Arduino Diecimila
- UA-20 MIDI interface
- USB DMX Widget
- 4x coemar ParLite
The final program started life at the debounce switch example program provided with the Aurduino Environment (Sketchbook > Examples > Digital > Debounce). Variables like inPin, previous, and time were changed from scalers to arrays. The LED at pin 13 was flashed at in switch change to provide some simple feedback.
Critical was using MIDI.h. Attempts to bash bits at pin ala http://itp.nyu.edu/physcomp/Labs/MIDIOutput didn’t work the the SYSEX MIDI messages needed. The needed documentation for the _MIDI Show Control can be found here.
The Wholehog 3 can send or receive the same types of MSC commands. The basic structure of MIDI Show Control messages is: F0 7F device_id 02 command_format command [data] F7
The device_id is one byte and is set to the ID of the controller that should receive and process the message.
The command_format is one byte with a decimal value of 0 through 127. The lighting industry most commonly uses value 01, which is General Lighting.
The command is one byte with a decimal value of 0 through 127. Some commands require an amount of data to follow the command.
F7 completes the command.
Examples of MSC Messages
Pressing Go for List 1, Cue 1, sends this message:
F0 7F 01 02 01 01 31 00 31 00 F7
Command 01 is GO, which runs using the assigned cue time.
doHigh and doLow are used to flash the feedback LED blink is used to give feedback that the program has loaded MSCgoCmd generates the MIDI MSC string as per the flyingpig documentation.
pushInteger2CmdStr translates a numeric values to ascii string format needed in the MIDI MSC. Only one byte was used to store the cue number so the routine will only work on three digit values (< 256).
Each switch had two associated circular queues, one for CueList and one for Cue number. When the end of the queue was reached, it started over at the beginning.
In the end all switches were treated as sw0.
sw0CueListSeq and sw0CueSeq were the Cues we used to change the lights from all RED to all BLUE in about 20 steps (5% each change).