PRZM is an Animated MIDI Lightbox. Up to 4 people can play to generate a semi-random improvised musical jam.
It uses robust, arcade-style buttons mounted on the sides to trigger sound and light at the same time. Triggering a button will send pitch messages out to a MIDI compatible software/hardware instrument. In the current installation, Ableton Live is being used with custom instruments and MIDI effects that manipulate the MIDI data being generated. Animated light patterns display through the tinted black perspex top layer. These have been created with Neo Pixel Digital RGB strips which allow for programmable colours and patterns to be triggered via an Arduino Uno board.
An Arduino Uno is being used as the central brain for the entire system. It processes the code to trigger both MIDI note data and the Neo Pixel patterns. It is also recognised as a class-compliant MIDI device which means MIDI data is sent over the Uno’s standard USB connection.
To generate the necessary MIDI code, the MIDI library for Arduino is being used. Each button is connected to a digital pin on the Arduino board and is hard-coded to trigger a specific MIDI note between C1-G1. The notes being triggered for this installation are not important as these are further modified in Ableton Live.
To generate MIDI data over a USB connection, the HIDUINO firmware is being used to build a class-compliant USB-MIDI device from an Arduino UNO (this also works on the Arduino MEGA 2560). Once the all of the required code is on the Arduino, controlling both the Neo Pixels and the MIDI data, the Arduino is flashed with the HIDUINO firmware after which it is then recognised as a stand-alone MIDI device by a computer.
Neo Pixel Strips
The Neo Pixel strip has 60 digitally-addressable pixel LEDs per meter. Each RGB LED on the strip can be customised to create various patterns via the Arduino code. The main strip has been cut into four smaller sections, each one connected to its own dedicated digital pin on the Arduino Uno. This allows for easier control over the separate strips from within the code.
The code generates a chase routine with a cyclic colour wheel running throughout. This is triggered and cleared with each button press. A layer of frosted white material is being used to diffuse the light being generated be the Neo Pixel strips allowing it to spread more evenly across the stencil cut shapes above.
MIDI notes are transmitted into Ableton Live across 8 separate tracks. Each track contains a customised instrument and makes use of the standard MIDI effects for processing. Each instrument has been grouped to an Instrument Rack as this allows the Key Chain to be used to isolate a specific MIDI note to trigger the instrument (essentially filtering out all other MIDI notes).
An example of a MIDI Effect chain can be seen below where a single note is capable of triggering and iterating through a number of different notes (Random), quantised to a specified scale (Scale), have notes added (Chord) and finally transposed (Pitch) before being sent to the instrument (Operator).
As each PRZM player has only two buttons to interact with, more emphasis can be placed on what those buttons are doing. In the example below, two instruments are being triggered with a single button using a similar method as above, but they are separated via parallel chains and make use of the Note Length MIDI effect. Using the ‘Trigger’ option, the second instrument is triggered with a note-off message. This means a note from instrument 1 is triggered when pressing a button, and a note from instrument 2 when the button is de-pressed. Customising the envelope settings in the instruments can also be useful here to determine variation between short and long presses.
Working with Live’s MIDI effects have made the PRZM a fun and interactive musical tool as they allow each track to have its own unique behaviour whilst conforming to musical attributes such as scale and tone.
A special thank you to some people who made PRZM possible:
Jim Frize of Sonodrome
Paul Mazzitelli of R10