ELECTRIC OPRPHEUS ACADEMY
SPILLING THE BEANS #5 TEMPO

In meiner Zeit an der ELAK war eines der ersten Themen, die ich im Unterricht zur Sprache brachte, die Transformation 'Tempo'. Die einfachste Sache der Welt, seit den Anfängen der Tonaufzeichnung bekannt und vielfach angewendet, mit Schallplatte wie mit Tonband: Man spielt einen aufgenommenen Klang schneller oder langsamer ab und verändert damit seine Dauer, rhythmische Struktur sowie seine Tonhöhe. (Einige andere, gar nicht so unwichtige Aspekte werden dadurch auch verändert - aber davon ein andermal).
Eine fundamentale Methode, die aus dem handwerklichen Repertoir der Elektroakustik nicht mehr wegzudenken ist (auch wenn sie bisweilen durch scheinbar raffiniertere Effekte verdrängt wird, die dem konservativen musikalischen Denken mehr entgegenkommen).

In VASP und AMP hat diese Methode daher von Anfang an einen prominenten Stellenwert. Bloss die Perspektive ist jeweils eine andere. In VASP gibt es das command stretch - Dehnen oder Stauchen eines vorgegebenen, in einem Register (buffer) gespeicherten sounds.
In AMP hingegen, gibt es eine variable Geschwindigkeit beim einscannen der soundfiles an einem Inputkanal 'varispeed', die als Parameter .vsp im sequencer zur Verfügung steht. Mehr noch: Dieser Tempofaktor ist, wie auch alle anderen Parameter, steuerbar und kann durch Wellenformen von Generatoren oder anderen inputs moduliert werden (vom Tempo-Glissando bis zum scratching).

Neu ist ein System von Methoden für bestimmte Anwendungen, von denen ich hier eine hervorheben möchte, weil sie verblüffend einfach ist: pack.
Wenn man sehr grosse Tempotranspositionen nach oben (speedups) durchführen möchte, so ist eine der radikalsten Mittel, einfach eine entsprechende Anzahl von samples unter den Tisch fallen zu lassen, also beispielsweise nur jedes 100. sample zu verwenden.
Audio-Ingenieure würden vermutlich die Hände über dem Kopf zusammenschlagen: Bei einer halbwegs sauberen Aufnahme, die keine extremen Bässe enthält, dürfte da unter 10kHz gar nichts mehr zu hören sein. Der Rest ist nur aliasing !
So ist es auch, nur sind diese Spiegelfrequenzen (aliasing), derart vielfältig, dass sie einen eigenen Charakter annehmen.
Der Bereich von 0-220hz bleibt erhalten (er wird zu 0-22kHz),
220-440hz werden nach unten gespiegelt
440-660hz wieder nach oben
660-880hz wieder nach unten
und so weiter ....

Man kann von einer 'Frequenzfaltung' sprechen, bei der alle Frequenzen in irgendeiner dieser zahlreichen Spiegelungen erhalten bleiben - und somit auch die spektrale Dichte.
Noch in den Achzigerjahre stellte ich solche Frequenzfaltungen mit analogen Mitteln her - in stundenlanger Arbeit mit dem Frequencyshifter und zahlreichen Zwischenkopien (>> STYX). Mit dieser einfachen digitalen Methode bekommen wir das sozusagen gratis als Draufgabe ...

Anbei das Beispiel:
menuett_pack128.mp3

Das ist das Menuett aus Mozart's Jupitersinfonie in 128-fachem Tempo durch packing. Das packing kann in VASP direkt beim Laden des soundfiles durchgeführt werden:

sfload menuett.wav (pack=128)
play

Natürlich gibt es auch optionale Filterungen, falls man aliasing vermeiden möchte. In AMP sind die Glättungs- und Antialias-Filter so ausgeführt, dass sie auch rasche Parameteränderungen optimal mitverfolgen.

Ein zweites Beispiel:
menuett_scratch.mp3

Hier wird ein tieffrequenter Generator benutzt, um die varispeed zu steuern. Der soundfile am input wird sozusagen an einem Punkt gescratcht, während der Punkt langsam weiterwandert. Im AMP script sieht das so aus:

i1=menuett.wav (s)
k1=noise.band (m)
out=menuett_scratch.wav (s,*i1)
dur: 20
i1.pos: 11
i1.vsp: 0.1 (c=k1,cm=lin,ca=1)
k1.lower: 2
k1.upper: 5

Der soundfile wird an input 1 adressiert (stereo). Er erhält zu Beginn eine Positionierung bei Sekunde 11 (i1.pos); seine varispeed (i1.vsp) ist auf 0.1 gesetzt, also 1/10 der Originalgeschwindigkeit, wird aber überlagert (controlled) vom output des Kernmoduls 1 (control-mode linear, control-amplitude 1), pendelt also zwischen -0.9 und +1.1
Als Kernmodul 1 wird ein Generator definiert, der Rauschen innerhalb eines bestimmten Frequenzbandes erzeugt, das beliebig tief sein kann, in diesem Fall zwischen 2hz (k1.lower) und 5hz (k1.upper).
Als output wird menuett_scratch.wav definiert, ebenfalls stereo und übernimmt im patching (*i1) den stream von input 1.
Gedamtdauer (dur) 20 Sekunden.

