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