我正在使用 Qt 创建一个软合成器。这意味着获得低延迟音频(缓冲区大小约为 5-10 毫秒),以便响应 UI 控件。
软合成器的组件是:
- 处理 UI 的主窗口
- 综合引擎,它是 QIODevice 的子类
- QAudioOutput,即 Qt Multimedia 低延迟音频输出类
我基于我自己的频谱示例的破解版本来使用拉模式生成基本波表合成器。
在实践中,如果缓冲区小于 100 毫秒左右,我发现我会出现故障。这对于良好的响应能力来说太长了。
解决方案似乎是多线程,但我不清楚如何在 Qt 中构建它。我的直觉是将合成器引擎放入自己的线程中,但我不清楚
- 鉴于它已经是 QIODevice 的子类,如何做到这一点
- 这是否会干扰 QAudioOutput (无论如何它都在自己的线程中?)