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 built 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 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 its built in MIDI over USB functionality. You can do this with a regular Arduino, but you have to reflash the input chip every time you want to alter the code. The Teensy allows you to switch to USB MIDI and still program the Teensy.
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 in total of these transistor/relay pairs. There are also 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.
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). After that, the patch is run, which analyzes every possible combination/permutation of audio descriptions (loudness, pitch, spectral centroid, and roughness). It took about 15 minutes 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) to find the nearest combination, given certain descriptor weights, and reconnects that patch. So essentially it’s creating dynamic hardware repatching based on the incoming audio.