“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

160.HSPでゲームを作ろう:培養臼Ex その7

次はオプション機能で設定した、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 

これで、残るはジョイスティック接続時のキーアサインのみとなったが、これがまた難航する(してる)のであった。