ELECTRIC OPRPHEUS ACADEMY
SPILLING THE BEANS #14 WARP
In der seriellen Musik des 20.Jahrhunderts (vielleicht auch schon viel
früher, wer weiss?) kam die Idee auf, dass man Motive nicht bloss
transponieren und spiegeln kann, sondern auch strecken oder stauchen,
indem man alle Tonhöhenintervalle proportional vergrössert oder
verkleinert. Natürlich geht das strenggenommen nur mit ganzzahligen
Faktoren, wenn man sicher gehen will, dass man dabei im Tonsystem bleibt.
Damit meinte man allerdings Tonhöhen, nicht Frequenzen. Die Frequenzproportionen
der Töne selber werden davon nicht tangiert. Mit den Mitteln spektraler
Transformation lässt sich das aber für alle Frequenzen und mit
beliebigen Faktoren durchführen. In Analogie zu der eingangs beschriebenen
Intervalldehnung nennen das manche spektrale Applikationen 'stretch'.
Man sollte sich aber bewusst sein, dass das keine Dehnung im eigentlichen
Sinne ist. Eine Dehnung im Spektrum ergibt eine reziproke Dehnung in der
Zeit - nichts weiter, als die längst bekannte Tempoveränderung.
(Es werden dann wohl die Tonhöhen verändert und die Frequenzen,
nicht aber die Intervalle). Damit die Intervalle zwischen den einzelnen
Frequenzen gedehnt oder gestaucht erscheinen, muss die spektrale Ordinate
verzerrt werden. In VASP heisst das dementsprechend Ordinatenverzerrung
odist, oder in einer allgemeinen Form mit vielen verschiedenen
Varianten: warp (Krümmung). Wie alle Routinen in
VASP, sind auch diese auf jeder Ebene einsetzbar. In time-domain zeigt
sich odist als kontinuierliche Tempoveränderung, eine spezielle Art
Tempoglissando. Unser vielstrapaziertes Allegro:
sfload mozart.wav
odist 2
Da nun Tempoveränderung in der einen Ebene, wie wir wissen, reziproke Tempoveränderung in der jeweils anderen Ebene bewirkt, ist klar, dass Ordinatenverzerrung im Spektrum ebenfalls eine Art Glissando in der Zeitebene zur Folge haben muss. Zunächst ein geringer Verzerrungsgrad (Faktor 1 wäre unverzerrt):
FFT
xodist 1.1
FFT-
mozart_specodist_little.mp3
Man hört sehr schön die Dehnung sämtlicher Intervallbeziehungen um 10% (jede Quint wird fast um einen Halbton höher, jede Oktave um einen Dreiviertelton, etc.). Wie zu erwarten, haben wir es aber auch mit einer Verwischung der zeitlichen Struktur zu tun. Das ist kein Fehler der Routine, sondern es liegt in der Natur der Sache! Bei einem stärkeren Verzerrungsgrad ist dieser Effekt so dominant, dass die Intervalldehnungen in den Hintergrund rücken, wiewohl sie exakt stattfinden. Mit einem Faktor 2:
mozart_specodist_strong.mp3
Eine ganz ähnliche Routine ist slope (Neigung). Auch hier werden die Intervalle gedehnt oder gestaucht wie bei odist, nur lässt sich ein Punkt festhalten: ein Zeitpunkt, oder im Spektrum eben eine Frequenz.
FFT; xslope 440hz,2; xphirand; FFT-
mozart_specslope2.mp3Dasselbe mit einem Faktor 0.5
mozart_specslope05.mp3
Die offensichtliche Symmetrie des Effektes resultiert aus der notwendig symmetrischen Anwendung der Ordinatenverzerrung im Spektrum. (Darüber erfährt man mehr bei den Themen FFT und complex audio).
* * *
Dieser Verzerrungsfaktor ist genaugenommen ein Exponent. Jedes Intervall im Spektrum - tatsächlich jedes - erscheint mit diesem Exponenten potenziert.
[Natürlich könnte man eine logarithmische Perspektive beibehalten und sagen, die Intervalle werden gedehnt oder gestaucht, verdoppelt oder halbiert. Wir haben es aber nicht mit Tonleitern zu tun, sondern mit Klängen. Für die weiteren Überlegungen ist es gut, den exponentiellen Charakter im Auge zu behalten]
Betrachtet man eine ganzzahlige Obertonreihe, wie wir sie von vielen Instrumenten kennen, dann wird die neue resultierende Obertonreihe im ersten Fall (Exponent 2) aus den Quadraten der ganzen Zahlen bestehen; besteht die Teiltonreihe nur aus Ungeraden (eine in der Mitte angerissene Saite zB.), dann eben aus den Quadraten der ungeraden Zahlen. Das ist insofern bemerkenswert, als das so ziemlich dem Frequenzschema einer Biegeschwingung - eines schwingenden Stabes entspricht !
Im umgekehrten Fall (Exponent 0.5) erhält man eine Reihe aus den Wurzeln ganzer Zahlen. Das entspricht wiederum teilweise dem Frequenzschema einer quadratischen Membran oder Platte.
Man höre sich die beiden vorigen Beispiele nocheinmal daraufhin an: Der Charakter von specslope05 ist tatsächlich dicht und flächig; der von specslope2 klingt dagegen wie auf einem Gestänge gespielt. Natürlich gibt es auch alle Zwischenstufen - eine Quelle für systematische kompositorische Arbeit.
* * *
Wie kann man solche Ordinatenverzerrungen aber bewerkstelligen, ohne sich die zeitlichen Veränderungen und Glissandi einzuhandeln? (Sie sind aber auch schön, oder ?) - Genauso, wie bei allen anderen spektralen Eingriffen: nur granular.
Dazu gibt es grundsätzlich zwei Ansätze. Der erste: Man geht das an wie einen 'Harmonizer'. Man zerlegt den Klang nicht in zeitliche grains, sondern dessen totales Spektrum in Frequenzbänder (spektrale grains), die man dann an eine andere Stelle schieben kann (VASP-scripts siehe unten).
Exponent 2
mozart_specslope2_GRT.mp3
Exponent 0.5
mozart_specslope05_GRT.mp3
Das ist die beste Methode. Realtime-fähig ist sie natürlich nicht. Dazu müsste man einen anderen Ansatz wählen: Den Klang zeitlich in grains strukturieren und jedes grain entsprechend bearbeiten. Soetwas lässt sich in VASP mit einem granularen Prozess darstellen:
GRPROC.xdspl {FFT; xslope 440hz,2; FFT-}
In geschweifter Klammer steht hier ein Subprozess, der grain für
grain ausgeführt wird. Auf diese Weise lassen sich granulare Prozesse
in VASP studieren. Wer das allerdings so kunstlos macht, wie in diesem
Beispiel, wird mit dem üblichen granularen Gebröckel konfrontiert
werden. Ein paar Finessen und Tricks kann man da schon noch einbauen.
In dem AMP-Kernmodul spec.slope ist da einiges mehr enthalten.
(AMP script siehe unten)
* * *
Die Verzerrung der Intervalle lässt sich, wie gesagt, ermitteln,
indem man sie mit dem Verzerrungsgrad (Exponent) potenziert. Umgekehrt
kann man auch vorgeben, wie sich ein bestimmtes Intervall verändern
soll. In diesem Fall muss man den Quotienten der Logarithmen beider Intervalle
bilden. An einem Beispiel:
Jede reine Quint soll zur Oktave werden, dann ist der Exponent gleich
dem Logarithmus der Oktave dividiert durch der Logarithmus der Quint.
(Egal welcher Logarithmus, ob natürlicher, dekadischer oder dualer
- der Quotient ist immer der gleiche).
x = log(2)/log(1.5) = 1.7095
Daraus ergibt sich auch die Veränderung aller übrigen Intervalle.
Die Oktave wird zu 2^1.7095 = 2.3705 = 1.635*2 (eine neutrale Sext, zwischen
grosser und kleiner Sext, plus 1 Oktave)
Die Quart wird zu 1.333^1.7095 = 1.635 (dieselbe neutrale Sext)
Die grosse Terz wird zu 1.25^1.7095 = 1.4644 (ein zu kleine Quint)
Die kleine Terz wird zu 1.2^1.7095 = 1.3657 (eine zu grosse Quart).
Deutlich hört man das, wenn man die Zeitstruktur nivelliert (freeze):
FFT; xodist 1.7095; xphirand; FFT-
mozart_odist_freeze.mp3Es lassen sich viele Exponenten finden, die sehr eigenwillige harmonische Veränderungen bewirken. Man betritt damit das weite Gebiet der 'unharmonischen' Klänge - wie man das früher so schön nannte ...
Ausprobieren (rechnerisch und/oder gehörsmässig) !
* * *
Zurück zu warp.
Der Typus Ordinatenverzerrung im Spektrum, der eine einheitliche Dehnung sämtlicher Intervalle bewirkt, ist sicher der fundamentalste. Die Verzerrung liesse sich, genauso wie eine Amplitudenverzerrung, in einem Diagramm darstellen:
Anhand der entsprechenden Kurve lässt sich jeder Position eines Samples (x-Achse) eine neue Position (y-Achse) zuordnen.
(Die Operationen warp.bend und warp.slope in VASP sind auch mit vor- und nachgeschalteten variablen Aliasfiltern ausgestattet). Darüberhinaus gibt es aber noch zahlreiche Varianten, darunter auch das in SPILLING THE BEANS #2 beschriebene warp.curly.
Grundsätzlich können alle Arten von Verzerrungskennlinien auch für Ordinatenverzerrung verwendet werden.
* * *
Zum Schluss noch eine kleine Denkaufgabe, für die, die bereits mit VASP gearbeitet haben. Was geschieht in folgendem VASP- script ?
size=19
$size=15
grsize=13
A:
sfload mozart0.wav
FFT
$xgen.medser 400
B:
$copy
clear
GRPROC.dspl {FFT-; odist 2; FFT}
FFT-
ovp
Der Klang wird in sein totales Spektrum transformiert; das Spektrum
in einzelne grains zerlegt; jedes spektrale grain zurück in die Zeitebene
transformiert, verzerrt und wieder in die Frequenzebene transformiert;
das gesamte Resultat wieder vom Spektrum nach Zeit rücktransformiert
.... ?
mozart_raetsel.mp3
akueto
G.R.
(c) Günther Rabl
2012
-------------------------------------------------------------
A:"switch to buffer A
sfload mozart.wav "lade
soundfile
FFT "Transformation ins Spektrum
$xgen.medser 400 "generiere Struktur mit 400 Frequenzbändern
B: "switch to buffer B
$copy "kopiert Struktur
$xslope 440hz,2 "Strukturverzerrung slope
GRT.xautofoc "granulare Transformation
FFT- "Inverse Transformation
Erklärung:
Zuerst wird der Klang in sein totales Spektrum transformiert (FFT); dann
wird eine granulare Struktur generiert, 400 Frequenzbänder, symmetrisch,
medium - zwischen linear und logarithmisch ($xgen.medser); diese Struktur
wird kopiert ($copy) und anschliessend mit der slope-Funktion verzerrt
($xslope); die granulare Transformation (GRT) verschiebt alle Frequenzbänder
von der ursprünglichen in die verzerrte neue Lage (.xautofoc ist
ein passender Modus in diesem Fall); das Ergebnis wird wieder rücktransformiert
(FFT-).
Allerdings könnte man die granulare Strukture auch analytisch gewinnen,
den peaks im Spektrum angepasst. Da lässt sich noch einiges an Feinheiten
herausholen.
----------------------------------------------------------
* AMP-script fuer spec.slope
i1=mozart.wav (m)
k1=spec.slope (m,*i1,dim=4000)
out=mozart_specslope_AMP.wav (m,*k1,opt)
seg=1
dur: 20 "Dauer 20 Sekunden
k1.center: 330 "center-Frequenz
k1.rate: 1.1 "Verzerrungsgrad