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.

AudioServer

Успадковує: Object

Інтерфейс сервера для низькорівневого аудіодоступу.

Опис

AudioServer — це низькорівневий інтерфейс сервера для доступу до аудіо. Він відповідає за створення зразків даних (аудіо, які можна відтворити), а також за їх відтворення через голосовий інтерфейс.

Посібники

Властивості

int

bus_count

1

String

input_device

"Default"

String

output_device

"Default"

float

playback_speed_scale

1.0

Методи

void

add_bus(at_position: int = -1)

void

add_bus_effect(bus_idx: int, effect: AudioEffect, at_position: int = -1)

AudioBusLayout

generate_bus_layout() const

int

get_bus_channels(bus_idx: int) const

AudioEffect

get_bus_effect(bus_idx: int, effect_idx: int)

int

get_bus_effect_count(bus_idx: int)

AudioEffectInstance

get_bus_effect_instance(bus_idx: int, effect_idx: int, channel: int = 0)

int

get_bus_index(bus_name: StringName) const

String

get_bus_name(bus_idx: int) const

float

get_bus_peak_volume_left_db(bus_idx: int, channel: int) const

float

get_bus_peak_volume_right_db(bus_idx: int, channel: int) const

StringName

get_bus_send(bus_idx: int) const

float

get_bus_volume_db(bus_idx: int) const

float

get_bus_volume_linear(bus_idx: int) const

String

get_driver_name() const

int

get_input_buffer_length_frames()

PackedStringArray

get_input_device_list()

PackedVector2Array

get_input_frames(frames: int)

int

get_input_frames_available()

float

get_input_mix_rate() const

float

get_mix_rate() const

PackedStringArray

get_output_device_list()

float

get_output_latency() const

SpeakerMode

get_speaker_mode() const

float

get_time_since_last_mix() const

float

get_time_to_next_mix() const

bool

is_bus_bypassing_effects(bus_idx: int) const

bool

is_bus_effect_enabled(bus_idx: int, effect_idx: int) const

bool

is_bus_mute(bus_idx: int) const

bool

is_bus_solo(bus_idx: int) const

bool

is_stream_registered_as_sample(stream: AudioStream)

void

lock()

void

move_bus(index: int, to_index: int)

void

register_stream_as_sample(stream: AudioStream)

void

remove_bus(index: int)

void

remove_bus_effect(bus_idx: int, effect_idx: int)

void

set_bus_bypass_effects(bus_idx: int, enable: bool)

void

set_bus_effect_enabled(bus_idx: int, effect_idx: int, enabled: bool)

void

set_bus_layout(bus_layout: AudioBusLayout)

void

set_bus_mute(bus_idx: int, enable: bool)

void

set_bus_name(bus_idx: int, name: String)

void

set_bus_send(bus_idx: int, send: StringName)

void

set_bus_solo(bus_idx: int, enable: bool)

void

set_bus_volume_db(bus_idx: int, volume_db: float)

void

set_bus_volume_linear(bus_idx: int, volume_linear: float)

void

set_enable_tagging_used_audio_streams(enable: bool)

Error

set_input_device_active(active: bool)

void

swap_bus_effects(bus_idx: int, effect_idx: int, by_effect_idx: int)

void

unlock()


Сигнали

bus_layout_changed() 🔗

Видається, коли аудіошина додається, видаляється або переміщується.


bus_renamed(bus_index: int, old_name: StringName, new_name: StringName) 🔗

Видається, коли аудіошина в bus_index перейменовується з old_name на new_name.


Переліки

enum SpeakerMode: 🔗

SpeakerMode SPEAKER_MODE_STEREO = 0

Виявлено два або менше динаміків.

SpeakerMode SPEAKER_SURROUND_31 = 1

Було виявлено налаштування 3.1-канального об’ємного звуку.

SpeakerMode SPEAKER_SURROUND_51 = 2

Виявлено налаштування 5.1-канального об’ємного звуку.

