1

速度が 192 の BPM (ビート/分) MIDI デルタ時間 (左端のビットがオフ) が与えられた場合:

0x00C0

これを FPS/TPM (フレーム/秒/ティック/分) デルタ時間 (左端のビットがオン) に変換したいのですが、意味がわかれば同じ (または最も正確な) 速度値である必要があります。

MIDI Delta Time の詳細については、Header Chunk -> Time Division のMidi File Formatをご覧ください。

これら 2 つの deltatime 型の間で変換する式を探しています。

4

1 に答える 1

2

時分割フィールドである 0x00C0 について話している場合、あなたが言及しているのは 192ビート/分ではなく、 192ティック/ビートであり、まったく異なる獣です。BPM は「Set Tempo」イベントを介して間接的に指定され、1 ビートあたりのマイクロ秒単位で指定されます (残念なことにどこにでもある 120 BPM が最初に想定されています)。この形式での時分割のトリッキーな点は、曲のテンポの変化に応じてティックの長さが増減することです。

変換したい時分割がF1 秒あたりのフレーム数 (24、25、29.97、または 30) でありG、1 フレームあたりのティック数であるとします (: 1 分あたりのティック数ではありません!)。さらに、ビートあたりのマイクロ秒単位の現在のテンポが であると仮定しましょうp。次に、指定された期間を古いティックで新しいティックに変換する式は次のとおりです (単位分析は非常に役立ちます!)。

y = x ticks old * (1/192) ビート/ ticks old * p μsec/beat * (1/10 6 ) sec/μsec * F フレーム/秒 * G ticks new /frame
   = ((x * p * F * G)/(192*10 6 ))新しいティック

于 2010-07-08T19:45:55.153 に答える