Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

AudioStreamGenerator

Успадковує: AudioStream < Resource < RefCounted < Object

Аудіопотік з утилітами для процедурної генерації звуку.

Опис

AudioStreamGenerator – це тип аудіопотоку, який не відтворює звуки самостійно; натомість він очікує, що скрипт згенерує для нього аудіодані. Див. також AudioStreamGeneratorPlayback.

Ось приклад того, як використовувати його для генерації синусоїди:

var playback # Will hold the AudioStreamGeneratorPlayback.
@onready var sample_hz = $AudioStreamPlayer.stream.mix_rate
var pulse_hz = 440.0 # Частота звукової хвилі.
var phase = 0,0

func _ready():
    $AudioStreamPlayer.play()
    play = $AudioStreamPlayer.get_stream_playback()
    fill_buffer()

func fill_buffer():
    var increment = pulse_hz / sample_hz
    var frames_available = playback.get_frames_available()

    for i in range (frames_available):
        playback.push_frame(Vector2.ONE * sin(phase * TAU))
        фаза = fmod(фаза + приріст, 1,0)

У наведеному вище прикладі вузол «AudioStreamPlayer» повинен використовувати AudioStreamGenerator як свій потік. Функція fill_buffer надає аудіодані для апроксимації синусоїди.

Дивіться також AudioEffectSpectrumAnalyzer для виконання спектрального аналізу звуку в реальному часі.

Примітка: через обмеження продуктивності цей клас найкраще використовувати з C# або зі скомпільованої мови через GDExtension. Якщо ви все ще хочете використовувати цей клас із GDScript, подумайте про використання нижчої mix_rate, наприклад 11 025 Гц або 22 050 Гц.

Посібники

Властивості

float

buffer_length

0.5

float

mix_rate

44100.0

AudioStreamGeneratorMixRate

mix_rate_mode

2


Переліки

enum AudioStreamGeneratorMixRate: 🔗

AudioStreamGeneratorMixRate MIX_RATE_OUTPUT = 0

Поточна швидкість змішування вихідного сигналу AudioServer.

AudioStreamGeneratorMixRate MIX_RATE_INPUT = 1

Поточна швидкість змішування вхідного сигналу AudioServer.

AudioStreamGeneratorMixRate MIX_RATE_CUSTOM = 2

Спеціальна швидкість змішування, визначена mix_rate.

AudioStreamGeneratorMixRate MIX_RATE_MAX = 3

Максимальне значення для режиму швидкості змішування enum.


Описи властивостей

float buffer_length = 0.5 🔗

  • void set_buffer_length(value: float)

  • float get_buffer_length()

Довжина буфера для генерації (у секундах). Менші значення призводять до меншої затримки, але вимагають, щоб скрипт генерував аудіодані швидше, що призвело до збільшення використання ЦП і більшого ризику зламу звуку, якщо ЦП не встигає.


float mix_rate = 44100.0 🔗

  • void set_mix_rate(value: float)

  • float get_mix_rate()

Частота дискретизації для використання (у Гц). Вищі значення вимагають від процесора генерувати більше, але це призводить до кращої якості.

В іграх стандартні частоти дискретизації: 11025, 16000, 22050, 32000, 44100 і 48000.

Згідно з теоремою про вибірку Найквіста-Шеннона, якість людського слуху не змінюється при перевищенні 40 000 Гц (оскільки більшість людей чують лише до ~20 000 Гц, часто менше). Якщо ви створюєте низькі звуки, як-от голоси, можна використовувати нижчу частоту дискретизації, наприклад 32000 або 22050 без втрати якості.

Примітка: AudioStreamGenerator не виконує автоматичну повторну дискретизацію вхідних даних, щоб отримати очікуваний результат, mix_rate_mode має відповідати частоті дискретизації вхідних даних.

Примітка: Якщо ви використовуєте AudioEffectCapture як джерело своїх даних, установіть mix_rate_mode на MIX_RATE_INPUT або MIX_RATE_OUTPUT, щоб автоматично відповідати поточній швидкості змішування AudioServer.


AudioStreamGeneratorMixRate mix_rate_mode = 2 🔗

Швидкісний режим змішування. Якщо встановлено значення MIX_RATE_CUSTOM, використовується mix_rate, інакше використовується поточна швидкість змішування AudioServer.