我正在开发模拟合成器的软件仿真。我正在尝试使用 LFO 调制振荡器的音高。对于输入到计算机音响系统的每个样本,我正在计算要输入到主振荡器的频率,如下所示(伪代码):
osc_frequency = note_frequency * (1 + tuning) * (1 + lfo_y * lfo_mod_depth)
该语句中的变量描述如下:
- note_frequency = 要播放的音符频率,单位为 Hz
- 调音 = 以播放音高百分比表示的振荡器微调(例如:-0.02 = 失谐 2%)
- lfo_y = lfo 波形的当前 y 值(范围从 -1 到 1)
- lfo_mod_depth = 应用到振荡器的效果的深度/强度百分比
但是,这种计算不会产生预期的结果。我希望听到音高上下调制,锁定在中心频率附近(正在播放的音符)。我得到的是一种调制效果,它会导致音高“失控”;我无法确切地说出发生了什么,但听起来像是其中之一:
- 调制强度随着时间的推移而增加(调制达到的高/低频标记越长/越低,音符保持的时间越长)
- 虽然调制强度随时间保持恒定,但中心频率增加,而调制围绕它振荡
我是否使用正确的方法?如果不是,正确的方法应该是什么?对此的任何帮助都非常感谢。