FmodDSP#

继承: RefCounted < Object

FMOD::DSP 的封装,用于数字信号处理。

描述#

FmodDSP 封装 FMOD Core API 的 DSP(数字信号处理)单元,可用于振荡器、滤波、混响、延迟等音频处理。多个 DSP 单元可以连接成音频处理链。

属性#

bool

active

false

bool

bypass

false

方法#

FmodDSPConnection

add_input_preallocated(target_dsp: FmodDSP, connection: FmodDSPConnection)

FmodDSPConnection

add_input(target_dsp: FmodDSP, type: FmodDSPConnectionType = 0)

Dictionary

get_input(index: int) const

Dictionary

get_output(index: int) const

int

get_num_inputs() const

int

get_num_outputs() const

void

disconnect_all(inputs: bool, outputs: bool)

void

disconnect_from(target: FmodDSP, connection: FmodDSPConnection = null)

void

set_input_channel_format(numchannels: int, speakermode: FmodSpeakerMode)

Dictionary

get_input_channel_format() const

Dictionary

get_output_channel_format(inchannels: int, inspeakermode: FmodSpeakerMode)

Dictionary

get_metering_info() const

void

set_metering_enabled(input_enabled: bool, output_enabled: bool)

Dictionary

get_metering_enabled() const

int

get_data_parameter_index(data_type: FmodDSPParameterDataType) const

int

get_num_parameters() const

void

set_parameter_bool(index: int, value: bool)

bool

get_parameter_bool(index: int) const

void

set_parameter_data(index: int, data: PackedByteArray)

PackedByteArray

get_parameter_data(index: int) const

void

set_parameter_float(index: int, value: float)

float

get_parameter_float(index: int) const

void

set_parameter_int(index: int, value: int)

int

get_parameter_int(index: int) const

Dictionary

get_parameter_info(index: int) const

void

set_active(active: bool)

bool

get_active() const

void

set_bypass(bypass: bool)

bool

get_bypass() const

void

set_wet_dry_mix(prewet: float, postwet: float, dry: float)

Dictionary

get_wet_dry_mix() const

bool

get_idle() const

void

reset()

void

release()

FmodDSPType

get_type() const

Dictionary

get_info() const

Dictionary

get_cpu_usage() const

FmodSystem

get_system_object() const

void

set_create_callback(callback: Callable)

Callable

get_create_callback() const

void

set_release_callback(callback: Callable)

Callable

get_release_callback() const

void

set_reset_callback(callback: Callable)

Callable

get_reset_callback() const

void

set_process_callback(callback: Callable)

Callable

get_process_callback() const

void

set_setposition_callback(callback: Callable)

Callable

get_setposition_callback() const

void

set_setparam_float_callback(callback: Callable)

Callable

get_setparam_float_callback() const

void

set_setparam_int_callback(callback: Callable)

Callable

get_setparam_int_callback() const

void

set_setparam_bool_callback(callback: Callable)

Callable

get_setparam_bool_callback() const

void

set_setparam_data_callback(callback: Callable)

Callable

get_setparam_data_callback() const

void

set_getparam_float_callback(callback: Callable)

Callable

get_getparam_float_callback() const

void

set_getparam_int_callback(callback: Callable)

Callable

get_getparam_int_callback() const

void

set_getparam_bool_callback(callback: Callable)

Callable

get_getparam_bool_callback() const

void

set_getparam_data_callback(callback: Callable)

Callable

get_getparam_data_callback() const


枚举#

enum FmodDSPMode:

FmodDSPMode DSP_MODE_FILTER = 0

处理输入音频。

FmodDSPMode DSP_MODE_GENERATOR = 1

生成音频,无需输入信号。


enum FmodDSPType:

FmodDSPType DSP_TYPE_UNKNOWN = 0

通过第三方插件创建的 DSP,用途未知。

FmodDSPType DSP_TYPE_MIXER = 1

