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

mozart_odist.mp3

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-

(xodist ist die symmetrische Form, die im Spektrum erforderlich ist - in VASP bezeichnet ein vorangestelltes 'x' die symmetrische Form einer Operation)

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.mp3
Dasselbe 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.mp3

Es 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

Selbstverständlich stehen die Parameter k1.center und k1.rate auch im Sequencer zur Verfügung. (In dem VST-plugin spexx sind

top