FAQ

今まで、質問のあった内容をまとめています。
是非、ご参照下さい。

NSD.libによる曲の打ち込み

休符で音量が0じゃなくて2になる

音量エンベロープが無効な場合、キーオフ後の音量はRvコマンドで指定した値が適用されます。
Rvコマンドの初期値は2であるため、音量が2となります。
解決策としては、音量エンベロープを使う、Rvコマンドで設定する、もしくはr(休符)コマンドに臨時記号`-'を付けてください。

休符なのに、音が鳴りっぱなしになる

音量エンベロープで、リリースのパターンを定義していない可能性があります。
各系統のエンベロープにおいてリリースのパターンを指定しない場合、そのままエンベロープが継続されます。
解決策としては、音量エンベロープにはリリースのパターンを定義する、もしくはr(休符)コマンドに臨時記号`-'か`+'を付けてください。
なお、`q',`u'(ゲートタイム)コマンドによってキーオフされた後の挙動は、Rmコマンドで設定します。

周波数エンベロープのかかり方が変

NSD.libの周波数エンベロープは、現在の音階(ドレミ)を基準とした値で指定します。
また、NSD.libは6.25[cent]単位で音程を制御する設計であり、音源・音階による変化量の差はほとんどありません。
(但し、6.25[cent]単位の制御ができない音源(ノイズ、儕CM)や、音域(APUの高音域等)もあります。)

儕CMトラックが、休符・ゲートタイムでキーオフされない。

デフォルトでは、MIDIのトラック10(パーカッショントラック)と同様に、キーオフしない設計となっております。
Rmコマンドにて0を指定することで、キーオフされます。

儕CMの発音時にプチノイズが載る。

デフォルトでは、発音時に初期ボリュームを0に設定しているため、前回の儕CM終了時点のボリュームとの差が大きい時にプチノイズが発生します。
回避策としては、儕CM定義ブロックにて初期ボリュームを`-1'にすることで、 儕CMの初期ボリュームを設定せず、プチノイズが軽減されます。

n106/n163の音色設定方法が分からない。

別途、n106/n163の使い方をご参照ください。

MMLコンパイラのオプションでファイル名を記述するとエラーになる。

オプションとファイル名の間にスペースが入っている場合、ファイル名を認識しません。
スペースを開けずにファイル名を記述して下さい。
これはC言語で書かれたアプリケーションの一般的な仕様で、スペースは次のオプションへの区切りになります。

特定のNSFプレイヤーで正常に演奏されない事がある。

本音源ドライバーは、実機での動作を正確に再現するNSFプレイヤー(最新版のVirtuaNSFなど)や、 実機で動作するNSFプレイヤー(TNS-HFCシリーズなど)のご使用を強く推奨します。

NSD.libを用いたアプリケーション開発

外部から現在のテンポ等の演奏状態の取得、および設定(変更)をしたい。

音源ドライバーの制御用変数をアクセスする事で可能です。
尚、シーケンス中で再設定された場合は、その値に書き換わりますので注意して下さい。
(シーケンス上は、相対系のコマンドを使うなどで対処して下さい。)

以下、テンポの取得・設定の例(`ca65.exe'のアセンブリ言語ソース)を示します。


        .include        "nsd.inc"

.proc   _get_tempo

        lda     __Tempo
        rts

.endproc

.proc   _set_tempo

        sta     __Tempo
        rts

.endproc

自作ゲーム用に音源ドライバーを改造したい

可ですが、ライセンス条文を遵守した上でお願い致します。