将输入信号混合,不进行额外处理。

FmodDSPType DSP_TYPE_OSCILLATOR = 2

生成正弦波、方波、锯齿波、三角波或噪声。

FmodDSPType DSP_TYPE_LOWPASS = 3

高质量谐振低通滤波器,已弃用。

FmodDSPType DSP_TYPE_ITLOWPASS = 4

Impulse Tracker 使用的谐振低通滤波器,截止频率范围为 0 到 8060 Hz。

FmodDSPType DSP_TYPE_HIGHPASS = 5

谐振高通滤波器,已弃用。

FmodDSPType DSP_TYPE_ECHO = 6

生成回声,并按指定速率衰减。

FmodDSPType DSP_TYPE_FADER = 7

调整声像和音量。

FmodDSPType DSP_TYPE_FLANGE = 8

生成镶边效果。

FmodDSPType DSP_TYPE_DISTORTION = 9

生成失真效果。

FmodDSPType DSP_TYPE_NORMALIZE = 10

将信号归一化或放大到指定电平。

FmodDSPType DSP_TYPE_LIMITER = 11

将音量限制在指定电平内。

FmodDSPType DSP_TYPE_PARAMEQ = 12

衰减或放大指定频段,已弃用。

FmodDSPType DSP_TYPE_PITCHSHIFT = 13

改变音高,保持播放速度。

FmodDSPType DSP_TYPE_CHORUS = 14

生成合唱效果。

FmodDSPType DSP_TYPE_ITECHO = 15

生成回声,并按 Impulse Tracker 使用的速率衰减。

FmodDSPType DSP_TYPE_COMPRESSOR = 16

动态压缩,支持多声道联动或独立处理,作用于全频段。

FmodDSPType DSP_TYPE_SFXREVERB = 17

I3DL2 混响效果。

FmodDSPType DSP_TYPE_LOWPASS_SIMPLE = 18

无谐振的简单低通滤波器,截止频率可调,开销较低。

FmodDSPType DSP_TYPE_DELAY = 19

为各声道设置不同的延迟。

FmodDSPType DSP_TYPE_TREMOLO = 20

生成震音或断续效果。

FmodDSPType DSP_TYPE_SEND = 21

将信号副本发送到 DSP 树中的返回节点。

FmodDSPType DSP_TYPE_RETURN = 22

接收多个发送节点的信号。

FmodDSPType DSP_TYPE_HIGHPASS_SIMPLE = 23

无谐振的简单高通滤波器,截止频率可调,开销较低。

FmodDSPType DSP_TYPE_PAN = 24

在二维或三维空间调整声像,可执行声道扩展或缩减。

FmodDSPType DSP_TYPE_THREE_EQ = 25

三段均衡器。

FmodDSPType DSP_TYPE_FFT = 26

分析信号,通过 getParameter 返回频谱数据。

FmodDSPType DSP_TYPE_LOUDNESS_METER = 27

分析信号响度和真峰值。

FmodDSPType DSP_TYPE_CONVOLUTIONREVERB = 28

卷积混响效果。

FmodDSPType DSP_TYPE_CHANNELMIX = 29

提供逐声道增益、输入声道分组和路由。

FmodDSPType DSP_TYPE_TRANSCEIVER = 30

收发器,可通过最多 32 个槽位发送和接收信号。

FmodDSPType DSP_TYPE_OBJECTPAN = 31

将输入信号传给外部对象混音器,进行空间化处理。

FmodDSPType DSP_TYPE_MULTIBAND_EQ = 32

五段参数均衡器。

FmodDSPType DSP_TYPE_MULTIBAND_DYNAMICS = 33

多频段动态处理器,已弃用。

FmodDSPType DSP_TYPE_MAX = 34

DSP 类型数量上限。

FmodDSPType DSP_TYPE_FORCEINT = 65536

强制 DSP 类型使用整数表示。


