EG/plugins/user/audio_reverb_effects
2025-12-12 16:16:15 +08:00
..
effects 编译修复 2025-12-12 16:16:15 +08:00
plugin.py 编译修复 2025-12-12 16:16:15 +08:00
README.md 编译修复 2025-12-12 16:16:15 +08:00

音频混响和效果插件

一个功能完整的专业音频效果处理系统插件为EG引擎提供基于Panda3D的高级音频效果处理功能支持混响、均衡器、压缩器、调制效果和失真等多种音频效果。

功能特性

核心功能

  • 专业混响处理: 基于物理模型的高质量混响效果
  • 多频段均衡器: 精确的频段控制和滤波处理
  • 动态范围压缩: 专业级压缩器效果处理
  • 调制效果: 合唱、镶边、移相等多种调制效果
  • 失真效果: 过载、失真、模糊等多种失真类型
  • 3D空间音频: 真实的3D音频定位和空间化处理
  • 效果链处理: 支持多个效果的串联和并联处理
  • 实时参数控制: 所有效果参数支持实时调整

混响效果

  • 房间建模: 支持多种预设房间类型(小房间、大厅、教堂等)
  • 参数控制: 房间大小、阻尼、湿信号电平、干信号电平、宽度等
  • 高级参数: 早期反射、晚期混响、扩散、密度等
  • 冲激响应: 支持基于房间几何的冲激响应生成
  • 预设系统: 内置多种专业混响预设

均衡器效果

  • 多频段控制: 支持最多32个独立频段调节
  • 滤波器类型: 峰值滤波器、低频搁架、高频搁架
  • 参数控制: 频率、增益、Q因子、主增益等
  • 专业功能: 独奏模式、频段绕过、频段添加/移除
  • 预设系统: 内置多种音乐风格EQ预设

压缩器效果

  • 动态控制: 阈值、压缩比、启动时间、释放时间
  • 高级参数: 膝点、输出增益、自动补偿增益
  • 专业功能: 侧链处理、RMS窗口、预测处理
  • 可视化表: 增益减少量表、压缩比率表、包络跟随器
  • 预设系统: 内置多种应用场景压缩器预设

调制效果

  • 效果类型: 合唱、镶边、移相器
  • 参数控制: 速率、深度、反馈、湿信号混合、延迟时间
  • 波形选择: 正弦波、三角波、方波、锯齿波
  • 立体声处理: 立体声扩散、相位控制
  • 滤波器: 高频截止、低频截止
  • 预设系统: 内置多种调制效果预设

失真效果

  • 效果类型: 过载、失真、模糊、削波器
  • 参数控制: 驱动、音调、输出电平、偏置
  • 整流模式: 全波整流、半波整流、无整流
  • 不对称处理: 可调不对称度
  • 滤波器: 预滤波器、后滤波器
  • 预设系统: 内置多种失真效果预设

空间音频效果

  • 3D定位: 基于听者位置的精确3D音频定位
  • 距离衰减: 可配置的最小/最大距离和衰减因子
  • 方向性: 锥形效应、方位角、仰角计算
  • 物理效应: 多普勒效应、空气吸收
  • 遮挡处理: 遮挡和阻挡效果模拟
  • HRTF支持: 头部相关传递函数实现更真实的3D音效
  • 混响发送: 可配置的混响发送量

效果管理

  • 效果链: 支持多个效果的串联处理
  • 参数自动化: 所有参数支持实时调整
  • 预设系统: 效果预设的创建、保存、加载
  • 状态监控: 实时效果处理状态和性能统计
  • 资源管理: 智能的效果资源管理和清理

性能优化

  • 高效处理: 优化的音频处理算法
  • 内存管理: 智能缓冲区管理和内存复用
  • 多线程支持: 支持多线程音频处理
  • 采样率适配: 自动适配不同采样率
  • 质量控制: 可配置的处理质量等级

使用方法

快捷键操作

  • F1: 切换调试模式
  • F2: 切换效果处理
  • F3: 应用测试混响效果
  • F4: 应用测试均衡器效果
  • F5: 显示效果统计信息
  • F6: 应用测试压缩器效果
  • F7: 应用测试调制效果
  • F8: 应用测试失真效果
  • F9: 创建测试预设
  • F10: 切换音质设置
  • F11: 显示详细统计信息
  • F12: 重置所有效果

GUI界面操作

插件会在屏幕右上角创建控制面板,可以通过按钮直接操作音频效果功能。

编程接口

# 获取插件实例
audio_effects_plugin = world.plugin_manager.get_plugin("audio_reverb_effects")

# 创建混响效果
reverb_params = {
    'room_size': 0.8,
    'damping': 0.5,
    'wet_level': 0.3,
    'dry_level': 0.7,
    'width': 1.0
}
reverb_effect_id = audio_effects_plugin.create_reverb_effect(reverb_params)

# 创建均衡器效果
eq_params = {
    'bands': {
        100: 2.0,   # 100Hz 提升2dB
        500: -1.0,  # 500Hz 降低1dB
        2000: 3.0,  # 2kHz 提升3dB
        8000: -2.0  # 8kHz 降低2dB
    }
}
eq_effect_id = audio_effects_plugin.create_eq_effect(eq_params)

