Exploring the subharmonic series with Host

With VCV (Eurorack), the math for computing V/Oct CV needed to play any harmonic partial is conceptually quite simple.

You always start with the root note (the fundamental, or first partial). Depending on how your VCO is tuned, that pitch will be represented by a specific voltage. But It does not really matter what the fundamental voltage (pitch) is. Each harmonic partial for that root note will also have its own V/Oct CV value. The difference between the nth partial CV and the fundamental partial CV will be a constant value. Once you have that delta value, you can add it (or subtract for subharmonics) to any root CV to get the correct nth partial V/Oct CV.

As others have pointed out, the formula is log2 of the integral harmonic value. And it is pretty simple to verify that is correct.

Starting with the first partial (the fundamental), log2(1) is 0, which is perfect. We don’t want to change the pitch of the fundamental.

The 2nd partial is 1 octave, and log2(2) is indeed 1, and 1V represents 1 octave. For a subharmonic we would want the negative value, or -1V.

The 4th partial is 2 octaves, and log2(4) is indeed 2, or -2 for the subharmonic.

The 8th partial is 3 octaves, and log2(8) is 3, or -3 for the subharmonic.

It works equally well for all the other partials. I stuck with the octave partials just to simplify the math so that all the deltas are integral values. But the non-octave partials will give the correct fractional CV delta values.

There are a few modules that can do the log2 computation. My favorite is the docB Formula One module.

You patch the fundamental V/Oct CV to X, the integral partial number CV to Y, and type in this simple formula: x - log2(y). The correct CV for the subharmonic will be sent to the OUT output.

Formula One is fully polyphonic, It will perform the computation on each of the channels found at the X and Y inputs.

Of course there is a slight problem in that there are not any modules with a knob that directly outputs integral voltages from 1 to 16. A module like VCV 8VERT will give you fractional voltages between -10 and +10. A module like Vult KNOBS will give you fractional voltages between 0 and 10 in unipolar mode, and -5 and +5 in bipolar mode. You will need to do additional math to scale and round the CV values to integral values from 1 to 16. There are many ways this can be done.

But even if you get all this done, there is one more significant complication - you want to use a VST virtual instrument, which will expect midi values, not CV voltage. And only the perfect octave partials of 1, 2, 4, 8, and 16 coincide with a tempered scale. So you would have to quantize the partial CV to the closest semitone. VCV can transform that into a midi note for you just fine. But then you also need to compute the difference between the raw partial CV and the quantized CV and transform that into the correct amount of midi pitch bend to achieve the true harmonic. I’m sure it can be done, but you will have to work that out.

The SlimeChild SubStation is a great plugin. I have it, and it is beautifully documented, simple to use, and sounds fantastic. But I don’t think it will help you much with getting subharmonics out of VST instruments.

I have a big favor to ask - I have a very complete VCV Subharmonicon emulator patch that I created after scouring the Subharmonicon manual. I did my best to implement as many features of the hardware as accurately as I could, including a patch bay. But I do not have access to the actual Moog hardware, so I have nothing to compare it to. I would love to know how closely the emulator comes to the real thing. I’m sure the sound will be quite different because of differences between digital and analog, but more importantly because it does not have a Moog filter. But I would like to know if the workflow and capabilities are similar to the real thing.

I would be forever grateful if you could download my patch and have a go with it, and report back what you find. There is extensive (but terse) documentation at the bottom of the patch that describes all differences and enhancements that I am aware of. I’d like to know if I got anything wrong, so that I can either change the patch and/or correct my documentation.

Below is the most recent version 5.2 of my emulator. There are a few extra modules to the right that use the patch bay, and can be ignored. The actual emulator to the left is created entirely from free VCV plugins. There is a link in the Patch Storage writeup where you can get the free Stoermelder PackOne plugin - it is not available yet in the VCV version 2 librarly.

If your are interested in the construction of the patch, then you may want to look at earlier versions, where I talk about my design decisions and how the patch was built. The early ones will not work with VCV Rack version 2, but the writeup may be of interest to you.

Version 1, for VCV version 1 only

Version 4, again for VCV version 1 only

Version 5.1 - the first good version for Rack 2.0

6 Likes