見やすいMMLへの提案


MMLは、テキストベースのため、混み入った記述をすると、後から何を書いたのか分からなくなってしまいます。
MMLを各フレーズごとに作って、それを時間順に横一列に並べるよう記述したらどうでしょう。

そんなアイデアを元に思いついたコマンドがPLAYです。これは、トラックを横一列に並べて、時間順に書くことができます。
文字列変数に、フレーズを入れておき、それをPLAYで鳴らすのです。
これで、フレーズの部品化が進み、時系列にMMLを見ていくことが出来ます。


PLAY(文字列,文字列,文字列, ...)
PLAY(track0, track1, track2, ...)
文字列をトラックに分けて演奏します。
文字列は、文字列変数か文字列マクロ(#name)か {...} か 文字列変数で指定します。
動作としては、一番左の文字列から、トラック0に、2番目の文字列を、トラック1に、3番目をトラック2へ順に書きこんで行きます。
これによって、フレーズの部品化が進み、読みやすいMMLになると思います。
#PH1 = { o5l4 cdefgb } //MMLを文字列変数に代入
#PH2 = { o4l2 c e b }
#PH3 = { o3l1 c c2 }
PLAY( #PH1, #PH2, #PH3, ) //各トラックに文字列を書きこむ
//Track(1)#PH1; Track(2);#PH2; Track(3);#PH3; と同じ意味。

追記:
PLAYコマンドは、PLAYが指定されたトラックのタイムに、すべてのトラックのタイムを合わせてから書きこみます。

また、ノートオンオプションや、Sub{}などを積極的に利用して、純粋な演奏表記部分と、それに味付けするエフェクト部分を切り離すことでも、少し可視性が高まります。

l8 v100 o5
//ノートオンオプション
v_.onTime(-10,10,!4,-20,20,!4);//ベロシティの調節
//Subコマンド
Sub{ [2 y10,0 rrr y10,100 rrr y10,64 rr] }//コントロールチェンジの書き込み
g^^e^^d^ edegega^

次のようなフレーズを打ち込むにはどうしたら良いでしょう?

ドーーーーーーーー
   ミーーーーーーーーーー
        ソーーー
(音と音がダブっている時)
これを綺麗なMMLで表現するのが今後の課題の一つなんですが、サクラでは、以下のように表記できます。
//その1(l0 を使う)
l0 c,%!1 r2 e,%!1^1 r2 g,%!1

//その2(文字列変数を使う)
Int MemoTime;
Str InsTrk = { MemoTime = Time; }
Str SetTrk = { Time = MemoTime; }
l4 cded InsTrk c^^^ ^^^^ ^^^^
    SetTrk r^^^ e^^^ ^^^^ ^^^^ ^^^^
    SetTrk r^^^ ^^^^ g^^^

//その3(オーソドックスにSub{}を使う)
l4 cded
Sub{ c^^^ ^^^^ ^^^^ }
Sub{ r^^^ e^^^ ^^^^ ^^^^ ^^^^ ^^^^ }
   r^^^ ^^^^ g^^^

//その4(休符で戻る)
l4 cded c^^^ ^^^^ ^^^^
r-4 e^^^ ^^^^ ^^^^ ^^^^ ^^^^
r-2 g^^^

最後に

のMMLの欠点は、テキストが主体なので、俯瞰性が悪く、どこになにが書いてあるのか、いったいどういう音が鳴るのかが見えにくい事です。
それに反して、GUIベースの現代の一般的なシーケンサーは、見た目がカッコよく、元来目に見えない音の様子を図形として表示することが出来ます。
それを思うと、MMLは、覚えるのも面倒くさく、全くメリットが無いかのように思われます。
ところが、MMLでの音楽製作には、たくさんのメリットがあります。
最たるものを1つ挙げるなら、とにもかくにも、加工が楽だということでしょう。フォーマットが文字なので、わざわざ音楽作成専用のシーケンサーを使わなくても、どんなワープロやエディタからも、曲の製作が可能だからです。
しかも、巷には、文章やプログラムを書くためのツールやスクリプトがごろごろしており、文章を簡単に整形加工するための素晴らしい環境が整っています。そう言うわけで、こんなに良い環境を音楽製作に活かさない手はないだろうと思います。
さらに、サクラのスクリプトを使ってアルゴリズム作曲が出来たり、関数を利用した、フレーズの味付けが楽に出来たり、コードなど関数電卓に出来たり・・・、音楽がプログラムできることも大きなメリットです。
して、MMLという音楽記述方法には、まだまだ進化の余地がたくさんあります。去年kfmというMMLコンパイラを作ったのですが、公開して改良を重ねる過程で、多くの助言を頂き、そのフィードバックをいっぱい受けて、サクラを作り上げました。サクラは、kfmに比べたらかなり良い線に近づいたな、という実感があります。
コツコツと不思議な音楽を作りつづける音楽家の皆さん、そしてテキスト派ミュージシャンの皆さん、MMLで盛り上がって行きましょう!

作者:クジラ飛行机


戻る