0
我有一個函數可以根據來自CDJ的輸入數據包計算出磁道的BPM。可以說BPM是每分鐘124.45次,我怎樣才能每0.482秒調用一個函數(即每次一次)?可以設置另一個線程並設置一個計時器嗎?在OSX上定期調用C函數
我有一個函數可以根據來自CDJ的輸入數據包計算出磁道的BPM。可以說BPM是每分鐘124.45次,我怎樣才能每0.482秒調用一個函數(即每次一次)?可以設置另一個線程並設置一個計時器嗎?在OSX上定期調用C函數
也許看看高精度計時器,here,Apple聲稱其500微秒精度是您的500(ish)毫秒要求的0.1%。您可以通過讀取處理開始時的時間並計算下一個節拍的偏移量來最小化偏差。另外,如果你發現你經常遲到並且缺少節拍,你可以睡95%的時間到你的下一個節拍,這樣CPU可以安排其他事情,然後忙着等待最後幾個百分比。你不會佔用CPU。
應用程序在所有可可? **需要**的時間有多精確? – BergQuester
我在程序中使用CoreMidi,如果這意味着什麼。如果不是,那麼它只是C.儘可能精確,因爲該函數發送一個midi tick到DAW以同步時鐘。一旦數據包進入,我現在已經發送了midi,除了由於延遲導致時鐘落後幾毫秒之外,這種方式效果很好。我想在幾秒前發送midi來嘗試讓時鐘同步。 –