:"kfm"の機能の中で、変数というのは、かなり重要なウェイトをしめることになりました。この変数を旨く使えば、面白いことが、いろいろとできると思います。
まず、変数の数ですが、0番から500番までの、501個の変数があります。そして、 ~n (nは変数番号)というように表わします。変数の型は、整数型です。(もちろん整数というからには、正も負も扱えます。)トラック毎に分かれているのではなく、全トラック共通です。
(0)代入 ( ~n = n2 )
当然ですが、変数に値を代入できます。例を示すまでもないですが、一応、たくさん代入の例を。
~1=50 ~1=120 ~5=92 ~4=-30 ~99=43 ~120=50 |
(1)演算1( ~n [+|-|*|/|%|&|||^|R|L n2 ] = ~nとn2を計算し、~nに代入する )
上の赤い文字のように書くと少し分かりづらいですが、
(~変数番号)(四則演算の記号)(数値)
と、いうことです。四則演算の記号は、
+ | 加算。(足し算) |
- | 減算。(引き算) |
* | 乗算。(掛け算) |
/ | 除算。(割り算) |
% | 余剰。(割り算の余り) |
& | 理論演算 AND |
| | 理論演算 OR |
^ | 理論演算 XOR |
R | 右方向シフト演算 |
L | 左方向シフト演算 |
と、C言語と対応させました。
(ちなみに、"kfm"は、旧Borland社のDelphiを使ってプログラムしました。)
実際の動作としては、変数の内容と数値を演算したものを、変数に代入します。
こちらも、例をたくさん挙げておきたいと思います。
~1=50 ~1+50 _print(~1); 変数1番に50を代入し、50を足して、表示する。 ~2=30 ~2-20 _print(~2) ~3=120 ~3*2 _print(~3) ~1=80 ~1*3 ~1%8 _print(~1) ~2=5 ~2/2 ~2*10 _print(~2) {変数と変数を演算する事も出来ます} ~1=30 ~2=30 ~1+~2 _print(~1);変数1に30、2に30を代入。変数1に変数2を足す。変数1を表示する。 ~1=70 ~2=8 ~1/~2 _print(~1) |
"_print"コマンドの解説も少ししておきます。
これは変数の値や文字を、"Message View"に表示する機能です。"Message View"を表示させるには、F10キーを押すか、メインメニューの[View]-[Message View]のチェックを付けてください。
すると、MMLのコンパイルに合わせて、そこに"_print"で指定した変数の数値や文字が、順に表示されます。(あまり大量に数値を表示させると、コンパイルに時間がかかることがあります。)
(2)演算2( ~n=n2 [+|-|*|/|%|&||||^|R|L|<|> n3 ] = n2とn3を計算し、~nに代入する )
こちらの方が、演算1よりも分かりやすいです。
(~変数番号)=(数値)(四則演算記号)(数値)
という、形であります。演算1の
~1+5 |
は、
~1=~1+5 |
と、書き換える事が出来ます。それでは、いくつか例を。
~1=70 ~2=~1+50 _print(~2) ~1=90 ~2=90 ~3=~1*~2 _print(~3) ~1=45 ~2=60+~1 ~3=~2%~1 _print(~3) |
(3)システム変数の代入( ~n=[各種コマンド] = ~nにコマンドの数値を代入する )
変数へ、v,o,lや、REV,CHO,M,E,V,B,Pなどのシステム変数を代入できます。
v=120 ~1=v _print(~2) o=4 ~1=o _print(~3) {もちろんその逆も可} ~1=50 v=~1 ~2=64 REV=~2 |
それから、変数に乱数を代入できます。
~n=rnd(n) = 0〜n-1までの乱数を代入する
~1=rnd(128) _print(~1) |
何度か実行してみてください。毎回、表示結果が違いますよね。これを応用して、乱数音楽を作る事も出来ます。
_m(R,"~1=rnd(24)
~1+? n~1") _tr(0) CH=1 @80 v100 q4 [8 l8 [8 R(60) ]] |
あっという間に怪しい音楽を作ってくれますね。いろいろと数値を変えてみると、怪しい感じの度合いが変わりますので、ぜひとも、頑張って、世界一怪しい音楽を作ってください!
(他にも様々なシステム変数が代入出来ますが、少し説明が複雑になりますので、ヘルプを参照してください。)