Pink robot
Software synthesizer for Linux

The History of Yoshimi

by Will Godfrey

Once upon a time, there was just Moog. Then there were many.

Yoshimi is not ZynAddSubFX , but we have not forgotten from whence we hath come, and we salute thee!

ZynAddSubFX was founded by Paul Nasca and continued by many others. Several years later, Yoshimi was founded by our dear friend, the late Alan Calvert (Cal), at a time when ZynAddSubFX showed amazing promise, but did not satisfy his needs and ours.

Jeremy Jongepier was instrumental in obtaining access to the SourceForge repository after we lost Cal, and maintained it until early 2014, accepting small improvements from a number of people. Then, with a young family and other interests, he felt he could no longer do so. At that time, I had become well known as a Yoshimi instrument designer and a sort-of general bug finder, and, with considerable prompting from others, agreed to take over as a caretaker. I had limited C coding experience, no C++ knowledge, and never been involved in version control.

The early work was mainly minor corrections and improvements. Many people gave support, in particular Rob Couto, who has been a mentor and contributor throughout this time. Harry Nakos helped me with the first GUI change - enabling a single row mixer panel. Later, Andrew Deryabin coded the LV2 and multi-instance extensions.

Meanwhile, Harry supplied the preliminary example code that was to become the basis of the much improved instrument bank structure. Andrew then ran with this and coded the full structure, which over time has been developed further. Andrew also continued to provide help from time to time.

By early 2015, I had gained enough experience to implement vector control, and later most of the NRPN code. The end of that year saw the first development of CLI (command line) access, aimed at making Yoshimi accessible to blind and disabled musicians. Since that time, Jeanette C. has frequently given her invaluable advice as a blind user, as well as a segment of code to implement proper readline features.

The channel switching feature (Solo) was implemented in the middle of 2016, and crossfade control arrived later in the year. A major feature, MIDI‑learn, was added at the end of that year.

Towards the end of 2016 Jörn Eichler identified a problem with filter tracking whereby it was impossible to track pitch 100% - then produced the code to do so. Later he added the first improved tooltips that gave real values on some controls.

Throughout 2017, Jesper Lloyd provided additional enhanced tooltips, along with a number of other GUI improvements and bug fixes.

At the beginning of 2018, Kristian Amlie devised interpolation for Yoshimi’s effects to enable smooth transition when changing controls in real time.

At the end of that year, Hermann Voßeler did considerable work improving and tidying up the random number generator, and correcting some mistakes I had made, so it is now thread-safe and future-proof. He continues to provide assistance.

In early 2019, it became possible to compile a headless version of Yoshimi, and in the middle of the year, Kristian implemented a major improvement to the AddSynth modulators - officially released with Yoshimi version 1.6.0. The copy/paste storage was also greatly improved, as it implemented a pattern similar to that of banks. Hermann also did considerable work refactoring code, making it more readable and easier to maintain, especially regarding the command interface.

During the late summer of 2019 an instrument search feature was added. The new feature made it possible to find and load instruments from across all available banks, through lists of instruments with the same type.

And the story continues...