Main Content

Puredata Portable Synth

Buildroot-based puredata synth, using the nanopi neo core and a CM6206 USB soundcard

I saw the Organelle, and I really wanted one. They released their software as open source, but not their hardware. I decided I would just figure out what they were doing and recreate it on a quad-core Allwinner H3 instead of their single core implementation.

I decided there needed to be an open source hardware project along the pocket operator-organelle-OP1 spectrum. Single board computers are powerful enough to manage. This is the beginning of creating a series of open source hardware projects with a musical embedded linux focus.

This can run any basic organelle synth patch (puredata patch or ‘virtual instrument’) ,doesn’t have fancy drawing on the tft yet, uses the same basic IO (1 rotary encoder, 5 knobs, some buttons), and boots in about 3 seconds. It enumerates as an RNDIS networking, mass storage, and MIDI device via the usb composite library.

It uses the python curses library to draw to the screen, and an OSC implementation for threaded handling of messages. A few bash scripts run on boot to set IRQ affinity on the USB soundcard and the running Puredata process. Two of the four cores are reserved using isolcpus=2,3 in uboot settings.

The prototype functions well enough as a playground to test out my code, but I’m making a PCB to hold it all together. The PCB will have an STM32F103C microcontroller, a CM6206 soundcard, an FE1.1s usb hub IC, and a kindle 3 battery attached. In an ideal world, it’ll also have a USB WIFI board soldered on, an SI4720 for FM receive/transmit capabilities, and a button layout more along the lines of Teenage Engineering’s OP-1.

My goal here isn’t to end the project once I get this set of designs figured out. I want to make it small enough to go into a pocket, and last a few hours on battery. This might not be possible with the H3, but the V3s is an option. Currently my system boots into puredata and python using only about 11 Mb of ram, leaving about 53Mb in an ideal world. The power draw would be less, and it’d have a mic in/line out. The H3 and V3s are both supported in mainline linux, so the software port should be painless.”

Link to article