我已经构建了一个项目的独立应用程序版本,到目前为止它只是一个 VST/audiounit。我通过rtaudio提供音频支持。
我想使用rtmidi添加 MIDI 支持,但我不清楚如何同步音频和 MIDI 部分。
在 VST/audiounit 领域,我习惯于 MIDI 事件,这些事件有一个时间戳,表示它们在样本中从音频块开始的偏移量。
rtmidi 提供了自上一个事件以来的增量时间(以秒为单位),但我不确定我应该如何获取这些事件以及如何计算出与音频线程中当前样本相关的时间。
插件主机如何做到这一点?
我可以理解事件如何在回放时准确采样,但尚不清楚在使用实时输入时它们如何准确采样。
rtaudio 给了我一个回调函数。我将以较小的块大小(32 个样本)运行。我想我会将一个指向 rtmidi 实例的指针作为回调的 userdata 部分传递,然后调用 midiin->getMessage( &message ); 在音频回调中,但我不确定这是否是线程敏感的。
非常感谢你能给我的任何提示