# 创建压缩器效果
compressor_params = {
    'threshold': -20.0,
    'ratio': 4.0,
    'attack': 0.01,
    'release': 0.1,
    'gain': 2.0
}
compressor_effect_id = audio_effects_plugin.create_compressor_effect(compressor_params)

# 创建调制效果
modulation_params = {
    'type': 'chorus',
    'rate': 1.0,
    'depth': 0.5,
    'feedback': 0.3,
    'mix': 0.5
}
modulation_effect_id = audio_effects_plugin.create_modulation_effect(modulation_params)

# 创建失真效果
distortion_params = {
    'drive': 0.5,
    'tone': 0.8,
    'level': 0.7,
    'type': 'overdrive'
}
distortion_effect_id = audio_effects_plugin.create_distortion_effect(distortion_params)

# 应用效果到音效
audio_effects_plugin.apply_effect_to_sound(sound_id, reverb_effect_id)
audio_effects_plugin.apply_effect_to_sound(sound_id, eq_effect_id)
audio_effects_plugin.apply_effect_to_sound(sound_id, compressor_effect_id)

# 创建效果预设
preset_data = {
    'reverb': reverb_params,
    'eq': eq_params,
    'compressor': compressor_params
}
audio_effects_plugin.create_preset("my_preset", preset_data)

# 应用预设到音效
audio_effects_plugin.apply_preset_to_sound(sound_id, "my_preset")

# 设置效果参数
audio_effects_plugin.set_effect_parameter(reverb_effect_id, 'room_size', 0.6)
audio_effects_plugin.set_effect_parameter(eq_effect_id, 'bands', {100: 3.0, 1000: -1.0})

# 启用/禁用效果
audio_effects_plugin.enable_effect(reverb_effect_id)
audio_effects_plugin.disable_effect(eq_effect_id)

# 获取效果类型
effect_type = audio_effects_plugin.get_effect_type(compressor_effect_id)

# 获取音效应用的效果列表
applied_effects = audio_effects_plugin.get_sound_effects(sound_id)

# 从音效移除效果
audio_effects_plugin.remove_effect_from_sound(sound_id, reverb_effect_id)

# 删除效果
audio_effects_plugin.delete_effect(modulation_effect_id)
audio_effects_plugin.delete_effect(distortion_effect_id)

# 设置主音量
audio_effects_plugin.set_master_volume(0.8)

# 设置音质等级
audio_effects_plugin.set_quality_settings("high")

# 获取统计信息
stats = audio_effects_plugin.get_stats()

核心组件

混响处理器

负责专业混响效果的处理和管理。

主要功能:

  • 多种混响算法实现
  • 丰富的混响参数控制
  • 房间冲激响应生成
  • 预设管理系统

均衡器处理器

负责多频段均衡器效果的处理和管理。

主要功能:

  • 多频段参数控制
  • 多种滤波器类型
  • 专业EQ功能实现
  • 音乐风格预设

压缩器处理器

负责动态范围压缩效果的处理和管理。

主要功能:

  • 专业压缩参数控制
  • 侧链处理支持
  • 实时可视化表
  • 应用场景预设

调制处理器

负责合唱、镶边、移相等调制效果的处理和管理。

主要功能:

  • 多种调制效果类型
  • 波形选择和控制
  • 立体声处理
  • 效果预设系统

失真处理器

负责过载、失真、模糊等失真效果的处理和管理。

主要功能:

  • 多种失真类型
  • 整流模式控制
  • 滤波器处理
  • 失真预设系统

空间处理器

负责3D空间音频效果的处理和管理。

主要功能:

  • 3D音频定位
  • 距离衰减处理
  • 物理效应模拟
  • HRTF支持

效果预设

混响预设

  • small_room: 小房间混响
  • medium_room: 中等房间混响
  • large_room: 大房间混响
  • large_hall: 大厅混响
  • cathedral: 教堂混响
  • bathroom: 浴室混响

均衡器预设

  • flat: 平衡设置
  • pop: 流行音乐风格
  • rock: 摇滚音乐风格
  • jazz: 爵士音乐风格
  • classical: 古典音乐风格
  • vocal_booster: 人声增强
  • bass_boost: 低音增强
  • treble_boost: 高音增强

压缩器预设

  • vocal_compressor: 人声压缩
  • bass_compressor: 贝斯压缩
  • drum_compressor: 鼓组压缩
  • master_bus: 总线压缩
  • aggressive: 强烈压缩
  • gentle: 温和压缩

调制预设

  • chorus_light: 轻柔合唱
  • chorus_medium: 中等合唱
  • chorus_heavy: 强烈合唱
  • flanger_light: 轻柔镶边
  • flanger_medium: 中等镶边
  • flanger_heavy: 强烈镶边
  • phaser_light: 轻柔移相
  • phaser_medium: 中等移相
  • phaser_heavy: 强烈移相

