木曜日, 6月 22, 2006

「サクラ」語はMMLの方言だということができます

日は、「サクラ」でPrint命令などを使ってプログラムを作ってみたのだが、肝心の音を出す命令はどうなっているのだろうか。

「サクラ」というのは、言ってみればMIDIコンパイラーだ。テキストで書いたプログラムをコンパイルして、MIDI仕様の楽器が演奏できるMIDIデータを作成する。

「サクラ」は、このMIDIデータを、Windowsのコントロールパネルの「サウンドとオーディオデバイスのプロパティー」で指定する「MIDI音楽の再生の既定のデバイス 」へ出力する。

MIDIの再生を、Windowsに標準で入っている音源(Microsoft GS Wavetable SW Synth)でやってもいいのだが、せっかくソフトシンセを使えるようにしてあるので、ここはまずSoundFontを使うことにする。

ということで、これから「サクラ」の説明をする時は、基本的にsfz.exeを立ち上げておいて、2gmgsmt.sf2のようなGS互換のSoundFontを読み込んであるという前提で説明する。

「サクラ」のエディタ画面に、試しにこう書いて再生ボタンを押してみる。

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

c

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



「ド」と音が出たと思う。つまり、c というのが「ド」の音を出す命令なのだ。cdefgab と書けば「ドレミファソラシ」という音が出る。

これらの一連の音を出す命令は、MML(Music Macro Language)と呼ばれているものだ。要するに言語なのだ。

Music Macro Language
http://www.weblio.jp/content/Music+Macro+Language

このMMLは、パソコンで音が出せるようになった当時からずっと使われていて、BASICのPLAYコマンドなどにもパラメータとして使われてきたものだ。

MMLは、パソコンの進化と共にどんどん拡張がなされ、MIDIの規格ができてからは、MIDI形式のデータを作るための言語としても使われている。

MMLの主なコマンド

  • CDEFGAB - ドレミファソラシの音符。後に#や+をつけて半音上げを、-をつけて半音下げを指定できる。その後に数字をつけて音の長さ(2=2分音符、4.=付点4分音符 など)を指定できる。
  • O - オクターブ指定
  • L - A~Gの後に数字をつけないときの音の長さを指定
  • V - 音量(ボリューム)を指定

MMLの書き方の基本は、上のような感じでどのMMLもほとんど同じなのだが、実際はMML言語を使うシステムと同じぐらいの数の方言がある。つまり、処理系を作る人によって微妙に拡張が行われているのだ。

「サクラ」語の音を出す命令の部分の仕様はこんな感じになっている。

「サクラ」命令一覧(音符属性&音名)
http://oto.chu.jp/doc/command/index2.htm#cmd1

というこことで、「サクラ」語(命令セット)は、MMLの一つの方言だと言うことができる。しかしこの方言、基本からはものすごい拡張が行われているのだ。