SpeakerMode SPEAKER_SURROUND_71 = 3

Було виявлено налаштування об’ємного звуку 7.1.


enum PlaybackType: 🔗

PlaybackType PLAYBACK_TYPE_DEFAULT = 0

Експериментальний: Ця константа може бути змінена або усунута у наступних версіях.

Відтворення вважатиметься типом, оголошеним у ProjectSettings.audio/general/default_playback_type.

PlaybackType PLAYBACK_TYPE_STREAM = 1

Експериментальний: Ця константа може бути змінена або усунута у наступних версіях.

Примусово розглядати відтворення як потік.

PlaybackType PLAYBACK_TYPE_SAMPLE = 2

Експериментальний: Ця константа може бути змінена або усунута у наступних версіях.

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

Примітка: наразі підтримується лише на веб-платформі.

Примітка: AudioEffect не підтримуються, якщо відтворення розглядається як семпл.

PlaybackType PLAYBACK_TYPE_MAX = 3

Експериментальний: Ця константа може бути змінена або усунута у наступних версіях.

Представляє розмір переліку PlaybackType.


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

int bus_count = 1 🔗

  • void set_bus_count(value: int)

  • int get_bus_count()

Кількість доступних аудіо шин.


String input_device = "Default" 🔗

  • void set_input_device(value: String)

  • String get_input_device()

Назва поточного пристрою для аудіовходу (див. get_input_device_list()). У системах із декількома аудіовходами (такими як аналоговий, аудіо USB та HDMI) це можна використовувати для вибору пристрою введення аудіо. Значення "За замовчуванням" записуватиме аудіо на загальносистемний аудіовхід за замовчуванням. Якщо встановлено недійсне ім’я пристрою, значення буде повернено до "Default".

Примітка: ProjectSettings.audio/driver/enable_input має мати значення true, щоб аудіовхід працював. Перегляньте також опис цього параметра, щоб дізнатися про застереження щодо дозволів і налаштувань конфіденційності операційної системи.


String output_device = "Default" 🔗

  • void set_output_device(value: String)

  • String get_output_device()

Назва поточного пристрою для виведення аудіо (див. get_output_device_list()). У системах із декількома аудіовиходами (такими як аналоговий, аудіо USB та HDMI) це можна використовувати для вибору пристрою аудіовиходу. Значення "Default" відтворюватиме аудіо на загальносистемному аудіовиході за замовчуванням. Якщо встановлено недійсне ім’я пристрою, значення буде повернено до "Default".


float playback_speed_scale = 1.0 🔗

  • void set_playback_speed_scale(value: float)

  • float get_playback_speed_scale()

Масштабує швидкість відтворення аудіо (тобто, встановивши значення 0,5, аудіо відтворюватиметься з половинною швидкістю). Перегляньте також Engine.time_scale, щоб вплинути на загальну швидкість симуляції, яка не залежить від playback_speed_scale.


Описи методів

void add_bus(at_position: int = -1) 🔗

Додає шину в at_position.


void add_bus_effect(bus_idx: int, effect: AudioEffect, at_position: int = -1) 🔗

Додає ефект AudioEffect до шини bus_idx у at_position.


AudioBusLayout generate_bus_layout() const 🔗

Створює AudioBusLayout за допомогою доступних шин і ефектів.


int get_bus_channels(bus_idx: int) const 🔗

Повертає кількість каналів шини за індексом bus_idx.


AudioEffect get_bus_effect(bus_idx: int, effect_idx: int) 🔗

Повертає AudioEffect у позиції effect_idx у шині bus_idx.


int get_bus_effect_count(bus_idx: int) 🔗

Повертає кількість ефектів на шині в bus_idx.


AudioEffectInstance get_bus_effect_instance(bus_idx: int, effect_idx: int, channel: int = 0) 🔗

Повертає AudioEffectInstance, призначений вказаній шині та індексам ефекту (і додатково каналу).


