Hordijk VCA-Waveshaper
  • @RobertSyrett briefly touched on the subject of wavefolding in his Know your Nodes tutorial on Phase Modulation. He notes (around 14m52s) that even in the case of the carrier oscillator having a frequency (ratio) of zero, one could still obtain a result – the carrier can be used as a waveshaper.

    Rob Hordijk takes a closer look at this fascinating topic in tutorial #18 of his series given at the NOVARS research centre. Using Robert’s Audulus Wavefolder as a starting point I set about recreating what I could glean from Hordijk’s tutorial video. https://vimeo.com/channels/1311476/240798045

    As usual, Hordijk takes care to think things through and combine elements in a way that takes it all to the next level. He cleverly adds a crossfader to the waveshaper so that one can easily adjust the mix between the orginal signal and the folded one – something that can be especially effective when subjected to voltage control. The one side of the crossfader can furthermore be set to point to either the original signal, no signal at all, or the output of the VCA. (Try cycling through the crossfade switch positions in the demo patch to get an idea of the various modes.)

    The VCA is, as far as I can gather, a bipolar VCA along the lines of the one in his Dual Fader. With an inverted signal equally present alongside the orginal the two signals cancel each other out – until one introduces some modulation. With modulation at audio rates the resulting ring modulation provides a nice counterpart to the harmonic content generated by the wavefolding.

    With the VCA/folding knob turned all the way to the left (zero) the VCA is set for ring modulation and is silent if no modulation is applied to its input. Moving gradually to its midpoint results in amplitude modulation and opening it all the way gives the full signal. The crossfader can be used to adjust the mix between the folded signal and the the VCA, which also has its own output.

    (Since they share a knob, adjusting the wavefolding means that one also adjusts the VCA. This could be partially solved by adding an extra independent wavefolding modulation input (as Hordijk does on his module), but in my experiments the results didn't seem different enough to warrant the added (interface) complexity in this context.)

    The waveshaper works nicely alongside the Harmonic oscillator since the oscillator lacks the verticals of conventional sawtooth or square waves that don't lend themselves well to wavefolding. Conversely the shaper can add a little more definition to the more rounded shapes of the Harmonic Oscillator, at least in my Audulus version of it.
    RH-RM VCA-Shaper.audulus
    RH-RM Waveshaper Demo.audulus
  • Really cool! I should mention that there is a little scaling that should be done to the crossfades so that they don't exceed -1 and 1 in audulus. Not a big deal, but it might cause clipping elsewhere. I have attached a version with some suggested revisions.

    By some weird coincidence I was working on a model of the Happy Nerding FM Aid module which operated on a very similar premise. Included in the attachment is a prototype of the FM aid model.

    I used a quadratic equation to emulate an algorithm that could be achieved using ring modulation and internal signal scaling instead of a sin(x) function. Not really sure if it makes a sonic difference but it was a fun thought experiment.

    Thanks for the great upload :)
    FM aid vs Hordijk wave folder.audulus
  • @RobertSyrett Thanks for the feedback and scaling suggestions.

    I'd somehow overlooked the overshoot on the VCA knob. With the crossfader my thinking was that it made sense to use the equal power crossfade, but I can see that there is some clipping that can occur. Thanks for catching that. Re. your linear crossfade, I'm curious about the inclusion of the smoothstep – what function does that serve exactly? Isn't the knob taking care of that automatically?

    Also interesting to check out the FM Aid in your comparison patch. Thanks!
  • The Smoothstep function actually introduces a nonlinear curve to the response and serves as a clamp on inputs.
    smoothstep as clamp.audulus
  • Aah, yes. I forgot that the current knob isn't restricted to 0–1 even though it might have 1 set as its max value. Good to know about the curve on the smoothstep function. Thanks.
  • Two minor adjustments in version 1.1 of the VCA-Shaper:

    Robert Syrett's version of the crossfades works very nicely, but I was wondering how one might keep the equal power crossfades – and so simply added some attenuation after them to prevent potential clipping.

    I decided to keep the VCA knob with the values overshooting 1 since it results in the one side of the crossfader completely switching off and gets close to an unmodulated signal in the full position. I also like the degree of amplitude modulation that is reached at the midpoint with that setting, so I'll stick with that, at least for now.
    RH-RM VCA-Shaper v1.1.audulus
  • Internal trimming and boosting is often how they do it in analog so that is probably the more authentic approach. Thanks for the revision!