Software synthesizers (“soft synths”) revolutionised electronic music making, allowing artists to stop depending upon heavy and very expensive gear but still make amazing sounds. The open source soft synths, for their creativity and variety, and no- or low- cost, will revolutionise your electronic music yet again.
Open source is not a centralised entity, so when one asks around for “some good open source synths”, then the answers are going to pour in and lead to every corner of the Internet. What you prefer on any given day depends on your personal preferences and what you need for a project. The best thing you can do, probably, is to collect as many open source synths as you want and experiment around with them just as you would do if you had unlimited funds in a synth shop.
If you are not the type to do that, and would prefer one or two good synths with lots of preset banks, then you are not a knob twiddler (or “tweaker” in the vernacular), and happily there are open source synths for that too.
Soft synths come in two varieties: stand-alone synths and plugins. Stand-alone synthesizers are launched just the same as any other applications; you find it in the applications menu, launch it, and interact with it, piping its sounds to other applications with JACK. Plugin synths are meant to open inside of some other applications, like a DAW (Digital Audio Workstation), and are routed directly through the DAW's mixer.
Plugin Formats and Stand-Alone Synths
Linux audio recognises several different plugin formats for effects and synths:
- DSSI - a native plugin format, often with a functional UI
- LADSPA - a native plugin format, usually with a basic UI
- LV2 (LADSPA version 2) - a native plugin format, often with a rich UI
- VST (native Linux) - they are rare, but Linux-native VST plugins do exist
- VST (Windows binaries, through WINE) - it is theoretically possible to load a Windows VST plugins within Linux by using WINE libraries. It is often done, but performance and success varies greatly depending on the plugin. Since this usually involves using non-open source plugins, the longevity of these plugins is at risk, so Slackermedia advises against using non-native closed source plugins; it's usually better to migrate from tools that you cannot guarantee and toward open source tools which never die.
With JACK, all applications can be channeled through a single system, whether the application was designed as a stand-alone application or as a plugin. This blurs the line between what it means to be a stand-alone application or a plugin, and that's a powerful level of flexibility that simply does not exist in closed systems.
There are three different ways to run many (not all) JACK-aware applications. There is no “right” or “wrong” way; it depends on what the project needs and what your style of working is. Your choices are:
Plugins to larger JACK applications
Usually, it's best to run an filter or effect as a DSSI, LADSPA, or LV2 plugin, if possible; the host application (usually a DAW) handles all of the filter settings and is able to unobtrusively spawn a unique instance of the filter on a per-track basis.
Sometimes it isn't possible to run something as a plugin, or you prefer not to run it that way. In some cases, a filter can be launched as a stand-alone application, integrated into your audio pipeline through JACK. In this model, all settings (banks, patches, tweaks, levels, and so on) are maintained by you, the user. This means you have to keep track of saved settings (it helps to use a project manager like Slackermedia's Planter) and JACK routes (see aj-snapshot).
Hosted JACK application
If you cannot run the application as a stand-alone application, there is probably a JACK host (such as Jack Rack, Calf JACK Host, or jackdssihost|jack-dssi-host) which can act as an anti-DAW into which the plugin can be loaded and used. The settings (banks, patches, levels, and so on) are maintained by the host application, but independent of any DAW you might be using, so you still have to keep track of the saved session files of whatever host you are using.
The internet is full of great open source noise makers. If you look hard enough, you will find all sorts of great toys. This section contains but a small sample of what is available.
A good resource is http://www.linuxsynths.com/, although it is mostly an impartial collection with no regard for usability or stability. It's a great resource for patch files and as a reference to what's out there.
To help categorise each synth, the following icons are being used (none of these are exclusive of another, and this is an imprecise taxonomy and should be used for quick reference only. The only way to know a synth is to use it.):
- D DSSI plugin; requires
dssi, available from http://slackbuilds.org
- L LADSPA plugin; requires
ladspa_sdk, available from http://slackbuilds.org
- V LV2 plugin; requires
slv2, available from http://slackbuilds.org
- T VST plugin; those listed here do not require additional installs of the VST sdk
- A Stand-alone application
ALSA Modular Synth (ams)
If old pictures of towering synth components inter-connected by a (figurative) rat's nest of cables inspire you, then you ALSA Modular Synth is what you want. Alsa Modular Synth takes a node-based approach to software synthesis, just like the modular synths of old. Sounds are created by stringing together oscillators, modulators, and filters with virtual cables, similar to the Patchage or Natron interface.
ALSA Modular Synth is available from http://slackbuilds.org in the
audio category as
Launch ALSA Modular Synth with the
ams command from a terminal:
$ ams --jack &
Modular synthesis can be intimidating at first, and ALSA Modular Synth (
ams) has a steep learning curve even if have some experience with synthesis. The most effective way to learn
ams is to read the official documentation, but even it suggests that the first step is to load up a sample patch and experiment with it.
Sample patches are included in
Once a patch is loaded, use Patchage or QJackCtl to route MIDI from System Capture into
ams Midi In, and audio from
ams Audio Out to System Playback.
The interface itself is node-based, using virtual “cables” to patch one node to another. It is similar, but works differently than what you might be used to in Patchage, Blender, or Natron.
Create a new Node:
ams starts, it's an empty shell. Since you'll probably start with an example pre-set, some nodes will be loaded when you open the example file, but you can and should add your own as well. To add a node, right-click on the background area of
ams (not on an existing node). Choose your node type from the contextual menu that appears.
Create a new LADSPA Node:
LADSPA effects can be loaded into
ams as nodes, meaning you can use the outputs of filters to drive the sounds of the signals generating sound. Create a LADSPA node from the Module menu Show LADSPA Browser. Select any LADSPA plugin from the browser and click the Create Plugin button at the bottom of the window.
This is not immediately obvious in the design of the UI of the LADSPA Browser window, but only the nested items can be added to
ams. Don't panic when you select a heading in the list and find that it cannot be added; it's just a heading. Look inside the category you want to use, and add the item or items there.
If an input port is already occupied by another cable, then disconnect the existing cable first. An output port, on the other hand, can have multiple cables drawn from it.
To connect the output of one node to the input of another, click the outgoing port (it turns red when clicked), and then click the input port you want to connect it to. There is no drag-and-drop action in
To break a connection between two nodes, click the label of the input port you want to “unplug” and select Disconnect. You must click on the label of the port, not the cable, not the node; right-click the label. It can be a little tricky, so be precise.
Configuring a Node:
Removing a Node:
A node cannot be removed until all active connections to and from it are broken. Once a node is free of any connections, right-click on the node and click the Remove Node button at the bottom of the configuration panel.
ALSA Modular Synth is a stand-alone synth, so you are responsible for any work that you do inside of it. Save your patches in File Save As, and make sure you store them in a logical location. You might save patches into a standard location so that you can use them in other projects, or you might save them to each project individually; either way, you are responsible for your own data, so keep track of it so that you don't lose your hard work.
Full documentation, including tutorials and a good overview of synthesis is available at http://alsamodular.sourceforge.net/alsamodularsynth_doc.html
Amsynth is a subtractive synthesizer with two oscillators, an LFO filter, internal reverb, ADSR envelope controls, and more. It operates as a stand-alone synth, or as a DSSI plugin, and features 17 banks of sounds (more are available at its website), making it an easy synth to get started on.
Amsynth is installed by default with the Slackermedia queue file. If you did not install it, get it from http://slackbuilds.org.
When you first start amsynth as a stand-alone unit, it may be set to use ALSA by default. If you are using JACK, this needs to be changed in Config Audio&MIDI. The only MIDI driver available is ALSA, but since you [should be] using the
seq MIDI driver in JACK, the ALSA MIDI signals are echoed to JACK MIDI. Set the audio output to JACK.
Load presets (patches) from the Preset menu Import Preset.
Load banks of presets from File menu Open Bank and select individual patches from the drop down menu in the top toolbar.
Save your custom patches in Preset menu Export Preset. This selection exports a single Synth preset file (a single patch).
If you are building your own bank of patches, save your work from the File menu Save Bank As…
If you are using amsynth as a stand-alone application, you are responsible for your own custom modifications. Any tweak of any knob will be lost if you close amsynth without saving your work.
If you use amsynth as a plugin to a DAW, then the settings and routing are managed by the DAW.
Bristol emulates classic synths and organs. It features a richly designed
Brighton interface that emulates the hardware look and control scheme of each synth, and ships with full banks of sounds for each emulation.
No matter what your favourite synth is, it's likely you will find an emulation of it in Bristol. It can be argued that not all emulations hit their mark (the Rhodes emulator, for instance, uses a DX7 voice); it depends on how much an audiophile you are. Bristol is not as robust as, for instance, amsynth, but it's a nice show piece and possibly a great source for vintage (or vintage-like, depending on your standards) sounds.
It's hard to argue that Bristol doesn't provide a great set of fun synths to play with, so have a look at the website to see the “menu”.
Bristol is available from http://slackbuilds.org. All of the synths listed on the site are included in Bristol, so it only takes one install.
Since Bristol has so many emulation modes, it is launched from a terminal, along with the synth to emulate. For a full list of synths available, start with:
$ startBristol -help
Choose your synth, and launch:
$ startBristol -jack -arp2600 &
Note the use of only a single dash in the options; it is not
startBristol –mini but
The desired synthesizer appears on your screen as well as in JACK.
For all the detail of its emulators, Bristol does not feature much of an interface for saving your work manually. Each emulator that can be modified features an interface through which you can load and save patches, but the interface is usually small, assumes that you know how to use the synth in question, and not very verbose.
You do, of course, have access to your saved patches; all user data that gets saved within Bristol is saved in a hidden folder in your home directory:
~/.bristol. Bristol does not allow for importing patches from locations other than its config location, and it does not allow you to change the config location. To sum up, the best you can do, if you want to keep your Bristol patches with your project files, is make a backup or a snapshot of your Bristol config. This ensures that your custom patches are frozen along with the rest of your project.
The Yamaha DX7 is a hugely popular digital synthesizer from the early 80s. It was an early FM (Frequency Modulation) synth, and as such did not have a terribly friendly interface for creating custom patches. That didn't stop people from doing it, though, and with software DX7 emulators, all the old DX7 patch files that were created and shared on sites like dx7heaven and synthzone are as useful now as they ever were.
Most DX-7 patches, like Soundfonts, pre-date concepts such as Creative Commons and even the idea that a GPL-like license could ever be needed among a creative community of synth geeks, so most are assumed to be in the Public Domain, but few provide any kind of official statement on the subject. Searching the Internet for “dx7 patches” brings up hundreds of DX7 banks (each containing any number of patches), but even easier is downloading the Great Linux Multimedia Sprint vol 3 from Slackermedia, which contains several megabytes (they just aren't that big) of DX7 patches collected from around the 'net.
The most typical format for DX7 patches is standard SysEx (a MIDI System Exclusive command).
There are two popular DX7 emulators, one of which (Hexter) is installed by default with the Slackermedia queue file.
Dexed is an LV2 and VST plugin that emulates the DX7 with a far more complex control panel than the original synth for quick and easy customisation of patches. Dexed ships with several inbuilt banks, but is accurate in its emulation and can load original DX7 banks.
Loading patches is a complex thing that mirrors hardware. There are three levels in loading a patch:
- Cartridge (“cart”) stores banks
- Banks store patches
- Patches are instrument presets
Most patch interaction occurs along the top of the dexer window:
- Cart loads cartridges. There are several pre-loaded into dexed.
- Load imports banks from the file system via SysEx.
- Save exports the current bank to a file on your hard drive.
- The drop-down menu is a quick and easy way to select a patch.
- Store saves a patch to the current bank.
Install DX7 from http://slackbuilds.org. It is part of the distrho-ports package.
Dexed is designed as a plugin, and should be run as a plugin. As a plugin, the DAW hosting it will manage its sessions, so you don't have to.
If you do run it as a stand-alone synth, store save the state of Dexer from the File menu Save. This saves the state of Dexer in a directory on your file system. To load those settings back into the synth, launch it with the
$ jalv.gtk $(lv2ls | grep -i dex) -l ~/mysettings/
Hexter is a software emulation of the famous Yamaha DX7 synth, and as such it can load most DX7 patch files.
Hexter is installed automatically with the DSSI package from http://slackbuilds.org.
Hexter is a DSSI plugin, so you will probably use it within a DAW, mostly. If you want to use it as a stand-alone application, launch it with the jack-dssi-host:
$ jack-dssi-host /usr/lib64/dssi/hexter.so &
Hexter is designed primarily as a plugin; using it as a stand-alone unit has several limitations (for instance, as a stand-alone unit, it has a fixed channel, so it can only be one instrument). For best results, use it as a plugin as designed!
If you are running hexter as a plugin, routing is managed by your DAW. If you are running it as a stand-alone unit, route the MIDI and sound using your JACK patchbay (like Patchage or [qjackctl|QJackCtl]]). Hexter is a mono synth. To hear Hexter's output in both left and right channels, use a mono to stereo effect, or run two “cables” from its single output to both System Playback channels.
Hexter's interface is, on the surface, about as simple as the original DX7. Select a patch from the list, and play.
To import a bank of patches, use the File menu Import Patch Bank. Open any valid DX7 patch file.
The import process complies with a standard MIDI SysEx dump; it overwrites anything in its path, but can be mapped to begin anywhere. Upon import, hexter will prompt you for where it should write the information; if you have 70 instruments already loaded into Hexter and import 32 more, then as long as you start at 71 then you lose nothing. If you don't care about the 70 default patches, then start at 0 and your 32 additional patches occupy the first 32 slots, with the leftover slots retaining what was there before the import.
However you choose to import patches, it's not a hardware keyboard, so everything is temporary. You aren't really losing your patches when you import with SysEx.
Hexter not being an actual original DX7, it gains the ability to provide a user-friendly interface to patch editing. Any patch you load can be customised through Edit menu Edit Patch.
If you are using Hexter in a DAW, as designed, then your customisations and patch choices are managed by the DAW.
If you are running it as a stand-alone unit, there is no session management. If you have customised a patch, export your bank.
Whether you have customised anything or not, write down in a text editor or on a physical notepad which DX7 bank and patch you use for a song, and keep this note with your project files. Believe it or not, this is exactly how synth users before computers and DAWs kept track of this sort of information. Welcome to true vintage synthesis.
The Soundfont format delivers low-overhead, sample-like sound banks in surprisingly small file sizes, and in the same proliferation (and mixture of quality) as typeface fonts. Inarguably, Soundfonts are powerful sound sources, and the easiest way to play them back on a Linux system is with a host like http://www.fluidsynth.org.
Fluidsynth as delivered by its authors has no GUI, but the DSSI GUI developers created a simple frontend for fluidsynth so that it can easily be used within any Linux DAW that recogises DSSI (and most of them do).
Fluidsynth DSSI is the very definition of minimal; click the Load button to load a soundfont bank, and select the patch from the list it produces.
If being used as a DAW plugin, there is no routing necessary aside from whatever your DAW requires.
Any DSSI plugin can also be used as a stand-alone unit by using the
jack-dssi-host application bundled with the DSSI install.
If being used as a DAW plugin, you do not need to save sessions. Its settings are handled by your DAW.
Qsynth is a stand-alone frontend to Fluidsynth. It is multi-channel, so in one instance you can map several different soundfonts to several different MIDI channels.
Install Qsynth from http://slackbuilds.org.
Along the bottom edge of Qsynth are tabs (there is only one active by default). Each tab is a Qsynth “engine”, which can have 16 MIDI channels. This means that if you are using a DAW or sequencer, one Qsynth instance can receive 16 separate channels of MIDI and play, therefore, 16 instruments.
To configure your currently running Qsynth engine, right-click the first tab (labelled “Qsynth1” by default) and select Setup.
In the MIDI tab, set the MIDI driver, if it is not already, to alsa_seq so that all Qsynth MIDI ports are echoed into the JACK system.
In the Audio tab, set the audio driver to JACK.
In the Soundfont tab, load a soundfont. You can load many soundfonts, but just choose one for now.
Click the OK button to apply the changes.
In the main Qsynth window, click the Channels button on the left. This displays all 16 MIDI channels available in that engine tab. Double-click a channel to assign a patch from your Soundfont bank.
The Soundfonts that you load into the engine become the sources of individual patches in the Channels window. In this way, you have simultaneous access to banks upon banks of Soundfonts.
The greatest weakness of Qsynth is its session management; essentially, there is none, except that each tab can “remember” its latest state.
You can save channel configurations:
- Click on the Channels button.
- Type a name for your channel setup in the top text field.
- Click the Save button.
But if you later remove a soundfont bank from a Qsynth engine, the channel it was assigned to silently forgets its original assignment and swaps it out with a patch from a different bank. The reverb and chorus effects are saved with an engine when you close Qsynth, but if you change it and then want to revert back to the way you had it, there's no way to restore from a previous state.
In other words, Qsynth mostly remembers how you left it when you last used it, but any change after a launch is automatically taken as the new master state.
There is only one practical way to deal with this; treat the Qsynth configuration file as a dynamic, disposable file. When you want to take a snapshot of Qsynth settings so that your music project maintains its integrity, copy the Qsynth configuration file from
~/.config/rncbc.org/Qsynth.conf to your project directory. If you need to restore your master settings, copy the conf file from your project directory back to
obxd is an Ob-x, Ob-a, and Ob-8 emulator. It features two oscillators, ADSR controls for both the filter and envelope, modulation, and more.
Install obxd from http://slackbuilds.org. It is part of the distrho-ports package.
If you use obxd as a plugin, your sessions are managed for you. You can export your work for safe-keeping:
Save individual patches from the Presets menu.
Save a session from the File menu.
Synthv1 is a polyphonic stereo four oscillator synthesizer with filter control, ADSR, LFO, effects, and more.
Synthv1 is set up with two “synthesizer” tabs, each containing two oscillators. The two synths can be mixed together and the sum of the two is piped through a global effect unit.
Launch Synthv1 as a stand-alone application from the K Menu or from a terminal:
It is also an LV2 plugin, available within most any DAW of your choice.
Its control scheme is particularly nice, using both knobs and drag-and-drop graphs when modelling particularly important aspects of your sound. It ships with no presets, so it was made for knob tweakers.
Install Synthv1 from http://studioware.org, from the
If you are using Synthv1 as a plugin, your DAW manages all of your session data for you.
If you are using it as a stand-alone application, then sessions can (and should) be saved along with any project data used in your current musical composition. The drop-down menu at the top of the Synthv1 window serves as the Save and Load interface.
To save a preset, type in a name and click the Save button.
To load a preset, click the Open button.
The Roland TB-303 was originally released in the early ' 80s but became iconic after its re-birth as the rhythm section for electronic music in the '90s and early '00s. It is a monophonic analog bass synthesizer with an in-built step sequencer. It had just one oscillator with just two waveforms to choose from, but featured enough control over resonance, cut-off, envelope, tuning, to make it a proper synth and not just a bassline generator.
There are two popular 303 emulators:
The Nekobee TB-303 clone is a simple, mono synth, with 8 knobs to control oscillator, resonance, and other aspects of the sound. It isn't the fanciest synthesizer out there, and it only emulates a few aspects of the TB-303, but it has great tone and a unique sound.
Install Nekobee from http://slackbuilds.org.
Running Nekobee as a plugin, all of your settings are saved within the DAW you use.
If you are running Nekobee as a stand-alone unit with
jack-dssi-host, then there is no inbuilt way to save the state of Nekobee.
Nekobi is an LV2 and VST homage to the Roland TB-303. It isn't the fanciest synthesizer out there, and it only emulates a few aspects of the TB-303, but it has great tone and a unique sound.
Nekobi is available from http://slackbuilds.org as part of the
Running Nekobi as an LV2 or VST plugin, all of your settings are saved within the DAW you use.
If you are running Nekobee as a stand-alone unit with jalv, then there is no inbuilt way to save the state of Nekobi.
Vex is a 3 oscillator subtractive waverom synth. Each oscillator has a variety of preset profiles to choose from, plus a dedicated filter, ADSR envelope, amp envelope, LFO, and effects. These can be combined and mixed.
Vex is available from http://slackbuilds.org as part of the
Running Vex as an LV2 or VST plugin, all of your settings are saved within the DAW you use.
If you are running Vex as a stand-alone unit with jalv, then there is no inbuilt way to save the state of Vex.
WhySynth combines bits from Xsynth-DSSI (classic-analog VCO, VCF, and VCA synthesis), hexter, Csound, and various other programs, with inspiration from hardware synths like the Matrix 6, ESQ-1, K4, plus several other sources and models. All of this results in two things: a great synth plugin with heaps of ready-to-use patches, as well as a rich customisation layer underneath if you prefer to take the time to model your own sounds.
WhySynth can even import K4 patch files.
Create your own custom patches from the Edit menu Edit Patch. Don't let the basic front-end fool you; the patch editor gives you access to four oscillators, filters, effects, LFO, five output envelope filters, and much much more.
Install from http://slackbuilds.org.
Running WhySynth as a plugin in a DAW manages your settings for you, but you should back up any custom patches you create.
Save and open patch banks from the File menu.
Wolpertinger is a subtractive, antialiased polyphonic software synthesizer. There appears to be a minor bug in the LV2 implementation (it fails to announce itself to the LV2 system), so run it as a (Linux Native) VST until resolved.
Wolpertinger itself is a fairly basic synth, with waveform controls, ADSR, resonance, plus a few unique controls like “velocity” and “inertia”. It ships with no preests, so it's definitely a knob (or slider) tweaker's synthesizer.
Wolpertinger is available from http://slackbuilds.org as part of the
Running Wolpertinger as a VST plugin, all of your settings are saved within the DAW you use.
If you are running it as a stand-alone unit with jalv.gtk, then there is no inbuilt way to save the state of Wolpertinger.
A classic-analog style DSSI softsynth based on Steve Brooke's Xsynth code. More than just a DSSI frontend for XSynth, this plugin features polyphonic operation, band-limited oscillators, an improved filter mode, and velocity-sensitive envelopes.
The nice thing about XSynth is that it's a good intermediate synth; it has heaps of presets like WhySynth (indeed, WhySynth takes many of its presets from XSynth), and its editing panel is full-featured but not too intimidating. It's a good step up from something basic without venturing into complete DIY synthesis.
Install from http://slackbuilds.org.
Running XSynth as a plugin in a DAW manages your settings for you, but you should back up any custom patches you create.
Save and open patch banks from the File menu.
Yoshimi is a fork of the well-known and respected ZynAddSubFX synthesizer. It inherits all features from ZynAddSubFX and adds some of its own. From the information provided on the websites, it is unclear why the project was forked, but it seems that Yoshimi may have buffered against a slight lull in ZynAddSubFX's development. Both are active projects now, however, and they can both be installed and coexist on you system. Realistically, you'll probably only need one or the other.
Currently, the clearest development path is with ZynAddSubFX. Since that's the original codebase, it makes sense to place documentation under the zynaddsubfx heading.
ZynAddSubFX (or its Yoshimi fork) is a stand-alone synthesizer and, quite possibly, it is the only soft synth you'll ever need. Its capabilities are staggering. It contains oscillators for additive synthesis as well as subtractive synthesis, onboard effects, voice parameter settings, filters, and modulators enough to fill a screen.
The latest version of ZynAddSubFX is known as ZynFusion. It is the same great Zyn backend combined with a modern frontend:
The developer of ZynFusion asks that you pay $59 for a license. It's well worth the money, and the money supports the developer so it's money well-spent. If you purchase a copy, you download a file containing an installer; follow its instructions to install the synth.
If you have no money, you can still use the old versions for $0, without the prettier “skin”.
To begin, launch Zyn (or Yoshimi) from the K Menu or from a terminal. When launching from a terminal, give it a unique name:
$ zynaddsubfx -N foo
In addition to unique names for each synth instance, you can choose a patch to start with, click the Edit button next to the patch name:
Choose your synth bank and patch from the window that appears. Feel free to edit any aspect of any patch; ZynAddSubFX and Yoshimi know no limitations.
If you're using Yoshimi, the command is obvious (
yoshimi) but you might find “zyn-add-sub-fx” less memorable. In Linux, commands can be aliased. To create a simpler alias:
$ echo "alias zynsynth='zynaddsubfx'" >> ~/.bashrc $ source ~/.bashrc
From then on, launch ZynAddSubFX with your simpler command:
$ zynsynth -N foo
Basic routing in your patchbay is straight-forward; send System Capture MIDI to ZynAddSubFX or Yoshimi and send your synth audio to System Playback.
If you are using multiple instances of ZynAddSubFX, you must set the MIDI channel that each running instance of your synth monitors for instructions.
Each ZynAddSubFX or Yoshimi instance has the potential to play 16 separate parts. By default, all settings in ZynAddSubFX/Yoshimi fall into Part 1, on MIDI channel 1.
To create a new part:
- Increment the part number in the Part field.
- Increment the MIDI channel in the MIDI field.
- Put a tick mark in the Enabled checkbox.
Your MIDI controller still triggers each part on ZynAddSubFX/Yoshimi because all MIDI signals are being routed through the System MIDI Thru port. To restrict what is being sent to which ZynAddSubFX/Yoshimi part, use a good sequencer or DAW, such as Seq24 or Qtractor (or any other sequencer or DAW recommended by Slackermedia).
Since ZynAddSubFX and Yoshimi are stand-alone synths, no other application will ever manage their settings. This means that if you load a patch, compose a song, and shutdown your computer, the next time you launch your project (in whatever sequencer or DAW you are using), ZynAddSubFX/Yoshimi do not launch unless you launch it manually, and more importantly do not remember what patch you had loaded into it.
This means you should do two things:
- Save your ZynAddSubFX or Yoshimi state
- Store the ZynAddSubFX or Yoshimi state file with other project files
Save the state of Yoshimi from the State menu → Save. A state save is a snapshot of all parts and all settings at the time of the save.
Load a saved state back into Yoshimi with State menu → Load, or from a terminal upon launch:
$ zynaddsubfx -N foo -S ~/myproject/sound/synths/yoshimi.state