NSDLibDoc

NSD.Lib楽曲作成

最小構成のMMLを作成する

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

MMLの作成

次のように打ちます。

#code "../../bin/nsd.bin"

BGM(0) {
    TR1 cdefgab>c
}

コンパイル

コンパイルはターミナルより次のように入力します。

cd sample\template
.\make.bat mysong.mml 

再度コンパイルする場合は最後のmake.batを繰り返します。
ターミナルでは矢印キー上下が便利です。

MMLの記述の解説

#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 行末までコメントです。
/* 
 複数行コメント
 記号で囲われている部分はすべてコメントです。
 */