Chrono in Unreal, Teil 4: Klang ohne eine einzige Audiodatei
Im Projekt gibt es keine Audiodatei. Alles, was man hört, entsteht im Code, in vier Synthesizern, die als Unreal® Synth Komponenten im Audiothread laufen und ihre Parameter jedes Bild vom Spielthread bekommen: Drehzahl und Last, Laufflächengeschwindigkeit und Schlupf pro Rad, Dämpfergeschwindigkeit, Eintauchtiefe, Beschleunigung des Chassis, Motorfaktoren der Drohne. Dieser Teil beschreibt die Rezepte, Quelle für Quelle. Die Reihe: Teil 1 Überblick, Teil 2 Architektur, Teil 3 Fallen, Teil 5 visuelle Effekte, Teil 6 Parasail, Teil 7 Drohne, Teil 8 Licht, Teil 9 Sequenz.
Die Demo, um die es in der Serie geht. Auf YouTube in 1080p ist die Konsole lesbar.
Warum prozedural
Der pragmatische Grund: es gab keine Samples und keine Lizenzfrage, die man am Abend klären wollte. Der bessere Grund: ein Sample weiss nichts von der Physik. Ein Motorsample wird in der Tonhöhe verschoben und klingt bei Last und im Schub gleich. Ein Sandgeräusch aus der Dose läuft, wenn das Auto fährt, und wird nicht rauer, wenn ein Rad durchdreht. Der Synthesizer hängt an den Grössen, die Chrono® ohnehin rechnet, und deshalb passt er zum Bild: das Hoppeln über die Steine ist synchron, weil der Auslöser die Chassisbeschleunigung ist und nicht ein Zufallsgenerator.
Der Preis: alles muss nach Gehör abgestimmt werden, und das Urteil kommt in Sekunden. “Rauschen zu laut”, “die Federung ist viel zu lang”, “es muss ein Reiben sein, kein Klirren”, “Knarren statt Klirren”. Ein Rezept wird als Schichten gebaut, und jede Schicht wird einzeln beurteilt.
Motor
Ein V8 mit Cross Plane Zündfolge: die Zündimpulse folgen dem ungleichmässigen Muster der Kurbelwelle mit 90 Grad Versatz, deshalb der typische Rhythmus statt eines gleichmässigen Brummens. Darunter eine halbe Motorordnung als Drohnenton, darüber eine tanh Sättigung, die mit der Last zunimmt. Drehzahl und Last kommen aus dem Chrono Antriebsstrang, also klingt der Motor im Schub anders als unter Last, und am Begrenzer auf der Düne anders als beim Rollen. Das war die Antwort auf “kriegst du das noch fetter hin” nach zwei Referenzvideos eines H2.
Der Anlasser war das schwierigste Geräusch der ganzen Demo. Ein eigenes Rezept aus Sägezahn, Amplitudenmodulation, Bandpass und einem ersten Zündstoss, sechs Anläufe, und trotzdem klingt er nicht wie ein Anlasser, sondern auf einmal wie ein Startsignal. Aus Zeitgründen haben wir ihn so gelassen. Man muss wissen, wann man aufhört.
Der Motor geht aus, sobald das Fahrzeug im Wasser liegt: ein Stoppereignis, das die Zündfolge über eine halbe Sekunde ausrollen lässt, danach ist der Motor still. Der Rest des Films hat keine Motorspur mehr.
Sand
Sand ist die grösste Quelle und besteht aus drei Schichten:
- Körner im Radkasten: zufällige 2 ms Impulse aus weissem Rauschen, 10 bis 2400 pro Sekunde mit dem Tempo, mehr bei Schlupf und Lenkeinschlag, durch einen Bandpass um 0.9 bis 2 kHz. Das ist das Prasseln, moduliert nach Schlupf und Einschlag, wie der Autor es vorschlug.
- Mahlen: rosa Rauschen unter 220 Hz, in der Amplitude moduliert mit der Profilblockrate, zwölf Blöcke pro Umdrehung, rau statt sinusförmig. Das ist das Reiben, das anfangs ein Klirren war, weil die Modulation zu hoch lag.
- Karosseriedröhnen: braunes Rauschen zwischen 50 und 100 Hz, leicht gesättigt.
Dazu Schlupf Grit zwischen 500 Hz und 3 kHz, das auf der Düne hörbar wird, wenn die Räder durchdrehen, und die Kopfsteine als Klopfen aus den Kontakten, synchron zum Bild. Alle Pegel wurden im Lauf des Tages mehrfach gesenkt. Der erste Sand war zu laut, der zweite zu hell, der dritte zu lang. Die Regel, die sich ergab: erst tiefer, dann leiser, dann kürzer, in dieser Reihenfolge, weil ein zu heller Klang auch bei halbem Pegel noch nervt.

