Virtual Analog Microtonality in VCV Rack

One of the most interesting computer music software developments of the past few years has been the advent of Modular Virtual Analog synthesizers.  That is, modular synthesizers that exist on your computer screen and which often do away with the limits of the equivalent hardware instruments. (And the weight, he says, remembering without any fondness concert tours of Europe where I pushed two flight cases of analog gear over cobblestone streets!) One of the most exciting of these synths has been VCV Rack, a free and open-source project (Mac, PC, or Linux) headed up by Andrew Belt.  VCV Rack has a whole family of free modules, some by Belt, but most by other developers, some of which emulate the function of well-known physical Eurorack modules. For example, many of the elaborate modules from French developer Mutable Instruments are available in authorized reproductions in VCV Rack.  Belt has encouraged other developers to develop modules which can function in the Rack environment.  These are called plugins and there are a lot of them out there.  One of the most prolific developers of free plugins for Rack has been Antonio Tuzzi, from Sardinia.  His set of plugins, which he promotes under the nom-du-software of NYSTHI, is extensive and deep.  Some of his plugins are original, and some are loving emulations of classic hardware from the past.  There are also selected modules which are for sale on a per module basis. For example, Andrew Belt has a number of modules, one of which we will discuss here, which are available at nominal cost. 

One of the problems Xenharmonic composers who use computers face is that of implementing microtonality.  Some software synthesizers implement the use of Scala tuning files.  (Modartt Pianoteq, all of the Madrona Labs synths, WusikStation, UVI Falcon etc.)  Others have proprietary tuning formats which can microtune most uses of their synthesizers/samplers (such as Native Instruments Kontakt – http://soundbytesmag.net/technique-microtuning-in-kontakt-5-and-6/).  Still others, such as the Arturia CMI V, and Synclavier V, and the Synclavier Labs Synclavier Go, emulate the tuning capabilities of those classic instruments, meaning that you can detune them in the same (non-standard) way that you did when the instruments were new and in physical form.  But you can’t use Scala files with them.

The Virtual Analog world has settled on the standard of (the digital equivalent of) 1 volt per octave tuning, as did most of the early analog synthesizers.  This means that fantastically accurate microtuning will be possible with any module designed to that standard.  If only there was a module in the VCV world that could process control-voltage signals and MIDI-keyboard signals into that desired accuracy.  Well there is, now.  Antonio Tuzzi has designed two modules, the Scala Quantizer, and the Equal Division Quantizer, for just this purpose.  The Scala Quantizer takes Scala .scl files, and quantizes any incoming control-voltage or MIDI-keyboard signal to match the tuning of the Scala file.  The Equal Division Quantizer quantizes any input signal into any desired equal-interval tuning, from 2 to 100 equal divisions (with 2 decimal point accuracy – ie, 56.35 equal divisions is possible), of any ratio from 1.2 to 100.  So for example, the 12th root of 2.05 is possible, for a stretched tuning, or something like the 45.3rd root of 7.63 is possible, for some kind of experimental tuning.  Furthermore, each of these factors – number of divisions and interval being divided –  can be voltage-controlled, for continually varying tuning.

Andrew Belt, meanwhile, has developed his own tuning module for VCV-Rack, called Scalar.  This is a Scala .scl file based module, but it also has the ability to specify different sectionings of each individual octave – that is, each octave can have a different set of pitches which are on or off.  Fans of Xenakis-derived non-octave pitch sieves will be delighted by this module.  Unlike the NYSTHI modules, this module is payware, but the asking price of $20 US is so reasonable that it is probably affordable by almost anyone who has a computer that can run VCV Rack.

VCV Rack also has another payware module ($30 US), called VCV Host, which enables VST Plugins to work inside the VCV Rack environment.  If the VST Plugin supports microtonality on its own, then you don’t have to use either the NYSTHI quantizers or the VCV Scalar.  Just send it the proper MIDI note numbers and you’ll get the desired tuning.  But if your softsynth does not support microtonal detuning, there’s still a way to control it in VCV Host.  This involves sending a synth both a MIDI pitch number and a MIDI pitch bend number at the same time.  The late John Dunn’s MusicWonk (algoart.com), a free program for PCs only, has a module called MIDI Tone.  With this module you set up a table of tunings using Scala files and the MicroTone menu in MusicWonk.  Then when you call up a particular scale degree, the appropriate MIDI note and MIDI pitchbend will be set. In order for this to work properly, you will need to set Pitchbend range on your softsynth to +/- 1 semitone. I tried this with Applied Acoustic Systems Chromophone in VCV Host, and it worked perfectly.

If you want to work in VCV Itself, and you can’t set the pitchbend range on your VST softsynth (such as with the Arturia Synthi V, which is fixed at a +/- 1 octave pitch bend range), there’s still hope.  You’ll need a sequencer which can send out precise values (the NYSTHI LOGAN modules will accept a spreadsheet of values) and then you can specify pitches and pitchbend numbers that will work for your particular pitchbend range.  This can get to be quite complex, but it is possible.

Andrew Belt has proposed an algorithm for a module that could do this automatically.  As of this writing, no-one has created such a module, although I’m willing to bet one will be made soon.  But here’s a link to his algorithm and if you click on “comments” at the end, you’ll see Andrew’s implementation of this using Frank Buss’s Formula Modules. https://www.facebook.com/groups/vcvrack/permalink/344906862836131/

I’ve tested a number of softsynths in this Host module, and many of them, which don’t actually implement microtonality on their own, will perform microtonally when in the VCV Host module, when a combination of CV and Pitchbend signals are sent to them (and the pitchbend range is set to the appropriate amount). Note: this method produces only monophonic lines, but multiple instances of the synths could be used for polyphonic textures.  Of the softsynths I tested, the Arturia Synthi V, the Arturia Moog Modular V3, the Arturia Synclavier V, the Arturia CMI V, Madrona Labs Aalto, Wusikstation V9, AAS Chromophone2, Garritan Aria Player, Native Instruments Kontakt with Spitfire Audio sample sets, and the UVI Falcon all worked perfectly.  Many of these, among them all of the Arturia modules, and many of the Spitfire Audio sample sets in Kontakt, will not accept Scala .scl file based microtonal control on their own, but work well in the VCV Host environment.  Some Arturia keyboards – ones that were not designed to support microtonality in their physical versions, also don’t support microtonality in the VCV Host environment either.  Among these are the Piano V2, and the Wurli V2.  You should try out your VST synths in the VCV Host environment to see which support microtonality and which don’t.  As they say, your mileage may vary.  But it is really lovely to know that certain softsynths on which microtonality wasn’t easily available will now perform microtonally when loaded into the VCV Host.

Returning to the many oscillators, samplers and tone generators available in the VCV environment, let’s look in detail at Antonio Tuzzi’s two modules.  They are well designed, are very efficient, and work seamlessly throughout the entire VCV Rack environment.  Here’s a screenshot of a patch which uses all three kinds of microtonal quantizer modules, any of which could feed into the Macro Oscillator’s 1V/Oct input in order to produce microtonal pitches.

In this patch, the MIDI-1 input module receives MIDI information from a Korg MicroKey keyboard. This MIDI CV information goes to either the Scala Quantizer module, OR the Equal Division Quantizer module, OR the Scalar module, and the output of the chosen quantizer goes to the V/Oct input of the Macro Oscillator.  The Gate output of the MIDI-1 module goes into the Gate input of the ADSR module, the output of which feeds the VCA input on the 4MIX module.  The output of the 4MIX goes into the Audio Output module.  Many other modules and processors could be added to this, of course.  But this simple patch shows the three quantizer modules in operation.

Here’s the front panel of the Scala Quantizer module.

At the top of the module there is a switch to switch between “midinote map mode” – MIDI Keyboard note input – and “pure quantize mode” – which is used for internal VCV control voltage signals from sequencers, LFOs, random signal generators, etc.  Below that is the Input, with a bypass switch next to it.  The window below is very nicely designed.  The top row gives the octave of the scale and the scale degree generated by the input. In this case, it’s octave 3, pitch 1.  Below that is the Octave and the Ratio of the scale degree.  Here that’s octave 3 and this is the fundamental 1/1.  Below that is the frequency of the particular pitch, and below that is the resulting voltage signal output.  With this window, you can very easily see what is happening with your playing or controlling being mapped to the microtonal scale at hand.  Below the window is an octave control, and a Control Voltage input for octave choice (very handy, this).  Below that is a fine tuning window, to adjust the output of the module to whatever external source you wish to match.  The output is below that, and to the right of the module are 11 more inputs and outputs, all of which will be subjected to the same quantization.  Further control is accessed by right-clicking on the faceplate.  This brings up a back panel with controls on it:

After the utility controls at the top, is a control for MIDI map offsets – this will add 1-5 volts to the incoming MIDI note signal to make sure that you’re paying in the octave you desire.  Below that is a control to add a new .scl file to the set of files kept in the cache for the program in the “Documents/Rack” folder.  The selected scale is shown below, and then below that is a list of the available scales. This list can be scrolled through with the middle scroll wheel on a standard mouse.  The list can be of any length.  Although, for convenience, you might want to occasionally navigate to the folder that holds the .scl files, and prune it for efficiency.  Clicking on any of the file names immediately loads that scale into the module.

The Equal Interval Quantizer works in a similar manner, and looks similar:

At the top we see the inputs for the Equal Interval equation – how many equal divisions (top) of what ratio (bottom).  There are also CV inputs to change those specifications in real time.  These could change randomly, or they could be under the control of a module that gives precise tunings at particular times.  As you see, you can specify numbers with two decimal point precision and any number up to 100 is supported by both inputs.  The midinote map mode and pure quantize mode switch is below that, and below that is the monitor window.  The top line shows the index number – what scale degree from the total pitch range is being played.  The resulting frequency in Hz is shown next, with the Voltage output on the bottom line.  An octave offset and tuning window is below that, and at the bottom are four parallel inputs and outputs – each of which independently quantizes a different voltage to the specifications given above.  And as with the earlier module, right clicking opens up a back-panel for further controls:

In addition to the utility controls at the top, there is here just a MIDI Note Map voltage offset to adjust the octave range being used.

Scalar functions in a similar way to the Scale Quantizer module, but adds some other capabilities.

The top row specifies which octave will be displayed if the Variable option is selected with “Octaves.”  Each octave can have a different set of pitches turned on/off. If Octaves is set to Shared, then the same parameters apply to all octaves.  The pitches of the scale are shown below.  If you’re in the proper octave, when the relevant key is pressed a black dot appears in that particular key.  Right clicking on a key turns off that key, so that you can play subsets of the chosen scale.  Below that are indicators – Tuning may be either Equal or Unequal, and Notes can be set up to 24 (24 pitches is also the limit of the Scala .scl file that you can load into the module).  If you click on any key, the Cents indicator will also light up – the cents setting of any pitch can be changed by holding on the number and moving the mouse.  (Ctrl+hold for fine tuning.)

Four unique controls are given below.  “Depth” allows you to cross fade between no quantization and full quantization.  This is also voltage controllable.  With this you can have continually changing tunings.  “Track” adjusts the tracking of the oscillators in reference to a 1v/oct standard.  Setting this, for example to 101% would produce slightly stretched octaves.  Again, a CV input allows this to be changed in real time.  “Warp” adds a random offset to each pitch for a bit of unpredictable detuning.  Again, the amount of this can be voltage controlled.  Finally, “Offset” simply adds or subtracts a voltage to the signal for transposition or adjustment of the pitch level of the output.

The inputs and outputs are on the bottom row.  If something is only plugged into Input 1, that signal is normalled to the four outputs.  If a signal is put in both In1 and In2, then the two inputs are processed independently, but both quantized to the same parameters.  Right clicking on the panel brings up a back panel where you can import and export Scala files of up to 24 notes in the scale.  If you have different note selections in each octave, that won’t be saved with your Scala file, but those settings will be saved if you save your VCV Patch, and they will load perfectly when you reload your patch.  But if you have specified a scale with all of its pitch and cents values, that can be saved as a Scala file.  As an example, here’s a 14-note scale that I specified in Scalar, saved as a Scala file:

! 14NoteHandMadeScalefromVCVScalar.scl

!

Created with VCV Scalar (https://vcvrack.com/Scalar.html)

  • 14
  • !
  • 87.914
  • 157.029
  • 216.843
  • 300.957
  • 396.071
  • 437.686
  • 586.500
  • 685.714
  • 701.329
  • 838.343
  • 969.557
  • 990.372
  • 1169.086
  • 2/1

With the development of screen-based modular Virtual Analog synthesizers, a lot of possibilities have emerged.  With the development of these microtonal quantizers by Antonio Tuzzi and Andrew Belt, lots of microtonal possibilities have now become available. The future has just gotten a bit brighter, and a lot more complex, for those of us who want to use our computers for making microtonal music.