【问题标题】:Calling a C function periodically on OSX在 OSX 上定期调用 C 函数
【发布时间】:2013-12-09 18:16:05
【问题描述】:

我有一个函数可以根据来自 CDJ 的传入数据包计算曲目的 BPM。假设 BPM 为每分钟 124.45 次,我将如何每 0.482 秒调用一次函数(即每节拍一次)?是否可以设置另一个线程并设置一个计时器?

【问题讨论】:

  • 应用程序完全是 Cocoa 吗?时间需要有多精确?
  • 我在程序中使用 CoreMidi,如果这意味着什么。如果不是,那么它只是 C。函数尽可能精确地向 DAW 发送一个 midi 滴答声以同步时钟。我目前让它在数据包进来后发送 midi,它工作得很好,除了时钟由于延迟而落后了几毫秒。我想在几毫秒前发送 midi 以尝试使时钟同步。

标签: c macos function unix timer


【解决方案1】:

也许看看高精度计时器here,Apple 声称其精度为 500 微秒,这是您 500(ish)毫秒要求的 0.1%。您可以通过在处理开始时读取时间并计算下一个节拍的偏移量来最小化偏差。此外,如果你发现你经常被安排迟到,并且错过节拍,你可以在下一个节拍的 95% 的时间里睡觉,这样 CPU 可以安排其他事情,然后忙着等待最后几个百分点,这样你不会占用 CPU。

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    相关资源
    最近更新 更多