混合器 API#
FmodAudioBus#
继承自: RefCounted
表示一个用于混音的音频总线,支持效果处理
描述#
FmodAudioBus 表示 FMOD 音频系统中的音频混音总线。每个总线都有自己的 FmodChannelGroup 用于音频路由,并且可以应用多个 FmodAudioEffect
总线由 FmodAudioBusLayout 管理的层级结构组织。主总线是该层级的根,所有其他总线最终通过它进行路由
使用总线可以:
将音频组织成逻辑分类(音乐、音效、对话等)
对一组声音应用效果
控制整个音频类别的音量和路由
实现混音的独奏/静音功能
属性#
方法#
void init_bus(name: String, parent: FmodChannelGroup = null)#
使用指定名称和可选父通道组初始化总线
如果名称为 "Master",会直接使用 FMOD 主通道组作为总线;否则会创建新的 FmodChannelGroup 并连接到父通道组
void set_parent(parent: FmodChannelGroup)#
设置此总线输出到的父通道组
如果未提供父通道组,则连接到 FMOD 主通道组
FmodChannelGroup get_bus() const#
返回此总线用于音频路由的 FmodChannelGroup
如果总线尚未初始化,则返回 null
FmodChannelGroup get_parent() const#
返回此总线输出到的父 FmodChannelGroup
对于主总线返回 null
String get_bus_name() const#
返回此音频总线的名称
void add_effect(effect: FmodAudioEffect, index: int = 0)#
向此总线添加一个音频效果,并将效果应用到内部通道组
当前实现会将效果追加到效果列表中;如果总线已启用 bypass,添加后会立即同步旁路状态
void remove_effect(index: int)#
从此总线中移除指定索引处的音频效果
移除时会先将效果从内部通道组上解除
FmodAudioEffect get_effect(index: int) const#
返回效果链中指定索引处的 FmodAudioEffect
如果索引超出范围,则返回 null
void set_volume_db(volume_db: float)#
设置总线音量,单位为分贝
float get_volume_db() const#
返回总线音量,单位为分贝
如果总线尚未初始化,则返回 0.0
void set_solo(solo: bool)#
设置总线的独奏状态
独奏状态需要由 FmodAudioBusLayout 统一计算并应用到各总线的静音状态
bool is_solo() const#
如果此总线处于独奏状态,则返回 true
void set_mute(mute: bool)#
设置用户静音状态
此方法只记录用户设置,实际 FMOD 静音状态由 apply_mute() 应用
bool is_mute() const#
如果此总线被用户设置为静音,则返回 true
void apply_mute(mute: bool)#
根据用户静音状态和布局中的独奏状态,将最终静音状态应用到内部通道组
当任意总线处于独奏状态时,未独奏的总线会被静音
void set_bypass(bypass: bool)#
设置总线的效果旁路状态
此方法只记录旁路状态,调用 sync_bypass() 后才会同步到现有效果
bool is_bypass() const#
如果此总线启用了效果旁路,则返回 true
void sync_bypass()#
将此总线的旁路状态同步到内部通道组上的所有 DSP
这用于在更改 bypass 或新增效果后确保效果链状态一致
FmodAudioBusLayout#
继承自: Resource
管理音频总线的布局和层级
描述#
FmodAudioBusLayout 管理 FMOD 音频系统中音频总线的完整层级结构。它维护了 FmodAudioBus 实例及其相互关系的集合
该布局会自动与 Godot 的 AudioServer 总线布局同步,实现与 Godot 内置音频系统的集成
主要特性:
总线层级管理(主总线及子总线)
每个总线的音量、独奏、静音和旁路状态控制
每个总线的效果链管理
与 Godot AudioServer 的同步
方法#
void create_audio_bus(name: String, parent: FmodAudioBus = null)#
使用指定名称和可选父级创建新的音频总线
总线名称必须唯一。 Master 总线由布局自动确保存在,不应手动移除
FmodAudioBus get_audio_bus(name: String) const#
返回具有指定名称的 FmodAudioBus
如果不存在具有该名称的总线,则返回 null
bool has_audio_bus(name: String) const#
如果布局中存在具有指定名称的总线,则返回 true
void remove_audio_bus(name: String)#
从布局中移除指定名称的音频总线
警告
Master 总线无法被移除
void set_bus_volume(name: String, volume_db: float)#
设置指定总线的音量,单位为分贝
float get_bus_volume(name: String) const#
返回指定总线的音量,单位为分贝
如果总线不存在或无效,则返回 0.0
void set_bus_solo(name: String, solo: bool)#
设置指定总线的独奏状态,并更新所有总线的最终静音状态
bool bus_is_solo(name: String) const#
如果指定总线处于独奏状态,则返回 true
void set_bus_mute(name: String, mute: bool)#
设置指定总线的用户静音状态,并更新所有总线的最终静音状态
bool bus_is_mute(name: String) const#
如果指定总线被用户设置为静音,则返回 true
void set_bus_bypass(name: String, bypass: bool)#
设置指定总线的效果旁路状态,并立即同步到总线上的 DSP
bool bus_is_bypass(name: String) const#
如果指定总线启用了效果旁路,则返回 true
void add_bus_effect(bus_name: String, effect: FmodAudioEffect, index: int = 0)#
向指定总线添加 FmodAudioEffect
效果会应用到该总线的内部通道组
void remove_bus_effect(bus_name: String, index: int)#
从指定总线中移除指定索引处的音频效果
FmodAudioEffect get_bus_effect(bus_name: String, index: int) const#
返回指定总线上的指定索引处的 FmodAudioEffect
如果总线或效果不存在,则返回 null
void sync_from_audio_server()#
将此布局与 Godot AudioServer 的当前总线布局同步
同步会保留或创建 Master 总线,重建其他总线,连接父子关系,并同步音量、静音、独奏、旁路状态和支持的 Godot 音频效果