The Grassi Box is a MIDI-to-relay piece of hardware (built by Dan Wilson of Circitfied) based on an Arduino teensy and some accompanying software tools built in Max. The idea is to be able to control a variety of my ciat-lonbarde instruments from a computer.

Firstly, it looks and sounds like this:

The two initial methods of control I’ve build are ‘random patch from attack detection’ (as seen in the video above), and an analysis-based re-synthesis similar to my C-C-Combine Max patch (as seen in the video below), but using hardware synthesis/sounds instead of a body(corpus) of samples. I’ve decided on building these two methods of control, as well as an assortment of other software tools into a set of abstractions so that I can easily build more complex patches for the system without needing to code much from the ground up. These include a DMX control module (as seen in both videos), and other low level data handling components.

The reason I went with a Teensy instead of a regular Arduino was for it’s built in MIDI over USB functionality. You can do this with a regular Arduino, but you have to reflash the input chip each time you want to alter the code. The Teensy allows you to switch to USB MIDI and still program the Teensy.

Click here to download the Teensy code.

The hardware around the Teensy, as built by Circitfied, takes the voltage from the Teensy digital pins and uses that to control transistors, which in turn turn on relays. There are 16 total of these transistor/relay pairs. There are some additional features in the box including audio jacks for easy relay-based gating, passive filters, and exposed pins for using the NO (normally open) and NC (normally closed) pins of the relays.

Here is a video using audio analysis to resynthesize the incoming audio using ciat-lonbarde Fourses and Fyrall as the source instruments:

The analysis-based resynthesis works by, first, setting up a series of connections between the Grassi Box and the source instruments. Then determining how many total and simultaneous combinations you want possible (16 total, with 5 simultaneous, in the above video). Then the patch is run, which analyzes every possible combination/permutation for audio descriptions (loudness, pitch, spectral centroid, and roughness). It took about 15minutes to analyze the 6884 combinations/permutations needed for the video using a 100ms analysis window. Once the combinations/permutations are analyzed, a different audio input is fed into the matching engine (in this case, prepared/bowed guitar). This analyzes the incoming audio (in real-time), and finds the nearest combination, given certain descriptor weights, and reconnects that patch. So essentially it’s creating dynamic hardware repatching based on the incoming audio.

I decided to approach the (computer) software side of things by creating a set of abstractions for Max, which I could then piece together quickly and easily, for any given patch I needed. There are two ‘heavy lifting’ abstractions, one dealing with onset-based repatching, and the other with analysis-based repatching, with the analysis-based one being the more complicated of the two. The core of that patch is a bit of javascript code which calculates all the combinations and permutations needed for any given setup. A close friend, Braxton Sherouse, helped with the core function in the javascript code.

Click here to download the abstractions.



Leave a comment


Rodrigo Constanzo is a performer and composer living in Manchester, England. He is an avid improviser and performs regularly using home made electro-acoustic, and modified electronic instruments.