Karplus, Strong und die Saite (2)

von | Jun 27, 2021 | ReaktorAdvanced

Das Konstrukt für die Saite steht. Nun wird es daran gehen, diese Saite noch ein wenig natürlicher (Filter) und „zufälliger“ (Modulation) zu gestalten. Um die Bedienung möglichst simpel zu halten, müssen wir etwas in die Trickkiste greifen.

[01]

Um was wird es gehen?

Wir haben – dank der Herren Karplus und Strong – aus einer Reihe von Rausch-Artefakten eine ganz passabel klingende Saite gebaut. Da aber immer die selben Parameter am Start sind, klingt diese noch ziemlich vorhersehbar und „technisch“. Das werden wir in diesem zweiten Teil ändern, in dem wir an bestimmten Stellen der Klangerzeugung für Abwechslung in Form von minimalen Ungenauigkeiten Sorgen (was einen Austausch der Hüllkurve voraussetzt) und das Signal am Ende durch eine raffinierte Filterbank laufen lassen. Die Bedienung dieser Stellschrauben soll möglichst einfach und übersichtlich ausfallen, was uns zu „kreativen“ Lösungen für die Schaltung motivieren wird.

Und ich werde mich erlauben, zwei der Regler umzubenennen, weil das der Realität näher kommt. Anstatt einfach alle bisherigen Grafiken zu tauschen, lasse ich euch so an der Tatsache teilhaben, dass es während dem entwickeln eines Tutorials auch mal zu neuen Ideen kommen kann, obwohl vorher schon alles fertig ausgearbeitet war:
Aus „DAMP“ (Pole-Filter hinter dem Rausch-Oszillator) wird „COLOR“ und aus „CRISP“ (Pole-Filter nach dem Delay) wird „DAMP“.

An den grün markierten Stellen soll das Signal vermittelst Modulatoren minimalen Schwankungen ausgesetzt werden. An der blau markierten Stelle wird eine Filterbank ergänzt, um die Klangfarbe regeln zu können.

Abb. 1: Übersicht Modifikationen.

[02]

Hüllkurve ersetzen

Wie euch in der Grafik unter Abschnitt [01] sicher nicht entgangen ist, hat sich die Hüllkurve verändert. Wenn wir an der Ein- und Ausschwingphase der Saite Hand anlegen wollen, muss auch eine solche vorhanden sein. Da wir nur Attack und Decay beeinflussen wollen, genügt eine einfache AD-Envelope. Unsere Einkaufsliste sieht nun wie folgt aus:

  • Kontextmenü > Build-In- Modules > LFO, Envelope > AD
  • Kontextmenü > Build-In- Modules > Panel > Knob (2)
    • Attack: Min: 0, Max: 80, Step Size: 0, Default: nach Belieben
    • Decay: Min: 0, Max: 80, Step Size: 0, Default: nach Belieben
  • Kontextmenü > Build-In- Modules > Math > Add (2)

Die Eingänge „Trig“ und „A“ der AD-Evelope werden wie gehabt vom Gate-Modul bedient. Die neu hinzugekommenen Eingänge A (Attack) und D (Decay) werden mit den Drehreglern verbunden – allerdings nicht direkt, da wir ja den Einfluss der Tonhöhe nicht vergessen dürfen:
Dazu verwenden wir die beiden Add-Module. Ich habe hier die Regler jeweils in den unteren Eingang und den Ausgang des Pitch-Macros in den oberen Eingang der Add-Module geführt. Die Ausgänge der Add-Module enden dann in den entsprechenden Eingängen der Hüllkurve. 

Abb. 2: Neue Hüllkurve: AD-Envelope

Abb. 2: Rausch-Oszillator und Oszilloskop

Abb. 3: GUI – Serviervorschlag

Die jetzt vorhandenen Attack- und Decay-Phasen erlauben ein „Verlängern“ der Schwingung, bis hin zum Eindruck einer mit einem Bogen gestrichenen Saite.

Abb. 3: GUI – Serviervorschlag

Die jetzt vorhandenen Attack- und Decay-Phasen erlauben ein „Verlängern“ der Schwingung, bis hin zum Eindruck einer mit einem Bogen gestrichenen Saite.

[03]

Jetzt kommt Bewegung in die Saite