int get_bus_index(bus_name: StringName) const 🔗

Повертає індекс шини з назвою bus_name. Повертає -1, якщо не існує шини з вказаною назвою.


String get_bus_name(bus_idx: int) const 🔗

Повертає назву шини з індексом bus_idx.


float get_bus_peak_volume_left_db(bus_idx: int, channel: int) const 🔗

Повертає пікову гучність лівого динаміка в індексі шини bus_idx та індексі каналу channel.


float get_bus_peak_volume_right_db(bus_idx: int, channel: int) const 🔗

Повертає пікову гучність правого динаміка в індексі шини bus_idx та індексі каналу channel.


StringName get_bus_send(bus_idx: int) const 🔗

Повертає назву шини, на яку надсилає шина з індексом bus_idx.


float get_bus_volume_db(bus_idx: int) const 🔗

Повертає гучність шини за індексом bus_idx у дБ.


float get_bus_volume_linear(bus_idx: int) const 🔗

Повертає гучність шини за індексом bus_idx як лінійне значення.

Примітка: Повернене значення еквівалентно результату @GlobalScope.db_to_linear() щодо результату get_bus_volume_db().


String get_driver_name() const 🔗

Повертає назву поточного звукового драйвера. Значення за замовчуванням зазвичай залежить від операційної системи, але його можна змінити за допомогою аргументу командного рядка --audio-driver. --headless також автоматично встановлює аудіодрайвер на Dummy. Дивіться також ProjectSettings.audio/driver/driver.


int get_input_buffer_length_frames() 🔗

Експериментальний: Цей метод може бути змінений або усунутий у наступних версіях.

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


PackedStringArray get_input_device_list() 🔗

Повертає назви всіх пристроїв аудіовведення, виявлених у системі.

Примітка: ProjectSettings.audio/driver/enable_input має мати значення true, щоб аудіовхід працював. Перегляньте також опис цього параметра, щоб дізнатися про застереження щодо дозволів і налаштувань конфіденційності операційної системи.


PackedVector2Array get_input_frames(frames: int) 🔗

Експериментальний: Цей метод може бути змінений або усунутий у наступних версіях.

Повертає PackedVector2Array, що містить рівно frames аудіосемплів з внутрішнього буфера мікрофона, якщо доступно, інакше повертає порожній PackedVector2Array.

Буфер заповнюється зі швидкістю get_input_mix_rate() кадрів на секунду, коли set_input_device_active() успішно встановлено на true.

Семпли – це значення PCM зі знаком у діапазоні від -1 до 1.


int get_input_frames_available() 🔗

Експериментальний: Цей метод може бути змінений або усунутий у наступних версіях.

Повертає кількість фреймів, доступних для зчитування за допомогою get_input_frames().


float get_input_mix_rate() const 🔗

Повертає частоту дискретизації на вході AudioServer.


float get_mix_rate() const 🔗

Повертає частоту дискретизації на виході AudioServer.


PackedStringArray get_output_device_list() 🔗

Повертає назви всіх пристроїв аудіовиведення, виявлених у системі.


float get_output_latency() const 🔗

Повертає ефективну вихідну затримку звукового драйвера. Це базується на ProjectSettings.audio/driver/output_latency, але точне повернуте значення буде відрізнятися залежно від операційної системи та аудіодрайвера.

Примітка: Це може бути дорогим; не рекомендується викликати get_output_latency() кожного кадру.


SpeakerMode get_speaker_mode() const 🔗

Повертає конфігурацію динаміка.


float get_time_since_last_mix() const 🔗

Returns the relative time since the last mix occurred, in seconds.


float get_time_to_next_mix() const 🔗

Returns the relative time until the next mix occurs, in seconds.


bool is_bus_bypassing_effects(bus_idx: int) const 🔗

Якщо true, автобус в індексі bus_idx є охоплюючий ефект.


bool is_bus_effect_enabled(bus_idx: int, effect_idx: int) const 🔗

