问题描述
我注意到缺乏用Python编写的,良好的soundfont兼容合成器。因此,大约一个月前,我自己开始了一些工作(供参考,it's here)。做到这一点也是我为自己设定的挑战。
我不断地遇到相同的问题,总结如下:
- 要播放声音,必须将具有几乎恒定流率的数据流发送到音频设备
- 要根据用户输入实时合成声音,可以使用几乎没有缓冲
- 因此,一个“缓冲区生成循环”所花费的时间是有上限的。
- Python作为一种语言, 不能足够快地运行以在此时间限制内合成声音
问题不是我的代码,或者至少,我尝试将其优化到极限级别-在代码的时间敏感部分中使用局部变量,避免使用点来循环访问变量,使用{{1 }}进行迭代,使用itertools
之类的预编译宏,更改线程切换参数,进行尽可能少的计算,进行近似计算,此列表继续存在。
使用Pypy会有所帮助,但不久之后,这种情况就会开始困扰。
值得注意的是,目前(最多)我的合成器可以同时演奏约25个音符。但这还不够。 Fluidsynth,用C编写的合成器,对每个乐器的最大音符数上限为128个音符。它还一次支持多种乐器。
我的断言是Python 根本无法使用来编写合成器吗?还是我错过了一些非常重要的东西?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)