Interessant an dem Beispiel ist vielleicht, dass ausser dem einen Generator noch keine besonderen Module (objects) benötigt werden. Das ist Standard der input-scanner und der Parameterkonventionen.
Jeder Parameter, der nicht gerade Dauern oder Modi repräsentiert, kann in Sequencerlisten geführt werden, interpoliert und von jedem beliebigen anderen Modul gesteuert oder moduliert werden. Im obigen Beispiel könnte man für die Steuerung, wie gesagt, auch die Wellenformen eines anderen soundfiles verwenden, oder desselben soundfiles, oder sogar desselben inputs. Auch feedbacks sind möglich.

* * *

Mit dem Aufkommen der realtime-Systeme ist diese fundamentale Methode stark in den Hintergrund getreten. Natürlich ist Tempo-Transformation in einem realtime-Kontext strenggenommen paradox. Man kann nicht einen soundstream einlesen und 'im selben Moment' schneller, oder gar in Zeitumkehrung wiedergeben. Langsamer ginge schon, aber die Synchronität zwischen dem Original und seiner Verlangsamung läuft vom ersten Moment an auseinander.

Dennoch wäre soetwas live einsetzbar, sowohl in Hinblick auf Tonhöhen, als auch polyrhythmisch.
In AMP gibt es das Kernmodul retard, mit dem sich so ein Prozess simulieren lässt. (AMP geht nicht in realtime, erlaubt aber, wenn man will, das Denken in streams).
Man kann sich das so vorstellen. An einem input liegt ein stream von einem soundfile kommend an. Er läuft über einen delay-buffer, der beliebig langsamer ausgelesen werden kann, auch in Schichtungen in mehreren verschiedenen Tempi. Alles was man dazu benötigt, ist ein genügend grosser delay-buffer. Mit einem cue-Parameter kann der Prozess in jedem Moment wieder synchronisiert werden.

demo08_retard.mp3
Dieses Hörbeispiel versteht sich als Bearbeitung eines Zitates aus einer veröffentlichten Aufnahme. Mit der Möglichkeit, es hier zu Demonstrationszwecken anzuhören und zu studieren, sind keine weiteren Verwertungsrechte verbunden.

Hier wird alle 2 Sekunden nachsynchronisiert, man könnte die cues natürlich auch an den Inhalt des sounds anpassen. Das AMP script dazu sieht so aus:

i1=tomsdiner.wav (m)
k1=retard (layer=3,*i1,dim=80sec,bev=400)
out=demo08_retar.wav (m,*k1,opt)
seg=20
dur: 2
k1.status: 1
k1.rate.0: 1
k1.rate.1: 8/9
k1.rate.2: 4/5

Erklärung:
tomsdiner.wav (Suzanne Vega) wird an input 1 adressiert (mono).
Kermodul 1 ist besagte retard-Routine mit Tempoveränderungen in 3 Schichten (layer=3), der Delaybuffer kann maximal 80 Sekunden aufnehmen (falls nötig), crossfade, damit es nicht knackst 400 sampels (das heisst bei mir bevel, 'Schrägschnitt'). Der output schreibt das Ergebnis von k1 in den soundfile, optimiert zuvor aber die Gesamtamplitude.
Der Sequenzer hat 20 Segmente mit einer Dauer von je 2 Sekunden.
Der status von jedem Segment (k1.status) ist 1 (=cue).
Die Tempofaktoren der 3 Schichten (k1.rate.0 bis .2) sind 1 (original), 8/9 (ein Ganzton tiefer und langsamer), 4/5 (eine grosse Terz tiefer und langsamer).
Nimmt man die Dauern zwischen den cues sehr viel kleiner, dann betritt man bereits die Welt der granularer Methoden. Dasselbe Beispiel mit 200 Segmenten zu je nur 0.1 Sekunden Dauer:

demo08_retard_gran.mp3
Dieses Hörbeispiel versteht sich als Bearbeitung eines Zitates aus einer veröffentlichten Aufnahme. Mit der Möglichkeit, es hier zu Demonstrationszwecken anzuhören und zu studieren, sind keine weiteren Verwertungsrechte verbunden.

Wie angedeutet, ginge soetwas auch in einem live-Kontext. Alles, was man an interface dazu benötigt wären soviele Regler, als man Temposchichtungen möchte und ein button für den sync-cue.
[Wer das nachbauen will, bitte: Die delays müssen interpoliert ausgelesen werden, damit feine Temponuancen möglich sind; crossfades, damit die Übergänge nicht knacksen; ausserdem ist bei dichteren Schichtungen ein justierbarer 'lag' von vorteil, damit nicht alle Spuren genau gleichzeitig beginnen, was zu phasing-Effekten führen würde. Eine andere Möglichkeit wäre, dass mir jemand hilft, AMP zu einem realtime-tool auszubauen, was grundätzlich ginge ....]

akueto
G.R.


(c) Günther Rabl 2010