2011-05-17 88 views
3

我正在藉助名爲midas (http://code.google.com/p/midas3/) - midi-as3庫的幫助文件讀取as3(flash cs5)中的midi文件。如何計算midi文件的時間長度

我想弄清楚一個簡單的方法來計算整個MIDI文件的持續時間(例如 - 總時間4分鐘或6分鐘...)。我假設我可以計算每首曲目的最後一個音符+檢查節奏並計算出來,但我想知道是否:

是否將MIDI文件的持續時間寫入數據中的某個位置,使用?

有沒有一種簡單的方法來計算的話,而無需通過整個文件運行和節奏比較最後音符/。

回答

4

不,你需要讀取整個文件並確定你讀最後一個音符的時間。 MIDI文件基本上是流式數據,因此文件頭中沒有「長度」字段。

編輯:經過進一步的思考,「流式傳輸」並不是描述MIDI文件的好方法。 MIDI文件的字節數固定,它存儲在IFF塊頭中。但是,對於文件長度沒有屬性(以秒爲單位),但假設您可以將所有字節讀入一個序列(並且不要忘記考慮速度變化!),這應該不會太困難以秒爲單位確定文件的長度。