Delays


Eine Vielzahl von Soundeffekten beruhen auf der Anwendung von zeitverzögerten Versionen eines Signals, das mit seinem Original gemischt wird. Verzögerungen im Sample-Bereich sind die Grundlage für eine Vielzahl von Filteralgorithmen. Längere Verzögerungen, insbesondere mit modulierten Delayzeiten, erzeugen die Effekte Phasing, Flanging und Chorus. Wird die Zeitverzögerung länger als etwa 10 ms, so lassen sich perkussive Klänge als zwei getrennte Ereignisse wahrnehmen und man erhält die "klassischen" Delays. Häufig kommen mehrere Delays parallel zur Anwendung, um den Klang reicher ("phatt") zu machen.
Für Delayzeiten bis herab zu einer "Signal Vector Size" kann man das Paar tapin~ - tapout~ verwenden. tapin~ reserviert den Speicher für die Delayline und stellt den Eingang zur Verfügung, tapout~ liest aus dem Delayspeicher nach der vorgesehenen Zeit in ms.

Dieser Patch enthält schon die send- und receive-Objekte für die Einstellung der Delayzeiten, inklusive Initialisierung. Die numberbox vor der "$1 20"- message dient Debugzwecken. Die Kette aus "$1 20" -> line~ wird sehr häufig verwandt, um aus den unstetigen Werteänderungen bei der Einstellung per numberbox knackfreie Signale zu erzeugen.


Pingpong-Delay mit Rückkopplung


Etwas interessanter wird der Patch, wenn man eine zweite Delayzeit und einen Rückkopplungsweg einbaut. Im Beispiel wird ein Pingpong-Effekt fest verdrahtet. Ausserdem wird gezeigt, wie man die Delayzeiten für ein gegebenes Songtempo berechnet.
Folgende Parameter sollen einstellbar sein:

• das Songtempo in beats per minute
• die Delayzeit in Notenwerten
• der Grad der Rückkopplung (0…1)
• der Anteil Direkt/Effektsignal

Die Delayzeiten nehmen hier diskrete Werte an, zum Beispiel eine Halb- oder eine Achtelnote. Als Bedienelement bietet sich daher eine Menüauswahl an. Max bietet hierfür z.B. das ubumenu an:



Hier lassen sich eine Reihe von Werten vordefinieren (Objekt auswählen und "Apfel-i" drücken):



Interessant ist hier zunächst nur der "Menu Text" auf der linken Seite. Zurück liefert das ubumenu die Nummer des gewählten Menüpunkts, beginnend mit "0".
Hier ein Vorschlag für die Gestaltung der Benutzeroberfläche:


Man beachte, dass im GUI-Patch keinerlei Berechnungen stattfinden. Dies ist in den Delaypatch verlagert, mit der Absicht, das spätere Debuggen möglichst einfach zu machen.
Der eigentliche Delaypatch nimmt ein Mono-Eingangssignal und verteilt es auf zwei Ausgangskanäle. Die beiden Delays werden jeweils links und rechts ausgegeben, wobei der rechte Kanal die doppelte Delayzeit wie der linke hat, so dass sich ein rhythmischer Effekt ergibt.


Zur Einstellung der Zeiten kommt hier eine in einer coll gespeicherte Tabelle zum Einsatz:



Hier sind die unterschiedlichen Notenwerte in der Einheit "Viertelnote" festgelegt. Die Werte dienen als Faktoren bei der Umrechnung "BPM" nach "Millisekunden". Die expr berechnet die Dauer einer Viertelnote bei gegebenem Tempo. Anschließend wird dieser Wert mit dem Wert aus der Tabelle multipliziert. Die Konstruktion "trigger bang Wert" soll sicherstellen, dass die Berechnung auch erfolgt, wenn der Notenwert geändert wird (er wird im rechten Eingang der Multiplikation geliefert).
Der Wet/Dry-Balance-slider erwartet Werte zwischen 0 und 127. Daher müssen die Werte für den Grad der Rückkopplung entsprechend skaliert werden (* 127. und danach / 127.). Es ist sinnvoll, diesen Wertebereich nicht zu verändern. Er entspricht dem 7-bit Midi-Zahlenbereich, und sollte man sich später entschließen, diesen Parameter fernsteuerbar zu machen, ist keine weitere Umrechnung erforderlich.