Für DIY low-level Filterdesign ist die G2-Plattform eher ungeeignet, da die "normale" Herangehensweise via trivialer [z-1]-Rückkopplungsschlaufen (aka "forward Euler") fast zwingend Oversampling erfordert, weil diese ab ca. Fs/8 (12kHz beim G2) Probleme bekommen. Einerseits geht das saubere Tracking flöten (das beginnt schon vorher) und muss via Cutoff-Prewarping ausgeglichen werden, andererseits wird der Resonanz-Peak zunehmend instabil. Trivial aufgebaute State-Variable-Filter (aka Chamberlin-topology) verhalten sich vergleichsweise noch sehr gutmütig (bei der 96kHz Systemfrequenz des G2 kann man die getrost "einfach so" laufen lassen, hab' ich auch schon gepatcht und publiziert). Trivial aufgebaute 4-Pol-Kaskadenfilter beginnen hingegen bei hohen Cutoff- und Resonanzwerten bald mal zu zwitschern oder sogar zu clampen. Das kann man durch Bandlimitierung des Rückkopplungsweges zwar abfangen, aber erhält dafür neue Probleme (noch mehr frequency-warping, und die Resonanz fadet bei ganz hohen Cutoff-Sweeps einfach weg).
Implizite Verfahren (aka "backward Euler"), die seit geraumer Zeit unter dem Marketing-Buzzword "ZDF" ("zero delay feedback") lauthals wohlfeilgeboten werden, haben die oben genannte Probleme nicht, scheitern beim G2 aber in erster Linie daran, dass dieser kein dediziertes Modul für Division bietet. Division ist auf dem G2 durchaus patchbar, aber mit vertretbarer DSP-Auslastung nur als Goldschmidt-Algorithmus, der konstruktionsbedingt nicht pro Sample ein finales Ergebnis ausspucken kann. (Man könnte durchaus per 24x kaskadierte "binary-restoring"-Stufen die 24bit des G2 in Echtzeit durchdividieren, aber das würde wegen der ärgerlichen Zeropage-Bottleneck allein schon über die Hälfte eines DSP plattmachen...)
Alldiese Bedenken übrigens für "saubere" Filter ohne jegliche Nonlinearitäten, welche die in diesem Fall angepeilten analogen Filter haben. Bei expliziten Verfahren würde sowas noch ganz viel mehr Oversampling erfordern, bei impliziten Verfahren bewegt man sich dann im Gefilde der besten aktuellen analog modelling Synthesizer à la U-He Diva & Co., wo aufwändige konvergierende Schätzungsalgorithmen eingesetzt werden müssen. Für den G2 ist sowas unerreichbar.
Es bleiben beim G2 so nur 2 Optionen:
1) ...ist das, was ich "Blackbox-Modelling" nenne. D.h. man kümmert sich nicht darum, wie etwas intern arbeitet, sondern nur darum, was hinten rauskommt. Pre- und Post-Filter-Saturation, einwenig Fundamental-Boost via trackendem Peaking-EQ, ggf. einwenig globaler Smiley-Face-EQ, ggf. einwenig Passband-Ripple-Emulation via Cutoff-gekoppeltem Phasing-Filter, etc. ... da geht 'ne Menge. (Auch einwenig Kenntnis über die analogen Vorbilder ist sehr nützlich. Z.B. besteht das legendäre Roland IR3109 24dB-Lowpass-Filter aus 2 kaskadierten SVFs , und hat darum eigentlich streuungs-/drift-bedingt
zwei Resonanzpeaks. SVFs klingen bei schnell zuschnappeden Hüllkurven ganz anders als Kaskaden-Filter (viel "holziger"), und wer sowas beim G2 sucht, soll einfach mal zwei "MultiFilter" (welche SVFs sind) hintereinanderschalten (stets LP-Output, logischerweise), die Cutoffs evtl. nur ein paar Halbtöne auseinanderstimmen, die Resonanzen notgedrungenermassen auf'ne Morph-Gruppe legen, und bekommt so einen ganz anderen ("Roland-igeren") 24dB Lowpassfilter-Sound.)
2) Hier muss ich dem Threadstarter widersprechen, denn die verschiedenen G2-Filtermodule teilen sich beileibe
nicht denselben Quellcode. Wie oben angetönt ist das G2 "MultiFilter" ein digitaler SVF in bekannter Chamberlin-topology (mein DIY Chamberlin-Design klingt genau gleich). Wie das G2-"NordFilter" aufgebaut ist müsste ich noch analysieren, hingegen ist das G2-"ClassicFilter" eine typische 4-Pol-Kaskade , und zwar
mit eingebauten Sättigungsstufen (und entsprechend benötigtem Oversampling etc.). Das einzige "Problem" ist (und was den damaligen Beta-Testern offensichtlich nicht aufgefallen war), dass diese Charakter-erzeugenden eingebauten Nonlinearitäten bei den im G2 normalerweise anfallenden Signalpegeln noch nicht wirklich zu arbeiten beginnen. Anders formuliert: Das G2-ClassicFilter will "heiss" angefahren werden. Ein "LevelAmp"-Modul mit zwischen +6dB bis +12dB vor dem Filter reicht meistens schon. Im Anhang ein kleines Demo-Patch.
Sorry für das lange Posting.
cheers,
-t