Replicant A, Teil 4
Kapitel 11: LFO
Für die verschiedenen Wellenformen verwenden wir mehrere Module, zum einen den Standard-LFO, der die modulierbaren Rechteck und Dreieck/Sägezahn-Wellen liefert, noch einen von der Sorte mit unmoduliertem Sinus (den werden wir anders verbiegen), einen Multi-Wave LFO aus der Core-Abteilung, der ein prima Zufallssignal ausgibt, und ein Slow Random für ein zufällig variierendes Signal, mit dem man z.B. analoge Drift simulieren kann.
Frequenz, Amplitude und Pulsweite bzw. Wellenverformung machen wir modulierbar. Für die Amplitude verwenden wir wie bei den beiden anderen Parametern auch einen additiven Modmischer, mit dem sich gezielter und einfacher arbeiten lässt als mit einem Multiplizierer, und die Amplitude muss ja hier unmoduliert nicht zwangsläufig auf Null sinken. Wenn man das multiplikativ haben möchte, kann man immer noch zu einem der beiden Mod Mixer greifen.
Die Phasenlage ist synchronisierbar zu Key oder dem anderen LFO und lässt sich randomisieren. Anders als bei den VCOs ist Random Phase in allen Sync-Modi verfügbar. Wenn Sync ausgeschaltet ist, hängt die Phasenlage der LFOs der verschiedenen Stimmen wieder von polyphonen Frequenz-Modulationen ab. Für ein Resync ist es nur erforderlich, den LFO einmal aus- und wieder anzuschalten.
Auf das Panel kommen zwei blinkende Lämpchen, die Halbwelle, Frequenz und Amplitude anzeigen, und ein Mini-Oszillokop für die erzeugte Wellenform, das mit einem unmodulierten Sägezahn aus einem weiteren LFO-Modul synchronisiert wird.
Den Sinus verzerren wir mit dieser Schaltung:
Erst werden aus der bipolaren Amplitude unipolare gemacht (normal und invertiert), diese dann quadriert und die invertierte Welle wird wieder phasengedreht. Wir erhalten so nach oben und unten verzerrte Sinuswellen, zwischen denen wir mit der unverzerrten in der Mitte überblenden. Das kann man z.B. für „overdriven“ wirkende Modulationen einsetzen, oder überall dort, wo eine Auslenkung der Amplitude betont wirken soll.
Das Random-Signal verarzten wir ähnlich wie das Portamento. In positiver Richtung ist der Slew Limiter aktiv, in negativer das Filter. Der Unterschied ist subtil, aber hörbar, wenn man die Frequenz des LFOs variiert. Der Selector ist im Non-Curve Modus und arbeitet nur als Wahlschalter.
Die Step Filter an diversen Stellen und am Ausgang des LFOs dienen der Reduzierung der Prozessorlast. Je mehr Module das LFO-Signal durchläuft, desto mehr Last wird erzeugt, und die kann durchaus beträchtlich werden. Wenn man ein Step Filter einfügt, rastert man natürlich das Signal, verringert sie aber auf erträgliche Größenordnung. Das hilft oft schon, wenn man gar keinen Tolerance-Wert anschließt, offensichtlich wird auch so ein Truncate o.ä. durchgeführt.
Beim Variation-Signal verwenden wir eine Portamentoschaltung mit zwei Smoothern, die hier ähnlich wie ein Tiefpassfilter wirken. Positiv mit einer kurzen Transition von 50 msec, negativ 1000 msec. Der Einstellbereich für die Variation reicht dann von „Temperaturdrift“ bis „Wackelkontakt“.
Am Ausgang schließlich werden die drei modulierbaren Amplituden berechnet, normal, invertiert und bipolar.
Kapitel 12: ADSR
Hüllkurven können beliebig komplex sein, aber in der Praxis kommt man meistens mit einfachen ADSR-Envelopes aus. Sie sollten jedoch modulierbare Zeiten und Pegel haben sowie verschiedene Formen haben, exponentiell für Lautstärke- und Filtermodulation, linear für andere Parameter wie Pulsweite.
Wir verwenden das exponentielle ADSR- und das lineare 4-Ramp-Modul, das wir so beschalten, dass es sich wie ein ADSR verhält. Dafür muss man L1 und T3 auf 1 setzen und den Sustain-Regler in L2 und LS routen.
Ich habe zwei unterschiedliche Envelopes entworfen:
Bei Envelope 1 gibt es nur einen gemeinsamen, aber einzeln zuschaltbaren Modulationsregler (hier sind die x-Schalter nicht gekoppelt) mit einer unipolaren multiplikativen Intensitätsregelung für ADSR und einer additiven für Level. Bei abgeschalteten Mischern werden die Intensitätsregler als Parameterregler geschaltet, sind also für Level bzw ADSR-Werte direkt zuständig. Das ist eine etwas unübliche, aber recht effektive Verschaltung.
Bei Envelope 3 und 4 haben ADSR separate additive Modulationsmischer wie gewohnt, ebenso Level.
Die Modulationsintensitäten sind als lineare % skaliert. Aufgrund der exponentiellen Natur der ADR-Eingänge sind die Zeiten von Reglerstellung und Modulationen abhängig, das ließe sich nur sehr aufwändig kalkulieren und auf die einzelnen Intensitätsregler anwenden.
Envelope 3 hat noch einen ADR²-Regler, mit dem sich die Charakteristik der Rampen verändern lässt. Mittelstellung ist neutral, nach positiv und negativ wird mit diesen beiden Kennlinien verzerrt:
Damit kann man bei der exponentiellen Envelope die Exponentialisierung optimieren und die lineare exponentialisieren. Berechnet wird das durch Quadrierung, der Output (bzw. 1-Output) wird einfach mit sich selbst multipliziert. Damit das Sustain davon unbeeinflusst bleibt und ausschließlich die Rampen verformt werden, braucht es dazu ein weiteres Envelope-Modul, bei dem der Sustain-Eingang gegenläufig gefüttert wird, und zwar mit folgenden (den jeweils gegenüberliegenden, rot eingezeichneten) Kurven:
Zwischen normaler und quadrierter Hüllkurve wird überblendet und per Compare/Equal und IC Send auf einen Schalter die quadrierte nur zugeschaltet, wenn sie benötigt wird, schließlich brauchen die Envelopes einiges an Rechenpower.
Beide Hüllkurven haben ihre Vorzüge, das ist eine Frage des Zielparameters. Bei Bedarf kann man eine durch die andere Variante ersetzen oder, wenn man es noch komplexer haben möchte, z.B. durch die Multi-BP Env bipolar aus der Bibliothek. Die Sends sollte man dann aber in den Macros stehen lassen und wieder anschließen, denn sonst verschwinden sie aus den Receives und man darf diese dann wieder bei allen Modulationsmischern neu einrichten.
Die LED-Anzeigen sind anschaulich als Fader-Hintergrund eingerichtet. Dazu kommt noch eine LED, die den Ausgangspegel anzeigt. Die Grafiken sind nützlich und dekorativ, aber da wir unsere Anzeigen korrekt und die Envelope der aktuellsten Stimme angezeigt haben möchten, verwenden wir zwei auf mono gesetzte Envelopes via from Voice nur als Display. Auf dem Panel legen wir sie einfach übereinander, die aktivierte ist sichtbar und verdeckt die jeweils andere.
Parameteränderungen bei laufender Envelope übernimmt leider nur das exponentielle ADSR-Modul. Das auf linear zu entzerren scheitert schon daran, dass nur Decay- und Release-Phasen exponentiell sind, Attack ist linear. Die angegebenen Zeiten für Decay und Release stimmen dort übrigens nicht. Wenn man die Regler- und Modulationswerte von 100 auf 84 herunterskaliert, ist es annähernd korrekt.
Die Zeiten (inklusive eventueller Modulationen) lassen wir uns auch als Zeiten anzeigen statt als unanschauliche Linearwerte für die exponentiellen Eingänge:
Die ADR-Werte werden durch einen Exponentiator (A) auf msec umgesetzt und zeigen nun wenigstens dort in msec an, was eine Modulation bewirkt.
Die Audio-Ausgänge der Envelope-Module konvertieren wir nicht mit einfachen A/E zu Events, sondern mit einem A toE Perm.
Man kann so die Control Rate auf niedrige Werte setzen, ohne das Attack der Hüllkurven zu verschlechtern, der Wert von 2000 Hz ist aber ein Kompromiss. Man kann natürlich das Ausgangssignal als Audiosignal weiterverwerten, aber nicht ohne Nebenwirkung über die Send/Receive-Matrix routen, und alle folgenden Module bräuchten im Audiomodus ordentlich Prozessorkapazität, die wir uns lieber für die eigentlichen Audioberechnungen aufsparen. Mit 2000 Hz gesampelt sind die Hüllkurven ausreichend schnell, und mit höheren Rates oder als Audio erzielt man kaum noch eine Verbesserung, denn die minimalen ADR-Zeiten sind sowieso 1 msec lang.
Um die Event-Datenflut aus den Hüllkurven und damit den CPU-Bedarf weiter zu reduzieren, klemmen wir wieder ein Step Filter dahinter. Ohne das können die Envelopes gut und gerne das 10fache an Last erzeugen! Diese Maßnahme bewirkt allerdings, dass „Restwerte“ hängenbleiben können, die wir aber mit einem Quantize beseitigen.
Das Quantize allein würde den Envelope-Output zwar genauso rastern, aber nicht die Datenrate verringern. Auch gleichbleibende Werte werden ohne ein Step Filter weitergegeben und jedesmal die ganze Modulkette entlang neu berechnet, mit entsprechendem Rechenaufwand.
„Audiokarte aus dem Vst-Audiosystem herausnehmen“ ist jetzt ein bisserl kryptisch. Das einzige, was bei mir in Cubase 5.5 funktioniert hat, war den ASIO-Treiber vorübergehend rauszuwerfen:
Geräte -> Geräte konfigurieren -> Vst Audiosystem
… und dort den ASIO-Treiber durch „Kein Treiber“ ersetzen.
Dann geht Reaktor auf 0%, und man kann beliebig oversampeln beim Rendern, ohne dass er schon im Leerlauf abregelt. Ist allerdings umständlich und langsam zum Hin- und Herschalten.
Einfacher gehts in Samplitude 11 (und wahrscheinlich auch anderen Versionen, auch in der „Heimversion“ Music Studio 2008): Einfach das Monitoring im Track ausschalten (Lautsprechersymbol anklicken), und schon ist der Reaktor heruntergefahren. Funktioniert aber nur, wenn die Engine nicht im Hybrid-Modus nicht läuft, also:
Optionen -> System/Optionen -> Audio Setup… und dort unter „Monitoring Einstellungen“ den Modus-Schieberegler auf „Track FX Monitoring“ (oder weniger) einstellen.
Dafür läßt mich Cubase aber auch bis 384 kHz rendern, während in Sam11 schon bei popeligen 192 kHz Schluss ist….
Geiles Teil übrigens, der Replikant. Mit 192/384 kHz schickt der Reaktor ja immer noch viele neue und hochgejubelte Plug-Ins in die Wüste.