Skip to content
A Raspberry Pi based semi-modular synthesiser
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


A Raspberry Pi based semi-modular synthesiser, using Pyo.

The assembled synthesiser


All contents of this repository are released under GPLv3, with the exception of synth/, a modified version of ladyada's MCP3008 driver program, which is released into the public domain in the same manner as the original.

System Requirements

This software was originally designed for the original Raspberry Pi Model B, but this was confirmed to have insufficient compute power to run effectively.

However, the software functions correctly on a Raspberry Pi 3. More connections could be added due to its expanded GPIO.


Install Jack audio server with alsa support:

$ sudo apt-get install jackd2 alsaplayer-jack

Install Pyo's dependencies:

$ sudo apt-get install python-dev libjack-jackd2-dev libportmidi-dev portaudio19-dev liblo-dev libsndfile-dev python-dev python-tk python-imaging-tk python-wxgtk2.8

Clone Pyo's repository, and enter its directory:

$ git clone

Install Pyo with Jack support, and Debian install layout:

$ sudo python install --install-layout=deb --use-jack

Provide the user with ownership of the audio output device, by adding the following to "/etc/dbus-1/system.conf":

<policy user="pi">
     <allow own="org.freedesktop.ReserveDevice1.Audio0"/>

Clone this project's repository to the pi user's home directory:

$ git clone


Simply run to start the synthesiser. This script can be run on boot by executing sudo crontab -e and adding the following:

@reboot sh /home/pi/piromancer-synth/ >/home/pi/logs/cronlog 2>&1

If this "run on boot" cronjob is set, ownership of the audio output should instead be set to the root user, by changing the added code in "/etc/dbus-1/system.conf" to:

<policy user="root">
     <allow own="org.freedesktop.ReserveDevice1.Audio0"/>

A "logs" directory should also be created inside the pi user's home directory.

You can’t perform that action at this time.