Hordijk Dual Fader



(This is a repost of part of a thread on the old forum.)

While taking a look at the difference between the Epoch Modular TwinPeak filter and the one that Rob Hordijk uses in his own system, I got curious about his Dual Fader module. At first I thought that it might not be all that relevant in the Audulus context, but the closer I looked, the more compelling I began to find it.

The NOVARS Research Centre has fortunately posted an extensive series of Hordijk tutorials (presented by the man himself) and I found it very useful to take a look at the two videos (#12 and #12a) in which he presents the Dual Fader.

My first take-away was the simple idea of using one half of a cross-fader as a VCA with an RMS curve, and so I put together a little Audulus VCA and a comparison patch with exponential and logarithmic curves.

RM RMS VCA.audulus (10.4 KB)
RM VCA Shapes.audulus (58.3 KB)

A few details on Rob Hordijk’s Dual Fader and my recreation of it:

The http://hordijk-synths.info site still appears to be down, but is fortunately still available via the Web Archive. There’s also a schematic.

Hordijk makes clever use of normalized inputs and outputs to achieve a wide range of possibilities with only a few inputs and outputs:

  • Crossfading: 2 input signals, 1 output signal
  • Panning: 1 input signal, 2 output signals
  • Ducking: 2 input signals, 2 output signals

Since normalized inputs and outputs aren’t (yet) a viable possibility in Audulus I’ve simply included an extra output for the crossfaded signals. Another feature of Hordijk’s module is a 20db Gain control on two of the inputs to enable using external signals within the modular system. That isn’t something that needs to be thought of within the Audulus context, but those controls can also be used to introduce clipping distortion, so I’ve kept that as a feature. (Soft clipping in my case, but that could be adjusted.)

Hordijk also includes a switch that changes between the crossfade output of channel A being routed to:

  • Both inputs of channel B
  • Only input 1 of channel B
  • Both inputs of channel B, but with input 2 inverted. That means that when fader B is set precisely to its center, the two signals cancel each other out resulting in silence. However if that fader is modulated at audio rates a type of Ring Modulation is heard, with a particular quality that is the result of the RMS curves.

I put together a simple demo (which also got me thinking of the similarities with @stschoen’s FSK oscillator.): RM Dual Fader Demo.audulus (148.6 KB)
(My 3 way switch defaults to the upper position when opening the patch, so that need to be manually switched down to the lower position.)

And a demo coupled with the TwinPeak filter: RH-RM DualFader TwinPeak Demo.audulus (397.5 KB)

I’m impressed by Hordijk’s take on a simple mixing module, both the way in which distinctions between levels and placement are eased, and just how much can be gotten out of what is essentially two crossfaders – especially when modulation is introduced.

RH-RM Dual Fader v.1.1.audulus (70.7 KB)

(Hordijk’s modulation inputs accept both audio and modulation signals – in this case I’ve added a switch that makes it possible to select between unipolar modulation and bipolar audio signals for the modulation inputs.)

Hordijk Mini Matrix – Node Proc

Looks good! crossfading is a really powerful tool for creating new waveforms and expressive modulation.

I would probably scale the AXfade module inside just so signals can’t exceed 1


Do you have any thoughts on how to do this? I was thinking about that myself - it crossfades that way so the perception of crossfading stays equal (equal power) but if signals are completely in phase yes, it can produce peaks.

But if you use something like tanh(x) that would affect the sound of everything going through it, no matter how loud it was, and if we used a clamp(x,-1,1) it would cause clipping.

Perhaps it’s just something that can’t be fixed? As long as it’s not greater than -1 to 1 as it goes to the speaker, it shouldn’t matter for most stuff (though it could drive filters harder than expected).

OR perhaps in a patch like this, the sound can be scaled down as it goes through the crossfader and then scaled back up so the output is never greater than -1 to 1.


I was thinking just dividing the output by 1.41399. Also, where did you get this bit:

The pan function on my buchla clone has a sigmoid response, and I asked an audio engineering consultant about the equal power crossfade and he just kinda gave me a confused response and said that everything should be linear.



By default in Ableton, it does an equal power fade. It has to do with perception of volume, and it’s why log pots are used in audio - log pots are also called audio taper pots. A crossfade is just two audio pots ganged together where one’s response is reversed.

The sigmoid response in your Buchla is an estimate of the sin/cos pan, which I bet is difficult to do perfectly electronically.

Here’s a guide that talks about them. It’s weird that they refer to what looks like an exponential reponse as a log response, but that’s how it is. I usually just make audio level knobs with x*x to get the response smooth.

This is also a great article on the differences between crossfading types.

An equal-power crossfade is recommended for material that isn’t phase-coherent as, in a crossfade between two different types of material, it will mean that the overall volume will be maintained through the crossfade. An equal-gain crossfade, by contrast, is recommended for material that is likely to be phase-coherent, such as two loops of the same sound.


So in the end, the chances it spends much time outside of -1 to 1 are low if the oscillators aren’t in phase.


I solved this problem after @RobertSyrett pointed it out in my Hordijk VCA-Shaper, (which I’ll repost soon) by simply attenuating the signal to half of 1.41421 – which is 0.717105, the RMS value.


After experimenting with various contexts my conclusion is that the (lack of) equal power crossfade is most noticable when it comes to panning. With crossfades between oscillator waveforms (or the addition of distortion, for example) the (large) changes in harmonic content counter the changes in levels and it seems to me to become more a quesiton of how quickly you want the next thing to fade in.

In the context of Hordijk’s Dual Fader he’s also using it as a VCA with a curve that can be usefull to give sounds a bit of a longer decay. (The other VCAs in his system are linear – so one can choose what fits a particular situation.)


With my Hordijk VCA-Shaper I did find that there was occasional clipping – probably due to the high harmonic content of the waves after waveshaping