Wie oben bereits erwähnt, werden wir die relevanten Angriffspunkte der Saite einem ständig und zufällig wechselnden Einfluss unterwerfen. Die Schaltung hierzu wird ist sehr einfach und wird nur durch zwei Drehregler und eine Funktionsanzeige auffallen. Mehr zu Modulatoren folgt später im Bereich Library. Für jeden der Modulatoren benötigen wir jeweils 6 Bauteile:

  • Kontextmenü > Build-In- Modules > Panel > Knob
    • FREQ / AMP: Die Werte der Regler hängen von dem Angriffspunkt des Modulators ab.
  • Kontextmenü > Build-In- Modules > LFO, Envelope > Slow Random
  • Kontextmenü > Build-In- Modules > Math > Add
  • Kontextmenü > Build-In- Modules > Auxiliary > Audio Voice Combiner
  • Kontextmenü > Build-In- Modules > Panel > Meter

Bleibt noch die Frage nach dem Drehregler mit der Aufschrift „???“, der sich nicht in der Liste befindet: Hier handelt es sich im die jeweiligen Parameter, den wir Modulieren wollen: Attack, Decay, Sustain und Damp. Die Ausgangswerte dieser Regler werden über das Add-Modul mit dem bisherigen Regler-Eingang verbunden.

Abb. 4: Schaltung Modulator

Und so siedeln die Modulatoren in der Schaltung (s. Abb. 5). Die Parameter für die Frequenz- und Amplitudenregler, finden sich am besten durch ausprobieren. Für Attack Decay und Damp, habe ich für Frequenz und Amplitude einen Wertebereich von 0 – 64 gewählt. Für den Sustain sollte man das tunlichst vermeiden, weil das zu ganz unschönen Nebenwirkungen führt. Dort haben sich die Wertebereiche 0.1 – 24 (Frequenz) und 0 – 2 (Amplitude) als praktikabel erwiesen. Aber: Vorsicht bei gleichzeitigen hohen Werten für Sustain und Amplitude. Das ist eher ein „Special-Effekt“ als eine brauchbare Saite.

Abb. 5: Alle Modulatoren in der Schaltung

Abb. 6: GUI – Serviervorschlag

Je nach Frequenz und Amplitude der Modulatoren, fallen die Unterschiede im Klangergebnis aus.

Abb. 6: GUI – Serviervorschlag

Je nach Frequenz und Amplitude der Modulatoren, fallen die Unterschiede im Klangergebnis aus.

[04]

Aufräumen in vier Schritten

Ihr kennt das ja schon vom Tutorial-Synthesizer: Ab und an ein wenig aufräumen, und schon sieht das viel übersichtlicher aus. Im ersten Schritt verpacken wir die drei Modulatoren. Abb. 7 zeigt exemplarisch den verpackten Modulator des Attack-Eingangs der AD-Hüllkurve:

Abb. 7: Modulatoren verpacken

Nun nehmen wir uns die Hüllkurve vor. Das dafür erstellte Macro (ENV) bekommt zwei Eingänge (P und G) und einen Ausgang. An den Eingängen schließen wir dann den den Ausgang des Pitch-Macros an den P-Eingang und den Ausgang des Gate-Moduls an den G-Eingang an. Der Ausgang wird mit dem Multiplikator vor dem ersten Mixer verbunden.

Abb. 8: Hüllkurve verpacken.

Jetzt ist die Oszillator-Schaltung dran: Der Noise-Oszillator, der 1-Pole-Filter und der Color-Regler verschwinden in einem „OSC“-Macro mit einem Eingang (für das Gate-Modul) und einem Ausgang, der – wie der Ausgang des ENV-Macros) im Multiplikator vor dem ersten Mixer endet. Wir haben hier zwar nur drei Objekte verpackt, trotzdem dient das der Übersicht und hat sich gelohnt.

Abb. 9: Oszillator verpacken.

Zum Schluss ist die Synthese-Schaltung dran. Hier benötigen wir wieder zwei Eingänge (Die Tönhöhe, um die Verzögerung des Delays zu steuern und das Ausgangssignal des Oszillators) und einen Ausgang, der in den zweiten Mixer mündet:

Abb. 10: Synthese verpacken.

[05]

Die modale Filterbank

