Ridiculously Complex Waveform Generator


Ridiculously Complex Waveform Generator

This was inspired by Softube Modular’s virtual recreation of the Buchla 259e Twisted Waveform Generator. The original 259e hardware was a digital version of the all analog Buchla 259 Complex Waveform Generator and was wavetable based. Since Audulus doesn’t lend itself well to wavetable synthesis I decided to take a blended approach. This is not an attempt to clone either Buchla unit, but a complex oscillator in the same general style.

The unit consists of a modulating oscillator and a pair of primary oscillators. Each oscillator is basically of the same design. The oscillators feature a selectable waveform that crossfades between sine, triangle, saw and square waves. The saw and square wave also have a shape control which in the case of the saw introduces a second saw peak and in the case of the square wave varies the pulse width. Each oscillator has a frequency and fine tune control and the primary oscillators have an amplitude adjustment. There is also a linear FM input with a level control (ndx) and a sync input for each oscillator. There is a drift level and rate control which causes the oscillators to vary in frequency over time similar to an analog oscillator.

The output of the primary oscillators is fed into a pair of wave folders with fold, order and symmetry controls. The outputs of the folders are crossfaded using the morph control and sent to the main output.

The modulating oscillator has three frequency range settings. Low is from 0.05 Hz to 220 Hz. High is from 27 Hz to about 7k. The third range is identical to the high range but tracks the “o” input. In this case the frequency control becomes an offset. There are three modulation targets, pitch, fold and morph which can be selected in any combination. The modulation is bipolar and the pitch modulation is linear. The mod ndx knob controls the depth of modulation. The morph and fold controls are unipolar so the combination of the modulating signal and the knob is clamped between 0 and 1. There is a modulating oscillator output as well.

7/26 - version 2.0 - I added a fifth waveform to each oscillator. It is a 16 step random wavetable. There is a “?” input associated with each oscillator. A high pulse on this input will load a new random pattern into the table. The waveform is low-pass filtered to prevent excessive high frequency noise.
I also added a separate sync input and pre-folder output for each primary oscillator and misc. bug fixes.

7/27 - I decided that even though the trigger buttons worked well to select the range and modulation targets, the fact that they reset when the patch was reloaded made them a bit of a pain, particularly if you want to share a patch. I replaced them with knobs since they save their position. I also redid the sync circuitry on the oscillators to improve the sync behavior and fix a few bugs.

7/28 - I moved the individual outputs of the primary oscillators post folder and added a pre-folder square wave out mostly for sync use. I modified the low range filtering on the modulation oscillator to reduce clicking.

08/13 - V3.0 Rearranged the knob layout so that the knobs on the two primary oscillators are the same rather than mirrored. Improved tuning circuit with “tuned” indicators. Note that the tuning indicators are before the drift circuit so if you want exact pitch you need to set drift to zero. I fixed some bugs in oscillator sync circuit.


Input Signal Range Notes
o 1 per octave primary 1 per octave frequency input. With the freq and fine controls at 50% 0 is 440 Hz.
sync 0-1 pulse hard sync input for each oscillator syncs on the leading edge.
fm -1 to 1 linear FM input for each oscillator
? 0-1 pulse reloads the random wavetable with a new set of random values

Output Signal Range Notes
mo -1 to 1 modulation oscillator output
main -1 to 1 main oscillator output
31%20PM\62x30 -1 to 1 primary oscillators square wave
o1 -1 to 1 primary oscillator 1 output post-folder
o2 -1 to 1 primary oscillator 2 output post-folder


Control Function Notes
** Oscillator Controls **
shp modifies the wave shape this only affects the saw and square waves
wave selects the wave type smoothly changes from sine to triangle to saw to square to random
freq frequency control range is 8 octaves - 50% (0.5) is tuned to a-440
fine fine tuning +/- 1 semitone
ndx FM index adjusts the level of the signal input to the “fm” input
drift oscillator drift sets the depth of the random frequency drift of the oscillators
rate drift rate controls how fast the oscillators drift.
** Main Oscillators **
sym symmetry alters the symmetry of the folder - 50% is symmetric
order folder order controls the number of folds for a given fold setting.
fold folds the input waveform
mrph morph morphs (crossfades) between the upper and lower main oscillator
** Modulation Oscillator **
range frequency range low, high and high with tracking (trk)
mod modulation target selects any combination of pitch, fold and morph or none


Meter Displays Notes
tuned LEDs indicate when tune and fine knobs are at default
waveform LEDs shows the selected waveform
range LEDs shows the selected frequency range for the modulation oscillator

Version History

Revision File Date Notes
3.0 Ridiculously Complex Waveform Generator V3.0.audulus (372.3 KB) 08/13/2019 new knob layout and improved tuning, bug fixes
2.5 superceded 08/10/2019 fixed reversed amp knobs
2.3 superceded 07/28/2019 fixed misconnected square wave out
2.2 superceded 07/28/2019 new version (see above)
2.1 superceded 07/27/2019 replaced triggers with knobs, bug fixes, improved sync(see above)
2.0 superceded 07/26/2019 new version (see above)
1.0 superceded 07/26/2019 initial upload


Revision File Date Notes
3.0 Ridiculously Complex Waveform Generator demo V3.0.audulus (906.6 KB) 08/13/2019 new RCWG version
2.5 superceded 08/10/2019 new RCWG version
2.4 superceded 08/09/2019 replaced LPG with improved version
2.3 superceded 07/28/2019 fixed misconnected square wave output
2.2 superceded 07/28/2019 new version - modified demo
2.1 superceded 07/27/2019 new version (see above)
2.0 superceded 07/26/2019 new version - the demo is more interesting if you select some modulation targets
1.1 superceded 07/26/2019 added a Low Pass Gate model and upped the clock rate - the demo is more interesting if you select some modulation targets
1.0 superceded 07/26/2019 initial upload - the demo is more interesting if you select some modulation targets