Meer
Die Brandung ist die einzige Quelle ohne Physik dahinter, und sie läuft immer. Rosa Rauschen durch einen Tiefpass, dessen Grenzfrequenz zwischen 200 Hz und 3 kHz und dessen Pegel einem langsamen Zufallsgenerator folgen, Perioden zwischen 29 und 55 Sekunden, mit kubischer Hüllkurve, damit die Welle anschwillt und ausläuft, statt zu pumpen. Der Pegel steigt mit der Nähe zum Wasser.
Die erste Version war ein gleichmässiges Rauschen, und das Urteil kam prompt: “das Meer rauscht nicht konstant, es hat ein tieferes Wellenrauschen, viel leiser, langsamer und stärker moduliert”. Die zweite Version modulierte zu schnell und klang wie ein Pumpen. Die dritte ist geblieben.

Ins Wasser fahren
Hier kommen die meisten Ereignisse zusammen, und hier lohnt sich die Trennung von Flanke und Pegel.

- Wasser pro Rad als Pegel: vier leicht verstimmte Stimmen, jede mit der Eintauchtiefe ihres Rades. Vier Räder im Wasser klingen so nach vier Rädern, nicht nach einer Stimme mit vierfacher Lautstärke. Im Spülsaum mit zwei Rädern im Wasser und zwei auf nassem Sand hört man die Asymmetrie.
- Das Eintauchen als Flanke: ein trockenes Rad wird nass, höchstens alle 0.3 Sekunden pro Rad, mit der Fahrgeschwindigkeit als Stärke. Drei Phasen: Aufprall, Verdrängung, Auslaufen. Beim Sprung vom Steg ins Becken kommen alle vier innerhalb einer halben Sekunde.
- Ein Rad tief unter der Oberfläche macht keine Oberflächengeräusche, so wie es auch keine Gischt wirft. Das Fahrzeug, das mit drehenden Rädern schwimmt, war sonst ein Springbrunnen mit Dauerplatschen.
- Der Motor stoppt mit dem Eintauchen, siehe oben. Danach trägt die Brandung allein.
- Unter Wasser ist es still. Wenn das Fahrzeug am Ende sinkt, blendet der Untergrundsynth mit dem Dach aus, über 60 cm Eintauchtiefe, und die Aufsetzgeräusche sind unter Wasser gesperrt. Das Fahrzeug, das auf dem Beckengrund aufsetzt, hat vorher gerumpelt wie eine Landung nach dem Sprung, weil der Landungsauslöser “alle Räder lange in der Luft, dann Bodenkontakt” das Schwimmen nicht von einem Flug unterscheiden konnte.

Federung und Steine
Das Dämpferzischen ist ein Bandpass zwischen 250 und 600 Hz mit einem Pegel, der quadratisch mit der Dämpfergeschwindigkeit geht. Das Knarren beim Richtungswechsel der Federung ist eine kurze Impulsfolge nach Art eines Scharniers, ausgelöst, wenn das Rad vom Einfedern ins Ausfedern wechselt und die Geschwindigkeit dabei über 0.15 m/s lag. Ein Wumpf bei Landungen zwischen 45 und 70 Hz kommt aus der vertikalen Beschleunigung des Chassis, und harte Schläge einzelner Räder, über 0.9 m/s nach oben, klopfen einzeln. Das Waschbrett ist eine Impulsfolge mit der Wellenrate.
Die Federung war der Klang mit den meisten Korrekturen nach dem Anlasser: zu lang, zu laut, zu hoch, dann ein Klirren statt Reiben, dann Knarren statt Klirren. Das Ohr unterscheidet Metall auf Metall von Metall in Gummi sofort, ein Bandpass nicht.
ABS
Das ABS ist nachgerüstet (Teil 1), und sein Geräusch kommt aus demselben Synthesizer wie der Untergrund. Jeder Wiederanlege-Puls einer Radbremse ist ein Schlag: ein dumpfer Ton bei 75 Hertz mit einem Anteil bei 140, in 40 Millisekunden abklingend, mit einem kurzen Klick aus Rauschen für das Ventil, mindestens 30 Millisekunden Abstand. Solange Pulse kommen, brummt darunter die Pumpe, ein rauer Sägezahn bei 120 Hertz, der eine Viertelsekunde nach dem letzten Puls verklingt. Das ist das Rattern, das man im Auto im Pedal und im Fussraum hört. Ein Bremsenquietschen war die erste Fassung; der Entwickler hat es innerhalb eines Laufs verworfen, denn ein Fahrzeug mit ABS blockiert nicht, es trommelt.
Drohne
Vier leicht verstimmte Sägezähne, einer pro Motor, mit Frequenzabständen von wenigen Hertz, damit die Rotoren gegeneinander schweben. Jeder Oszillator bekommt den Faktor seines Motors aus dem Flugmischer: rollt die Drohne nach rechts, laufen die linken Motoren schneller, und man hört es. Dazu eine kleine Turbulenzschicht, die zunächst zu laut war und als konstantes Rauschen empfunden wurde, jetzt kaum hörbar. Der Pegel fällt mit der Entfernung zum Fahrzeug, denn das Ohr sitzt im Auto, mit einem Panorama aus der Richtung und einem Doppler aus der Relativgeschwindigkeit. Eine Drohne weit weg ist nicht hörbar, und das ist richtig so. Am Ende, wenn sie über die Düne zum Startpunkt fliegt, verschwindet sie auch aus dem Ton.