enum FmodDSPParameterDataType:

FmodDSPParameterDataType DSP_PARAMETER_DATA_TYPE_USER = 0

用户定义的数据参数类型。

FmodDSPParameterDataType DSP_PARAMETER_DATA_TYPE_OVERALLGAIN = -1

整体增益数据参数类型。

FmodDSPParameterDataType DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES = -2

三维属性数据参数类型。

FmodDSPParameterDataType DSP_PARAMETER_DATA_TYPE_SIDECHAIN = -3

侧链数据参数类型。

FmodDSPParameterDataType DSP_PARAMETER_DATA_TYPE_FFT = -4

FFT 频谱数据参数类型。

FmodDSPParameterDataType DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES_MULTI = -5

多实例三维属性数据参数类型。

FmodDSPParameterDataType DSP_PARAMETER_DATA_TYPE_ATTENUATION_RANGE = -6

衰减范围数据参数类型。

FmodDSPParameterDataType DSP_PARAMETER_DATA_TYPE_DYNAMIC_RESPONSE = -7

动态响应数据参数类型。

FmodDSPParameterDataType DSP_PARAMETER_DATA_TYPE_FINITE_LENGTH = -8

有限长度数据参数类型。


常量#

DSP_COOLDOWN_INFINITE = 4294967295

输入空闲后继续处理。


属性说明#

bool active = false

  • void set_active(active: bool)

  • bool get_active() const

DSP 是否处于激活并处理音频的状态。


bool bypass = false

  • void set_bypass(bypass: bool)

  • bool get_bypass() const

DSP 是否旁通。旁通时输入信号直接输出。


方法说明#

FmodDSPConnection add_input_preallocated(target_dsp: FmodDSP, connection: FmodDSPConnection)

使用 FmodSystem.create_dsp_connection() 创建的连接接入输入。在接入前配置连接的混合电平。返回传入的连接对象。


FmodDSPConnection add_input(target_dsp: FmodDSP, type: FmodDSPConnectionType = 0)

将一个 DSP 单元添加为当前 DSP 的输入,返回连接对象。


Dictionary get_input(index: int) const

返回指定输入索引处的 DSP 和连接,字典包含 input 和 input_connection ;失败时返回空字典。


Dictionary get_output(index: int) const

返回指定输出索引处的 DSP 和连接,字典包含 output 和 output_connection ;失败时返回空字典。


int get_num_inputs() const

返回输入 DSP 连接数。


int get_num_outputs() const

返回输出 DSP 连接数。


void disconnect_all(inputs: bool, outputs: bool)

断开当前 DSP 的所有输入和/或输出连接。


void disconnect_from(target: FmodDSP, connection: FmodDSPConnection = null)

断开当前 DSP 与指定目标 DSP 的连接。


void set_input_channel_format(numchannels: int, speakermode: FmodSpeakerMode)

设置 DSP 处理时接收的 PCM 声道格式。


Dictionary get_input_channel_format() const

返回声道格式字典,包含 num_channels 和 speaker_mode 。


Dictionary get_output_channel_format(inchannels: int, inspeakermode: FmodSpeakerMode)

根据指定输入格式返回输出声道格式,字典包含 out_channels 和 out_speaker_mode 。


Dictionary get_metering_info() const

返回输入和输出的电平计量数据, input 和 output 字典包含峰值和 RMS 电平。


void set_metering_enabled(input_enabled: bool, output_enabled: bool)

启用或关闭输入和输出的电平计量。


Dictionary get_metering_enabled() const

返回输入和输出的电平计量开关,包含 input_enabled 和 output_enabled 。


int get_data_parameter_index(data_type: FmodDSPParameterDataType) const

返回指定数据类型的首个数据参数索引。


int get_num_parameters() const

返回当前 DSP 提供的参数数量。


void set_parameter_bool(index: int, value: bool)

按索引设置布尔参数。


