{"id":1181,"date":"2021-12-27T08:04:45","date_gmt":"2021-12-26T21:04:45","guid":{"rendered":"https:\/\/gonzos.net\/projects\/?page_id=1181"},"modified":"2025-07-27T22:11:34","modified_gmt":"2025-07-27T12:11:34","slug":"re-tasked-zynthian","status":"publish","type":"page","link":"https:\/\/gonzos.net\/projects\/re-tasked-zynthian\/","title":{"rendered":"Re-tasked Zynthian"},"content":{"rendered":"\n<p class=\"has-text-align-right\">Updated 7 Aug 2022<\/p>\n\n\n\n<p>I have sold the Zynthian, so there&#8217;ll be no more development on this page.<\/p>\n\n\n\n<p>I recently bought a Zynthian kit (ver 4) and assembled it using my own RPi4(8GB).  It&#8217;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.<\/p>\n\n\n\n<p>I&#8217;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 &#8220;do many things&#8221;) has made its workflow a bit awkward (for me). <\/p>\n\n\n\n<p>So I decided to try re-tasking the Zynthian hardware to make a simple platform that is dedicated to my use-case. I needed:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>FluidSynth only<\/li><li>Quick instrument change (snapshot change in Zynthian language)<\/li><li>Ability to tweak the snapshot sounds (plugins)<\/li><li>Screen<\/li><li>Adjusting knob(s)<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Architecture<\/h2>\n\n\n\n<p>Since I&#8217;m using only the FluidSynth (FS) engine, there&#8217;s no need to re-load the engine when changing instruments &#8211; 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.<\/p>\n\n\n\n<p>The information flows look like this:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2022\/01\/zynth-architecture.png\"><img loading=\"lazy\" decoding=\"async\" width=\"874\" height=\"508\" src=\"https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2022\/01\/zynth-architecture.png\" alt=\"\" class=\"wp-image-1206\" srcset=\"https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2022\/01\/zynth-architecture.png 874w, https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2022\/01\/zynth-architecture-300x174.png 300w, https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2022\/01\/zynth-architecture-768x446.png 768w, https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2022\/01\/zynth-architecture-730x424.png 730w\" sizes=\"auto, (max-width: 874px) 100vw, 874px\" \/><\/a><\/figure>\n\n\n\n<p>The Python program does the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>enables the user to create instruments (snapshots) using SF2 presets and adding transpose, reverb, equaliser<\/li><li>enables the user to edit the instruments<\/li><li>takes the incoming MIDI from my wind controller and forwards it on to FS<\/li><li>filters out program changes from my stompbox, and uses them to select instruments (snapshots)<\/li><li>configures the running FS via Telnet (this involves changing SF2 preset, configuring the LADSPA plugins, applying transposition, etc)<\/li><li>writes to the screen<\/li><li>accepts input from the knobs and switches<\/li><li>configures the ALSA mixer volume<\/li><\/ul>\n\n\n\n<p>The screen uses the Zynthian drivers (\/dev\/fb1), and is written to using Pygame.<\/p>\n\n\n\n<p>The screen looks like this<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2021\/12\/zynth-controls.png\"><img loading=\"lazy\" decoding=\"async\" width=\"871\" height=\"464\" src=\"https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2021\/12\/zynth-controls.png\" alt=\"\" class=\"wp-image-1190\" srcset=\"https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2021\/12\/zynth-controls.png 871w, https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2021\/12\/zynth-controls-300x160.png 300w, https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2021\/12\/zynth-controls-768x409.png 768w, https:\/\/gonzos.net\/projects\/wp-content\/uploads\/2021\/12\/zynth-controls-730x389.png 730w\" sizes=\"auto, (max-width: 871px) 100vw, 871px\" \/><\/a><\/figure>\n\n\n\n<p>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 &#8220;TAP&#8221; plugins. There is a section on the screen for configuring each plugin.<\/p>\n\n\n\n<p>The S1-S4 buttons are functional as program-change buttons &#8211; to program them you simply select the instrument (snapshot) that you want, and hold the appropriate S-button in for 2 seconds. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">ToDo<\/h2>\n\n\n\n<p>The box is working OK, but I have had very little time using it, so I&#8217;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.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Updated 7 Aug 2022 I have sold the Zynthian, so there&#8217;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&#8217;s a great system which gives you an enormous toolkit to make music. I was particularly impressed with the sound quality and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1181","page","type-page","status-publish","hentry"],"blocksy_meta":{"page_structure_type":"type-3","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/gonzos.net\/projects\/wp-json\/wp\/v2\/pages\/1181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gonzos.net\/projects\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gonzos.net\/projects\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gonzos.net\/projects\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gonzos.net\/projects\/wp-json\/wp\/v2\/comments?post=1181"}],"version-history":[{"count":1,"href":"https:\/\/gonzos.net\/projects\/wp-json\/wp\/v2\/pages\/1181\/revisions"}],"predecessor-version":[{"id":1365,"href":"https:\/\/gonzos.net\/projects\/wp-json\/wp\/v2\/pages\/1181\/revisions\/1365"}],"wp:attachment":[{"href":"https:\/\/gonzos.net\/projects\/wp-json\/wp\/v2\/media?parent=1181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}