What is Zynthian?

IMPORTANT: Comments are closed in this post, please, use the forum.

Zynthian is an Open Synth Platform based in Raspberry Pi, some Open Software Synthesizers and more.

I’m trying to integrate all the parts in a realiable case with a nice and ergonomic User Interface, so everybody can enjoy this wonderful synthesizers in any place without having to install or configure anything.

zynthian_box_retroblack_trans2

When it’s finished, i would like to make it available for everybody, as a toolkit or as a finished product, so you can use it for Live Playing, Music Production or any kind of experimentation.

Of course, all the specifications will be freely available, so you can build your own device if you prefer 😉

The Hardware:

  • RaspBerry Pi 2
  • HifiBerry DAC+
  • AdaFruit TFT 2.8 inch
  • 4 rotary encoders + switches
  • MIDI IN connector (using RBPi UART)
  • A Hard Rock Steel Case !!!

zynthian_hardware_scheme

First, I’m using HifiBerry DAC+ and i’m really satisfied with it. The sound is clear and warm. Really HiFi.

Surprisingly, the rotary controller part was really easy. Now i ve a beatiful printed PCB circuit for this part and a really functional and stable C library/driver that interface the controllers. With the actual configuration, every GPIO pin is used, and 2 of the switches can’t be connected, so i’m working in expand it using a I2C GPIO bridge. I hope it will be ready before christmas. By now, i’m working with 2 switches and is, more or less, enough.

In the other side, the MIDI IN connector was a nightmare. Really! I’ve spent a lot of hours trying to understand what happened. Even i tryed with an oscilloscope! Finally, i’ve realized that the kernel was not setting correctly the UART frecuency. Luckly, there are very good people in the Kernel side and i get a patch in couple of days. You can read the history:

https://www.raspberrypi.org/forums/viewtopic.php?p=798086#p798086

Now i have a fully working MIDI IN connector. I’ve dessigned a nice PCB, that includes the MIDI and GPIO/I2C expander. When i finish my tests, i will send to print some units.

The TFT screen is a resistive touch screen, but i’m not using the “touch part” by now. I’ve done an initial version of UI using it, but it gots clear that rotary controller are, by far, more ergonomic, so i decided to remove the touch part. In the future, i would like to use the touch screen as a bi-dimensional controller, ala “kaos pad”.

The Software:

Zynthian is a multi-engine architecture. By now, i’ve integrated 4 engines:

  • ZynAddSubFX
  • FluidSynth
  • setBfree (Hammond B3)
  • Linuxsampler

But i intend to implement some others in the near future:

  • Dexed (DX7)
  • Pure Data
  • ???

I would like to include some sequencer/arpeggiator  features. I’m doing some promising tests with “midish”, a very interesting command line sequencer.

zynthian_software_amidi_scheme

When the project was started, Jackd was not supported by HifiBerry sound cards, so i start using only ALSA. The first three engine integrations are ALSA-based for audio and MIDI.

Recently, these problems with HifiBerry and Jackd, related to the lack of MMAP support in Raspberry Pi, has been solved. Currently is possible to enable the MMAP support (see /boot/config.txt), so i can use Jackd with HifiBerry.

So, now there is a playable integration of setBfree, a Hammond Organ Emulator that sounds really fine. It includes a decent Leslie, percussion, vibrato, overdrive, etc.  and a good collection of popular Hammond presets. And you can connect 2 keyboards + pedals! You will enjoy playing it for sure.

In the near future I would like to integrate Dexed (DX7 emulator) and many other synthesizers.

Also, I would like to migrate to a Jackd-only architecture, but by now, ALSA is giving very good results, so the migration can wait a little more 😉

UPDATE: Currently Zynthian is completely “jackified”, and include basic integration with Carla Plugin Host, that allows to use Dexed and many other plugins (LV2, DSSI, VST, LADSPA)

I think i’ve achieved an aceptable latency, posibly under 20ms, perhaps even less than 10ms (total, including USB/MIDI delays). To achieve this, I’ve recompiled the kernel with a higher frecuency (1000Hz) and i’ve removed some daemons, etc. but i’ve not applied the RT patch. I’ve to to do it.

For ZynAddSubFX i’m using 48000 Hz, 16 bit and a buffer size of 256. It works fine for me with a lot of instruments, but it collapses the CPU when using some of it. For example, “Angel Piano” is completly unplayable. I’ve speaked with McCurry about improving the performance of ZynAddSubFX, but i’s a very complex question. I’m studing it.

I need to spend some time meassuring the latency and putting some real numbers to this question but it isn’t a priority task because Zynthian Box is working fine by now. The prototype is very playable and the latency is low enough so you can’t perceive it while playing.

