How To:

Setting up an I-Cube for Mac and SGI

First of all - what is an I-Cube? I-Cubes are small, standalone boxes that have a number of input/output ports for hardware sensors and some circuitry to convert the sensor data into midi packets for use by musical instruments and outboard computer systems. I-Cubes have been used by performance artists and musicians for years, but have only recently been embraced outside the computer music community. As it turns out, MIDI is a very nice protocol for sending sensor data making the I-Cube a relatively inexpensive way to include sensor technology in a project.

The I-Cube can run in both a host and standalone mode. In host mode, you use software like MAX to work directly with the sensor data in a visual programing environment. Using Max, one can create fully interactive real-time systems that sense heat, light, motion, pressure, etc. and generate some of the same via switches, actuators, and MIDI events. In standalone mode, you can set up the I-Cube to behave as you like with a specified set of input/output sensors. These settings are then stored in flash rom so that the unit can be unplugged, taken on the road, and used in an interactive setting without the need for a host computer.

For my purposes, I set up my I-Cube with the I-CubeX software on a Mac. I-CubeX lets me define what sensors are active and how they generate MIDI events. For example, I have a pressure pad plugged into the ICube input port #2. I wanted that sensor to generate MIDI events as follows:
(You may want to check out a brief introduction to midi programing for an explaination of MIDI channels, controllers, etc.)

	Channel:	1,7 (send a controlchange event on MIDI channel one)
	Controller:	0x10 (MD_GENERALPURPOSE1)
	Data:		(sensor data ranging from 0-127)
Once the I-CubeX software is configured and all of the sensors have been tested and are functioning the way you like, download the settings into the I-Cube and it's ready to function in standalone mode. Now the I-Cube will monitor its sensor inputs and generate MIDI events on its own, according to the settings you gave it. Now you can connect the I-Cube (via MIDI) to an SGI box and write programs that will respond to the sensor values and generate MIDI events as needed.


I guess I should really start from the very begining. First of all, since MAX isn't directly supported by CNS (our local Georgia Tech software support gurus) it must be re-installed once (or twice) every year. This is something of a pain because MAX comes on a CD with a key disk that allows you to make a limited number of "backups" or harddrive copies. Thus far, the folks at Opcode have been at least cordial when trying to get a new key disk - but you don't want to try their patience. I've currently got MAX installed in my personal user directory - something that isn't erased at the end of each term.
When you do install MAX, it'll also install something called OMS which is a kind of MIDI manager. Also, make sure you check the opcode website for the most current version of Max and all it's patches (scripts). Right now I'm running 3.5.9 which seems pretty stable on MacOS 8.
When you buy an I-Cube, it comes with it's own software and manuals, though you'll quickly figure out that Infusion Systems uses MAX for all of their in-house development. The I-CubeX software comes for both Macs and PCs (though I don't have a PC with MIDI capability...) It may be possible to write a library of routines that can talk to the I-Cube directly (all you really need to do is figure out the contents of the MIDI packets that are used to configure it - something the folks from Infusion Systems should be able to tell you.) That would actually allow you to dynamically manipulate the sensor configurations.
After Max and the I-CubeX software are installed, along with all the appropriate patches and upgrades, you're ready to get started. When you launch Max or I-CubeX for the first time, you'll go through a brief OMS setup utility. I chose default settings for everything and it has worked fine for me. I also usually leave Appletalk ON when OMS asks...
When you're ready to configure the I-Cube box, start up I-CubeX32. The first thing you should do is make sure the I-Cube is in standalone mode. (Check in the Options menu for "special") Then, at the top of the window, turn on only those ports that have a sensor plugged in. For some reason, if you turn on a port that doesn't have a sensor, it'll give you bogus data, and muck up other sensors as well. Each sensor is different and not all the options will be available for every sensor type. For example, you can't send Note information directly with a pressure pad sensor (There's no *direct* mapping to a note on/off - it's more of a continuous stream of pressure values).
Basic MIDI has 16 channels. That means that you can get at most 16 note polyphony from the I-Cube. Each channel can support a number of "controllers" like pitch bend, volume change, pan, expression, breath, footpedal, etc. See the midi.h file on an SGI for a complete range of possibilities. All in all, the system is rather flexible and allows you a lot of organizational control.
Once you've got all the sensors set up to your liking, choose "send" in the Options menu and click OK.



kcscott@cc.gatech.edu
© 1998 Georgia Institute of Technology