MySong.mmlを作成しましょう。NSD.Libのフォルダの下にあるsample/template に作成します。 内容は次のようになります。
多くはデフォルト設定で未指定でも良いようになっています。
#codeで指定するドライバ本体によってトラックの割当は異なります。
以下はnsd.binの場合です。
トラック | 詳細 |
---|---|
TR1 | 内蔵音源 矩形波1 |
TR2 | 内蔵音源 矩形波2 |
TR3 | 内蔵音源 三角波 |
TR4 | 内蔵音源 ノイズ |
TR5 | 内蔵音源 ⊿PCM |
ドライバとトラックの対応表はマニュアルにあります。 http://shaw.la.coocan.jp/nsdl/doc/spec.html
次のように打ちます。
#code "../../bin/nsd.bin"
BGM(0) {
TR1 cdefgab>c
}
コンパイルはターミナルより次のように入力します。
cd sample\template
.\make.bat mysong.mml
再度コンパイルする場合は最後のmake.batを繰り返します。
ターミナルでは矢印キー上下が便利です。
#codeはドライバ本体、ここではnsd.binを指定しています。 相対ディレクトリで指定していて、これがないとエラーになります。
BGM(0)はBGMであるという指定で、 BGM(0)の中身は「{」から「}」までということになります。
ちなみにBGM(0)の0は曲番号になります。
TR1はトラック1という指定です。nsd.binのトラック1は矩形波1になります。
cdefgabは音符でドレミファソラシに該当します。 途中の>はオクターブを上げるという相対オクターブというコマンドです。
デフォルトでは4分音符に相当します。 音の長さは音長とも書きます。
違ったMMLを入力してみます。
#code "../../bin/nsd.bin"
BGM(0) {
TR1 t100 o3 l8 c r e r g
}
t100はテンポを100に指定しています。いわゆるBPMと同じ数値になります。
o3は各音符に対して3オクターブを指定しています。
l8は各音符を未指定の場合8分音符であるという指定しています。
rは休符です。
ざっくりと書きますとo4のaが約440Hzになります。(NSD.Libは少しピッチが高いはずです)
つまり、o3aは220Hz、o5aは880Hz付近になります。
MML内でわからなくならないように途中に記号を使用してコメントをつけることができます。コメントとはMMLの記号としては意味を持たない文章です。
コメント文にするパターンは次の通りです
; 1行コメント1 行末までコメントです。
// 1行コメント2 行末までコメントです。
/*
複数行コメント
記号で囲われている部分はすべてコメントです。
*/