I’ve been busy porting the amazing Axoloti digital modular audio system from its own STM32F4 platform to the Raspberry Pi Zero. The idea is to build a preset machine, using Axoloti patches as presets. This port started out of pure curiosity, it is intended as a totally different application of a great DSP engine and platform as a whole.
Axoloti is described as “Sketching digital audio algorithms with the musical playability of standalone hardware. The Axoloti Patcher offers a “patcher” environment similar to Max/MSP, Pure Data or Reaktor. The patches run on a standalone powerful microcontroller board : Axoloti Core.” (axoloti.com). Sometimes described as the Nord Modular for 2016+, Axoloti makes it easy to assemble not so common instruments with an ever growing number of components created by the vibrant Axoloti community.
It would be really cool to have an Axoloti DSP engine running on a cheap but powerful Raspberry Pi Zero. Experimental audio on a €5 board just opens up an amazing array of possibilities, be it in art or music or education etc.etc. The Axoloti core board itself is closely linked to the editor and can controlled, programmed and edited via that editor. This project aims to only port the DSP engine over. Patches created with the Axoloti editor can be run and controlled over midi on the Pi Zero. MIDI in will be build on the GPIO ports. On with the project!
Grab a Rpi Zero and install Raspbian lite. Use raspi-config to maximize the free space on the sdcard and the set the hostname to something different than “raspberrypi”. From now on I’ll use the hostname “pi3”.
Follow the instructions in this gist to setup the Pi Zero as an USB ethernet device Share your systems internet connection with the Pi Zero (the USB ethernet device). On OSX under system preferences > Sharing > Share WiFi to RNDIS/Ethernet gadget. Reboot / restart the Pi Zero and make an ssh connection with the Pi.
Update: because we’re using an USB audio device, a direct connection to the host PC as USB ethernet device is not possible. The USB data port on the Zero has to be shared with at least the USB audio device. So now I’m using a powered USB hub with a cheap 3D Sound USB audio stick and wireless network via a tl-wn823n wifi stick. Also connected a monitor with a miniHDMI to HDMI adapter. When things are up and running, I intent to configure the USB port as USB midi device. On with the plan:
The Jack audio connection kit is going to handle the audio duties of the new system. Jack offers an audio callback which we will supply with data generated by the Axoloti DSP engine. Jack is offered via the rasbian apt-get system, but that version is linked to something called d-bus, part of the Graphical Desktop Environment. Since we’re not running a GUI, this dependency is very inconvenient. So, install jack without d-bus by following step 4 from these instructions (you might need stuff from steps 1-3).
Together with the Jack audio connection kit, the Avahi zero-conf daemon is configured and installed. Establishing a ssh connection with the zero is done easy with “ssh -l pi pi3.local”. Automate the login (e.g. skipping the password bit) with this post from serverfault. We’re going to need that with the patcher software to automatically upload new patches.
Grab the files from my github repository “git clone https://github.com/sinneb/axoloti_zero.git”. The file “startsys.sh” starts the jack audio daemon and stops the system serial service, to not interfere with the midi in. Change dir to axoloti_zero and run the file “startsys.sh”.
Check the github repo for more instructions to get up and running. Right now I’m reworking the process to have the compilation process done on the host computer instead of on the zero. Compilation on the zero is taking too much time.