EFX – Glide (1)
Mit Filtern kann man nicht nur Audio-Signale bearbeiten. Auch Steuerungsdaten sind willkommen. So lassen sich z. B. Höhenunterschiede zwischen zwei Tönen für einen Glide-/Portamento-Effekt verlangsamen.
[01]
LESSON
Moog Little Phatty and Jordan Rudess – Glide-Effect
Aus Gründen der DSGVO-Kompatibilität wird dieses Video auf der Website des Anbieter geöffnet. Damit ist garantiert, dass eurer Daten nicht an Dritte weiter gegeben werden.
Um was wird es gehen?
Der Dream Theater Keyboarder Jordan Charles Rudess erklärt an einem „Moog Little Phatty“ den Glide-Effekt, den wir hier nachbauen wollen.Der phantastische Klang in dieser Demo basiert aber nicht nur auf den Glide-Effekt. Der Filter, die Modulation und nicht zuletzt der Moog-Synthesizer tragen das Ihre dazu bei. Das werden wir aber in diesem Tutorial ignorieren und uns nur um den Glide-Part kümmern.
Eigentlich brauchen wir dazu nur einen simplen Lowpass-Filter, den wir mit dem NotePitch-Eingang des Reaktors füttern. Der Lowpass-Filter ist technisch ein sogenanntes RC-Glied, also eine Kombination aus Widerstand und Kondensator. Mit dem Widerstand (hier der Cutoff-Regler) legen wir fest, wie schnell/langsam der Kondensator lädt – und zack – fertig ist der Glide-Effekt. Ein paar kleine Extras kommen aber schon noch dazu 😉
[02]
Eine Spielwiese muss her!
Um hören zu können, was wir hier anstellen, muss zuerst ein ganz einfacher Oszillator her. Ich habe mich für das „ADSR SAW“-Macro aus meiner Library entschieden. In diesem Macro befindet sich ein Sägezahn-Oszillator mit einer ADSR-Hüllkurve.
Neben dem Oszillator-Macro parken wir eines für den Glide-Effekt und legen Dort zwei Ausgänge (P = Pitch, G = Gate) an. Das Oszillator-Macro bekommt die entsprechenden Eingänge, die dann im Macro mit dem Sägezahn-Oszillator (P) und der Hüllkurve (G) verbunden werden.
Jetzt kann es losgehen!
Abb. 1: Die Spielwiese
[03]
Glide – der Erste
Was ist hier passiert?
Wie Eingangs beschrieben, ist ein Lowpass-Filter aufgrund seine Bauart dazu in der Lage, Signale zu verzögern. Für die Umsetzung sind folgende 4 Module (farblich hervorgehoben) nützlich:
- Der Lowpass-Filter ist das unverzichtbare Modul für den Glide-Effekt. Am In-Eingang liegt das NotePitch-Signal an.
- der Drehregler mit der Bezeichnung „TIME“ liegt am P-Eingang des Filters und steuert die Cutoff-Frequenz, was in unserem Fall gleichbedeutend mit der Dauer des Glide-Effekts ist. Der Drehregler verfügt über einen Wertebereich von -80 bis 80 und einen Default-Wert von -10. Die Step Size beträgt 0. Selbstredend darf hier experimentiert werden.
- Das A/E (oder A to E)-Modul zwischen Filter und Oszillator ist zwingend notwendig. Ohne dieses Modul bekommen wir den Filter nicht an den Oszillator angeschlossen. Und zwar einfach aus dem Grund, dass der Filter ein Audio-Signal liefert, der P-Eingang des Oszillators aber ein Event-Eingang ist. Die notwendige Übersetzung leistet das A/E-Modul.
- Nicht notwendig, aber hilfreich beim Ausdünnen des Datenstroms ist der Step Filter (StpFlt). Er lässt nur Events durch, die kleiner oder größer als das vorher gehende Event sind. Unnötige Doppelgänger werden so eliminiert.
Wenn wir am Ende nun sowohl die „originale“ NotePitch, als auch den Ausgang der Glide-Schaltung mit einem Selector wählbar machen, haben wir gleich noch einen Ein-/Aus-Schalter realisiert.
Dass das Gate-Signal 1:1 durchgeschleift wird, sieht im ersten Moment komisch aus, hat aber gute Gründe. Es wird später eine wichtige Rolle innerhalb der Schaltung übernehmen. Wem nicht nach weiteren Schritten ist, kann auch hier schon aussteigen. Es lohnt sich aber, dran zu bleiben.
Abb. 2: Glide, Grundschaltung.
Glide Off über zwei Oktaven
Glide Time -24, über Glide Off über zwei Oktaven
Glide Time -42 über Glide Off über zwei Oktaven
[04]
Glide – Das volle Programm
Was ist hier passiert? Es sind 4 weitere Filter hinzugekommen, die dem Glide-Macro mehrer „Betriesbarten“ ermöglichen. Von oben nach unten:
- Der 2-Pole Filter erzeugt einen weicheren Ein- und Ausstieg des Effekts.
- Der 4-Pole Filter, der den Ein- und Ausstieg noch weiter abmildert.
- 2- und 4-Pole Filter verfügen über einen Resonanz-Eingang, den man ebenfalls kreativ nutzen kann. Das Zumischen der Resonanz sorgt dafür, dass das Signal am Ende des Glide-Vorgangs schwankt, als würde ein in der Amplitude ausblendender LFO auf die Tonhöhe einwirken. Den zugehörigen Regler habe ich mit „JIT“ für „jitter“ beschriftet.
- Unter dem 4-Pole Filter folgt ein 1-Pole Allpass Filter, der den Wechsel „ausserhalb“ der eigentlichen Tonhöhe beginnen oder enden lässt.
- Und schlußendlich ein Slew.Limiter, der eine unabhängige Einstellung der Glide-Time für ansteigende oder abfallende Tonhöhen möglich macht.
Für die Wahl der Betriebsarten habe ich mich für einen Drehregler mit dem Wertebereich 0 – 4 und einen angeschlossenen Multitext mit den Einträgen HARD, NORM, SOFT, JUMP und FREE entschieden.
WICHTIG: Für alle bisher verwendeten Selectoren gilt: Der Curve-Typ sollte unbedingt auf „None“ stehen, damit der Selector auch wirklich als Schalter arbeitet. in den Betriebsarten „Linear“ und „Sine“ werden die übergebenen Positionswerte überblendet, was zu unklaren informationen und zu einem Fehlverhalten des Effekts führt.
Abb. 3: Alle Betriebsarten
[05]
Gate betritt die Bühne
Endlich lösen wir das Rätsel des bisher unbeteiligten Gate-Ein-/Ausgangs. In der ersten Version dieses Tutorials (Damals noch im Bereich „Library“), sprachen wir über das Problem, dass der Glide-Effekt bei polyphoner Nutzung versagt.
Wenn ihr Reaktor polyphon benutzt, wird die einzelnen Stimme internen „Kanäl“ zugeordnet, auf deren Management man keinen Einfluss hat. Es kann also nicht garantiert werden, dass z. B. bei 4 Stimmen und dem Wechsel von einem Akkord zum nächsten, auch wirklich die vohergehende erste Stimme zur nachfolgenden ersten Stimme, die zweite vohergehende Stimme zur nachfolgenden zweiten Stimme, usw. gleitet. Ebenso groß ist die Möglichkeit, dass die vorhergehende zweite Stimme zur nachfolgenden vierten Stimme gleitet, was zu einem völlig anderen Ergebnis führt. Ein dafür passendes Stimmen-Management ist nicht ohne erheblichen Aufwand und viel Erfahrung in der Core-Ebene von Reaktor zu realisieren. Das Thema wird schon seit längerem in den einschlägigen Foren diskutiert
Damals behalfen wir uns damit, in der Einstellung des Ensembles die Voice Allocation Methode auf „Nearest“ zu setzen, damit die polyphonen Stimmen nicht so durcheinander liefen. Ein Kompromiss, aber keine wirkliche Lösung.
In diesem Tutorial werde ich eine andere Lösung vorschlagen, die praxisnäher ist und ein kleines bisschen Mathematik verlangt. Der Pragamtische Teil des Ansatzes liegt in der Entscheidung, den Glide-Effekt generell monophon zu betreiben. Der Mathematische Teil muss dafür sorgen, dass auch wirklich nur eine Stimme zum Zug kommt.
Beginnen wir mit der Beschränkung auf den monophonen Betrieb. Das ist einfacher als vermutet:
Wir verwenden hierzu einfach zwei Selectoren (Curve-Typ: None); einen für das Gate-, den anderen für das NotePitch-Signal. Jeweils ein Gate/NotePitch ist polyphon (Selector-Eingang 0), das andere monophon (Selector-Eingang 1).Die Selectoren werden über den Ein-/Aus-Schalter bedient. Ist der Glide-Effekt aus, gelangt das polyphone Signal an den Ausgang. Ist der Glide-Effekt an, werden nur die monophonen Signale durchgelassen. So weit, so einfach. Aber …
Abb. 4: monophon / polyphon
… der monophone Modus unterscheidet sich deutlich vom polyphonen. Und zwar nicht in der Anzahl der Stimmen, sondern in Klang und Lautstärke. Das liegt daran, dass die vorhandenen Stimmen nun auf einem Ton „aufaddiert“ werden. So hört es sich jedenfalls an. Bei aktiviertem Debug-Mode könnt ihr die entsprechenden Werte am NotePitch-Kabel auslesen. Über dieses Probelm (und dessen Behebung) schrieb ich hier bereits. Diese Lösung werden wir an dieser Stelle einsetzen:
Letztendlich müssen wir nur dafür sorgen, dass von den möglichen Gates und Notepitches nur eines durchkommt. Und da alle identisch sind, kann es uns auch egal sein, welches das ist. Hierzu verwenden wir ein Compare Modul. Das vergleicht die Eingangswerte A und B und erzeugt an den Ausgängen eine „1“, wenn das Ausgangskriterium wahr ist und eine „0“, wenn das Ausgangskriterium falsch ist.
Als Lieferant für den A-Eingang kommt ein Voice Info Modul zum Einsatz, dessen V-Ausgang für jede vorhandene Stimme eine eindeutige ID-Nummer ausgibt. Da uns alle Stimmen mit der ID 1 interessieren, legen wir am B-Eingang des Compare Moduls die Konstante „1“ an. Ist diese Bedingung erfüllt, liegt am <=-Ausgang des Compare-Moduls eine 1 an, für alle anderen IDs eine 0. Was jetzt folgt, ist simple Grundschulmathematik: Wenn wir die Ausgänge des Mono-NotePitch und des Mono-Gate mit dem Ausgang des Compare Moduls multiplizieren, ist das Problem gelöst. Im Fall einer ID 1, werden NotePitch und Gate mit 1 multipliziert und erreichen unverändert den Selector. In allen anderen Fällen werden die Ausgänge des Mono-NotePitch und des Mono-Gate mit 0 multipliziert und sind Geschichte.
Abb. 5: monophon / polyphon – jetzt aber wirklich
[06]
Was fürs Auge
Zwei kleine Gadgets könnten wir noch beisteuern. Zum einen ein Display, dass den Glide-Effekt visualisiert und zum anderen die Anzeige der aktuellen Glide-Tonhöhe.
Zuerst das Glide-Verlauf-Display Dafür braucht es nicht viel:
- Ein XY-Modul als zentrales Element für die Darstellung. Wichtig ist hier im Functions-Reiter der Side-Pane den Mx-Wert für Y auf 127 zu setzen (wir erinnern uns: 127 MIDI-Tonhöhen). Alternativ könnt ihr auch das Einganssignal durch 127 Teilen und den Max-Wert für Y bei 1 belassen.
- Einen Ramp-Oszillator als Taktgeber für die X-Achse des XY-Moduls. Alternativ zur Konstanten „0.5“, könnt ihr am F-Eingang auch einen Drehregler, mit dem ihr die Geschwindigkeit des Displays festlegen könnt. Am A-Eingang liegt die Konstante 1 an, die das Display aktiv sein lässt.
Für die Anzeige der Tonhöhe werden wir wieder ein wenig Mathematik benötigen.
Abb. 6: Display Glide-Verlauf
Diese kleine Schaltung funktioniert völlig unabhängig vom Rest des Effektes. Ihr könnt sie in dieser Form auch problemlos in anderen Projekten unterbringen. Was passiert hier nun genau?
Das Modulo Modul führt eine Division aus und gibt am oberen Ausgang das ganzzahlige Ergebnis und am unteren Ausgang den Rest aus. Perfekt für unser Vorhaben. Den oberen Eingang belegen wir mit einem monophonen NotePitch Modul, den unteren Eingang mit der Konstanten 12. Der obere Ausgang für nun alle 12 Halbtöne die korrekte Oktave ausgeben, während der untere Ausgang den Halbton innerhalb der Oktave liefert.
Wenn z. B. eine NotePitch von 60 (C3)* anliegt, ergibt das für den oberen Ausgang eine 5 und für den unteren Ausgang eine 0. Im Klartext: Wir befinden uns in der dritten Oktave und beim ersten Ton. Bei einem E3 (NotePitch 64) liefert der obere Ausgang noch immer eine 5 (dritte Oktave), der untere Ausgang aber eine 4. Der 4. Halbton oberhalb von C ist ein E. Passt.
Jetzt braucht es nur noch zwei Multitext Module mit passendem Inhalt. Den Multitext für die Oktaven füllen wir mit -2, -1, 0, 1, 2, 3, 4, 5, 6, 7 und 8. Das sollte reichen. Der Multitext für die Notennamen enthält: C, C#, D, D#, E, F, F#, G, G#, A, A# und B**
*Um Missverständnissen vorzubeugen: Das mittlere C wird klassischerweise mit C4 bezeichnet, von den meisten Musikprogrammen und elektronischen Instrumenten aber mit C3. Ich verwende hier letztere Bezeichnung.
** Bei den Tonhöhen beschränke ich mich auf das Kreuzvorzeichen, weil das optisch näher am Original liegt, als ein alternatives kleine „b“. Bezüglich des „H“ verwende ich das international gebräuchliche B. Mehr dazu findet ihr in meinem Harmonilehre-Workshop, den ihr als PDF laden könnt.
Abb. 6: Display Tonhöhe
Und so könnte das bis jetzt aussehen:
Abb. 76: GUI Serviervorschlag
[07]
Ausblick
Den Download gibt es am Ende des zweiten Teils. Ja, der Effekt ist jetzt schon nutzbar, aber aus verschiedenen Gründen bietet sich eine weitere Lektion an, die sich der usablilty widmet. Es gibt hier nämlich so viele Bedienelemente, die verwirren, wenn sie zwar sichtbar sind, aber gerade nicht gebraucht werden …
Kontakt
Bernd Scheurer
Mainstraße 2
64390 Erzhausen
Fon: 06150 865902
Mobil: 0151 50411034
unterricht@bernd-scheurer.de
Follow Me ...
Freie Plätze
- Erzhausen
- MO: 14:00 – 16:30 [anfragen]
- Langen
- DO: 13:30 - 14:00 [anfragen]
Infos
- Aktuelle Gebührenordnungen