Das wird jetzt ein wenig komplexer – aber wir befinden uns ja auch in einem „Advanced-Tutorial“! Wenn man sich durch diverse Reaktor-Portale, -Foren und -Tutorials liest, bekommt man den Eindruck, dass kaum ein Modul so zwiespältig aufgenommen wird, wie die modale Filterbank. Die einen lieben dieses Modul, die anderen hassen es.

Auf der Pro-Seite kann man sicherlich verbuchen, dass dieses Modul beliebig viele Bandpass-Filter (mehr dazu findet ihr hier…) bereitstellen kann. Richtig angesteuert, kann man damit auch Töne erzeugen und z. B. auf einem anderen Weg als dem hier beschriebenen, eine schwingende Saite erzeugen. Ein wahres Wunder-Modul also.

Auf der Contra-Seite findet sich die Tatsache einer gewöhnungsbedürftigen Ansteuerung. Das wird einem spätestens dann klar, wenn man z. B. 64 Filter plant und sich dann versucht vorzustellen, wie das Modul mit 64 Eingängen, Cutoff- und Boost-Reglern (in Summe 192) klarkommen soll, bzw. wie das im User-Interface zu handhaben ist.

Wir werden zur Formung unseres Klanges also 64 Bandpass-Filter verwenden, und diese mit nur zwei (in Worten, wie in Zahlen 2!) Reglern bedienen. Die Kompromisse, die wir hier eingehen müssen, fallen für unsere Anwendung aber nicht ins Gewicht. Der Trick ist eigentlich ganz einfach: Man teilt dem Modul die gewünschte Anzahl an Filtern mit, erzeugt dann eine Schleife, die alle nötigen Werte in das Modul lädt und beendet den Ladevorgang mit einem „O.K.“-Signal. Danach wird das Modul tätig, filtert und gibt aus, wonach das Spiel von vorne beginnt. Die Eingabelogik ist also der springende Punkt, der mich auch das Studium mehrerer Tutorials gekostet hat, um dahinter zu steigen:

Abb. 11: Die modale Filterbank

Die Neuen

Ausser der modalen Filterbank seht ihr hier drei weitere Module, die uns bislang nicht nicht begegnet sind. Deshalb möchte ich sie an dieser Stelle kurz erklären:

  • Iteration: Dieses Modul ist das Äquivalent zu einem Schleifenzähler einer Programmiersprache. Der Zählvorgang startet, wenn ein Triggersignal am In-Eingang anliegt, welches auch gleichzeitig der erste Wert ist, der an den Ausgang weitergereicht wird. Wie viele Runden gezählt werden, legt die Konstante am N-Eingang fest. Um welchen Betrag der vorhergehende Output erhöht wird, regelt die Konstante am Inc-Eingang. Mit einem Signal am Brk-Eingang, lässt sich die Schleife vor Erreichen des N-Wertes Abbrechen. Am Gate-Ausgang wird der Wert 1 übertragen, bevor das Modul mit dem Senden beginnt. Das Bedeutet im Umkehrschluss, dass die vorherige Schleife beendet ist, weshalb man diesen Ausgang verwenden kann, um dem modalen Filter ein „O.K.“ zu Signalisieren.
    Interessant: im Reiter „Function“ der Side-Pane, kann man die Verarbeitungsgeschwindigkeit des Moduls festlegen. Wenn ihr die Option „Limited Speed“ aktiviert und die „Iterations per Second“ z. B. auf 1 setzt, könnt ihr – bei eingeschaltetem Debug-Mode – den Mauspfeil über die Out-Leitung bewegen und zusehen, wie die Zahlen der Reihe nach ihren Weg nehmen.
  • Order: Das Order-Modul reguliert den Datenfluss. Das Signal, das am Eingang angelegt wird, verlässt das Modul der Reihe nach durch die Ausgänge in aufsteigender Reihenfolge. Bemerkenswert hierbei ist, dass ein Signal, das z. B. den Ausgang 1 verlässt, erst alle nachgeschalteten Module durchlaufen haben, also am „Ziel“ angekommen sein muss, bevor der Order-Ausgang mit der Nummer 2 bedient wird!
  • Value: Dieses Modul fungiert als Trigger für einen bestimmten Wert: Ein Impuls am Trig-Eingang überträgt den Wert, der am darunterliegenden Eingang (der keinen Namen hat…) anliegt, an den Ausgang. In unserer Schaltung beide Values, dass beim Triggern eine 1 Ausgegeben wird.

