4

要するに: 1 秒あたり 44,100 回呼び出されるメソッドがあります。13781.25 番目のメソッド呼び出しで音を鳴らす必要がある状況で何をすべきかを知りたいです。これは 192 ビート/分です)。その数値を四捨五入して、13781 番目のメソッド呼び出しで音を刻むオプションがあります。これは、0.25 番目で音を刻むのが早すぎることを意味します。これは、0.00000566893424 秒早すぎることに相当します。

100ティックの後、遅延が確実に追加されると確信しています。遅延を追跡するようなスマートな回避策はありますか?遅延が特定のポイントを超えた場合、ビートを再び軌道に乗せるための±いくつかの数字がありますか?

これまでの私のコードは次のとおりです..

int counter; // used to track down the amount of times the method has been called

signalMethod(){
    if(counter % ceil(2,646,000/10) == 0){ //the ceil function turns the decimal point into a whole number so it can be used for analysis. but this will cut off delay.. and over time im sure it will add up.. which will cause the beats to fluctuate...
        playSound();
    }
    counter++;
}
4

1 に答える 1

6

あなたの問題は、「ブレゼンハムのアルゴリズム」に対処する問題の別のバリエーションですが、特定の勾配 (勾配はビート周波数になります) で描かれた線の Y 座標をインクリメントする代わりに、ティックを放出しています。

ブレゼンハムのアルゴリズムに関するウィキペディア

于 2012-05-05T09:24:46.180 に答える