For my little synth module project I created the following systemd unit file /etc/systemd/system/zynaddsubfx.service that starts up a ZynAddSubFX proces at boot time:
[Unit] Description=ZynAddSubFX [Service] Type=forking User=zynaddsubfx Group=zynaddsubfx ExecStart=/usr/local/bin/zynaddsubfx-mpk ExecStop=/usr/bin/killall zynaddsubfx [Install] WantedBy=local-fs.target
/usr/local/bin/zynaddsubfx-mpk is a simple script that starts ZynAddSubFX and connects my Akai MPK:
#!/bin/bash zynaddsubfx -r 48000 -b 64 -I alsa -O alsa -P 7777 -L /usr/share/zynaddsubfx/banks/SynthPiano/0040-BinaryPiano2.xiz & while ! aconnect 'MPK mini' 'ZynAddSubFX' do sleep 0.1 done /usr/local/bin/zynpi.py
/usr/local/bin/zynpi.py in its turn is a small Python script that shows a message and a red LED on a 16×2 LCD display so that I know the synth module is ready to use:
#!/usr/bin/python # Example using a character LCD plate. import math import time import Adafruit_CharLCD as LCD # Initialize the LCD using the pins lcd = LCD.Adafruit_CharLCDPlate() # Show some basic colors. lcd.set_color(1.0, 0.0, 0.0) lcd.clear() lcd.message('Raspberry Pi 2\nZynAddSubFX')
The LCD is not an Adafruit one though but a cheaper version I found on Dealextreme. It works fine though with the Adafruit LCD Python library. Next step is to figure out if I can use the buttons on the LCD board to change banks and presets.