Benny项目中的谐波合成器技术解析
benny a live music environment 项目地址: https://gitcode.com/gh_mirrors/ben/benny
谐波合成器概述
Benny项目中的谐波合成器是一种模拟传统机械乐器谐波特性的声音生成模块。它通过精确控制多个谐波分量的时间、频率和振幅特性,能够产生非常自然且富有表现力的音色。
谐波分量结构
该合成器采用了9个谐波分量,每个分量对应不同的音高区间:
- 第9谐波:上方3个八度
- 第8谐波:纯五度+2个八度
- 第7谐波:大三度+2个八度
- 第6谐波:2个八度
- 第5谐波:纯五度+1个八度
- 第4谐波:1个八度
- 第3谐波:基音
- 第2谐波:下方纯五度
- 第1谐波:下方1个八度
频率响应特性
谐波合成器具有特定的频率响应曲线:
- 90Hz处设置1极点高通滤波器
- 100Hz处有非常宽的峰值
- 2kHz处设置1极点低通滤波器
这种频率响应模拟了真实乐器的共振特性,使得合成音色更加自然。
触点弹跳模拟技术
谐波合成器的一个关键技术是模拟机械触点弹跳效应:
-
启动时间差异:每个谐波分量以不同时间启动,顺序在不同音区也有所不同
-
速度响应:
- 强力度音符:谐波启动间隔更短(2ms-60ms)
- 极强力度:中值弹跳时间显著增加(可达9ms)
- 弱力度:弹跳时间较短(2ms)
- 中等力度:线性变化(2ms-4ms)
-
弹跳模式:
- 典型弹跳序列包含多个短弹跳(约0.05ms)和少量较长弹跳
- 弹跳间有0.5-0.75ms的间隔
- 最终稳定状态约在3ms后达到
实现技术方案
实现这一效果的技术方案包括:
- 独立包络控制:每个谐波分量有自己的包络发生器
- 预延迟设置:基于力度设置不同的启动延迟
- 弹跳查找表:使用预先计算的弹跳模式表
- 包含3-5ms的弹跳模式
- 约250个样本(48kHz采样率)
- 参数控制:
- 力度影响弹跳速率和预延迟时间
- 强力度=慢速率但短预延迟
- 弱力度=快速率但长预延迟
优化与改进
当前实现已具备基本功能,未来可能的优化方向包括:
- 音量变化时自动调整所有滑块参数
- 默认设置为音符记忆复音模式
- 添加缓慢的棕色噪声音高调制
- 支持非正弦波形的谐波分量
- 改进用户界面标签
- 仅在力度变化时触发触点噪声
- 确保至少一个谐波无启动延迟
设计考量
最终实现保留了较明亮的音色特性,且没有内置音高波动,这样当使用多个音区时,它们可以共享同一个马达波动信号,保持音色的一致性。这种设计使得谐波合成器既能够模拟传统乐器的机械特性,又保持了足够的灵活性以适应不同的音乐表现需求。
benny a live music environment 项目地址: https://gitcode.com/gh_mirrors/ben/benny
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考