Qt中的中断,全局变量和MainWindow

时间:2017-04-14 13:31:52

标签: c++ qt audio callback portaudio

我和朋友正在研究一种简单的C ++合成器。我们有振荡器,滤波器和包络类,可以使用Portaudio库输出一些声音。

我们现在正在使用Qt Creator进行图形界面,但对如何组织所有内容感到困惑。实际上,portaudio使用回调函数来填充缓冲区,为此,它需要访问ocsillator的getValue()方法或过滤器的process()方法。但是目前,我们将振荡器对象和滤镜对象声明为MainWindow类中的指针。因此,我们无法在回调函数中访问它们的方法。

有关portaudio回调函数的更多信息可以在here找到。

以下是我想到的两个解决方案:

  • 将所有合成器对象(osc,filter等)作为全局变量,以便我可以在回调函数中访问它们
  • 将回调函数和所有与声音相关的函数放在main.cpp而不是mainwindow.cpp中,并将MainWindow对象作为全局对象,以便我可以在回调函数中访问其属性(即振荡器等对象)

我真的不知道哪种解决方案最好,或者哪种解决方案效果更好......

0 个答案:

没有答案