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