環境設定のサウンド設定:Almightに触れる9
前回、メッセージ履歴でボイスを再生しました。
BGMの再生やSEの再生はそれほど難しくないのでやり方までは書きませんが、そのかわり環境設定画面でのボリューム調整について書いていこうと思います。
まず、サウンドを再生するにあたって、気をつけておきたいことがあります。
BGMを再生するときはあまり意識しなくてよいのですが、効果音の再生には buf というものを理解しておく必要があります。
buf はバッファと読みます。この buf はスピーカーのようなもので、効果音を再生する際にはこれを指定しておきます。
buf=0 や buf=1 といった具合です。
スピーカーが一つしかないときに、同時に複数の音源を合わせては再生できません。
例えば、マクロを使わずタグで書きますが
@playse storage="voice.m4a" buf=0 @ws @playse storage="se.m4a" buf=0 @ws
という風になっているときは、スピーカーであるbuf=0に二つ指定されているので、同時にならすことはできません。
ボイスが先に再生され、次にSEが再生されます。
同時に鳴らしたい場合は、それぞれを buf=0 buf=1 に指定しなければなりません。
そこで意識しておくとよいことが一つあります。
ボイスはbuf=0に、効果音はbuf=1に指定した方が無難、ということです!
Almightの環境設定を開くと、BGM音量・SE音量・ボイス音量を変更できるようになっています。
このSE音量とボイス音量にはそれぞれbufが割り当ててあります。
SEにはbuf=1 ボイスにはbuf=0 が指定されているようです。
マクロをみてもわかります。
[macro name="play_se"] [eval exp="mp.file = (mp.file.indexOf('.') === -1) ? mp.file + '.m4a' : mp.file"] [if exp="mp.time != undefined"] [fadeinse buf=1 storage="%file" time="%time" cond="!almight.stage.skip"] [ws canskip="false" cond="%wait|false"] [else] [playse buf=1 storage="%file" loop=%loop|false cond="!almight.stage.skip"] [endif] [endmacro]
よくよくみると buf=1 という記述があります。
[macro name="play_voice"] [eval exp="mp.file = (mp.file.indexOf('.') === -1) ? mp.file + '.m4a' : mp.file"] [hact exp="&hactVoice()"] [playse buf=0 storage="%file" cond="!almight.stage.skip"] [endmacro]
こちらのボイスのマクロにも buf=0 という記述があります。
なので、できることならこれに合わせてbufを割り当てた方が作りやすいと思います。
もし、ボイスをbuf=1 効果音がbuf=0 に指定してあると、環境設定で音量を変更するときにあべこべになって音量が変更されてしまいますから。
ですが、効果音だってボイスだって複数同時に再生したいときはあります。
そういう場合は、setting.phpの中身を変更すれば大丈夫です。
変更する範囲は以下の箇所です。
// スライダーの設定 $('#bgm_slider, #se_slider, #voice_slider').slider({ unit: '%' }); $('#chspeed_slider').slider({ popup: false }).on('change', function(e, val){ almight.message.chSpeed = parseInt(val * 200, 10); }); $('#bgm_slider').on('change', function(e, val) { almight.sound.bgm.setGvolume(val); }); $('#voice_slider').on('change', function(e, val) { almight.sound.se[0].setGvolume(val); }); $('#se_slider').on('change', function(e, val) { almight.sound.se[1].setGvolume(val); }); // デフォルトに戻す $('#setting_default').on('vclick', function(){ // デフォルト設定に戻す $.fx.off = false; almight.message.chSpeed = 60; almight.sound.bgm.gvolume = 0.8; almight.sound.se[0].gvolume = 0.8; almight.sound.se[1].gvolume = 0.8; });
編集する箇所は実は少ないので簡単です。
例えば、SEだけbuf=1 buf=2 buf=3 まで使っているという場合は
$('#se_slider').on('change', function(e, val) { almight.sound.se[1].setGvolume(val); });
という部分を
$('#se_slider').on('change', function(e, val) { almight.sound.se[1].setGvolume(val); almight.sound.se[2].setGvolume(val); almight.sound.se[3].setGvolume(val); });
とすればよいだけです。
加えていうなら、デフォルトに戻すボタンを押したときにもボリュームが変わってほしいので、
// デフォルトに戻す $('#setting_default').on('vclick', function(){ // デフォルト設定に戻す $.fx.off = false; almight.message.chSpeed = 60; almight.sound.bgm.gvolume = 0.8; almight.sound.se[0].gvolume = 0.8; almight.sound.se[1].gvolume = 0.8; });
の部分も
// デフォルトに戻す $('#setting_default').on('vclick', function(){ // デフォルト設定に戻す $.fx.off = false; almight.message.chSpeed = 60; almight.sound.bgm.gvolume = 0.8; almight.sound.se[0].gvolume = 0.8; almight.sound.se[1].gvolume = 0.8; almight.sound.se[2].gvolume = 0.8; almight.sound.se[3].gvolume = 0.8; });
としてやればよいです。
ボイス音量に他の buf を指定したいときもやり方は同じです。