次はオプション機能で設定した、BGMとSEの音量を、適用できるように修正した。
通常のHSP3では、mmplay命令で音量は調整できないのだが、Dishであれば、mmvol命令で音量を調節できる。
ただし、ボリュームは、-1000が最小で、0が最大となる相対値での指定になる。
そのため、ベースとなる音源自体の音量がバラバラだと、ボリュームが一定にならない。
今回はいろんな音源サイトから、フリー音源を拝借してきているので、もともと音量がバラバラだったのだ。
音量を一定にするためのフリーソフトはあるのだが、mp3とwavどちらにも対応して、楽に調整できるものがない…
結局別々のソフトを使って、平準化したdbのピーク値をもとに、合わせることにした。
wav→GauDio
mp3→mp3gain
が有名どころで、それぞれ効果音とBGMの音量を調整できた。
しかし、VOICEVOXで出力した音声のwavファイルが、GauDioで不正ファイル扱いされてしまう…
どうやらサンプリングレートが44.1KHzじゃないとだめらしい。
VOICEVOXにもサンプリングレートの設定がちゃんとあって、44.1KHzで再出力したのだけど、それでもGauDioでは不正ファイルのままだった…
仕方ないので、最近はあまり良い噂を聞かない、音声ファイルの万能編集ソフト「Audacity」を使うことにした。
これで、全てのwav、mp3の再生音量レベルを一定にできた。
いよいよmmvol命令を使って音量調整をしようという段になったが、結構面倒だった…
オプション側での設定値は、0~100の間を10刻みに変更し、デフォルトが50。
でも、mmvolは冒頭で書いたように-1000~0で値を設定しなくてはならない。
単純に変数を渡したいところだけど、数式で書くことにした。
if soundflg=1 : mmvol B_TITLE,-1000+u_bgmvol*10 : mmplay B_TITLE
あと、ボリュームが0の時は、音自体を鳴らすフラグの値を0にして、鳴らさないようにした。
これで、音量のコンフィグは完了。
フルスクリーン対応は、テスト的に作っていたものを、ちゃんとオン・オフできるように機能追加したもの。
アプリを起動したときだけの切り替えにはなるけど、ないよりはマシかな。
フルスクリーンにするには、screen命令の3つ目の引数に256を付ける。
先にDBからフルスクリーンフラグを取得して、値が1なら256、0ならそのまま0になるようにした。
FULLS=(u_fullscr=1)*256 screen 0,800,600,FULLS