Creating a new Zynthian Synth Engine

From ZynthianWiki
Jump to navigation Jump to search

1 Creating a Zynthian engine

1.1 Prerequirements

Before starting to build your own engine you have to satify some facts:

  • You need to know how to program in Python3.
  • Some ideas about Git, GitHub (including an account) and how to clone, branch, pull, creating push requests are very useful.
  • You should have some experience with using Zynthian to understand the workflow.
  • You should have some ideas about working with Linux/Unix.

Before you start, check if your desired software for the engine would work with Zynthian:

  • You need a binary/LV2-plugin compiled for the Raspberry (ARM7-architecture - NOT i386 or AMD!!!)
  • If you can get the source-code: nice! You have to write an installation script for compiling and installing, so you also need knowledge about shell-programing and compiler-tools (gcc, make, ...)
  • Take a look at the license!!! It makes no sense if you write lots of code and don't find a way to license the software for working with Zynthian. Perhaps you also have to think about a way to get a license-key for your software into the system.
  • Your software does not need a GUI. The controlling of your software should completely done via command-line/config-files/MIDI/OSC. If there is only a GUI control it may be impossible to write an engine.
  • VST instruments are currently not supported! The only plugin format you can use is currently LV2 (inside MOD-UI engine).
  • If you don't use a LV2 plugin, your software has to use JACK as audio-server.

Ok, if you have read until this line and you are not already shocked from the prerequirements you should share your idea with the Zynthian-Forum. Perhaps some more hints and spoilers can help for your project.

1.1.1 LV2 plugins

If you plan to integrate a software which is a LV2 plugin, you only need to copy the data into '/zynthian/zynthian-plugins/lv2' and if you like you can create a nice MODGUI.

1.2 Write the engine

1.2.1 The filesystem structure

1.2.2 Files to touch/create

1.2.3 How to test

1.2.4 How to get the software into Zynthian(-master)