User Tools

Site Tools


To Wield the Mighty Yoshimi

Yoshimi is a very special software synthesizer. It is a significant rewrite and variation, a fork, from the ZynAddSubFX project, which itself is deserving of tremendous respect. Both synthesize tone signals on the fly, in highly manipulable fashion. Will Godfrey, Linux musician extraordinaire, has opined:

Qsynth is a gentle cruise down a 4 lane highway, on a sunny day, in a Ford Escort. Yoshimi is a marvelously exciting white-knuckle drive, over an unpaved mountain pass, in a kit-car, through a blizzard - at night.

This is not to be construed as a dun of Qsynth. Qsynth is a GUI front end to Fluidsynth, which accepts MIDI note triggers and produces tones using soundfonts. They are very helpful.

But there is tremendous power and flexibility inherent in live signal generation. With power comes the need for care :-) One may find the freeway-ready tires meeting gravel and even brick walls, fairly quickly. Here are items which can help.

Avoiding distro overburden.

Automatic USB flash drive mounting can eat USB MIDI and audio performance and cause xruns (Jack audio and/or ALSA MIDI hiccups). There are other background things also, and some of them are very hard to find. Excellent results will obtain when your distro makes it easy for you to use only the tools you need. More on this in Choosing a Linux Platform for Live Synth.

Handling overdrive in the software signal paths.

Overdriving can be a real problem. Just like in the world of real wires, preamps, and amplifiers, Yoshimi and other software tools can easily and inadvertently be set up to produce a digital “signal” which will overdrive whatever it is connected to in its software universe, producing anything from distortion to xruns, to broad crashes in the very extreme case.

But happily, there is a simple solution, and it helps regardless whether one is using just a single Yoshimi instance or two or more in combination with other tools. This is the use of a software compressor.

A software compressor is a software simulation of a compressor in the analog world: if the range of volume of a given signal runs too soft or too loud or both, one uses a compressor to change (compress) that range to that which is appropriate for the particular PA, particular venue, particular audience, et cetera.

On a Linux synth rig, there are several good options. I usually use the Calf LV2 host with plugins, which has very good compressors, including truly excellent GUIs for each.

Walk Around Your Limitations

Yoshimi, and ZASFX too, are among those rare software tools which are quite useful with lower-powered CPUs, and yet do not even begin to see their maximum potential with new quad-core CPUs, gigs and gigs of RAM, etcetera. One instance of Yoshimi can be configured to (try to) deliver sixteen different CPU-intensive tones. But on my AMD 8-core, I run three Yoshimis at once sometimes, to distribute the load, running two or three simultaneous tones on each. The result is the most profound tonality I have ever had available to my hands.

The multi-CPU tool htop, which has a powerful full-screen text UI, can be very helpful to figure out what is going on. It is worthwhile to realize that sometimes your Yoshimis will not be taking all of your CPU, but you'll still get xruns and overload conditions; this is the overdrive mentioned above. A VU meter applet placed in your Jackd setup in a location to receive everything being sent to the outputs, is best to verify this.

When the problem is CPU, there are three categories of changes to any Yoshimi setup which are quite straighforward to handle load.

The first is the multi-Yoshimi approach. The last time (and all the previous times, over quite a few years) that a multi-ZAFSX approach was attempted, the result was a total hardware lockup; not a CPU limitation, but something else. The fact that it works so well, is one of the many joys of Yoshimi. Use htop, and if your single Yoshimi is using most of one CPU core, try two, or three.

The second is polyphony. In Yoshimi's main screen there is a setting for maximum simultaneous notes. Adjustments will be needed to this, if you get xruns or overloads while using sustain or reverb. But do see the below first :-)

If you use reverb within Yoshimi patches – and many have them within – you may find good reason to change things according to the readouts of htop. I have found it much more efficient, to apply reverb and other filters using Calf, as a separate Jackd process element, “after the fact” if you will. My semistandard Calf approach, is to use a stack, starting with EQ, then Reverb, then Compression to handle overdrive; I have just begun to use Multiband Compression, which helps too.

to_wield_the_mighty_yoshimi.txt · Last modified: 2017/08/15 07:41 by jeb