Project GrainSilo (AE Modular + Pisound)

I’d like to present something I have found super-inspiring lately: I like to call it project GrainSilo. At its heart is an AE Modular system with two Grains modules and a Pisound running Supercollider. There are still some tweaks I’d like to make, but it is getting pretty close to what I think is complete. All in all, it has been really fun developing this system for my personal use, and it feels very inspiring.

One of the critical pieces here is a very rough DIY Arduino trigger/gate-to-MIDI interface, and the complexity involved in pulling that off is minimal—the hardware is just a nano clone, perfboard, a patchwire socket, some resistors, and a power header, and the firmware is very straightforward. Power is easy because everything is 5V, so I don’t have to do level-shifting of any kind. The impetus behind this is that I love generating and manipulating gates in AE Modular, but I find things like tuning oscillators and dialing in precise pitches on a sequencer (especially with the tiny standard in AE modules) to be tiresome. So I do all of the fun, spontaneous clock dividing/logic/burst generation in AE modular, then convert the triggers/gates into midi note-ons, and send those to a pisound over USB, where they clock Supercollider patterns. I then send MIDI over USB from those patterns to two Grains modules (and some other supporting synths). AE Modular has a port of Grains, and I adapted wavegrains and trishape firmwares to be MIDI-controlled. No oscillator tuning required (I do work with conventional Western tuning, so that is a feature for me). The supporting synths are characterful and have a similar lo-fi aesthetic to the AE system: a Bastl microgranny 2 and a megaMIDI (by Aidan Lawrence) for chords etc., plus a Volca Drum.

A sound example is here: (Reductionist Earth Catalog on Instagram: "Slew detecting #sloth cv going up or down, in the fifth mode of limited transposition #aemodular #supercollider #tangiblewaves #arduino"), and here is my GitHub: ( I still have a long list of things I’d like to implement and improve. In particular, I want to make some startup scripts for my Pisound that will decrease the manual effort involved in spinning everything up in SuperCollider. I use ttymidi to convert from serial to MIDI in the pisound. The Grains and my DIY trigger-to-MIDI module are all based on ATMEGA328ps that don’t respond with a serial number when I run udevadm monitor. So I programmed a MIDI CC “handshake” (quotes because I don’t know if what I programmed technically qualifies). When Supercollider sends any value in CC 127, the different modules each respond with a specific CC value for number 3. It seems like I could make a startup script that does that, and renames the ttymidi virtual devices, but that would require some more learning on my part.


fascinating setup, i’m very impressed, i’ve been wanting to think up more ways to conjure interconnectivity and ways to integrate pisound into a modular synth-focussed workflow.

as for your startup i would think it would just need to start your supercollider file and you could just do the handshakey bit after booting the sc server and have it wait a little bit?

keep us posted!

1 Like

It must respond at least with a Vendor Id and Product Id, you might base your udev rules on that. It might be possible to change those values if you can build and install custom firmware into the Chip, or set some Serial value if it has optional support for that.

1 Like

Ah right I tried that and I think it was down to the cheap CH340 chip in my arduino nano and ae modules—when I looked at the device info when plugging the usb cables in to my pisound, there didn’t seem to be any specific identifying info for the different devices. The handshake works well enough though! (A benefit to having full control over firmware)

1 Like

Just wanted to update this project thread with a link to some example SuperCollider code that ties everything together: grainsilo-example.scd · GitHub

I have a few forum threads over on the AE modular forum where I describe all the pieces:

1 Like