Audio streams

Einführung

As you might have already read in Audiobusse, sound is sent to each bus via an AudioStreamPlayer node. There are different kinds of AudioStreamPlayers. Each one loads an AudioStream and plays it back.

AudioStream

An audio stream is an abstract object that emits sound. The sound can come from many places, but is most commonly loaded from the filesystem. Audio files such as WAV (.wav) or Ogg Vorbis (.ogg) can be loaded as AudioStreams and placed inside an AudioStreamPlayer.

Here is a comparison of the two file types to help you choose the one that fits your use case best:

  • WAV files are quite large, but use little CPU power to play back. Hundreds of them can be played simultaneously with little impact on performance. This format is usually best for short sound effects.
  • Ogg Vorbis files are much smaller, but use considerably more CPU power to play back, so only a few can be played back at once (especially on mobile). This format works well for music, long sound effect sequences, and voice at relatively low bitrates.

Keep in mind that while WAV files may contain looping information in their metadata, Ogg Vorbis files do not. If looping an Ogg Vorbis file is desired, it must be set up using the import options:

../../_images/audio_stream_import1.png

There are other types of AudioStreamPlayer, such as AudioStreamRandomPitch. This one makes a random adjustment to the sound's pitch every time it's played back. This can be helpful for adding variation to sounds that are played back often.

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 allows for 3D audio streams that enter a specific Area node to send dry and wet audio to separate buses. This is useful when you have several reverb configurations for different types of rooms. This is done by enabling this type of reverb in the Reverb Bus section of the Area's properties:

../../_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.