重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

MIDIファイルのフォーマットに関する質問です。

MIDIファイルをバイナリエディタで開いて編集をしているのですが、ノート・オン/オフのMIDIイベントの間に、「81」や「83」「87」を見つけることができます。これは一体、どういう役割をしているのでしょうか?

例えばこんな感じです
6082457f
00924764
83
6082477f
00923e64
81
70823e7f
00924064
87
4082407f
00923e64
87

A 回答 (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_ …
    • good
    • 0
この回答へのお礼

はい。SMFのことです。
デルタタイムの先行バイトだったんですね。デルタタイムを含めて、ノート・オン/オフの各MIDIイベントは4バイトに収まると、すっかり思い込んでいました。。。。

どうもありがとうございます。

お礼日時:2010/02/15 01:14

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/smfsp …
⇒ デルタタイムとは
    • good
    • 0
この回答へのお礼

ウェブページまで紹介していただき、どうもありがとうございます。デルタタイムはすべて1バイトに収まると思い込んでいたので、すっかりよくわからなくなっていました。
どうもありがとうございました。

お礼日時:2010/02/15 01:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!