Aussenborder
Das Boot hat einen eigenen Synthesizer, denn ein Aussenborder klingt nicht wie ein V8. Das Rezept: ein V6 Viertakter, Leerlauf 1300, Vollgas 5600 Umdrehungen, die Drehzahl folgt dem Gashebel in 0.3 Sekunden. Die Zündimpulse als Pulsfolge mit 30 Prozent Tastgrad, dazu ein Sägezahn für das mechanische Sirren; das ist der Motorradton, den der Entwickler nach der ersten Version hörte, “das tönt bei Speed wie ein Motorrad”, und der bei einem schnellen Aussenborder stimmt. Der Auspuff als resonanter Tiefpass, dessen Grenzfrequenz mit der Drehzahl zwischen 900 und 2000 Hz läuft, mit einer Güte um 1.6. Ein Rasseln aus den hochpassgefilterten Pulsflanken über 2.5 kHz, mehr mit Gas. Ein Blubbern des Auspuffs im Wasser unter 160 Hz, von den Pulsen getastet, am lautesten im Leerlauf. Der Rumpf schlägt mit 1.4 Hz über die Wellen, der Propeller entlastet dabei, und die Drehzahl flackert um einige Prozent, was den Klang vom Motor auf dem Prüfstand zum Motor auf dem Wasser macht. Kein Anlasser: “das Starten muss nicht nachbauen”.
Die Ohren wandern. Solange das Fahrzeug fährt, sitzt der Hörer im Auto, und das Boot ist nur zu hören, wenn es nahe kommt, mit Doppler aus der Radialgeschwindigkeit, wie der Entwickler es verlangt hat. Sobald das Fahrzeug gesunken ist, sitzen die Ohren beim Piloten am Schirm. Von dort hört man vom Boot nur den Motor, 30 Meter tiefer und 50 Meter voraus, keine Gischt und kein Kielwasser, und dazu den Wind in den eigenen Ohren, rosa Rauschen unter 500 Hz mit der Anströmgeschwindigkeit und das Flattern der Kappe bei 6 Hz. Die erste Version hatte Gischt und Kielwasser dazugemischt, und das Urteil war “das hört man vom Paraglider nicht, man hört nur den Motor”.
Was sich bewährt hat
- Jede Schicht hängt an einer Grösse, die es wirklich gibt. Kein Zufallsgenerator ohne physikalische Steuerung, ausser der Brandung, die keine Physik hat.
- Ereignisse sind Flanken, Zustände sind Pegel. Ein Wassereintritt ist eine Flanke, die Eintauchtiefe ein Pegel, und beides braucht seine eigene Schicht.
- Pro Rad rechnen, wenn es pro Rad passiert.
- Die Abstimmung braucht Ohren, die live dabei sind. Ein Rezept aus dem Netz ist ein Startpunkt, das Urteil “tiefer, leiser, kürzer” kommt vom Zuhörer, und es kommt schnell.
- Der Audiothread darf nicht warten. Alle Parameter gehen atomar hinüber, geglättet im Synth, ohne Sperren.
Was fehlt: ein Reifen auf nassem Sand klingt anders als auf trockenem, und das Modell weiss den Unterschied, nutzt ihn aber noch nicht. Ein Wind, der mit der Fahrgeschwindigkeit zunimmt. Ein Anlasser, der wie einer klingt. Die Drohne ist inzwischen ein Chrono Körper, und ihre vier Oszillatoren folgen den Rotordrehzahlen, die der Regler aus Schub und Momenten mischt, Teil 7.
Was das Bild zu diesem Klang beisteuert, Spuren im Sand, Gischt neben den Reifen und Tropfen an der Scheibe, steht in Teil 5.
Schlüsselwörter: prozeduraler Sound Unreal Engine, Synth Component, Motorsound Synthese V8, Sandgeräusch prozedural, Brandung Synthese, Wassereintritt Sound, Drohnen Sound Rotoren, Fahrzeugsimulation Klang, Serious Gaming, Simulation Beratung Schweiz, swissEmbedded
Klang, der an der Physik hängt? Wir bauen Klangmodelle, die aus Simulationsgrössen entstehen und mit dem Bild synchron bleiben, für Simulatoren, Prüfstände und Demonstratoren.
Unreal® und Unreal Engine® sind Marken oder eingetragene Marken von Epic Games, Inc. in den USA und anderswo; diese Artikel sind von Epic Games weder unterstützt noch geprüft. Project Chrono ist ein Open-Source-Projekt der University of Wisconsin-Madison und des Politecnico di Milano unter BSD-3-Lizenz.