Technische Dokumentation

(Sämtliche verfügbaren Parameter werden auf einer separaten Seite aufgeführt.)

Funktionsweise

Ein oder zwei von einander unabhängige Bildebenen – [jit.gl.videoplane]s – werden entsprechend des zu einer bestimmten Zeit abgegriffenen Audiopegels und beeinflusst durch Zufallswerte in x, y und z-Richtung bewegt; dabei sollten die Werte so gewählt sein, dass immer das komplette Blickfeld mit einem Bildausschnitt gefüllt ist (s.u.).
Der Abgriff des Audiopegels findet periodisch über eine einstellbare Taktrate (im M4L Device auch synchron zum Musik-Takt) oder über einen einstellbaren Schwellwert (oder eine Kombination aus beiden) statt. Die Intensität, (Zoom-) Tiefe und “Ruckeligkeit” der Bewegung ist – auch unabhängig für beide Bildebenen – einstellbar. Die zweite Bildebene lässt sich wahlweise zuschalten.

Einlesen der Bilddateien

Im Patcher befindet sich ein [dropfile], auf das ein Ordner gezogen werden kann; aus diesem Ordner werden bis zu 32 Bilddateien1 eingelesen und in einem [jit.matrixset] gespeichert.
Die Bildauflösung kann (zuvor) eingestellt werden, wird die Bildauflösung geändert, wird das [jit.matrixset] geleert und muss neu eingelesen werden.

Entsprechen die eingelesenen Bilddateien nicht dem eingestellten Seitenverhältnis, werden sie entsprechend skaliert und beschnitten, indem im Bezug auf die jeweilige Bildmitte der obere und untere bzw. der linke und rechte Bildrand abgeschnitten wird, gemäß folgender Berechnung:

Die Skalierung sollte mittels [jit.matrix] über das Attribut @srcdim geschehen, wobei @interp 1 gesetzt sein sollte.
Die bei Beschnitt zu wählende Teil-Matrix sollte die Bildmitte beinhalten und kann über die Attribute @srcdimstart x, y sowie @srcdimend x y gewählt werden (dabei muss @usesrcdim 1 gesetzt sein).

Bewegung der Bildebenen

Kameraposition

Die Position der Kamera ist auf den Punkt [0, 0, 2] festgelegt, der Kamerawinkel liegt bei 45°, near_clip liegt bei 0.1, d.h. die Bildebene kann auf der z-Achse zwischen dem Punkt 0 und dem Punkt 1,9 bewegt werden.

Ausgangsposition der Bildebene

Die [jit.gl.videoplane] hat im Ausgangszustand ihren Ursprungspunkt bei [0, 0, 0], die Skalierung sollte so gewählt werden, dass das projizierte Bild nicht verzerrt dargestellt wird, also dem Seitenverhältnis das Anzeigefensters entspricht: [x/y, 1, 1]. Dies muss den [jit.gl.videoplanes] über den Parameter dim x y z mitgeteilt werden, wobei y = 1.0, z = 1.0 und x variabel sein sollte.

Berechnung der nächsten Position

Die Bewegung auf der z-Achse (zwischen Ursprung und Kamera) spiegelt direkt den abgegriffenen Audiopegel wider, der über den scale-Parameter skaliert werden kann. Dies geschieht durch eine Wurzelfunktion, wobei über den Parameter scale der Wurzelexponent eingestellt wird. Der Parameter sense skaliert als Faktor den Einfluss auf die Auslenkung in z-Richtung. Aus der Position auf der z-Achse ergibt sich mittels des Strahlensatzes jew. ein Betrag, um den die Bildebene in x- und y-Richtung verschoben werden kann. Diese Beträge werden per Zufallszahl, skaliert durch den rand-Parameter erzeugt2.

Die Skizze stellt links die Kameraposition dar (Scheitelpunkt des Winkels), rechts die Videoplane auf ihrer Ursprungsposition (z = 0) und in der Mitte eine ausgelenkte Videoplane (z = d). Bei der augelenkten Ebene liegt der Streckenabschnitt f im sichtbaren Bereich des Kamerawinkels; abgezogen von der Bildhöhe h ergibt g den Betrag, um den die Ebene potentiell nach oben oder unten bzw. nach links oder rechts bewegt werden kann.

