I know that I have seen examples somewhere but can’t recall where – or maybe it is covered in one of the tutorials/videos.
I have a couple of cases where I’d like to use a single knob to do one of the following:
crossfade between succeeding options (for instance, between four different sources A, B, C and D where at 0 you get A only as you turn up the knob, you start xfading to B and from B to C then from C to D). I have a kludgy way of doing it, but I think there is a more elegant way than what I am doing.
turning up the knob cascades the input. So, at 0 you have A only and as you turn up you start mixing in B and once B is at full level, C starts being add, etc.
I have a suspicion that these techniques might be able to be used as part of a waveshaper/folder to get a little closer to the sort of harmonic cascading one gets with the Buchla and 0-Toast wavefolder that most others don’t quite have.
Here’s a 4 way crossfade that fades between input 1 and 2 then 2 and 3 then 3 and 4. It uses a smoothstep() function to create a smooth transition between sources. 4-way Xfade.audulus (9.0 KB)
I put together this 10-channel cross fader to smoothly crossfade between multiple signals/channels from the Infinite xFade module (unable to find currently) that I believe was originally made by @biminiroad
That’s a cool one but the method @stschoen came up with is much more CPU light. I think @MacroMachines made that original one - the nice thing about that is it’s modular and expandable. I tried and failed ot make one like it with smoothstep(x,a,b) expression but it’s probably possible.
Just a quick description of the smoothstep function. The smoothstep(a, b, x) function generates a smooth “s” curve. The output changes smoothly from 0 to 1 as the input x changes from a to b. Input values below a and above b are essentially clamped. Here’s a quick example: smoothstep demo.audulus (1.3 KB)
In this case the input is from 0 to 1. Note how the input is a ramp and the output is curved, starting and ending gradually.
The 4 way crossfade uses a set of these expressions to generate 4 smooth ramps as the input knob goes from 0 to 1. You could easily modify the module to crossfade between any number of inputs.
You could certainly change the ranges of the smooth step statements so that they added rather than cross-faded. You would need to be careful that the signals you added together didn’t exceed any limits. For example audio should be between -1 snd 1 and modulation signals should be between 0 and 1. You could lower the gain of the unit as you added more sources but that might not give you the results you want.
I quite like the smoothstep function for crossfading between many different waveforms. Here is a demo patch to show I patch it with crossfade nodes and how you can add a “width” to the crossfades to create little plateaus of one source or another. That can come in handy when you are designing a knob that you want to have a sweet spot for a particular value, for example making an attenuverter have a sweet spot for 0 (which is normally the middle of the knob).
The Voyager Osc is a faithful recreation of the Moog Voyager oscillator, which had a variable waveform and is an example of how you can change not only the source of the waveform but other elements as well with the sweep of one knob. Sometimes the knob is crossfading and sometimes the knob is changing the pulse width.