我正在网络音频中实现一个复音合成器,具有动态语音分配。
性能方面,是每次按下键时修改新语音的图形(添加振荡器节点、滤波器节点等(更好,还是为所需的最大复音预先创建整个图形,然后只更改按下键的增益/包络?
即 - 什么具有更大的性能影响:始终动态更改图形,还是让(大部分未使用的(节点一直运行?
我认为确定的唯一方法是尝试两种方式并查看。
但是,如果你的合成器最多有 50 个振荡器,并且你预先创建了它们,那么你将有 50 个振荡器始终运行,即使你大部分时间只需要几个振荡器。 这也可能导致所有下游节点也进行不必要的处理。
但是,如果你真的需要50个振荡器(带效果链(才能工作,那么你的机器需要足够强大来支持这一点,所以我认为任何一种方法都行得通。 如果您预先创建所有节点而不是仅创建所需数量的节点,则您的平均功耗可能会更高。
除非延迟是一个问题,否则我看不出预先创建固定数量的补丁图有任何优势。
理想情况下,您的合成器将具有复音电平设置,该设置可以设置为动态(每个图形按需初始化(或固定为给定数量的图形(全部预先初始化(。默认情况下,它将是动态的,并且仅提供修复级别的选项,作为延迟成为问题时的回退。