Also, i’ve spent some time getting the system to boot up in a reasonable time: less than 5 seconds to get the Zynthian Logo Screen and less than 20 seconds to get the Zynthian GUI. I know that i can improve this and i know the way. I’ve done some tests with Jessie and systemd, but it’s an open task.

The Zynthian User Interface:

The Zynthian GUI is writen in Python, using Tkinter. I’m a newcomer to Python, but i really like this language, so i’m learning fast 😉

The actual UI structure is:

  • Engine Selection Screen
  • MIDI Channel Selection (normaly 1, but you can configure multichannel arrangements, and use more than 1 keyboard
  • Bank Selection
  • Instrument Selecion
  • Instrument Controller (you can play with the rotary controllers)
  • OSC Browser => Work in Progress …
  • Admin Screen => Update Software from GitHub, etc.

UPDATE: Currently, there is a more detailed scheme of the User Interface Workflow.

In the beggining, i’ve used an “only MIDI” approach to communicate with Synth Engines. I’have patched ZynAddSubFX to fix/add some features i needed to improve bank & program selection by MIDI. Mark McCurry have merged this changes in the main trunk:

https://github.com/fundamental/zynaddsubfx/commit/42927b5e9f1c42405c45c36409168ff361e2f634

Actually i’m changing to a mixed MIDI/OSC approach. It’ clear that MIDI is too limited. I’m implementing OSC using liblo. I’m trying to browse the OSC path tree (parameters) from zynthian UI, so you can select any parameter and assign it to a Zynthian Rotary Controller, play with it, etc.

Also, i’ve done some work for getting the “Synth Engine Native GUI” opened in a “big” computer, using the X11 protocol. I’ve tested in the three main platforms (Windows, MacOS and Linux) with success. Now it’s a question of “easy install and config”.

There is a lot more, but i think it’s a good description by now. If you want to take a look into the code, you can access the repository in github:

https://github.com/zynthian

Software references:

Facebooktwittergoogle_plusredditmail
Sort by:   newest | oldest
Allan Mitch
Guest

I’m curious why you decided to use ZynAddSubFX & FluidSynth, instead of using TiMidity.

Member

I’m trying to run the program in QEMU in windows 7 64bit

Member

Thank u, i wrote u a provate mail, for now qemu is rebooting on windows 7 x64, but i dont surrender 😉

Member
Member

just the kit, i will solder, do u have my adress, send me the total in pm, i will use paypal

Member

P.s.: I’ve seen raspberry 3.2″ are less expensive than 2.8″ and its more convenient, what do you think about??

http://www.ebay.it/itm/3-2-TFT-LCD-Modulo-Front-Display-Touch-Screen-Per-Raspberry-Pi-B-B-A-Board-/191714953082?hash=item2ca31a077a:g:1soAAOSw14xWHKa7

Member
Member

This sistem permits to have a free solution to choose any type of display from little to bigger ,inside or external…..and also permits less charge of cpu processing…..

Member

ok thank you for the info….i am planning to realize a test Zynthian and i think to buy from you the full kit for the interfave and the encoders……..i ask you soon

Member

Raspberry Pi 3 is 64bit architecture and is backward compatible with previous versions, i put the site with comparison chart hoping its useful for others http://www.raspberrypistarterkits.com/2016/03/04/raspberry-pi-3-pi-2-pi-b-benchmark-review/

Member

I ….this project is very interesting…..Paul i am from Italy too….i would like
to realized a version to manage some test…..i am not a musician only a
hobbyst ……

Member

Hi Fabrizio, i’m a musician and an Electronic engeneer, its Very interesting What José and his team have created, i live im Italy too, Nice to meet you.

Member

Ok i am an Electronic technician too…..if you want i send you my email so we can conversate directly …..videobelu@gmail.com

Member

I can’t made it work with raspberry pi 3 model B and capacitive display, knobs seems died, with firmware zynthian_devel-2016-03-14.jessie, all is freezed

Member

my mistake, red line is pin n.1 in wiki i was seeing the connector, for that i was wrong, it work. Thank to Fabrizio

Member

Hi, how can i edit that file to configure wifi?? /etc/wpa_suppplicant/wpa_supplicant.conf
it not allow me to copy or edit such file, i’m becoming crazy

Member

I think it is possible to enable temporary for easy edit the configuration files and then disable again at the end of operation and for normal use…..what do you think about???

Juan
Guest

Hola a todos. Felicitaciones por el proyecto.
Después de montar el Zyntian sobre una Raspb3, ¿dónde encuentro información para convertirlo en un procesador de VST sin ordenador?
Muchas gracias.

Hi, everybody. Congrats for the project! After to assemble the Zyntian on a Raspb3 where may I look for info about VST processor/player without PC?
Thanks in advance.

wpDiscuz