Die maximalen Auslenkungen berechnen sich nach folgender Formel (Strahlensatz):

Dies muss jeweils unter Berücksichtigung der x- und y-Skalierung (als h-Werte) berechnet werden.

Die so ermittelten x-, y- und z-Koordinaten dienen als neue Zielkoordinaten, auf die sich die Bildebene zubewegt. Die Geschwindigkeit dieser Bewegung wird durch den Parameter smooth gesteuert. Dabei wir ein [line]-Objekt benutzt, dass einen zeitgesteuerten Übergang zu den neu ermittelten Zielkoordinaten ermöglicht.

Bewegung der Bildebenen

Ankerpunkt ist die Ebenenmitte. Die aktuelle Position P hat die Koordinaten (x, y, z). Durch Erhalten eines neuen Pegels (taktsynchron oder durch threshold getriggert) wird eine neue Position P’ ermittelt, auf die sich die Ebene in der Zeit t auf direktem Wege bewegt. Die Bewegung geschieht schrittweise in Abschnitten von ∆t (voreingestellt auf 30 ms). Zur Berechnung einer Position sind
Koordinaten . Durch Erhalten eines neuen

  • t Eingestellte Abtastrate; relativ (Notenwerte), in Abhängigkeit der Transport-Clock; beeinflusst vom Parameter smooth (dies wird hier nicht weiter berücksichtigt)
  • d Zufällige Dämpfung; ein Wert von ‘0’ bedeutet, dass die Auslenkung genau dem empfangenen Pegel entspricht, ‘1’ bedeutet Dämpfung um einen zufälligen Faktor, der bis zum maximalen Pegel-Betrag dämpfen kann.
  • r Einen Zufallswert (wird skaliert durch d)
  • s Skalierungsfaktor; entsprechend der eingetsellten Bildauflösung; ist eigentlich nur für den x-Wert relevant, y und z sollten immer 1.0 betragen.
  • e, z Eingestellte sense und zoom-Parameter

Zur Durchführung der Bewegung einer Ebene wird ein [line] Objekt benutzt, das im gewünschten Zeitraum (t_) in der gewünschten Granularität (_∆t) die entsprechnden Werte für die z_-Achse (_z’) ausgibt. Die neuen x’- und y’-Werte lassen sich aus z’ ermitteln:
∆z = z' - z

Überblenden der Bildebenen

Neben den bewegten Bildebenen befindet sich im Hintergrund (layer 0) eine statische, bildlose Ebene, deren Farbe über (RGB-) Regler in der Effekt-Ansicht eingestellt werden kann; ein weiterer Regler dient wiederum als Multiplikator (für die RGB-Werte) und ermöglicht damit ein Ein- und Ausblenden.

Bei den Bildebenen ist jeweils der Parameter @blend multiply gesetzt, d.h. sämtliche Pixel-Farbwerte werden mit den dahinterliegenden Ebenen Multipliziert. Im Effekt bedeutet dies:

  • Ist nur die BG-Ebene aktiviert, dient die Multiplikator-Ebene als Ein-/Ausblend- bzw. Farb-Filter.
  • Ist zusätzlich die FG-Ebene (Mask) aktiviert, dient diese als Maske (im Falle einer Graustufen-Grafik) oder als Farbeffekt-Filter (bei farbigen Bildern)

Die FG-Ebene ist ebenfalls noch mit einem Fade-In/-Out Regler versehen, so, dass sie beliebig ein- und ausgeblendet werden kann. Aus Performance-Gründen wurde das zunächst verwendete [jit.alphablend]-Objekt durch ein [jit.gl.pix]-Objekt ersetzt, in dem das Fading programmiert wurde; dies gab eine signifikante Verbesserung der Performance.

Patcher

Das Projekt umfasst sowohl eine Standalone-Version (Max Project) wie auch eine Max4Live Version in Form eines Audio-Effekts.
Bei der M4L Varianten werden Einstellungen (auch Informationen über das geladene Bildmaterial) mit dem Liveset gespeichert

1 Momentan werden nur PNG-Dateien unterstützt