This is rad thank you so so much! :grin:


Wow, thanks!

1 Like

@stschoen I’ve only had enough time to play around with the demos and comb through some of the sounds available on this one. It sounds great! Really fantastic job on this one. I can’t wait to really dig in!


I posted a new version. I added a fifth waveform to each oscillator and sync and pre-folder outputs for the 2 primary oscillators. (see above). The demo doesn’t really even begin to explore the sounds available. You need to play around with all the controls to get a feel for it. This one is going to take me a while to explore! :cowboy_hat_face:

1 Like

RCWG Fan Patch.audulus (1.6 MB)

Really liked your patch. I found a couple of bugs while I was listening to it and I realized that I had no way to know how you had the range and modulation targets set since they reset to low range and off when the patch is loaded. I changed the triggers used to select those functions to knobs so they would remain set when a patch was saved and loaded. Also reworked the sync behavior for the oscillators. New version in a couple of minutes.

I replaced the version 2 RCWG modules in your patch with V2.1. I tried to match the knobs but I didn’t know how you had the triggers set. I would appreciate it if you would tweak this copy and repost so I can see and hear what you intended.
RCWG Fan Patch update.audulus (1.6 MB)

That sounds good. Its probably impossible to get back there again. However, I did record the original patch last night and then ran it through AUM with some Audio Damage AUv3’s for another layer of space/reverb.

I need to make a proper patch though, as I didn’t even read the background on your module yet.


I often use the convolution reverb in Ableton for the same reason. I haven’t yet heard an Audulus based reverb that comes close.
The RCWG is pretty complex but I intended it to be a kind of “Swiss army knife” oscillator. Hopefully I’ve provided enough flexibility to make it a useful tool.

1 Like

Complex oscillators have so much range – and intereting non-linearities – that even simple systems make a shocking amount of variety available. I’ve been working on Buchaudulus for something like 8 months and am constantly surprised by the sounds possible – especially with shifting modulation.

One module that I am working on is a “modulation” sequencer basically several independent CV outputs per step each with its own slewing.

I hope to get some time in on RCWG soon.


Okay I think I got it. I had to adjust the range knob on the left RCWG module. When I listened to the updated copy I was sad that the left oscillator sounded flat and far too distinct from the right oscillator. This kind of killed the heart of what I was excited about.

Now, with the adjustment it is rich again which seems to give a better balance so that it sounds like its being bussed and mixed. When it gets pushed through K-PAS I think it brings it properly around. I would say that this copy without the layer of reverb processing is much more interesting. Personally, I am impressed with the dynamics and sonic authenticity I can hear. When you look at the patch, there isn’t much going on.
RCWG Fan Patch update (corrected).audulus (1.4 MB)

  • Also got rid of the Turing module, as it was redundant.
1 Like

That sounds much closer to your Soundcloud post. When it’s in low range, the modulation oscillator is acting as an LFO usually to modulate the main oscillators 1 and 2. When it’s in high or track it’s running at audio rates and so if you’re modulating oscillators 1 and 2 it’s at audio rates. If the target is set to pitch, you have linear FM. For morph it behaves like the FSK oscillator and crossfades between oscillator 1 and 2. Fold sweeps the folders for both oscillators. If you set modulation to off and the range to high or track you have 3 separate oscillators to play with. I think I might move the o1 and o2 outputs to post folder. I was thinking it would be useful to have a pre-folder output for sync purposes but I think I’ll just add a dedicated square wave out for each of the primary oscillators.


Sounds great!


I’ve posted the new version. I think that should be it for a while unless I find some more bugs. :cowboy_hat_face:

1 Like

I think that there is a lot of room right now to do interesting things in electronic music. I keep reflecting on the idea that, for some people, they aren’t too interested in getting caught in the trenches of synthesis. Instead, they just want to work with what is new and possible given all the equipment. These producer/DJ’s have quite a bit on the line because people will pay for their drops. This is where I think things get really interesting.

I am purposely getting myself stuck in the trenches. But I like an overview once in a while. So I think the complex oscillators have a place on the dance floor away from the modular synthesis community. I hope I can work on some dirty basslines soon.

What is this music also for? It’s for when you have a real sick whip and you want to roll up all bllllllahhhhhwwwwwmmmmmmm…
Which is just to say for those of you that turn your nose up at genres — they have different puposes, many of which are not for you to sit and stare at just the tune. Some are for dancing. Some are for driving your car slow down main street. :stuck_out_tongue:

  • and don’t believe that bs about the loudenss wars and spotify blah blah blah. The war is ongoing, don’t kid yourself. If you go on after someone and your sound is bigger and heavier – you’re a damn good producer in that respect.

Sorry I was late to the party with this one! Another fantastic module, right for everyone’s collection!

Thanks for providing this, it will make syncing an oscilloscope a lot more simple. I did have to change the routing within the module from sqr l (the signal for the LED) to sqr (the actual square wave) which you might want to patch.

I also like the sound of ring modulating the folded primary oscillator signals together. It can make some really interesting industrial zone drones.

1 Like

Oops :grimacing: I’ll take of that right now.

1 Like

I added the square wave outputs primarily for oscillator sync purposes since syncing the folded waveform might be a bit tricky.

1 Like

Discovered today that the LPG I pu together is a bit unstable. I used a bi-quad for the filter element and it turns out they don’t do well at low frequencies. You might want to avoid using it until I find a solution. An SVF is a possibility but they’re unstable at high frequencies (anything roughly over the sample rate/6). I might try a 2 stage ladder.

1 Like