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.

AudioEffectDistortion

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

Добавляет эффект искажения звука к аудиошине.

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

Описание

Эффект «искажения» изменяет форму волны с помощью нелинейной математической функции (см. доступные в Mode), основанной на амплитуде сэмплов формы волны.

Примечание: В нелинейной функции амплитуда входного сэмпла со значением x будет либо увеличена, либо уменьшена до значения y в зависимости от значения функции в x, поэтому даже при одном и том же drive выходной звук будет меняться в зависимости от громкости входного сигнала. Чтобы изменить громкость, сохраняя при этом форму выходной волны, используйте post_gain.

В этом эффекте каждый тип представляет собой различную нелинейную функцию. Доступны следующие типы: clip, atan, lofi (bitcrush), overdrive и waveshape. Каждый доступный здесь тип искажения симметричен: отрицательные значения амплитуды изменяются так же, как и положительные.

Хотя искажение всегда изменяет частотный состав, обычно за счет введения высоких гармоник, различные типы искажения предлагают широкий диапазон качества звука; от «мягкого» и «теплого» до «хрустящего» и «резкого».

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

Примечание: Хотя обычно это незаметно, включенный эффект искажения все равно меняет звук, даже если drive установлено на 0. Это не ошибка. Если такое поведение нежелательно, рассмотрите возможность отключения эффекта с помощью AudioServer.set_bus_effect_enabled().

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

Свойства

float

drive

0.0

float

keep_hf_hz

16000.0

Mode

mode

0

float

post_gain

0.0

float

pre_gain

0.0


Перечисления

enum Mode: 🔗

Mode MODE_CLIP = 0

Резко выравнивает форму волны на уровне 0 дБ. drive экспоненциально увеличивает амплитуду сэмплов. Этот режим работает как жесткий клиппер, если drive установлено на 0, и является единственным режимом, который обрезает аудиосигналы на уровне 0 дБ.

Mode MODE_ATAN = 1

Плавно выравнивает форму волны, следуя кривой арктангенса. Громкость звука уменьшается, а затем пики выравниваются до PI * 4.0 (линейное значение), если они были нормализованы заранее.

Mode MODE_LOFI = 2

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

Mode MODE_OVERDRIVE = 3

Имитирует тёплые искажения, создаваемые полевым транзистором, который обычно используется в твердотельных усилителях для музыкальных инструментов. drive не оказывает никакого эффекта в этом режиме.

Mode MODE_WAVESHAPE = 4

Сглаживает форму волны до тех пор, пока не достигнет резкого пика при drive = 1, следуя общей абсолютной сигмоидной функции.


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

float drive = 0.0 🔗

Интенсивность искажений. Регулирует степень влияния кривой искажений на входной аудиосигнал, переходя от линейной функции к нелинейной. Значение может варьироваться от 0 до 1.


float keep_hf_hz = 16000.0 🔗

  • void set_keep_hf_hz(value: float)

  • float get_keep_hf_hz()

Фильтр высоких частот, в Гц. Частоты выше этого значения не будут подвержены искажением. Значение может варьироваться от 1 до 20000.


Mode mode = 0 🔗

  • void set_mode(value: Mode)

  • Mode get_mode()

Тип искажения. Изменяет нелинейную функцию, используемую для искажения формы сигнала. См. Mode.


float post_gain = 0.0 🔗

  • void set_post_gain(value: float)

  • float get_post_gain()

Усиление после эффекта, в дБ. Значение может варьироваться от -80 до 24.


float pre_gain = 0.0 🔗

  • void set_pre_gain(value: float)

  • float get_pre_gain()

Усиление до наступления эффекта, в дБ. Значение может варьироваться от -60 до 60.