Jetzt erschließt sich vermutlich auch die Logik der Schaltung:

  • An den benötigten Eingängen der modalen Filterbank liegen Signale unterschiedlicher Art an. Solange der Eingang APP keine 1 empfängt, wird im Modul aber nichts passieren.
  • Ein Gate-Signal startet die Schaltung, in dem es dem nachfolgenden Value-Modul signalisiert, eine 1 an das Iteration-Modul (Schleifenzähler) zu senden. Man könnte das Gate-Modul auch direkt an das Iteration-Modul binden. Da die Gate-Werte aber stark schwanken, ist das „Übersetzen“ in eine eindeutige 1 die sicherere Variante.
  • Der Zähle beginnt von 1 – 64 hoch zu zählen, nicht ohne vorher eine 1 an den App-Eingang der modalen Filterbank gesendet zu haben. Weil: Vor der Schleife ist nach der Schleife ;-). Die Filterbank wird über die Konstante am Eingang Num über die Anzahl der zu simulierenden Filter informiert.
  • Der Ausgang des Zählers durchläuft das Order-Modul und verlässt zuerst den Ausgang 1, der der Filterbank signalisiert, welcher der 64 Filter aktuell angesprochen wird.
  • Der Wert am Rtio-Eingang des Filters bestimmt das Verhältnis der Frequenz des aktuellen Filters zu der am P-Eingang anliegenden Frequenz, die ja von dem Pitch-Macro geliefert wird.
  • Der Ausgang der Filter wird mit den Werten an den Eingängen AL (links) und AR (rechts) multipliziert und am Stereoausgang ausgegeben. Bleiben die beiden Eingänge unbeschaltet, nimmt der Filter eigene Werte an, was die Ausgangslautstärke erheblich reduziert. Deshalb liegt hier die Konstante 1 an.
  • Der Wert am Dec-Eingang beeinflusst die Decay-Time. Ist der Eingang unbeschaltet, wird der Wert 60 angenommen, was einer Sekunde entspricht.
  • Der Regler am Dmp-Eingang wirkt auf die Decay-Zeit aller Filter und erzeugt in unserem Fall die Anmutung verschiedener Saiten-Materialien, weshalb ich diesen Regler mit „Fabric“ beschrifttet habe.

Der Einfachheit halber habe ich die Filterschaltung von Anfang an in einem Macro angelegt, der über zwei Eingänge (P = Pitch und In = Ausgang des Synth-Macros) verfügt. Da die Filterbank ein Stereo-Signal ausgibt, haben wir die Wahl, beide Signale zu einem zu mischen, oder weiter mit Stereo zu arbeiten. Ich habe mich für letzteres entschieden.

Wie der Filter nun genau auf den Klang wirkt, sollte ihr selbst an eurem Konstrukt ausprobieren. Jetzt hängt der Klang nicht nur an den beiden Filter-Reglern, sondern auch daran, wie die Regler für Color und Damp eingestellt sind. Die Möglichkeiten sind äußerst vielfältig.

[06]

Der Ausgang

Wie bereits erwähnt, muss der Ausgang nun auf Stereo umgestellt werden. Dazu bereiten wir folgende zwei Schritte vor:

  • Wir entfernen den Mono-Mixer samt Level-Regler und Audio Voice Combiner.
  • In die entstandene Lücke setzen wir eine neues Macro „Output“, verbinden es mit der bisherigen Struktur und verfrachten das Macro „Scope“ in das neue Output-Macro. Da das leider nicht per Drag&Drop zu bewerkstelligen ist, muss das Scope-Macro kopiert und innerhalb des Output-Macros wieder eingefügt werden.

Danach das entfernen des bisherigen Scope-Macros nicht vergessen …

Abb. 12: Vorbereitung Output

Der EQ

Zunächst folgt eine Klangregelung bestehend aus einem Lo Shelf und einem Hi Shelf EQ. Der Eingang des linken Kanals wird mit dem In des Lo Shelf EQ verbunden, der Ausgang des Lo Shelf EQ mit dem Eingang des High Shelf EQ. Mit Rechtsklick auf die Eingänge P (Cutoff) und B (Boost) legen wir Regler mit den passenden Parametern an. Anschließend kopieren wir die beiden EQs für den rechten Kanal und klemmen die bestehenden Regler des linken Kanals an die EQ-Module des rechten Kanals mit an. So werden beide Kanäle identisch geregelt.

