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.

AudioEffectCapture

Наследует: AudioEffect < Resource < RefCounted < Object

Предоставляет доступ к аудиосэмплам с аудиошины в режиме реального времени, позволяя использовать их как данные.

Описание

Копирует все аудиокадры, также известные как «сэмплы» или «аудиосэмплы», из подключенной аудиошины во внутренний кольцевой буфер. Этот эффект не изменяет звук. Может использоваться для хранения аудиоданных в реальном времени для воспроизведения и для создания визуализаций звука в реальном времени, например, осциллографа.

Код приложения должен получать эти аудиокадры из этого кольцевого буфера с помощью get_buffer() и обрабатывать их по мере необходимости, например, для захвата данных из AudioStreamMicrophone, реализации эффектов, определяемых приложением, или для передачи звука по сети. При захвате аудиоданных с микрофона формат сэмплов будет стереофоническим 32-битным PCM с плавающей запятой.

В отличие от AudioEffectRecord, этот эффект возвращает только необработанные аудиосэмплы, а не кодирует их в AudioStream.

Обучающие материалы

Свойства

float

buffer_length

0.1

Методы

bool

can_get_buffer(frames: int) const

void

clear_buffer()

PackedVector2Array

get_buffer(frames: int)

int

get_buffer_length_frames() const

int

get_discarded_frames() const

int

get_frames_available() const

int

get_pushed_frames() const


Описания свойств

float buffer_length = 0.1 🔗

  • void set_buffer_length(value: float)

  • float get_buffer_length()

Длина внутреннего кольцевого буфера в секундах. Большие значения позволяют хранить данные дольше, но требуют больше памяти. Значение может варьироваться от 0,01 до 10.

Примечание: Установка длины буфера не окажет никакого эффекта, если он уже инициализирован.


Описания метода

bool can_get_buffer(frames: int) const 🔗

Возвращает true, если во внутреннем кольцевом буфере доступно для чтения не менее frames сэмплов.


void clear_buffer() 🔗

Очищает внутренний кольцевой буфер.

Примечание: Вызов этого во время захвата может привести к потере сэмплов, что приведет к хлопкам при воспроизведении.


PackedVector2Array get_buffer(frames: int) 🔗

Получает следующие frames сэмплов из внутреннего кольцевого буфера.

Возвращает PackedVector2Array, содержащий ровно frames сэмплов, если они доступны, или пустой PackedVector2Array, если данных недостаточно.

Отсчеты представляют собой знаковые PCM с плавающей запятой в диапазоне от -1 до 1. Вам потребуется масштабировать их, если вы хотите использовать их как 8- или 16-битные целочисленные отсчеты. (v = 0x7fff * samples[0].x)


int get_buffer_length_frames() const 🔗

Возвращает общий размер внутреннего кольцевого буфера в сэмплах.


int get_discarded_frames() const 🔗

Возвращает количество сэмплов, отброшенных с аудиошины из-за переполнения буфера.


int get_frames_available() const 🔗

Возвращает количество сэмплов, доступных для чтения с помощью метода get_buffer().


int get_pushed_frames() const 🔗

Возвращает количество сэмплов, записанных с аудиошины.