Neuer Synthese-Algorithmus für den NM G2

natürlich, ist ja interessant.

aber da hier keine Rechte verletzt werden kannst du das einfach kopieren hier her und das Patch unten anhängen.

Das würde so aussehen (wenn du dort edit klickst kannst du das sogar mit den Hervorhebungen hier exakt in der gleichen Form reposten):

Tim schrieb:
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).


*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.)

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.



Hier wäre dann Platz für die Anhänge, es gibt pro Thread 4 hier im Forum. Würde mich freuen. Geht aber auch so.
Hoffe das ist in deinem Sinne.
Mal ne Frage von einem G2 Laien: bedeutet "Algorithm" hier tatsächlich, dass der Kollege ein neues Modul gecoded hat?
Andernfalls wäre das doch ein Patch, nach Claviadiktion. Or? :dunno:


So, although this technically is a patch, I present it as a performance, since it is best used standalone.

Wer lesen kann... :selfhammer:

Wo finde ich eigentlich eine komplette Liste aller Module des G2 (außer im Manual)?
Tim Kleinert
XCenter schrieb:
Mal ne Frage von einem G2 Laien: bedeutet "Algorithm" hier tatsächlich, dass der Kollege ein neues Modul gecoded hat?
Leider nein. Es wäre toll wenn man auch selber Module coden und einbinden könnte. Dann könnte man nämlich ein paar von den existierenden mit verbesserten ersetzen. :)

Ich habe den Begriff "Algorithmus" ganz bewusst verwendet, denn es handelt sich bei diesem Patch nicht um einen "konventionellen" Signalfluss, die gebotenen Funktionalitäten wären so garnicht möglich. Ich "missbrauche" geeignete G2-Module als eine Art Low-Level-Programmiersprache, mit Schleifen, Entscheidungsbäumen etc.. Das funktioniert nur, da der G2 Patch-Compiler ein Patch nach festen Reihenfolgen-Regeln abarbeitet (im Ggs. zum G1), womit Prozess- und Entscheidungsketten sample-genau vorhersagbar werden. Das Patch kann darum auch wie ein Computerprogramm abstürzen wenn man an empfindlichen Stellen rumdreht. :lol: (Dann muss man's neu laden.)
:supi: da werde ich dieses Wochenende wohl mal wieder länger vor dem G2 sitzen :nihao:
Vielen Dank :adore:
Tim Kleinert schrieb:
Ich "missbrauche" geeignete G2-Module als eine Art Low-Level-Programmiersprache, mit Schleifen, Entscheidungsbäumen etc..

Danke für die Antwort.
Selber ausbaldowert oder ist das irgendwo dokumentiert?
Tim Kleinert
XCenter schrieb:
Selber ausbaldowert oder ist das irgendwo dokumentiert?
Selber "ausbaldowert" :lol:. Habe damals vor ca. 25 Jahren mit dem SID-Chip auf dem Commodore C64 viel Musik gemacht, und musste dafür zwangsläufig in Assembler meinen eigenen Tracker coden. Das war alles sehr low-level -die ganze Steuerung, LFOs, Wavesequencing etc. musste man alles selber programmieren. Habe vor ein paar Jahren (anfänglich per Zufall) Wege entdeckt, diese Sachen in die Welt der G2-Module zu übersetzen. Das ist nirgends dokumentiert. Habe vor Äonen mal angefangen, ein ausführliches Tutorial-PDF dazu zu schreiben -aber das ist halt irre viel (Fron-)Arbeit.
Tim Kleinert
Sehr gern geschehen, und danke für die netten Feedbacks.

Ist so quasi mein Abschiedsgeschenk an die G2-Community, da ich mich nun endgültig von dieser Plattform trenne. Das Ding ist mit Abstand das ambitiöseste was ich je zusammengepfriemelt habe -100% clean dank DIY-Anti-Aliasing, Umgehung des ätzenden Delay-Modul-Bugs (Dropouts, Knackser), 24bit-Präzision beim Adressieren von Samples im Delayspeicher (genutzt für Multiplexer-Buffering und bandlimitiertes Resampling), upsampling polyphase FIR interpolation... war alles in allem ein ganzer Monat Frickelei, und dann ging mir natürlich auch ständig die DSP-Puste aus, d.h. an jeder Ecke optimieren was das Zeug hält, um jedes einzelne Modul feilschen... :mauer: Staune selber dass es reinpasst und funktioniert.

Tim Kleinert
Moogulator schrieb:
Magst du das Dingens und nen Screenshot hier noch offiziell einhängen?
dann könnten wir das hier ankleben: viewtopic.php?f=36&t=101495

Et voilà. Zwei Screenshots (VA und FX Area, habe ein paar Funktionsgruppen verschoben im Gegensatz zum publizierten Patch, damit es überhaupt auf einen Screen passt.) Sowie Patch.


  • G2_WTabXShapeSyn_TK voice area.JPG
    G2_WTabXShapeSyn_TK voice area.JPG
    500,8 KB · Aufrufe: 43
  • G2_WTabXShapeSyn_TK FX area.JPG
    G2_WTabXShapeSyn_TK FX area.JPG
    520,7 KB · Aufrufe: 43
  • WTabXShapeSyn_TK.pch2
    16,6 KB · Aufrufe: 3