音楽再生に関して

 音楽ファイルを使う際、mmplayはあまり使い勝手がよくない。MIDI形式とMP3形式は演奏を始める際とリピート演奏が行われる時に処理が一時中断されるし、同じ形式のファイルは1つしか演奏できず別の音を鳴らそうとすると前の音が消えてしまう。さらにMP3形式は環境によっては演奏されないファイルもあり、MIDI形式はループ埋め込みに対応していない。使い道があるとすれば演奏が終わるまで処理を中断させるモードぐらい。

 MIDI形式はGuruGuruSMF4.hpiを使えば初期化にやや時間がかかるものの演奏開始時に処理が中断される事はないしループ埋め込みにも対応している。ただMIDI形式は何年も前から使用頻度が極端に落ちており新規で素材製作をする人は非常に少なくMIDI素材配布を終了したサイトも少なくない。

GuruGuruSMF4.hpiの配布先

 MP3やOGG形式等に対応したプラグインにvAudioがある。ただBGMはこれでいいのだが、効果音を鳴らそうとすると同じ音は最初に鳴らした物が終わるまで次を鳴らせない。演奏停止してから再演奏させるということもやってみたけどダメだった。あるいは同じ音源ファイルを別IDに登録すればいいのかもしれないが、管理がメンドイしメモリの無駄。まあメモリはそんなに気にしなくてもいいのかもしれないけど。

vAudioの配布先

 今のところ効果音は同梱のhspogg.dllovplay.dllを使った方がいいっぽい。hspogg.dllはHSP3.6の時点ではOGG形式ファイルに関してはpackできないしいくつかの不具合を確認しているので少なくとも3.6ではovplayの方がいい。ovplayの配布先は閉鎖しているが、取得できる場所もあるらしい。再配布可との事なので、このサイトでもDLできるようにしておく。

ovplay.dll(私の製作物ではありません)

 なおvAudio、hspogg.dll、ovplay.dllのいずれももループ埋め込みには対応していないっぽい。HSP掲示板に自動でループ設定をするスクリプトを公開している人もいたが手動で特定の位置から位置までのループをさせたい場合はおーぐぷれーやー(「Ogg」のこと最近までずっと「おーぐ」って読んでたよプレーヤー)(左上のメニューの下の方にある素材関連ツールをクリックして、左下メニューから“おーぐぷれーやー”をクリック)なんかを使って数値を調べる必要がある。

 おーぐぷれーやーの場合は秒単位でループ位置が表示されるのでvAudioの場合はその数値を1000倍した物を使うだけでいいので簡単なのだが、hspogg.dllとovplay.dllの場合はもう少し加工が必要になる。なのでBGMはやはりvAudioを使った方がいいだろう。

 それからovplay.dllの初期設定はスクリプトで何かいろいろやった後に入れると上手くいかなかった。なるべくスクリプトの最初の方でやった方がいいっぽい。


(2021/10/25)追記

 ovplay.dllに関してov_playov_loopは第2引数に-1を入れるとov_stopで停止したところから再生してくれるけど、ov_bloopでは最初からの演奏になる。

 また、ov_setvolumeでボリュームを変更したバッファにov_loadするとボリュームが初期化される。


戻る