日曜日, 7月 09, 2006

「サクラ」でMIDI形式ファイルで保存する

サクラ」は、いわばMMLコンパイラーだ。MMLで書かれたプログラムをコンパイルしてMIDIデータを生成する。

いままで「サクラ」から直接MIDI音源にデータを送って演奏させてきたのだが、実際の「サクラ」の動作としては、演奏ボタンを押すと、まず編集画面にあるMMLをコンパイルし、エラーがなければMIDIデータを作成して、このMIDIデータを音源に送っていたのだ。

ということで、当然このMIDIデータは保存できるのだ。下のプログラムをMIDIデータとして保存してみる。

//---------- ここから ----------

Track(1)
[100 @(1) n(Random(40,80))(RandomSelect(4,8))]
Track(2)
[100 @(1) n(Random(40,80))(RandomSelect(4,8))]

//---------- ここまで ----------

方法は、「サクラ」のメニュー画面から、ファイル→MIDI形式で保存を選ぶ。



保存するファイル名を指定する画面が出るので、ファイル名(拡張子.mid)を付けて保存する。

こうして保存したMIDIデータは、SMF(Standard MIDI File)という形式のファイルだ。

SMFとは
http://www.b-sharp.com/midi/spec1/smf001.html

MIDIファイル(SMF)は、MIDIプレーヤーに読み込んでMIDI音源を使って演奏させることができるのだが、最近の携帯電話はMIDIファイルを再生できるものが多いから、携帯電話でだって演奏させることができる。

下の画像は、IrfanViewに読み込んで、再生しているところだ。IrfanViewは、MIDIデータの再生までできる便利なソフトなのだ。



ところで、SMFにはデータの記録形式によって、フォーマット0、フォーマット1、フォーマット2の3種類のフォーマットがある。

SMFのフォーマット
http://www.b-sharp.com/midi/spec1/smf002.html

そして、MIDファイルの構造はこんな感じなっているのだ。

SMFの構造
http://www.b-sharp.com/midi/spec1/smf004.html

MIDIファイルの先頭には、フォーマットの種類やトラック数、時間単位の情報が記録されているヘッダチャンクという部分がある。



IrfanViewでは、読み込んでいるファイルを16進表示で見ることができる。IrfanViewに、保存したMIDIデータを読み込んで、F3キーを押してみる。



チャンクタイプ“MThd”や“MTrk”の文字を確認することができる。これをみると「サクラ」のMIDIファイルはフォーマット1で保存されている。