This algorithm provides synthesis methods previously unavailable to the G2, with unprecedented sound quality since there is no inharmonic aliasing (except if you want it).
Features:
*Master oscillator based on a user-definable additive wavetable comprised of 8 interpolated stages with 32 partials each.
*7 selectable complex wave-shaping modes:
-Symmetry modulation: Increasingly warps the waveform to one side. (Functional equivalent of the "bend" function in NI Massive and Xfer Serum.)
-Ringmodulation: Dynamic transition from flat to amplitude- over to full ringmodulation of the wavetable waveform with a "hidden" modulation oscillator which is tunable in integer multiples of the base frequency, up to 64x.
-Phase Modulation: The wavetable waveform dynamically phase-modulates a sine carrier tunable in integer multiples of the base frequency, up to 64x. (Factor 0 turns it into a 0Hz sine waveshaper.)
-Wavetable-shaping: The wavetable waveform acts as a complex "morphing waveshaper" dynamically modulated by a sine oscillator tunable in integer multiples of the base frequency, up to 64x.
-Windowed sync: (Not to be confused with "windowed sinc". Laughing) Conventional hardsync sweeping doesn't sound good when applied to additively generated waveforms due to the pronounced "buzz" caused by waveform discontinuities. This method smoothes those away by shaping the resulting hardsync waveform with a bell-shaped window. (Amplitude-modulation with a parallel cosine wave, technically speaking.) This is equivalent to the "window" feature in the Xfer Serum softsynth. The result is akin to true spectral shifting, albeit with an extra introduced harmonic.
-Windowed formant: My personal favourite, and AFAIK not available anywhere else. Technically equivalent to windowed sync, but the synchronized wavetable waveform doesn't track pitch. The spectral contents of the wavetable thus become shiftable formants. The result could be described as "formant-table" synthesis, albeit with an extra introduced harmonic.
-LFO1 WMD: Only half-serious feature thrown in because I had an unused input on the waveshaping switching matrix left."WMD" stands either for "waveshape modulation" or "weapon of mass destruction"Laughing both of which are accurate descriptions. The wavetable waveform again acts as a complex "morphing waveshaper", but this time is driven by the lowly LFO1 and also "windowed" like above to at least smooth things out a bit. If you whip LFO1 into the audio-range (unipolar sawtooth waveform works best for "smooth-ish" results), you'll get all kinds of clangorous noises. Keep in mind that the LFO clocks at control rate, introducing (harmonic) aliasing. But if you're into these kinds of sounds, you'll probably like that. Laughing (This mode can actually sound way cooler that I had thought.)
*Sub-oscillator:
Rather than being simply a square or sine waveform, this is an identical copy of the original waveshape. And rather than being a simple "one octave down" affair, it uses a fractional divide-down circuit and thus is freely tuneable below the master oscillator frequency. Since you'll either want to use this tuned in coarse semitones for intervals, or finely for unison-type fattening, one single bidirectional knob provides both functionalities. The sub-oscillator as well as the master are also both pan-able, opening up the stereo field without having to resort to FX.
*User-adjustable anti-aliasing:
All the aforementioned processes use bandlimited resampling and are free of inharmonic aliasing (except the WMD mode Laughing). Those who like inharmonic aliasing can simply turn this off and enjoy the "birdies" singing in the upper ranges. Conversely, if you hear "birdies" on rare occasions where the default anti-aliasing setting isn't sufficient (eg. fierce waveshaping), you can tighten it up accordingly in order to deal with them.
*Modulation sources:
Two modulation envelopes and two LFOs, which are all simultaneously available for osc pitch, wavetable position and waveshaping amount destinations. LFO1 is a free-running LfoA type (with the random shapes), whereas LFO2 is a LfoB which can optionally be retriggered by keyboard gate. I hate seeing unused inputs, so ENV1 is also hardwired to LFO1 rate modulation, and ENV2 to LFO2 respectively. Finally, Osc pitch also has a dedicated lowly sine vibrato LFO so you don't have to waste a "real" LFO for that (or resort to the inconvenient patch vibrato functionality).
*Stereo pingpong delay:
With individual times and HP and LP filters. There wasn't enough DSP left for a reverb module, but I've come to hate the sound of that thing anyway, so all is good (for me Laughing).
I originally wanted to delve into the intricacies that make all of this work, but there is a ton of groundbreaking stuff going on in there, and all of it's very abstract low-level stuff and probably not very interesting, so for the sake of brevity and "tl;dr" I'll skip it. There are two things I'd like to mention though:
1) I found a way to work around that old infamous "delay line bug" which causes crackles and glitches. In preparation of this algorithm I had to do lengthy experiments with the modulated delay lines (for 24bit precision addressing of individual samples), where I had the hunch that the artifacts were caused by the fractional sample interpolation window not "wrapping around" within the memory array allocated to that module, grabbing samples from another one and causing glitches. By that reasoning, placing a "dummy" delay module of equivalent size and filled with identical audio material right before the module being used should solve the problem. This is a bold assumption to make, and I might be completely wrong, but... IT WORKS! Shocked The crackles vanish. Of course, this is a rather wasteful solution, but I had to implement it in this algorithm to preserve sound quality. So if you see seemingly nonsensical delay modules with unused outputs somewhere in the patch, they are there for a reason. (Other imperfections in the mod delay modules remain, but they are negligible for most purposes.)
2) This algorithm is a 100% low-level design, using G2 modules as weird representations of programming instructions. Messing around with it will not only most probably sound shitty, it can actually make the patch crash irretrievably, forcing you to reload it. (It even bricked one of my G2Xs once, but that's another story.)
Control panel description:
Page A1:
MST-OSC Semi, Fine, Pitch M: Master oscillator tuning and vibrato amount.
VIBRATO Rate: as it says.
MST-OSC Env1, Env2, Lfo1, Lfo2: Master oscillator pitch modulation amounts by the 4 mod sources.
Page A2:
SUB-OSC Crs/Fin: Bidirectional tuning control of the suboscillator (a copy of the master oscillator), counter-clockwise for semitones, clockwise for fine detuning.
SUB-OSC Level, Pan: Sub-oscillator level and panning.
MST-OSC Pan: Master oscillator panning.
VIBRATO Mode: Poly or Mono.
Page B1:
LFO1, all parameters; Env1 is hardwired to rate modulation.
Page B2:
LFO2, all parameters; Env2 is hardwired to rate modulation. The "KBG" button toggles keyboard retriggering.
Page C1-C3:
All parameters for the two modulation envelopes, and the amplitude envelope.
Page D1:
W-TABLE Offset: Base position within the wavetable, onto which any modulations (see below) are added.
W-TABLE Clip: Optional clipping of the wavetable modulation range (eg. when a wavetable contains less than the 8 available stages and you don't want to sweep into silence). It's also important to know that the wavetable "wraps around" at the end, meaning that the last waveform crossfades with the first one. This can be a cool feature as it allows you to smoothly move through the wavetable in one direction (using a sawtooth LFO at full modulation range), but can also be undesirable in other situations. The default clip setting of 12.5 prevents this wrap-around.
W-TABLE XfadeM: This parameter is actually only meaningful at zero or full amount, but there wasn't any DSP left to add an on/off switch.Laughing At full level the individual waveform stages smoothly crossfade into each other, at zero they jump discretely. I placed it on the panel because the zero setting is handy when designing wavetables, as it allows you to audition each stage individually.
W-Table LoadLvl: I briefly have to delve into the low-level stuff here. There is an independent offline waveform-rendering circuit which converts the additive frequency-domain representation of the wavetable stages into time-domain waveforms, and stores these in clocked-delay modules acting as RAM-arrays. If you use many partials at full level, the resulting waveform can clip. This "load level" attenuates the rendering process. If you experience crackles in your sound, you are probably overloading things -just back it down until the crackles vanish. Also, you'll notice a considerable time lag when tweaking this parameter (or editing the additive waveforms). This is due to the fact that the offline rendering circuit (running at control-rate to save DSP) renders each individual waveform one after another, partial by partial. The rendering cycle requires about 2.8 seconds to complete. It therefore obviously also affects changing patch variations, which thus require the same amount of time in order to sound as intended.
W-TABLE Env1, Env2, Lfo1, Lfo2: Wavetable position modulation by the 4 modulation sources.
Page D2:
X-SHAPE Offset: Base X-modulation amount, onto which any modulations (see below) are added.
X-SHAPE Source: Selects one of the 7 complex waveshaping modes described above. "Bypass" does exactly what it says. Laughing
MOD-OSC Ratio: Tunes the "hidden" modulation oscillator (described in the features paragraph above) in integer multiples of the base frequency. Negative values have no effect.
VOICE OutLevl: Output level of an individual voice. Since the different waveshaping processes can produce considerable differences in amplitude, it made sense to place this control here.
X-SHAPE Env1, Env2, Lfo1, Lfo2: Waveshaping amount modulation by the 4 modulation sources.
Page D3:
B-LIMIT BrkPnt, R.Gain, On/off: Control of the bandlimiting (anti-aliasing) process. "BrkPnt" defines the pitch (not necessarily the key) above which bandlimiting becomes active. "R.Gain" defines the bandlimiting slope as you go further up in pitch. "On/Off" takes it out of the signal path. The default settings in the init patch (variation 8 ) work well under most conditions. But you can tweak this in order to preserve as much top-end as possible, or prevent "birdies" (aliases) if they occur nevertheless. Programming tip: Zero any semitone transposition of the master oscillator, play the keyboard upwards until you hear the first "birdies", dial in between a fifth and an octave lower into the "BrkPnt" and adjust the slope ("R.Gain") until they disappear. (BTW, the "dB" display is nonsensical here, it's just the way the LevelScaler module displays its slope.)
Page E1:
Buss pad switches... and a shameless plug. Laughing
Page E2:
Main ping-pong delay parameters
Page E3:
Additional ping-pong delay parameters
The control-sequencers containing the partial levels of the 8 wavetable stages obviously don't fit on the panel. They are however strategically placed in the first two columns of the FX section. By entering "patch" mode and scrolling down into the FX section, the wavetables can thus be directly edited from the panel. I was actually surprised how well this works, it's actually quite user-friendly. (Tip: assign the mod-wheel to wavetable position when you edit the waveforms, so you can conveniently move back and forth while tweaking.) The 8 additive wavetable stages are labeled A to H, each comprised of two control-sequencers (further labeled by 1-16 or 7-32 for the partials).
All variations are populated with quick'n'dirty stuff, as I've barely scratched the surface of what this patch can do. The first 7 variations each demonstrate one of the waveshaping modes. Variation 8 is a default init setting.
I made a demo mp3 which demonstrates the 7 variations in sequence:
1- "Windowed Formant" mode with vocal-like formants; Modwheel morphs things around.
2- "Symmetry" mode with arbitrary individual partials; an arpeggiator-type sound. Modwheel morphs it into clangorous zone.
3- "Waveshape" mode; an ethereal semi-inharmonic atmosphere; Modwheel morphs it into a weird synth sound.
4- "Phase-Modulation" mode; an aggressive lead-type sound; Modwheel morphs it into a glassy warm pad.
5- "Windowed Sync"; uses the same wavetable as variation 1; Modwheel morphs it into a wide ethereal pad.
6- "Ring Modulation" mode; a wavetable comprised of rising partials in prime ratios, amplitude-/ringmodulated with partial No.32. Modwheel takes the modulator out.
7- "Lfo1WMD" mode; a spooky pad morphing via modwheel into... weird stuff.
Final note: This algorithm totally maxes out the G2, with each voice and the control-section in the FX area using close to 100% memory and cycles -resulting in 7 voices for expanded G2s. All interslot busses are used too. So, although this technically is a patch, I present it as a performance, since it is best used standalone.
Did I forget anything? Hope not.
Enjoy!
cheers,
-t