音声の再生
Ponkanでは、ブラウザがサポートする音声ファイル(wav,mp3,oggなど)を再生することができます。
PonkanではBGMと効果音を特に区別しません。どちらも音声再生コマンドで再生してください。
音声の読み込み、再生、停止、解放
音声を再生するためには、あらかじめ音声ファイルを読み込んでおく必要があります。
音声の読み込みはloadsoundコマンドで行います。
;loadsound "buf": 0, file: "sound/pekowave1.mp3"
bufパラメータにはファイルを読み込む先の音声バッファ番号を指定します。
音声バッファは音声データを読み込んで保持しておく場所で、音声関係のコマンドはすべて音声バッファに対して処理を行います。
音声バッファ番号には0以上の整数値を指定できます。
読み込んだファイルを再生するにはplaysoundコマンドを使用します。
音声バッファ0に読み込まれている音声を再生するには以下のように記述します。
;playsound buf: 0
読み込んだファイルを停止するにはstopsoundコマンドを使用します。
;stopsound buf: 0
再生停止した後、もしもう音声を使わないのであれば、音声を解放しておいたほうがメモリの節約になります。
なるべく解放しましょう。
```plain
;freesound buf: 0
ループ再生、音量などの設定
音声をループ再生したい場合は、soundoptコマンドで音声バッファの設定を行います。
# ループ再生を有効化、音量50%にする
;soundopt buf: 0, loop: true, volume: 0.5
volumeとgvolumeについて
soundoptコマンドで設定できる音量には、volumeとgvolumeの二つがあります。
最終的に再生されるときの音量はvoluml×gvolumeの音量となります。
volumeは音声再生時の音量設定に使用してください。
たとえば同じ「ドアを開けるときの音」という効果音でも、静かにドアを開けるときは音量50%、
普通に開けるときは音量100%、のように音量に差異を付けたい場合などです。
gvolumeはゲーム全体を通したマスター音量の設定に使用してください。
たとえば、コンフィグ画面で効果音の音量を50%にする場合は、gvolumeのほうを0.5に設定します。
gvolumeが0.5なので、たとえvolumeが1.0だったとしても50%の音量で再生されます。
gvolumeはグローバル音量の略ですが、全音声バッファ共通のボリュームというわけではなく、
音声バッファごとに個別に設定する必要があることに注意してください。
読み込み時間について
一般的に音声ファイルはファイルサイズが大きいため、読み込みに時間がかかります。
そのため、音声を再生する直前でloadsoundで読み込もうとすると、ゲームが一瞬停止したように見えてしまいます。
これを回避するために、再生開始するタイミングよりも手前で事前に読み込んでおくと良いでしょう。 画面が暗転しているときなどに読み込んでおくことで、違和感を低減することができます。
フェード再生
音声のフェード(徐々に音量を変化させる)にはfadesoundコマンドを使用してください。
音声をフェードインしながら再生するときはfadeinsoundコマンドを使用します。
音声をフェードアウトしながら再生停止したいときはfadeinsoundコマンドを使用します。
再生停止やフェード完了を待つ
音声ファイルの最後まで再生し終わるのを待つには、waitsoundコマンドを使用します。
ただし、音声がループ再生されている場合は何もしない(待たずに次に進む)ので注意してください。
フェードが完了するのを待つには、waitsoundstopコマンドを使用します。
ただし、音声がフェードされていない場合は何もしない(待たずに次に進む)ので注意してください。
バッファ番号エイリアス機能
バッファ番号エイリアス機能は、バッファ番号指定の番号に名前を付けて、管理を簡単にする機能です。
たとえば、バッファ0ではBGM、バッファ1では効果音を再生する場合に、
それぞれのバッファに"bgm"や"se"という名前を付けることができます。
わかりやすい名前を付けることで、スクリプトの見通しが良くなります。
バッファ番号エイリアスの設定は、bufaliasコマンドで行います。
# ゲーム開始スクリプト
;call file: "script/init_system.pon"
;bufalias name: "se", buf: "0"
;loadsound "buf": "se", "file": "sound/pekowave1.mp3"
こんにちは。