bool get_parameter_bool(index: int) const

按索引读取布尔参数。


void set_parameter_data(index: int, data: PackedByteArray)

按索引设置二进制数据参数。


PackedByteArray get_parameter_data(index: int) const

按索引读取二进制数据参数。


void set_parameter_float(index: int, value: float)

按索引设置浮点参数。


float get_parameter_float(index: int) const

按索引读取浮点参数。


void set_parameter_int(index: int, value: int)

按索引设置整数参数。


int get_parameter_int(index: int) const

按索引读取整数参数。


Dictionary get_parameter_info(index: int) const

返回指定参数的类型、名称、单位标签、说明和值范围。


void set_active(active: bool)

设置 DSP 是否激活并处理音频。


bool get_active() const

返回当前 DSP 是否已激活并正在处理音频。


void set_bypass(bypass: bool)

设置 DSP 是否旁通。


bool get_bypass() const

返回当前 DSP 是否旁通。


void set_wet_dry_mix(prewet: float, postwet: float, dry: float)

设置干湿信号的混合比例。


Dictionary get_wet_dry_mix() const

返回干湿混合比例,字典包含 prewet 、 postwet 和 dry 。


bool get_idle() const

返回当前 DSP 是否空闲,即没有处理可听见的输入。


void reset()

重置 DSP 内部状态,准备接收新的输入信号。


void release()

释放当前对象拥有的 DSP 单元及其内存。通过 DSP 图或通道查询取得的借用句柄不能调用此方法释放。


FmodDSPType get_type() const

返回当前 DSP 的预定义类型。


Dictionary get_info() const

返回 name 、 version 、 channels 和 mode ( FmodDSPMode )。FMOD 2.04 不再返回配置对话框的尺寸。


Dictionary get_cpu_usage() const

返回当前 DSP 的 CPU 用量,包含 exclusive 和 inclusive 。


FmodSystem get_system_object() const

返回所属 FMOD 系统的借用封装,失败时返回 null 。该封装不能关闭或释放系统。


void set_create_callback(callback: Callable)

设置自定义 DSP 的 create 回调。不接收参数,可返回 FMOD 结果码。设置回调不会重新创建 DSP。来自其他线程的通知会延迟到主线程执行,其返回值无法影响已经完成的 FMOD 调用。传入空 Callable 可清除回调。


Callable get_create_callback() const

返回由 set_create_callback() 设置的回调。


void set_release_callback(callback: Callable)

设置自定义 DSP 的 release 回调。不接收参数,可返回 FMOD 结果码。来自其他线程的通知会延迟到主线程执行,其返回值无法影响已经完成的 FMOD 调用。传入空 Callable 可清除回调。


Callable get_release_callback() const

返回由 set_release_callback() 设置的回调。


void set_reset_callback(callback: Callable)

设置自定义 DSP 的 reset 回调。不接收参数,可返回 FMOD 结果码。来自其他线程的通知会延迟到主线程执行,其返回值无法影响已经完成的 FMOD 调用。传入空 Callable 可清除回调。


Callable get_reset_callback() const

返回由 set_reset_callback() 设置的回调。


void set_process_callback(callback: Callable)

设置回调 func(samples: PackedFloat32Array, frames: int, input_channels: int, output_channels: int) -> Dictionary 。采样数据按声道交错排列,生成器接收空输入数组。通过 {"output": samples} 返回输出,长度不足的部分补零。可选的 cooldown (采样帧数)、 bypass 和 silence 用于控制 FMOD 2.04 的 DSP 状态。只有 FMOD 在 Godot 主线程混音时才会执行回调,例如使用 FmodSystem.FMOD_OUTPUT_TYPE_NOSOUND_NRT 。其他线程中,滤波器直接传递输入,生成器输出零。


Callable get_process_callback() const

返回音频处理回调。


void set_setposition_callback(callback: Callable)

