🎛 ORCARack


Build in Progress


ORCA is an esolang (esoteric language) created by HundredRabbits, which is a kind of 2-dimensional sequencer. Individual characters are operators that mathematically change the values of other operators nearby. It's kind of like Conway's Game of Life with a broader ruleset, implemented as a MIDI or OSC sequencer.

This program is absolutely fascinating. For starters, it's incredibly lightweight and can be run in a wide variety of environments. There are versions that run on Linux, natch, but there are also versions for the Monome Norns or Varvara (the UXN virtual machine). When I saw that this could run on Norns, I got excited thinking about the possibilities of incorporating this into my hardware rig - especially in my Eurorack setup, where I do more nonlinear and experimental approaches to generating sound. So of course, I wanted to make it into a Eurorack module.

Hardware

Qty Item
1 Raspberry Pi 3A
1 Kee Boar Driver
30 Keyswitches
1 Adafruit Neokey 6x5 PCB
30 RGB Keycaps
1 Hyperpixel 4

This one's pretty straightforward. All I need to do is set up a small Linux computer that automatically boots into Linux and runs this application. I have a spare Raspberry Pi 3A on hand - I haven't used it in anything else because it's fairly low-spec (512MB of RAM) but this particular project doesn't need all that much processing power. This is just a series of terminal windows.

To control it, I'll need some kind of keyboard input - but a full keyboard would take up a lot of HP in my rack, and I'm not exactly a fan of typing to make music. Instead, I'll be using two 3x5 keypads and assigning three of the keys to work as modifiers. That leaves a total of 27 keys for every other character that ORCA uses - easily achievable with modifiers. For starters, there are 26 letters in the alphabet, 52 if you count lower & uppercase. Using a modifier to switch case (aka Shift) and a second modifier to change character (let's call it Meta), this full character set can be found using only 13 keys. Applying the same approach works for directionals and digits as well.

These key matrices will be controlled by an Adafruit Kee Boar Driver that came as a freebie in one of my orders. This board has enough GPIO to handle the key matrix (11 pins are needed) as well as a couple of extra pins to drive the RGB backlighting on each of the keys. There's also a STEMMA port on board, breaking out the I2C connection, which I'll use for a quad DAC board. The DAC is a total of 4x channels of analog autput, giving me 4x CV outputs to integrate into the Eurorack system.

It will also need a screen to display the application itself. Since this is a terminal application, low-res screens ar perfectly acceptable. I decided to use a spare Hyperpixel 4 that I had laying around. Complete overkill for this project, to be sure - but the only other spare screens I had on hand were either a bit too small to fill out a full 3U rack space, or so big that it would occupy more HP in the case than I really wanted. Plus, I'm trying to use up all of the raspi-specific hardware I have on hand, and the Hyperpixel is a device that I'd have trouble using in future projects which will not use the raspi.

The mounting panels for the screen, keys, and jacks will be 3d printed.

Software

Here, I'll be using PostmarketOS again, because it's my favorite linux distro for embedded projects. I didn't want to limit myself to just one screen of sequencing, so I'll be running SwayWM and using a dedicated keypad combination to switch virtual desktops. At boot, each desktop will be populated with a fullscreen terminal running ORCA, and all of the instances will be tied together to share a clock and/or MIDI device. The Kee Boar Driver will also be serving as a MIDI device, translating incoming MIDI from the raspi into CV/Gate signals to the output.