Sunday, January 20, 2013

ZynAddSubFX | Microtuning Features Updated

ZynAddSubFX | Windows VSTi | Microtuning Features Updated

For Windows and Linux based computer musicians who may be new to exploring alternative intonation systems (aka microtuning, xenharmonics) and composing microtonal music with virtual instruments, an important development along the way has been, and what we may now consider to be one of the great cult classic VSTi, ZynAddSubFX, first introduced in 2002 by visionary developer Paul Nasca (also the developer of the amazing Paulstretch); a fully microtonal and multitimbral virtual instrument plugin, which, in its current iteration is comprised of three unique and powerful synthesis engines, and especially noteworthy among them, the PadSynth, being capable of making some truly exquisite and expressive timbres for microtonal and xenharmonic music composition. At some point in recent years, Paul Nasca appears to have stepped away from the ZynAddSubFX project, and current development of this open-source microtonal synthesizer has been assumed by other programmers.

As anyone who has tried to use the Windows version of ZynAddSubFX in their microtonal music will be aware, there have always been problems with the microtuning functions. Going back to my own earliest work with this instrument – if memory serves – sometime around 2005, it has never been able to correctly save and restore the microtuning settings from within a host DAW. The only way to save and restore the Scale settings in the earliest versions of the plugin was by saving a scale settings file, then reloading that manually when opening a project. In later iterations of ZynAddSubFX, microtuning settings had to be made manually each time a DAW project was loaded with an instance of the plugin, due to its inability to accurately save and restore the scales settings.

I’m extremely pleased to announce, that as of today, all this has changed, and these problems have been fixed by one of the current programmers, VDX (aka jackoo on KVR Audio), who was kind enough to update the microtuning code for ZynAddSubFX. Now the plugin will faithfully save and restore the microtunings within the host applications, which has been tested primarily in Cubase and Reaper.

Read about and download the release here:
Latest ZynAddSubFX VST version
ZynAddSubFX VST v2.4.1.496beta
It has long been my feeling that ZynAddSubFX has the most elegant – and logical – implementation of using the Scala SCL and KBM format I’ve seen on any microtonal VSTi that uses it, so it is a truly momentous event for microtuning enthusiasts to have this working properly in this particular instrument.

Let’s go through quick a overview of the ZynAddSubFX Scales Settings dialog, for those who may not be aware of its powerful features for microtonal music composition.

 1. When first loading an instance of ZynAddSubFX into one's DAW, this is the first dialog one sees:

2. Near the top right corner, click the button labeled Scales to open the Scales dialog. Once opened, this is the initial state of the dialog:

3. Check the Enable Microtonal check box at the top left of the dialog to activate the Scales and microtuning features. As one can see, it opens to a default of 12 tone equal temperament:

4. To load your own microtunings, click the Import SCL File button on the bottom right of the Scales dialog. Navigate to a location on your hard drive where Scala SCL files are saved and load one from that directory.

If you happen to not have any SCL files on your computer, and haven't yet learned how to create them with Scala, go to the below page and download the Scale Archive; a zip archive of Scala SCL files comprised of literally thousands of historical and contemporary microtunings; enough intonation systems for innumerable future world cultures to make microtonal and xenharmonic music from now, until the sun goes supernova:

Scale Archive

For this illustration, I'm loading a 19 tone equal temperament SCL file I made for testing this beta:

5. Now that we have a SCL microtuning file loaded into ZynAddSubFX other than 12 tone equal temperament, let's consider some of the powerful features of its Scales settings dialog. 

How To Set The 1/1 Starting Note Of The Loaded SCL File
6. At the top of the Scales dialog there is a field labeled "A" Freq, and a selector labled "A" Note. These settings enable arbitrary mapping for the 1/1 of the loaded SCL file.

A couple of typical concert pitch settings that musicians will make with microtuning enabled VSTi, are to set the 1/1 starting pitch to either:
  • MIDI Note 60.C, at a frequency of 261.626 Hz.
  • MIDI Note 69.A,  at a frequency of 440 Hz. 
ZynAddSubFX defaults to the latter, MIDI Note 69.A, at a frequency of 440 Hz, which means that the starting note of the loaded microtuning, in this case, 19 tone equal temperament, has its starting pitch mapped to MIDI Note 69, which is tuned to 440 Hertz, or 440 CPS (Cycles Per Second, if you prefer). But what if we want the former to be our 1/1, MIDI Note 60.C, at a frequency of 261.626 Hz?

Here's how to get there...

Position your cursor at the beginning of the text in the "A" Freq field and then perform keyboard command Shift+End on your keyboard. This will easily and quickly select the text in the field. Now type 261.626 over 440.000 and change the "A" Note selector to MIDI Note 60

With these settings, you have now moved the 1/1 starting pitch from the ZynAddSubFX default, 69.A at 440 Hz, to a new starting pitch of 60.C at 261.626 Hz. This powerful feature is how musicians and composers can easily set the 1/1 starting note the loaded SCL microtuning file to any desired MIDI Note and specific pitch.

How To Set The 1/1 Pitch To A Non-Standard Frequency
Here is a great article on historical concert pitch:

Concert pitch

As a demonstration of the flexibility of the ZynAddSubFX Scales dialog features, suppose for instance, that for the performance of Baroque music, it is required to tune to A.69 to a frequency of 415 Hz; merely type 415 into  the "A" Freq field, and then set the "A" Note selector to 69. With these settings, you have now set the 1/1 of the microtuning to a specific pitch of MIDI Note 69 at 415 Hertz (or CPS). 

As one can readily see and hear, even with just these two settings: the "A" Freq field, and the "A" Note selector, it is very easy to change the 1/1 of any loaded microtuning to any desired pitch imaginable; either historic or otherwise, and indeed, changing the base frequencies of the music to something other than typical concert pitches of 69.A 440 Hz and 60.C 261.626 Hz is a great way to totally change the sonic character of the music in general, although it is an advanced and somewhat specialist topic.

7. The Shift selector enables modal rotation - or interval matrix rotation - of the loaded microtuning. This is very useful, because musicians can load one microtuning, and shift to any of the other modes of that scale with ease, which is important for microtunings having two or more interval sizes.

8.  By clicking the Import KBM File button on the bottom right of the Scales dialog, it is also possible to load a linear keyboard mapping file (KBM) with simple instructions such as that MIDI Note C.60 will be at a frequency of 261.626 Hz. And when such a file is loaded, it actually changes the values in the "A" Freq. field, and the "A" Note selector at the top of the Scales dialog. This and the other KBM files I checked seemed to work. The KBM files are a complex topic about this microtuning format, and it's largely undocumented how every facet of this works.

But the most important thing of all is that now ZynAddSubFX will save and restore the Scale settings within the host DAW, which essentially means that this classic synthesizer is ready for serious microtonal and xenharmonic music composition tasks. It's thrilling to see this working now and many thanks to VDX for making this possible.


  1. This article is gold. Thanks!

  2. Thanks much for the positive feedback. If you create some microtonal music with this amazing VSTi, I'd be very keen to hear it. Get in touch using the contact info at the top of the blog.