设置自定义 DSP 的 setposition 回调。接收 pos: int ,可返回 FMOD 结果码。来自其他线程的通知会延迟到主线程执行,其返回值无法影响已经完成的 FMOD 调用。传入空 Callable 可清除回调。


Callable get_setposition_callback() const

返回由 set_setposition_callback() 设置的回调。


void set_setparam_float_callback(callback: Callable)

设置自定义 DSP 的 setparam_float 回调。接收 index: int 和 value: float ,可返回 FMOD 结果码。来自其他线程的通知会延迟到主线程执行,其返回值无法影响已经完成的 FMOD 调用。传入空 Callable 可清除回调。


Callable get_setparam_float_callback() const

返回由 set_setparam_float_callback() 设置的回调。


void set_setparam_int_callback(callback: Callable)

设置自定义 DSP 的 setparam_int 回调。接收 index: int 和 value: int ,可返回 FMOD 结果码。来自其他线程的通知会延迟到主线程执行,其返回值无法影响已经完成的 FMOD 调用。传入空 Callable 可清除回调。


Callable get_setparam_int_callback() const

返回由 set_setparam_int_callback() 设置的回调。


void set_setparam_bool_callback(callback: Callable)

设置自定义 DSP 的 setparam_bool 回调。接收 index: int 和 value: bool ,可返回 FMOD 结果码。来自其他线程的通知会延迟到主线程执行,其返回值无法影响已经完成的 FMOD 调用。传入空 Callable 可清除回调。


Callable get_setparam_bool_callback() const

返回由 set_setparam_bool_callback() 设置的回调。


void set_setparam_data_callback(callback: Callable)

设置自定义 DSP 的 setparam_data 回调。接收 index: int 和 value: PackedByteArray ,可返回 FMOD 结果码。来自其他线程的通知会延迟到主线程执行,其返回值无法影响已经完成的 FMOD 调用。传入空 Callable 可清除回调。


Callable get_setparam_data_callback() const

返回由 set_setparam_data_callback() 设置的回调。


void set_getparam_float_callback(callback: Callable)

设置自定义 DSP 的 getparam_float 回调。接收 index: int ,返回 Dictionary ,其中包含 value (float),以及可选的 valuestr ( String )和 result (FMOD 结果码)。主线程会同步返回结果;其他线程会延迟调用回调,并立即返回零或空值。传入空 Callable 可清除回调。


Callable get_getparam_float_callback() const

返回由 set_getparam_float_callback() 设置的回调。


void set_getparam_int_callback(callback: Callable)

设置自定义 DSP 的 getparam_int 回调。接收 index: int ,返回 Dictionary ,其中包含 value (int),以及可选的 valuestr ( String )和 result (FMOD 结果码)。主线程会同步返回结果;其他线程会延迟调用回调,并立即返回零或空值。传入空 Callable 可清除回调。


Callable get_getparam_int_callback() const

返回由 set_getparam_int_callback() 设置的回调。


void set_getparam_bool_callback(callback: Callable)

设置自定义 DSP 的 getparam_bool 回调。接收 index: int ,返回 Dictionary ,其中包含 value (bool),以及可选的 valuestr ( String )和 result (FMOD 结果码)。主线程会同步返回结果;其他线程会延迟调用回调,并立即返回零或空值。传入空 Callable 可清除回调。


Callable get_getparam_bool_callback() const

返回由 set_getparam_bool_callback() 设置的回调。


void set_getparam_data_callback(callback: Callable)

设置自定义 DSP 的 getparam_data 回调。接收 index: int ,返回 Dictionary ,其中包含 data (PackedByteArray),以及可选的 valuestr ( String )和 result (FMOD 结果码)。主线程会同步返回结果;其他线程会延迟调用回调,并立即返回零或空值。传入空 Callable 可清除回调。


Callable get_getparam_data_callback() const

返回由 set_getparam_data_callback() 设置的回调。