イベントコマンド 【サウンド】
音楽や効果音を再生します。
【お知らせ:長時間プレイしていると音声がすべて再生されなくなる問題について】
Ver2.271〜3.105のバージョンにおいて、「Ver2.270以前に入力された【サウンド】コマンド」でSEを32678回再生するとそれ以降の音が完全に鳴らなくなるバグがありました。
この問題はVer3.106で解消されましたので、必要ならEXEのアップデートをお願いいたします。
(アップデートしなくても、SEを使っている【サウンド】コマンドを「修正」→「OK」すればそのコマンドでは問題は起きなくなります)
【各部の説明】
・実行する処理
- 通常再生 … BGMやSEの再生を行います。基本的にはこれだけで十分です。
- メモリに先読みロード … BGMやSEを、データだけメモリにロードしておきます、再生はしません。
- メモリから非使用中音声を全解放 … 現在再生されていない音声を全てメモリから解放します
- メモリから手動解放(SEのみ) … 指定したメモリ内のSEのデータを解放します。
→ 正常に動作しないため、Ver2.20から削除されました。
・音声の指定方法
サウンドの呼び出し方法を指定します。
なお、直接指定と変数呼び出しの方法ではシステムDBに登録済みのデータしか読み込むことはできません。
- ファイル名で指定 … ファイルのアドレスを指定して読み込みます。\sや\cdbなどの変数も指定可能です。
- 直接指定 … システムデータベースに登録したデータから一つ再生するサウンドを選択します。この中の「(停止)」を選ぶと音声を停止できます。
※なお、SEの(停止)は、「遅延」を指定して予約したSEも全て消去されます。
- 変数呼び出し … 再生する音楽の番号を変数で指定します。
・BGM指定・BGS指定・SE指定
この3つの欄はそれぞれ、システムデータベースのタイプ1〜3から内容が読み込まれています。
この欄を最新の状態にするには「音声の指定方法」を変更してください。
『ファイル名で指定』の場合はここにファイルパスを指定します。
・フェード時間(BGM・BGS専用)
BGM・BGS時で、音楽のフェード時間をフレーム数で指定します。徐々に音楽が流れ始めたり、徐々に音楽が消えたりする演出時に使います。
ただし、ゲームの基本設定で「ハードウェア音源」に設定されている場合には機能しません。
・再生を遅延させる(SE専用)
SE時のみ有効な欄です、指定フレームだけ再生開始を遅らせます。
・途中再生 (BGM・BGSの場合のみ)
指定した時間(MP3・OGG・WAVならミリ秒単位/MIDIならTick数単位)だけ、曲の途中から再生を開始できます。※SE指定では使用できません。
・SEチャンネル指定 (SEの場合のみ)
SE再生時のみ、「チャンネル」を設定できます。たとえば「1チャンネルと2チャンネルでそれぞれSEを再生」したとき、「1チャンネル側のSEだけ停止させる(2チャンネルはそのまま再生させる)」ということができます。
「停止」時にチャンネル「-1」を指定すれば、「全チャンネル」のSEを停止させることができます。
→ 使用例としては「ボイス関連」が有力で、例えば格闘ゲームで「(打撃音などを止めずに)同じキャラのボイスが重複して再生されないようにする」といった用途で使える状況が多いと思います。
・音量[%]/周波数[%]/ループ位置[ms BGM・BGSのみ]
『ファイル名で指定』の場合のみ指定できます。内容はシステムデータベース 【各タイプの説明】
のタイプ2と同じです。
※BGM・BGSで同じファイルを読み込んだ場合は、新たな音量と周波数設定に変わるだけで曲自体はそのまま再生され続けます。
【隠し機能】 ファイル名の指定で「文字列変数」を指定することもできます(例:\s[1]や\cself[6])。
その文字列変数に、複数行にかけて
「ファイル名<改行>音量(%)<改行>周波数(%)<改行>ループ位置(ms・BGM・BGSのみ)」
と記述した文字列を代入しておくと、エディタ側で入力した値を無視して
文字列に書かれた数値で音量・周波数・ループ設定が行われます。
例:「Sound\テスト.wav
100
120」 と記述した文字列を指定すると、テスト.wavを音量100%、周波数120%で再生する。
【隠し機能】 ループ位置を「0」にした場合に限り、
OGG・MP3ファイルのLOOPSTARTタグ(※ファイルの先頭1KB内にある場合のみ)を自動で読み込み、
その時間をループ開始位置として自動設定する機能を搭載しました。
※LOOPLENGTHも読み込めます。ループ長を指定できます。
※MP3の場合でも、作曲者情報など文字を格納できるところならどこでも
「LOOPSTART=123456」 と言う文字列が含まれていれば動作します。
↓サウンドファイルに上記のループ設定を行えるツールも存在します
【FOLE(FICUSEL Ogg Loop Editor)】
http://forest.watch.impress.co.jp/docs/review/693911.html
・キー変更機能[MIDIのみ]
MIDI再生時に限り、「ループ位置」の代わりに「キーの上下」が設定できます。
キーを上げると音が高く、キーを下げると低くなります。微妙な雰囲気のチューンに最適です。
【SEの多重再生】
同じSEを複数連続で同時再生した場合、一定回数以降のSEが再生され始めると同時になっているうちの最初のSEは停止されてしまいます(おそらく2つまでは同時再生可能と思われますが、3つ目のSEが鳴ると1つ目の音は消えてしまいます)。
もし同じSEを停止させずに次々に再生したい場合は、以下の手順を取ってください。
・【例】爆発音「AAA.wav」を連続で再生したい (※理解できる人向け)
システムDBのSEのデータ4〜6に同じ「AAA.wav」を指定し、SE再生時にはSE4番〜6番を順繰りに再生するようなイベントコマンドを構築することで「AAA.wav」を3音同時に再生できます。
たとえばコモンイベント「爆発音」を作り、それを実行するたびに、「4+Cself10」番のSEを1回分だけ鳴らした後に「Cself10を+1」し、「Cself10
% 3」(3で割った余りを取る)する、という処理を作れば、呼び出すたびに4→5→6→4→5→6と順番にSEが再生されるはずです。
そうすればあまり音が途切れることなく、最大で3つ同時にSEを鳴らすことができます。もっと連続で鳴らしたい場合は、たとえば4〜10番まで使って順繰りに鳴らせばOKです。
【音声の全リセット】
「ファイル名で指定」→BGM指定に「INITIALIZE」とだけ入れて実行すると、「音声メモリの全リセット」が可能です。
その際、BGMやBGSは停止してしまうのでご注意ください。
音声周りでバグが発生してどうしようもない場合への対策として用意されていますが、基本的には使う必要はありません。