Güterzug neu vertont

  • Beitrags-Kategorie:Audio / Code / Videos
  • Lesedauer:5 min Lesezeit

Auch auf Youtube

Am 31. Januar 2021 ging ich spazieren. Das Wetter war okay, der Wintereinbruch kam erst eine Woche später. Der Wanderweg führte ein Stück entlang der Bahnstrecke Erfurt – Weimar, wo auf bis zu sechs Gleisen Züge aller Art verkehren. Als ich einen sehr langsam nahenden Güterzug sah, positionierte ich mich so, dass die Umgebung zu einer fast grafisch anmutenden Bühne wurde. Mit meinem Smartphone (Samsung S10e) nahm ich den Zug in seiner ganzen Länge mit der Zeitlupenfunktion auf: Die Aufnahme dauerte 30 Sekunden, und bot etwa 5 Minuten Material.

Als ich weiter lief, sinnierte ich darüber, was ich wohl mit der Aufnahme anstellen könnte. Ich stellte mir vor, was wäre, wenn jeder Wagen ein Lautsprecher wäre, der einen Loop abspielt, während sich der Zug bewegt. Je mehr ich darüber nach dachte, desto konkreter waren die dazu nötigen Schritte und ich wollte es als Projekt umsetzen.

Ich bin Anfänger was After Effects angeht, aber auch jahrelang Programmierer. Mir gefällt die Möglichkeit, auf alle animierbaren Parameter ein Script (Expression) legen zu können und damit Berechnungen anzustellen. Es kribbelte wieder in den Fingern.

Angefangen hatte ich mit der Lok. Die sollte irgendwie so elektrisch klingen. So vorwärts ziehend. Mechanisch. Und ich verbrachte dann doch den Abend damit, in Sound Pi an diesem Sound zu feilen: Der “Lokomovorwärts”-Loop:

# Sketch für Sonic Pi
# The Train - Lok-Loop
# Autor: Sven Wachsmuth
use_bpm 124
live_loop :loop0 do
  with_fx :distortion, distort: 0.5 do
    sample :elec_bong
    wait 1
    sample :elec_twang
    wait 1
    sample :elec_wood
    wait 0.5
    sample :elec_wood
    wait 0.5
    sample :elec_cymbal
    wait 1
  end
end
live_loop :lok2 do
  sample :vinyl_hiss, pitch: 24, attack: 2, sustain: 0, release: 2, amp: 2
  wait 4
end

Die Lok ist nicht kaputt, die sollte so klingen. Das heißt, der Sound musste sich mit der Lok bewegen. Im Umkehrschluss bedarf es einer Möglichkeit, stets zu wissen, wo die Lok ist, damit wollte ich die Lautstärke und die Balance ermitteln. In After Effects gibt es sogenannte Null-Objekte, die selbst nicht sichtbar sind, sondern nur Eigenschaften zur Verfügung stellen, wie X- und Y-Koordinate. Der Zug fährt gleichmäßig, so ergibt sich die X-Koordinate grob aus der Zeit im Video mal die Geschwindigkeit in Pixel pro Sekunde. Nach ein paar Anpassungen lag das Null-Objekt stets mittig auf der Lok. Ist die Lok links ist XPos=0, ist sie rechts ist XPos=1920 (Videogröße = 1920×1080 Pixel, rot dargestellt). Im Bild “klebt” das Null-Objekt mitten auf der Lok, seine X-Koordinate habe ich als XPos eingezeichnet.

 

Für die weiteren Berechnungen sind Pixel nicht mehr relevant. Zur Vereinfachung rechnete ich die Pixel-Koordinaten XPos = [0…1920] (rot) in einen Wertebereich x_relative = [-1…+1](blau) mithilfe des Dreisatzes um:

2 / 1920 = (x_relative + 1) / Xpos   | Umstellen nach x_relative

x_relative = 2 * Xpos / 1920 – 1;

In After Effects gibt es die Variable thisComp.width wo immer die Breite der Komposition in Pixeln drin steht. Hier steht also 1920 drin.

Bestimmung der Balance

Ich definierte die Variablen left und right. Die sollen Werte von 0 (keine Dämpfung) bis 1 (maximale Dämpfung) haben. In der Mitte bei x_relative=0 sollen beide 0 sein, also minimale Dämpfung, zum Rand hin soll sich ein Wert zum Maximum (1) bewegen. Die Ermittlung der Formeln dazu war eine Nuss. Aber ich habs geschafft:

left = 1 – ((x_relative < 0) ? 1 : Math.max(0, 1-x_relative));
right = 1 – ((x_relative > 0) ? 1 : Math.max(0,1-Math.abs(x_relative)));

Dämpfung durch Distanz

Die Strecke von Betrachter zu Schiene und die Schiene selbst bilden ein rechtwinkliges T (schwarz). Der Abstand dist des Betrachters von der Lok lässt sich mit dem Phytagoras ermitteln (blau) – ist in der Mitte 1 und wird nach links und rechts größer.

dist = Math.sqrt(x_relative * x_relative + 1);

Aus der Distanz ergibt sich direkt der Dämpfungspegel:

pegel = -20 * Math.log10(dist);

Und da hatte ich alle Zutaten, um den Pegel der Audio-Spur mit Werten für den linken und rechten Kanal zu füttern. Dabei wird von der Dämpfung durch die Distanz noch die Dämpfung pro Kanal abgezogen (Faktor 48 regelt die Itensität des Stereo-Effekts).

pegel_left = pegel – (48 * left);
pegel_right = pegel – (48 * right);

Damit fährt der Sound mit der Lok scheinbar durch das Bild.

Die weiteren Wagons

Die Berechnungen für die Wagen war analog zur Lok: Jeder bekam sein eigenes Null-Objekt “aufgeklebt”, und das lieferte zu jedem Zeitpunkt die Position desselben, so dass diese zeitversetzt durch das Bild wandern und die Audiopegel der einzelnen Soundspuren – jeder Wagon hatte eine eigene – nach oben beschriebener Methode steuern. Als dieses Gerüst stand, konzentrierte ich mich auf die Programmieren weiterer Soundloops mit Sound Pi, die vom Takt zur Lok und nebeneinander gespielt auch zueinander passen. Insgesamt programmierte ich 11 verschiedene Sounds auf 19 Spuren, die am Anfang gleichzeitig starten und beginnend mit der Lok mit der Bewegung des Zuges langsam ineinander übergehen und sich abwechseln. Achja, das Quietschen ist Originalton.

Sicher kann man noch mehr ins Detail gehen und noch die Laufzeitunterschiede zu weiter entfernten Wagons durch die Schallgeschwindigkeit, den Doppler-Effekt und ein gewisses Echo berücksichtigen. Mir ging es hier aber nicht um Realismus, sondern um eine andere Art, die Sounds zu mischen, sozusagen fremdgesteuert durch die Bewegung eines Güterzuges.

Was denkt ihr?

Sven

Sven Wachsmuth wurde 1978 geboren, ist in Emleben bei Gotha aufgewachsen, wohnt seit 2003 in Erfurt. Er experimentiert seit Anfang der 1990er sowohl mit den kreativen Dingen, die man so mit einem Computer anstellen kann als auch mit traditionellen Techniken wie Schreiben, Zeichnen, Fotografie und Modellbau. Inspiration findet er in der Natur und der Geometrie. mehr erfahren

Schreibe einen Kommentar