NScripterのボリューム関連のはまりやすい仕様について

たとえば、NScripterでセリフ付きのノベルゲームを作るとした時。
演出の一環としてキャラクターの声を小さくしたいと思ったことはないだろうか。(大きくすることはできない。したければ、最初から大きく声の素材を録音しておくしかない)
そのための命令は用意されており、dwaveに対してはchvolと言う命令が対応している。

chvol %チャンネル番号,%ボリューム

こういう書式になっており、チャンネル番号は0〜49、ボイスは基本的に0番を使い、ボリュームは0〜100でデフォルトは100になっている。
では喜び勇んで早速使ってみた。

chvol 0,50
dwave 0,"voice1.wav"

しかしこれを実際に実行してみると、どうも音が小さくなったようには聞こえない。試しにchvolを外して実行してみても全く同じ結果になってしまう。
「バグか!?」
まあ待ちたまえ、これでオフィシャルサイトのサポート掲示板に突進するのは早計に過ぎる。
実は、こうすれば確かに小さく聞こえるのだ。

dwave 0,"voice1.wav"
chvol 0,50

dwave命令は、実行した時に自動的にボリュームを100に戻してしまうようなのだ。
「なんだそりゃ」と言いたいかも知れないが、そういう仕様なんだから仕方がない。
なので、ボリュームを小さくしたければ、dwaveの直後にchvolを記述するのが基本的な解法だ。(ちなみに、この性質はbgmにも共通している。解法も同じだ)
しかも恐るべきことに、このボリュームの設定はセーブで保存されないのである。
すると、こう返す人もいるだろう。
「じゃあ、ここは演出でずっと声が小さく聞こえる、なんて演出の時には、いちいちいちいちchvolを書かなきゃならないのか?」
「しかも、セーブロードを考えて、システムカスタマイズをしなければならないのか?」
確かにそれは面倒くさい。なので、む式ライブラリver.2 - 永字八法には、そのための機能を追加しておいた。

機能解説

ライブラリをそのまま使ったのでは、デフォルトの仕様のままです。
volume_mode_on を実行して初めて追加機能が発揮され、サウンド関係、chvol, bgmvolなどが直観的な動作をするようになります。

chvol 0,50
dwave 0,"voice1.wav"

これが最初に期待したように動きますし、

chvol 0,50
dwave 0,"voice1.wav"
(中略)
dwave 0,"voice2.wav"

voice2.wavもまた、ちゃんと半分のボリュームになります。
デフォルトの動作に戻したい時は、volume_mode_off を実行します。再度volume_mode_onを実行した時、ボリュームの設定などはそのまま残っています。
また、何もしなくてもセーブ&ロードに対応します。特別なことは何も要りません。