Re-tasked Zynthian

Updated 7 Aug 2022

I have sold the Zynthian, so there’ll be no more development on this page.

I recently bought a Zynthian kit (ver 4) and assembled it using my own RPi4(8GB). It’s a great system which gives you an enormous toolkit to make music. I was particularly impressed with the sound quality and the number of plug-ins to tweak your sounds. System development is actively occurring, so what I discuss here may well be out of date in a few weeks.

I’ve been using FluidSynth for a number of years, and have had various attempts at making a synth that is compact, has good sound quality, and is user-friendly. Incorporated in Zynthian is the ability to use FluidSynth, and it mostly ticks my boxes. My main use-case is in a concert band where I need a number of traditional instruments, plus the ability to change instruments quickly. Zynthian can do this, but its configuration (enabling it to “do many things”) has made its workflow a bit awkward (for me).

So I decided to try re-tasking the Zynthian hardware to make a simple platform that is dedicated to my use-case. I needed:

  • FluidSynth only
  • Quick instrument change (snapshot change in Zynthian language)
  • Ability to tweak the snapshot sounds (plugins)
  • Screen
  • Adjusting knob(s)

Architecture

Since I’m using only the FluidSynth (FS) engine, there’s no need to re-load the engine when changing instruments – only re-configuring is required. FS has a built-in console mode (telnet) with which you can re-configure it in real time, so I used that.

The information flows look like this:

The Python program does the following:

  • enables the user to create instruments (snapshots) using SF2 presets and adding transpose, reverb, equaliser
  • enables the user to edit the instruments
  • takes the incoming MIDI from my wind controller and forwards it on to FS
  • filters out program changes from my stompbox, and uses them to select instruments (snapshots)
  • configures the running FS via Telnet (this involves changing SF2 preset, configuring the LADSPA plugins, applying transposition, etc)
  • writes to the screen
  • accepts input from the knobs and switches
  • configures the ALSA mixer volume

The screen uses the Zynthian drivers (/dev/fb1), and is written to using Pygame.

The screen looks like this

When using FS under Zynthian, I only ever had need for reverb and equaliser plugins. I had used LADSPA with FS previously, so I implemented the relevant “TAP” plugins. There is a section on the screen for configuring each plugin.

The S1-S4 buttons are functional as program-change buttons – to program them you simply select the instrument (snapshot) that you want, and hold the appropriate S-button in for 2 seconds.

ToDo

The box is working OK, but I have had very little time using it, so I’m sure additional features will be required. Currently, the DIN MIDI sockets are not functioning, but I have minimal use for them, so they can wait.