Was das Interface angeht, werden wir jetzt eine exrem plastzsparende Einstellung vornehmen: Im View-Reiter der Side-Pane wird bei allen 4 Reglern die „Show Image“ Option deaktiviert. Was bleibt, ist die Beschriftung und die Anzeige des Wertes. Keine Sorge, der Regler ist noch bedienbar: einfach mit der Maus auf die Anzeige fahren und dann die Maus bei gedrückter linker Maustaste nach oben oder unten bewegen.

Abb. 13: EQ

Der Mixer

Den Mixer bauen wir uns erst einmal „ganz konventionell“ zusammen:

  • Ein Stereo-Mixer-Modul
  • Fader (2) für die Level-Eingänge
  • Kobs (2) für die Pan-Eingänge
  • Je einen AUdio Voice Combiner, ein Level-Meter und ein Out-Terminal für den linken und den rechten Ausgang

Beim ersten Austesten werdet ihr merken, dass der EQ je nach Einstellung zuviel Leistung abgibt und der Ausgang des Reaktors übersteuert. Hier muss ein Gain-Regler zwischengeschaltet werden, der das Signal vor dem Mixer bei Bedarf reduziert.

Abb. 14: Mixer

Gestatten, Gain

Um das Eingangssignal zu reduzieren, schalten wir vor jeden der beiden Stereo-Mixer-Eingänge jeweils einen Mono-Mixer mit einem gemeinsamen Fader und zu optischen Kontrolle einem Meter-Modul (kein Level-Meter!).
Fader und Meter bekommen den Wertebereich von -60 bis 0. Damit sollte sich das Signal beherrschen lassen. 

Abb. 15: Gain

Scope und fertig …

was den Mixer angeht jedenfalls. Nachdem das Scope-Macro dupliziert und an den beiden Ausgängen angebracht ist, ist unsere Saiten-Simulation komplett. Was die 4 grün markierten Module betrifft: Das dürft ihr selbst herausfinden :-). An Hand des Downloads am Ende der Lektion ist es am einfachsten heraus zu bekommen. Ihr solltet es aber auch an dem nachfolgenden Screenshot des Interfaces erkennen können. 

Abb. 16: Scope

[07]

Praxis

Abschließend habe ich das Karplus-Strong-Tutorial mit Reaktor in Logic Pro X geladen und mit ein paar MIDI-Files ausgetestet. Hört selbst. Für eine selbst gestricke Physical Modeling Gitarre klingt das ganz brauchbar.

Abb. 17: Screenshot Logic

Abb. 18: GUI – Serviervorschlag

Demo 1

von "originalcliche", Logic Pro Help Forum

Abb. 18: GUI – Serviervorschlag

Demo 1

von "originalcliche", Logic Pro Help Forum

[07]

Downloads

g

Karplus-Strong

.ens-Datei, (Zip-File, 9KB)

Kontakt

Bernd Scheurer
Mainstraße 2
64390 Erzhausen
Fon: 06150 865902
Mobil: 0151 50411034
unterricht@bernd-scheurer.de

Freie Plätze Erzhausen

ab sofort

Freie Plätze Langen

Zur Zeit keine Plätze eingeplant. Da aber noch Kontingent zur Verfügung steht, bei Bedarf einfach [anfragen].

    Infos

    Auch interessant

    Newsticker

    amazona

    tastenwelt

    klassik heute

    jazz thing

    • Be happy
      Source: jazz thing Published on 2011-07-19 By Lili Lameng
    • Der Jazzmusiker ein Feinschmecker?
      Source: jazz thing Published on 2011-06-06 By Anke Helfrich
    • Glamourfaktor
      Source: jazz thing Published on 2011-04-21 By André Nendza
    • Style
      Source: jazz thing Published on 2011-04-09 By Lorenz Hargassner
    • Topsannah
      Source: jazz thing Published on 2011-03-14 By Lili Lameng

    musikexpress

    Title Address Description
    JMS-Erzhausen
    Industriestraße 6-8, 64390 Erzhausen, Deutschland
    Kulturhaus Langen
    Darmstädter Str. 27, 63225 Langen (Hessen), Deutschland
    AES-Langen
    Berliner Allee 90, 63225 Langen (Hessen), Deutschland