"kfm" = "MML+"
"kfm"の採用しているのは、MMLというものです。MMLとは、Music Macro Languageの略でありまして、記号によって、音楽を表記していこうというものです。
"kfm"は、MMLを拡張して作られたもので、基本的には、従来のMMLの形を踏襲しつつ、それにいろいろな機能を加えたものです。そのため、C言語の拡張形が、"C++"であるように、"kfm"も、"MML+"と、言って良いと思います。(これから++になる予定)
MMLは、コンピューターやゲームが8bitだった時代に、ゲームのBGMなどの音楽の記述に、よく使われていました。小さな容量で、音楽を書き表す事が出来るからです。しかし現在では、あまり使われていないようです。
それはMMLが時代錯誤なものという認識が世間一般に浸透してしまったことが理由ですが、現代でも十分に利用価値のある代物だと考えられます。
MMLは、「手軽」「身軽」「速い」
コンピューターがWindowsのようなマウス操作主体のGUI(グラフィカル・ユーザー・インターフェイス)に移行して、見栄えが良く、初心者にとって扱いやすいものになりました。
それに伴い、音楽製作においても、GUIが主体である環境に移行しました。しかし、MMLなら、"c"と書けば、ドの音が鳴るのですが、GUIのシーケンサーでは、五線符などのしかるべき場所までマウスを運び、それからクリックして・・・、あぁ、置き間違えてしまった・・・と、何かと複雑で慣れるまでは、ずいぶん手間がかかります。
もちろん、初心者にとってMMLとGUIシーケンサーのどちらが分かり易いのか、俯瞰性においてどちらが優れているのか、などなど・・・・、現在主流のシステムが優位に立っている事は、疑うべくもないことです。
が、しかし、"c"と書けばドが鳴るというMMLがテキストベースであるが故の「手軽さ」、「身軽さ」、「速さ」は、捨てるのに忍びないものだと思います。
さらに言えば、シーケンサーで打ち込むには面倒な、細かい音符を大量に書きたいとか、そういう場合に、繰り返しや、条件分岐、マクロ指定の出来る、MMLならば、さっさっさと短時間に、打ち込む事が可能です。
そのため、MMLで大体の形や、細かい音符などを入力して、後でシーケンサーに取り込んで、細かい編集を施すなど、他のシーケンサーと併用して使用すると、さらに威力を発揮する事でしょう。
MMLは実験的な事に優れている
それから、MMLを現在使う意義の重要な要素に、実験的な事をするのに向いている、という事があげられます。
MMLでは、先に述べたように、繰り返しなど、いろいろな制御命令があり、それと、変数やマクロなどを駆使することによって、実験的な音符の並びや、数値の並びを簡単に書き記す事ができるのです。
また、音程を数値で指定する事ができるので、数式を音程に当てはめていったり、各種パラメータに規則的な数値を与えたり、などなど、いろいろアイデアによって、様々な面白い効果が得られたりします。
テキストにいろいろな命令を記していく・・・これは、もう「音楽をプログラミングする」と、言っても良いと思います。・・・さぁ、だんだん数学者、科学者的な気分になってきましたよね。
コンピュータが弾き出す不思議な音列の実験!(・・・これ、実験マニアな私には、たまらないフレーズなんです。)
ところで、"kfm"では、MMLの、この実験的な部分を、より引き出していきたいと思い作られました。それで、マクロ機能と、変数機能、乱数機能を、充実させました。
そういう訳で、"kfm"では、今後も、実験的な音楽創造のツールとして役に立つような機能を充実拡張していきたいと思っている訳です。
また、"kfm"以外のMMLコンパイラを調査したところ、やはり、こういう実験的な面をアピールしているものが多かったと記憶しています。
"kfm"の存在意義
上記のような、高速入力、実験的音楽の創造という理由のほかにも、昔からMMLに親しんでいたから、とか、普通とは違った音楽を作りたいから、とか、シンプルな環境で音楽を楽しみたいとか・・・・MMLコンパイラ"kfm"の存在意義と、それを使うメリットは、現在においても、十分にあると思います。
さて、ここで、"kfm"の特徴を一通り述べる事にします。
まず、最大のポイントは、「コンパイラ」と「エディタ」の一体型である点です。これによって、面倒な初期設定や手続きなしに、MIDIの鳴る環境さえあれば、その日、その時から、音楽の作成が可能です。(それから、面倒な設定なしに、ボタン一発で、コンパイルから再生まで行えます。)
また、コンパイラとの連動マクロ検索機能を装備していますので、MMLにありがちな、どこで何のマクロを定義したのか分らなくなるなどということも、ありません。
ヘルプファイルも割と真面目に作りましたので、システムの初期マクロなども、F1キーの一発で、使い方から用例まで引く事が出来ます。(当然と言えば当然ですが・・・)
その他、マクロやMMLの長さを測る「MMLチェッカー」、コメントをリストアップしてソースリスト上を気楽に移動できる「コメントリスト」などなど、"kfm"ならではの便利な機能が揃っています。
それから、コンパイラのエンジン部分ですが、このコンパイラ製作にあたり、インターネットで入手できるありとあらゆるMMLコンパイラを収集し、その中で便利だと思われた機能や命令をピックアップしました。(機能競争?)
(各コンパイラ製作者の皆さん、ありがとうございます。そして、共にMMLの新機能を開発して行きましょう!)
具体的に書いていけば、(ピッチベンドなど)MIDI情報の数値を連続変化させるアクティブコマンド、引数の取り込みなどの関数的性格を備えた2種類のマクロ機能、四則演算はもちろん、理論演算、条件判断演算のできる整数型変数機能、ランダムベロシティーやランダムベンド、ランダムノートタイミング等、怪しい乱数機能など、コンパイラとしての機能も盛りだくさんです。
そういう訳で、ながながと宣伝文句を並べてみましたが、MMLを手軽に楽しみたい方から、私のようなマニアックにMMLを使いたい方まで、幅広い方に遊んでもらえるツールとして、皆様のお役に立てたら良いな、と思っています。
1999年2月 クジラ飛行机
"kfm"未来像
"kfm ver0.903"で、MMLの基本機能は大体網羅できました。これからは、既存のMM:コンパイラが持っていない様々な要素を付け加えて行きたいと思っています。今考えているのは、MMLをもっと立体的にするということなんですが・・・、どうなることやら・・・。
それでは、次のページからは、"kfm"の最も基本的な部分についてみていきたいと思います。