失真预设

  • mild_overdrive: 轻度过载
  • heavy_overdrive: 重度过载
  • classic_distortion: 经典失真
  • metal_distortion: 金属失真
  • fuzz_box: 模糊效果
  • bass_overdrive: 贝斯过载
  • tube_amp: 胆机模拟
  • bit_crusher: 位破碎

空间音频预设

  • close: 近距离设置
  • medium: 中距离设置
  • far: 远距离设置
  • outdoor: 户外设置
  • indoor: 室内设置
  • underwater: 水下设置

性能优化

算法优化

  • 高效滤波器: 优化的数字滤波器实现
  • 快速傅里叶变换: 频域处理优化
  • 缓冲区管理: 智能缓冲区复用
  • 内存池: 减少内存分配开销

处理优化

  • 并行处理: 支持多线程音频处理
  • 质量等级: 可配置的处理质量
  • 动态调整: 根据系统负载动态调整处理复杂度
  • 效果链优化: 优化的效果处理顺序

资源管理

  • 智能加载: 根据需要动态加载效果资源
  • 自动清理: 不使用的资源自动清理
  • 缓存系统: 效果参数和处理结果缓存
  • 引用计数: 资源引用计数管理

扩展开发

添加新的效果类型

  1. effects目录中创建新的效果处理器
  2. 实现效果处理逻辑
  3. Plugin类中注册新效果

添加新的预设

  1. 在对应的效果处理器中添加预设数据
  2. 实现预设创建方法
  3. 在插件中提供预设应用接口

添加新的处理算法

  1. 在现有处理器中实现新的算法
  2. 添加算法选择参数
  3. 实现算法切换逻辑

故障排除

效果不生效

  1. 检查效果是否已启用
  2. 确认效果已正确应用到音效
  3. 验证参数设置是否正确
  4. 检查音效是否正在播放

性能问题

  1. 使用统计信息分析性能瓶颈
  2. 降低处理质量等级
  3. 减少同时应用的效果数量
  4. 优化效果参数设置

音质问题

  1. 检查采样率设置是否正确
  2. 确认缓冲区大小是否合适
  3. 验证效果参数是否在合理范围
  4. 检查是否出现削波现象

内存泄漏

  1. 使用统计信息监控内存使用
  2. 确认效果是否正确删除
  3. 检查资源是否正确释放
  4. 验证引用计数是否正确

API参考

Plugin类主要方法

初始化和控制

  • initialize() - 初始化插件
  • enable() - 启用插件
  • disable() - 禁用插件
  • finalize() - 清理插件资源
  • update(dt) - 更新插件状态

效果创建和管理

  • create_reverb_effect(parameters) - 创建混响效果
  • create_eq_effect(parameters) - 创建均衡器效果
  • create_compressor_effect(parameters) - 创建压缩器效果
  • create_modulation_effect(parameters) - 创建调制效果
  • create_distortion_effect(parameters) - 创建失真效果
  • create_spatial_effect(parameters) - 创建空间效果
  • delete_effect(effect_id) - 删除效果
  • apply_effect_to_sound(sound_id, effect_id) - 应用效果到音效
  • remove_effect_from_sound(sound_id, effect_id) - 从音效移除效果

效果参数控制

  • set_effect_parameter(effect_id, parameter, value) - 设置效果参数
  • get_effect_parameters(effect_id) - 获取效果参数
  • enable_effect(effect_id) - 启用效果
  • disable_effect(effect_id) - 禁用效果
  • get_effect_type(effect_id) - 获取效果类型
  • get_sound_effects(sound_id) - 获取音效应用的效果列表

预设系统

  • create_preset(preset_name, preset_data) - 创建效果预设
  • apply_preset_to_sound(sound_id, preset_name) - 应用预设到音效
  • get_preset_names() - 获取所有预设名称
  • delete_preset(preset_name) - 删除预设

系统控制

  • set_master_volume(volume) - 设置主音量
  • get_master_volume() - 获取主音量
  • set_quality_settings(quality) - 设置音质等级
  • get_quality_settings() - 获取音质等级
  • process_audio_with_effects(sound_id, audio_data) - 使用效果处理音频数据

统计和信息

  • get_stats() - 获取插件统计信息

音频格式支持

支持的音频格式:

  • WAV: 未压缩的PCM音频
  • OGG: Ogg Vorbis压缩音频
  • MP3: MPEG音频层III

性能调优建议

效果处理优化

  1. 合理控制同时处理的效果数量
  2. 根据应用场景选择合适的效果预设
  3. 及时删除不需要的效果
  4. 使用预设减少参数配置时间

资源管理优化

  1. 定期清理未使用的效果
  2. 合理设置缓冲区大小
  3. 使用对象池管理效果对象
  4. 预加载常用的效果预设

系统性能优化

  1. 根据硬件性能选择合适的质量等级
  2. 监控系统资源使用情况
  3. 动态调整处理复杂度
  4. 使用多线程处理提高性能

版本信息

  • 版本: 1.0.0
  • 作者: EG Team
  • 发布日期: 2024年

许可证

本插件遵循EG引擎许可证协议。