Audio streams

Einführung

Wie Sie vielleicht bereits in Audiobusse gelesen haben, wird der Ton über einen AudioStreamPlayer-Node an jeden Bus gesendet. Es gibt verschiedene Arten von AudioStreamPlayern. Jeder lädt einen AudioStream und spielt ihn ab.

AudioStream

Ein Audiostream ist ein abstraktes Objekt, das Ton aussendet. Der Sound kann von vielen Stellen kommen, wird jedoch am häufigsten aus dem Dateisystem geladen. Audiodateien wie WAV (.wav) oder Ogg Vorbis (.ogg) können als AudioStreams geladen und in einem AudioStreamPlayer abgelegt werden.

Hier ist ein Vergleich der beiden Dateitypen, damit Sie den für Ihren Anwendungsfall am besten geeigneten auswählen können:

  • WAV-Dateien sind ziemlich groß, verbrauchen jedoch wenig CPU-Leistung für die Wiedergabe. Hunderte von ihnen können gleichzeitig gespielt werden, ohne die Leistung zu beeinträchtigen. Dieses Format eignet sich normalerweise am besten für kurze Soundeffekte.
  • Ogg Vorbis-Dateien sind viel kleiner, verbrauchen jedoch erheblich mehr CPU-Leistung für die Wiedergabe, sodass nur wenige gleichzeitig wiedergegeben werden können (insbesondere auf Mobilgeräten). Dieses Format eignet sich gut für Musik, lange Soundeffektsequenzen und Sprache mit relativ niedrigen Bitraten.

Beachten Sie, dass WAV-Dateien möglicherweise Schleifeninformationen in ihren Metadaten enthalten, Ogg Vorbis-Dateien jedoch nicht. Wenn eine Ogg Vorbis-Datei geloopt werden soll, muss dies mithilfe der Importoptionen eingerichtet werden:

../../_images/audio_stream_import1.png

Es gibt andere Arten von AudioStreamPlayer, z.B. AudioStreamRandomPitch. Dieser nimmt bei jeder Wiedergabe eine zufällige Anpassung der Tonhöhe vor. Dies kann hilfreich sein, um häufig wiedergegebenen Sounds Variationen hinzuzufügen.

AudioStreamPlayer

Dies ist der Standard-Stream-Player ohne Position, der zu jedem Bus gespielt werden kann. In 5.1-Sound-Setups kann Audio an Stereomix oder Frontlautsprecher gesendet werden.

AudioStreamPlayer2D

Dies ist eine Variante von AudioStreamPlayer, gibt jedoch Ton in einer 2D Positionsumgebung aus. Wenn Sie sich links vom Bildschirm befinden, wird nach links geschwenkt, in der Nähe der rechten Seite dementsprechend nach rechts.

Bemerkung

Area2Ds können verwendet werden, um Sound von allen AudioStreamPlayer2Ds die sie enthalten, auf bestimmte Busse umzuleiten. Auf diese Weise können Busse mit unterschiedlichen Hall- oder Klangqualitäten erstellt werden, um die Aktionen in bestimmten Teilen Ihrer Spielwelt zu bewältigen.

../../_images/audio_stream_2d_area.png

AudioStreamPlayer3D

Dies ist eine Variante von AudioStreamPlayer, gibt jedoch Ton in einer 3D-Positionsumgebung aus. Abhängig von der Position des Spielers relativ zum Bildschirm kann der Ton je nach gewähltem Audio-Setup in Stereo, 5.1 oder 7.1 positioniert werden.

Ähnlich wie bei AudioStreamPlayer2D kann ein Bereich den Ton auf einen Audiobus umleiten.

../../_images/audio_stream_3d_area.png

Im Gegensatz zu 2D bietet die 3D Version von AudioStreamPlayer einige erweiterte Optionen:

Reverb Busse (Hall-Effekt)

Godot ermöglicht 3D Audiostreams, die in einen bestimmten Bereichs-Node eintreten, um unverarbeitetes (dry) und verarbeitetes (wet) Audio an separate Busse zu senden. Dies ist nützlich, wenn Sie mehrere Hallkonfigurationen für verschiedene Raumtypen haben. Dies erfolgt durch Aktivieren dieser Art von Hall im Abschnitt Reverb Bus der Eigenschaften des Bereichs:

../../_images/audio_stream_reverb_bus.png

Gleichzeitig wird ein spezielles Buslayout erstellt, in dem jeder Bereich die Hall-Informationen von jedem Bereich empfängt. In jedem Reverb-Bus muss ein Hall-Effekt erstellt und konfiguriert werden, um das Setup für den gewünschten Effekt abzuschließen:

../../_images/audio_stream_reverb_bus2.png

Der Abschnitt Reverb Bus des Bereichs enthält auch einen Parameter mit dem Namen Uniformity. Einige Arten von Räumen prallen stärker ab als andere (wie ein Lagerhaus), sodass der Nachhall fast gleichmäßig im gesamten Raum zu hören ist, auch wenn die Quelle möglicherweise weit entfernt ist. Das Herumspielen mit diesem Parameter kann diesen Effekt simulieren.

Doppler

Wenn sich die Relativgeschwindigkeit zwischen einem Sender und einem Hörer ändert, wird dies als Zunahme oder Abnahme der Tonhöhe des emittierten Tons wahrgenommen. Godot kann Geschwindigkeitsänderungen in dem AudioStreamPlayer3D Node und Camera Nodeverfolgen. Beide Nodes haben diese Eigenschaft, die manuell aktiviert werden muss:

../../_images/audio_stream_doppler.png

Aktivieren Sie es abhängig davon wie Objekte verschoben werden: verwenden Sie Leerlauf für Objekte, die mit _process verschoben wurden, oder Physik für Objekte, die mit _physics_process verschoben wurden. Die Verfolgung erfolgt automatisch.