- ベストアンサー
MIDIファイルのフォーマットに関する質問です。
MIDIファイルのフォーマットに関する質問です。 MIDIファイルをバイナリエディタで開いて編集をしているのですが、ノート・オン/オフのMIDIイベントの間に、「81」や「83」「87」を見つけることができます。これは一体、どういう役割をしているのでしょうか? 例えばこんな感じです 60 82 45 7f 00 92 47 64 83 60 82 47 7f 00 92 3e 64 81 70 82 3e 7f 00 92 40 64 87 40 82 40 7f 00 92 3e 64 87
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
MIDI ファイルというのが Standard MIDI File のことだと仮定します。 例示された区切りを見るに,デルタタイムの先行バイトのことでしょうか。 デルタタイム / MIDI メッセージで分解すると, 60 / 82 45 7F : 96 (110 0000) デルタタイム経過後にチャネル2の69番の音をヴェロシティ127でノート・オフする 00 / 92 47 64 : 0デルタタイム経過後にチャネル2の71番の音をヴェロシティ100でノート・オンする 83 60 / 82 47 7F : 480 (000 0011 110 0000) デルタタイム経過後にチャネル2の71番の音をヴェロシティ127でノート・オフする 00 / 92 3E 64 : 0デルタタイム経過後にチャネル2の62番の音をヴェロシティ100でノート・オンする 81 70 / 82 3E 7F : 240 (000 0001 111 0000) デルタタイム経過後にチャネル2の62番の音をヴェロシティ127でノート・オフする 00 / 92 40 64 : 0デルタタイム経過後にチャネル2の64番の音をヴェロシティ100でノート・オンする 87 40 / 82 40 7F : 960 (000 0111 100 0000) デルタタイム経過後にチャネル2の64番の音をヴェロシティ127でノート・オフする 00 / 92 3E 64 : 0デルタタイム経過後にチャネル2の62番の音をヴェロシティ100でノート・オンする のようになります。 Site: 詳説MIDI規格 http://www.pluto.dti.ne.jp/~daiki/Midi/AboutSMF_Inside.html
その他の回答 (1)
- noocyte
- ベストアンサー率58% (171/291)
3行目の 0x83 と,その直後の 0x60 で一つのデルタタイムです. ・デルタタイムは1~4バイト. ・各バイトの MSB は,後続するバイトがあることを示すフラグ. ・各バイトの下位7ビットがデルタタイムの有効ビット. ・バイト順はビッグエンディアン. 3~4行目:0x83 0x60 → デルタタイム=0x1E0 6~7行目:0x81 0x70 → デルタタイム=0x0F0 9~10行目:0x87 0x40 → デルタタイム=0x3C0 Omnibase Rewrite - SMF(Standard MIDI File) フォーマット解説 http://www.omnibase.net/smf/ ⇒ デルタタイムの表現方法 SMF (Standard MIDI Files) の構造 http://www2s.biglobe.ne.jp/~yyagi/material/smfspec.html#deltatime ⇒ デルタタイムとは
お礼
ウェブページまで紹介していただき、どうもありがとうございます。デルタタイムはすべて1バイトに収まると思い込んでいたので、すっかりよくわからなくなっていました。 どうもありがとうございました。
お礼
はい。SMFのことです。 デルタタイムの先行バイトだったんですね。デルタタイムを含めて、ノート・オン/オフの各MIDIイベントは4バイトに収まると、すっかり思い込んでいました。。。。 どうもありがとうございます。