AudioServer
Наследует: Object
Серверный интерфейс для низкоуровневого доступа к звуку.
Описание
AudioServer — это низкоуровневый серверный интерфейс для доступа к аудио. Он отвечает за создание сэмплов данных (воспроизводимого аудио), а также за их воспроизведение через голосовой интерфейс.
Обучающие материалы
Свойства
|
||
|
||
|
||
|
Методы
Сигналы
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.
Описания свойств
Количество доступных аудиошин.
String input_device = "Default" 🔗
Имя текущего устройства для аудиовхода (см. get_input_device_list()). В системах с несколькими аудиовходами (например, аналоговыми, USB и HDMI аудио) это можно использовать для выбора устройства аудиовхода. Значение "Default" будет записывать звук на общесистемном аудиовходе по умолчанию. Если задано недопустимое имя устройства, значение будет возвращено к "Default".
Примечание: ProjectSettings.audio/driver/enable_input должно быть true для работы аудиовхода. См. также описание этого параметра для предостережений, связанных с разрешениями и настройками конфиденциальности операционной системы.
String output_device = "Default" 🔗
Имя текущего устройства для аудиовыхода (см. get_output_device_list()). В системах с несколькими аудиовыходами (например, аналоговым, USB и HDMI аудио) это можно использовать для выбора устройства аудиовыхода. Значение "Default" будет воспроизводить звук на общесистемном аудиовыходе по умолчанию. Если задано недопустимое имя устройства, значение будет возвращено к "Default".
float playback_speed_scale = 1.0 🔗
Масштабирует скорость воспроизведения звука (например, если установить его на 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.
Возвращает частоту дискретизации на выходе 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 🔗
Возвращает относительное время с момента последнего смешивания.
float get_time_to_next_mix() const 🔗
Возвращает относительное время до следующего микширования.
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) 🔗
Экспериментальное: Этот метод может быть изменён или удалён в будущих версиях.
Принудительно регистрирует поток как образец.
Примечание: При вызове этого метода могут возникать скачки задержки, особенно в однопоточных сборках. Рекомендуется вызывать этот метод во время загрузки ресурсов, где скачок задержки может быть замаскирован, вместо регистрации образца непосредственно перед его воспроизведением.
Удаляет шину с индексом 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() 🔗
Разблокирует основной цикл аудиодрайвера. (После блокировки его всегда следует разблокировать.)