コマンド説明: 音程 C, D, E, F, G, A, B はそれぞれ ドレミファソラシを表します.また, C4 のように音程のすぐ後に数字で音の長さを指定します.音の長さが 省略された場合は L コマンドの値が使用されます.デフォルトの 長さは 4 です. C D E F G A B ド レ ミ ファ ソ ラ シ 1 2 4 8 16 32 64 全音符 2分音符 4分音符 8分音符 16分音符 32分音符 64分音符 タイ(&) 前後の音をつなぎます. 以下の場合は前の音を Q8 コマンドで指定した場合と同じです. ・前後の音程が異なる場合 ・後に音程以外のコマンドが続いた場合 ・行が変わった場合 シャープ(+, #) 音を半音上げます.B+ は,同じオクターブ上の C 音で定義されます. # は + と全く同じです. フラット(-) 音を半音下げます.C- は,同じオクターブ上の B 音で定義されます. 調号のデフォルト変更(~) (~音符記号(#,+,-,/))音符記号=アルファベットのA〜G このコマンド以後、指定した音符記号で調合の付いていないもの全てに ついて自動的に指定した調合が付加されます。 符点(.) 音の長さを 1.5 倍にします(符点音符).例えば,符点4分音符は C4. とします. 音量(V, @V) V0 〜 V15 まで音量を調節します.V0 は無音で,V15 は最大音量です. デフォルトは V8 です.また,@V0 〜 @V127 を使用することによりより 細かく音量調節ができます.V15 と @V127 は同じ音量です. V15(又は@V127)を超える音量を指定した場合は音が割れる可能性があります. 音量の相対設定(@<n,@>n) 音量を相対的に設定します.n が省略された場合は 1 です. 音の長さ(L) 音の長さを指定します.音程の長さを省略した場合の長さに使用されます. 音の長さの割合(Q) 音の長さの割合 を Q1 〜 Q8 を用いて指定します.割合は以下の通りです. Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 1/8 2/8 3/8 4/8 5/8 6/8 7/8 8/8 デフォルトは Q8 です. オクターブ(O) O1 〜 O8 を用いてオクターブを指定します.デフォルトは O4 です. オクターブの上げ下げ(<, >) > はオクターブを 1 つ上げます.< はオクターブを 1 つ下げます. 休符(R) 休符を指定します.長さの指定の仕方は音程と同じです. テンポ(T) テンポを指定します.デフォルトは T120 です. Nコマンド(N) N36 とすると定義されている音の一番下から 36 番目の音を発生します. 音程との対応を以下の表に示します. O1 O2 O3 O4 O5 O6 O7 O8 C 0 12 24 36 48 60 72 84 C+(D-) 1 13 25 37 49 61 73 85 D 2 14 26 38 50 62 74 86 D+(E-) 3 15 27 39 51 63 75 87 E 4 16 28 40 52 64 76 88 F 5 17 29 41 53 65 77 89 F+(G-) 6 18 30 42 54 66 78 90 G 7 19 31 43 55 67 79 91 G+(A-) 8 20 32 44 56 68 80 92 A 9 21 33 45 57 69 81 93 A+(B-) 10 22 34 46 58 70 82 94 B 11 23 35 47 59 71 83 95 音色(@) @0 〜 @5 を用いて音色を設定します.デフォルトは @0 です.この音色は 実際の MML で定義されたものとは異ります.@4 はノイズ音です.@5 は 金属を叩いた様な太鼓の音で,この音色は,音程やエンベロープを設定する ことはできません. 繰り返し(|:, :|) |: と :| で囲まれた領域を繰り返します.|: のすぐ後に数字を書けば その回数だけ繰り返します. 例: |:CEG:| CEG を 2回繰り返します. |:5CEG:| CEG を 5回繰り返します. |: の個数より :| の個数が多いとエラーとなります. 連符({,}) {音程}x は { と } で囲まれた領域を x 分の長さで等分割して 演奏します. 例: {CEG}4 4 分の長さを3 等分して CEG を演奏します. 注意: { }内で使用可能なコマンドは,音程命令の他に +, #, -, O, <, >, N, |:, :| です.それ例外のコマンドを指定した場合は,正しく MML を 解釈できません.どの様な動作をするかは未定です. エンベロープ周期(M) エンベロープ周期を設定します.デフォルトは M256 です.M で指定する 数値 x は,エンベロープ周期を t(秒) とした場合,以下の式で計算でき ます. x = fclock * t / 256, (fclock = 1996800Hz) エンベロープパターン(S) エンベロープパターンを設定します.デフォルトは S13 です. 「?? S1 だったかな?」 エンベロープパターンは以下の形が定義できます. 「以下の形が正しいかどうかわかりません?間違ってるかもしれないので 詳しい方教えて!!」 S0, S1, S2, S3, S9: \ \ \_________________ S4, S5, S6, S7, S15: /| / | / |________________ S8: \ |\ |\ |\ |\ \ | \ | \ | \ | \ \| \| \| \| \ S10: \ /\ /\ / \ / \ / \ / \/ \/ \/ S11: ________________ \ | \ | \| S12: /| /| /| /| /| / | / | / | / | / | / |/ |/ |/ |/ | S13: __________________ / / / S14: /\ /\ /\ /\ / \ / \ / \ / \ / \/ \/ \/ \ 複数ホストによる演奏: sample.mml を2つのホスト(例えば rose01 と rose02)で同時に演奏したい 場合は以下のようにして起動します. % mmlp -sr rose01:sample.mml rose02:sample.mml サウンドの様な感じを出すには -ms オプションをつけて % mmlp -sr -ms rose01:sample.mml rose02:sample.mml とします. s1.mml と s2.mml の 2 種類のパートを同時演奏するには,同様に, % mmlp -sr rose01:s1.mml rose02:s2.mml とします. 同時演奏は最大 16 までです. 尚,マシンの性能により,同時に演奏が始まらない場合があります. そのような場合は,コードの最初に R(休符)をいれて下さい. その他: mmlp は大文字と小文字は区別されません. % から改行まではコメントとして扱われ,入力がスキップされます. 改行の直前に \ があると,次の行とつながっているものと解釈されます. 数字の途中を除いて,どこにでもスペース(またはタブ)を挿入することが できます. 和音を多く重ねると音が割れます.この場合,各パートの音量を下げて 演奏して下さい. 1行にあまり多くのコードを記述すると,メモリが足らなくなる恐れが あります. 他人の迷惑のならないように,周りに気を使いながら演奏しましょう. サンプル: 以下にサンプルを示します.以下のコードを sample.mml というファイルに 保存した後,mmlp sample.mml で演奏できます. S0M10000,S0M10000L8O3 GEE2FDD2,CGEGCGEGDGFGDGFG CDEFGGG2,CGEGCGEGCGEGCGEG GEEEFDD2,CGEGCGEGDGFGDGFG CEGGEEE2,CGEGCGEGCGEGCGEG DDDDDEF2,DGFGDGFGDGFGDGFG EEEEEFG2,CGEGCGEGCGEGCGEG GEEEFDD2,CGEGCGEGDGFGDGFG CEGGEEE2,CGEGCGEGCGEGCGEG 本ソフトウェアは全く無保証のフリーソフトウェアで,使用,再配付は自由です. 質問,意見,バグレポートなどがございましたら 出雲正尚 Masanao Izumo 宛にお願いします.