organelle2

This is, very probably, the sign of things to come.

With ARM boards becoming ever-more cheap, accessible, powerful, and efficient, the same technology that is transforming phones, laptops, tablets, and other categories can just as easily be the foundation of a musical instrument. And one “computer” in your life might not look like a conventional desktop or laptop.

So, we were both unsurprised and delighted to see a box emerge over the weekend looking like a quirky Pocket Piano, but providing lots of stuff useful to people interested in taking the world of synths and effects from Pd out of a computer and putting it on hardware geared for music making:

Critter & Guitari’s new music box turns into anything, with Pd

Now, if you are a Pd user or Linux lover, you probably have a hunger for more details. We’ve got some answers from the folks at Critter & Guitari (Owen & Chris) to satisfy some of those burning questions:

How do you load patches on the Organelle? Any USB stick will work? And then you have access to the file system for Pd?

Yep, any old USB stick will work. Pd has access to both root file system and USB (just like a larger computer) but we like to keep root file system in read only mode so the machine always boots up to the same state no matter what, so all the Pd related file I/O happens on the USB stick.

A USB stick has a folder called ‘patches’ and inside is a folder for each patch — the name of the folder is the name of the patch, and all files related to the patch go inside, with the main patch file named ‘main.pd’. So the path to a synth called “BasicPoly” would look like this: /USB-drive/patches/BasicPoly/main.pd

When you turn on the Organelle, the screen just lists the folders in the patches folder (their names being the names of the patches). When you select a patch (say BasicPoly), it starts pd with the main.pd file (/USB-drive/patches/BasicPoly/main.pd). If main.pd is not found, it will look for ‘run.sh’ and execute it. So a patch doesn’t necessarily need to be created in Pd (more on this later)

In terms of playing and recording sound files, you are really only limited by the size of USB stick.

What’s that HDMI out for? Could you do visuals on this? Or I assume it’s just to see the interface somehow?

You can connect an HDMI monitor (and USB keyboard/mouse) and fire up a simple desktop environment and edit/create patches right on the device. We have done preliminary HDMI visual experiments, and it is definitely a possibility, but we are focusing on audio right now.

Is Pd running -nogui [This is the mode in which Pure Data disables its graphical user interface.]

Yes, in normal operation Pd runs -nogui. When you connect a monitor and start desktop, Pd runs with gui for editing.

How do you prepare Pd patches for this? Anything special? How do the knobs and keys map? (I guess audio just maps as adc~ and dac~ in which means a lot of patches won’t need modification.)

We tried to the keep patches isolated from underlying hardware, so a patch receives knobs and key presses as regular Pd messages (e.g. [r knob1], [r notes] … etc), and sends and receive audio out (e.g. [s~ outL, r~inL]). There is a ‘mother.pd’ patch always loaded that is the other end to these sends and receives. It communicates with the actual hardware (using OSC), implements MIDI, and does things like volume control on the output before piping it to dac~

This way, a patch has no dependencies outside of Pd, so a patch can be run on the Organelle, a laptop, or even a libpd environment without any modifications (just needs a mother patch to send and receive with, or the mother program in the case of libpd).

When you say “low-level” programming is possible, what do you mean?

There is always writing externals [C code that executes inside Pd], and gcc [compiler] is installed on the box, so you can plug in a monitor and keyboard and start compiling (actually this is always how we have done it, never even bothered setting up a cross compiler!)
Also, as mentioned earlier, if ‘main.pd’ is not found in the patch folder, the Organelle will search for ‘run.sh’, which can be used to launch any custom program you like. So you could write a program in C that opened the ALSA sound device directly and started making sound. Or use a different programming environment all together — we have done preliminary testing with both Chuck and SuperCollider and they both work.
That said, currently the only Critter & Guitari supported way to make patches is with Pd, but at the end of the day, it is a Linux box, so it can pretty much be anything…

What Linux distribution are you running?

It is Arch Linux-based build, kernel 3.14.

What’s available on that screen as far as menus?

There are really just 2 screens, a menu, and a patch detail screen. The screen has a simple menu for system-related things like shutting down, simple configs, ejecting USB…. and then a list of patches.

pdcritter

When you select a patch, a second patch detail screen comes up that indicates what the four knobs and extra button do. This information is sent from the patch itself. In Pd, you can send messages to the screen to display text (e.g. [s screenLine1]). This is very useful, because the knobs can report the actual parameters (not just “Delay Time”, but “Delay Time 452 ms”). You could also print information other than Knob/Aux button status. For example, you could say: “Use this Patch on our first song” or “Make sure Knob 2 is set to 2 o’clock to start” or some other kind of note helpful for a performance, etc.

Picture: a version of the mother.pd patch, an actual patch in Organelle format (BasicPoly), and the resulting patch detail screen.

mainpd

knobs

Thanks Chris and Owen. It’s funny, I’ve had lots of conversations over recent years about people wanting to do stuff like this. It’s great to see it in an actual product. (And I’m sure that will inspire more, in other form factors, which could be fun… like Eurorack for software patching lovers, a new breed of instrument.) But the implementation here already sounds eminently intelligent. I want one; can’t wait to see it.