スタンダードMIDIファイル

ファイルフォーマット
Standard MIDI Fileから転送)

MIDIStandard MIDI FileSMFMIDI[1][2][3][4]Format0/Format1/Format23 .midMIDI

概要

編集

MIDIOpcodeDave Oppenheim1991MIDI (Recommended Practice) 1 (RP-001) 

 ()216WindowsWindows Media Player

フォーマット

編集

SMFはチャンクと呼ばれるデータブロックから構成される。ファイルの先頭にあるチャンクはヘッダチャンク、それに続く演奏データが入るチャンクはトラックチャンクと呼ばれる。

SMFファイルはチャンク構造の違いで3つのフォーマットに分類される。ヘッダチャンクとトラックチャンク1つのみで構成されるフォーマット0、複数トラックを持つフォーマット1、 マルチシーケンスでシーケンスパターンを指定するフォーマット2の3種類である。このうちフォーマット2は、現在ほとんど使われていない。

ヘッダチャンク

編集



"MThd"4 4D 54 68 64(4)

 00 00 00 06(4)

00 000 (2)

 00 011(2)

 01 E04161E010480(2)



使100 01使

8bit-byte

文字列情報

編集

文字列情報は、16進法で記述されたアスキーコードで、次表の形式で記述できる。すべて省略しても演奏には差し支えない。

表示項目 コード 文字列データ数 内容
テキスト FF 01 n 任意のテキスト(文字列)をSMF内に記載するために使う。
著作権表示 FF 02 n 著作権表示用のテキスト文字列。トラックチャンクの先頭イベント(タイム0)とする。
シーケンス名/トラック名 FF 03 n シーケンス/トラック名を記述するテキスト文字列。シーケンス名はフォーマット0のトラック内か、 フォーマット1の最初のトラック内に記載する。その他の場合は、トラック名として扱う。
楽器名 FF 04 n 各チャンネルに対応する楽器名を記述する。
歌詞 FF 05 n 歌詞を記述する場合に使用するテキスト文字列。
マーカ FF 06 n フォーマット0/1の最初のトラックで使用し、シーケンス内のポイント名を記述するテキスト文字列。
キューポイント FF 07 n ビデオなどに対して指示を出すときに使う。テキスト文字列。
 
MIDIノートナンバー(音域)と音名、周波数の対応表

トラックチャンク

編集

トラックチャンクには、実際の演奏データが格納される。それぞれのチャンクには

  • トラックチャンクであることを示す識別子"MTrk" 「4D 54 72 6B」(4バイト)
  • データ長(このトラックに入っているデータセクションのデータの長さ(16進法データの個数)。) (4バイト)
  • データセクション(可変長)

が格納される。データセクションの長さはデータ長で示される。データ長を数え誤って入力するなどデータ構成の整合性を欠くと標準MIDIファイルは演奏されない。

データセクション

編集
音色の指定
編集

00 C0 XXXX0127007F12800General MIDI#Melodic sounds 
ノートナンバー、ベロシティ
編集

音の高さ(ノートナンバー)、音量(ベロシティ値)については、以下を参照のこと。

MIDI#チャンネルメッセージ参照

タイムベース(4分音符あたりの分解能)を「01 E0」 (10進法で480)とした場合の可変長数値表現
音符 10進法 可変長 音符 10進法 可変長
4倍全音符 7680 BC 00 付点4倍全音符 11520 DA 00
倍全音符 3840 9E 00 付点倍全音符 5760 AD 00
全音符 1920 8F 00 付点全音符 2880 96 40
2分音符 960 87 40 付点2分音符 1440 8B 20
4分音符 480 83 60 付点4分音符 720 85 50
8分音符 240 81 70 付点8分音符 360 82 68
16分音符 120 78 付点16分音符 180 81 34
32分音符 60 3C 付点32分音符 90 5A
64分音符 30 1E 付点64分音符 45 2D
128分音符 15 0F 3連符 160 81 20
音を出す・音を止める
編集

MIDI (SysEx) 3

1byte4byte1byte7bit28bitbit11byte7bit4bytebit使277807817818216

210000 000000001610 00104096100000 000000077078101610 10000 0 0000000210100000 0000000016A0 00

90480004

909016808

400903C4083 60803C001


和音
編集

和音の場合には、音を出すデルタタイムをそれぞれ「00」にすることで同時に複数の音を出すことができる。

打楽器
編集

General MIDI10SMF(drum map)10109169099General MIDI#Percussion notes
トラックの終了
編集

トラックの終了には「FF 2F 00」を宣言する。

脚注

編集
  1. ^ https://www.midi.org/specifications-old/item/standard-midi-files-smf
  2. ^ https://web.archive.org/web/20041026040221/http://www.geocities.jp/stdmidi/
  3. ^ https://sites.google.com/site/yyagisite/material/smfspec
  4. ^ http://www.omnibase.net/smf/

関連事項

編集