我在我的代码中设置了一个midi输入端口,并附加了一个回调用于读取接收到的midi数据。这一切都很好。我正在阅读Midi Timecode并在我的回调中解析它。我注意到的是,根据我何时启动我的应用程序,我可能会在发送MTC的设备上最迟1秒。有时它背后是一个框架。无论如何,它是不一致和令人沮丧的。我没有在readProc中进行任何阻塞或Obj-C调用。在运行我的应用程序之后,我甚至忘记了断开我的usb midi设备,看看是否有任何奇怪的IOKit正在进行中。我真的可以使用一些帮助,甚至是狂野的理论?我觉得好像Midi TimeStamps没用,因为没有客观的参考来比较它们。
答案 0 :(得分:0)
我将假设你知道你在这里做什么并且意味着实际的MIDI时间码而不是MIDI时钟,这是两种同步方法中比较常见的。无论如何,MIDI很慢,您需要为客户端提供一个偏移量(可能以毫秒为单位),以便它可以做出相应的反应。例如,看看Ableton Live是如何做到的:
我意识到上面的截图是针对MIDI时钟的,但同样适用于MTC。您可能需要提供某种类型的UI来确定偏移量,因为正如您所发现的,延迟会根据运行时条件而变化。