Якщо true, ефект за індексом effect_idx на шині за індексом bus_idx увімкнено.


bool is_bus_mute(bus_idx: int) const 🔗

Якщо true, автобус в індексі bus_idx приглушений.


bool is_bus_solo(bus_idx: int) const 🔗

Якщо true, автобус в індексі bus_idx знаходиться в сольному режимі.


bool is_stream_registered_as_sample(stream: AudioStream) 🔗

Експериментальний: Цей метод може бути змінений або усунутий у наступних версіях.

Якщо true, потік реєструється як зразок. Двигуну не доведеться реєструвати його перед відтворенням зразка.

Якщо false, потік потрібно буде зареєструвати перед його відтворенням. Щоб запобігти стрибкам затримки, зареєструйте потік як вибірку за допомогою register_stream_as_sample().


void lock() 🔗

Блокує основний цикл аудіодрайвера.

Примітка: не забудьте розблокувати його після цього.


void move_bus(index: int, to_index: int) 🔗

Переміщує шину від індексу index до індексу to_index.


void register_stream_as_sample(stream: AudioStream) 🔗

Експериментальний: Цей метод може бути змінений або усунутий у наступних версіях.

Примусово реєструє потік як вибірку.

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


void remove_bus(index: int) 🔗

Видаляє шину за індексом index.


void remove_bus_effect(bus_idx: int, effect_idx: int) 🔗

Видаляє ефект за індексом effect_idx із шини за індексом bus_idx.


void set_bus_bypass_effects(bus_idx: int, enable: bool) 🔗

Якщо true, автобус в індексі bus_idx є охоплюючий ефект.


void set_bus_effect_enabled(bus_idx: int, effect_idx: int, enabled: bool) 🔗

Якщо true, ефект за індексом effect_idx на шині за індексом bus_idx увімкнено.


void set_bus_layout(bus_layout: AudioBusLayout) 🔗

Перезаписує поточний AudioBusLayout.


void set_bus_mute(bus_idx: int, enable: bool) 🔗

Якщо true, автобус в індексі bus_idx приглушений.


void set_bus_name(bus_idx: int, name: String) 🔗

Встановлює назву шини за індексом bus_idx на name.


void set_bus_send(bus_idx: int, send: StringName) 🔗

Підключає вихід шини bus_idx до шини з назвою send.


void set_bus_solo(bus_idx: int, enable: bool) 🔗

Якщо true, автобус в індексі bus_idx знаходиться в сольному режимі.


void set_bus_volume_db(bus_idx: int, volume_db: float) 🔗

Встановлює гучність шини за індексом bus_idx на volume_db.


void set_bus_volume_linear(bus_idx: int, volume_linear: float) 🔗

Встановлює гучність як лінійне значення шини за індексом bus_idx до volume_linear.

Примітка. Використання цього методу еквівалентно виклику set_bus_volume_db() із результатом @GlobalScope.linear_to_db() для значення.


void set_enable_tagging_used_audio_streams(enable: bool) 🔗

Якщо встановлено значення true, усі екземпляри AudioStreamPlayback викликатимуть AudioStreamPlayback._tag_used_streams() на кожному кроці мікшування.

Примітка: це ввімкнено за умовчанням у редакторі, оскільки воно використовується плагінами редактора для попереднього перегляду аудіопотоку.


Error set_input_device_active(active: bool) 🔗

Експериментальний: Цей метод може бути змінений або усунутий у наступних версіях.

Якщо active має значення true, запускає вхідний потік мікрофона, визначений параметром input_device, або повертає помилку, якщо він не спрацював.

Якщо active має значення false, зупиняє вхідний потік, якщо він запущений.


void swap_bus_effects(bus_idx: int, effect_idx: int, by_effect_idx: int) 🔗

Міняє місцями положення двох ефектів у шині bus_idx.


void unlock() 🔗

Розблоковує основний цикл аудіодрайвера. (Після блокування його слід завжди розблокувати.)