アラキタウン

黒歴史や生き恥を切り売り

VCI上で音量調節する。

楽器を作ったはいいものの、バーチャルキャスト上で音量調整が難しい。

今のところの経験則的には弾き語りするならボリュームは0.25くらいかなって感じ。

音だけ聞かせるならもう少し大きくてもいいかなって感じ。

 

 

 

たまにコメントで「音大きすぎ」とか「小さすぎ」とかくる。

正直視聴者のリスニング環境の違いだろうと思うが、

VCI上で音量調整する機能があったらいいなと思い実装。

 

 

 

 

上記のアルパカの声を出すVCIのスクリプトは以下のように書いた。

--初期設定

bgmvol = 0.2
count = 1
vci.assets._ALL_SetMaterialColorFromIndex(4, Color.__new(255,255,0))
vci.assets._ALL_SetMaterialColorFromIndex(5, Color.__new(255,255,255))
vci.assets._ALL_SetMaterialColorFromIndex(6, Color.__new(255,255,255))
vci.assets._ALL_SetMaterialColorFromIndex(7, Color.__new(255,255,255))
vci.assets._ALL_SetMaterialColorFromIndex(8, Color.__new(255,255,255))

 

function onCollisionEnter(item, hit)
    if hit == "alpaca" and item =="Capsule" then
        vci.assets.audio._ALL_Play("alpaca_sound", bgmvol, false)
    end
end
function onUse(use)
    if use == "alpaca" then
        vci.assets.audio._ALL_Play("alpaca_sound", bgmvol, false)
    end
end


function onTriggerEnter(item, hit)

    if (hit == "Cube1 (1)" or item == "Cube1 (1)") and count < 5 and 0 <= count          then
        bgmvol = bgmvol + 0.2
        count = count + 1
    end
    if (hit == "Cube1" or item == "Cube1") and count <= 5 and 0 < count then
        bgmvol = bgmvol - 0.2
        count = count - 1
    end

    if count == 0 then
        vci.assets._ALL_SetMaterialColorFromIndex(4, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(5, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(6, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(7, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(8, Color.__new(255,255,255))
    end

    if count == 1 then
        vci.assets._ALL_SetMaterialColorFromIndex(4, Color.__new(255,255,0))
        vci.assets._ALL_SetMaterialColorFromIndex(5, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(6, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(7, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(8, Color.__new(255,255,255))
    end

    if count == 2 then
        vci.assets._ALL_SetMaterialColorFromIndex(4, Color.__new(255,255,0))
        vci.assets._ALL_SetMaterialColorFromIndex(5, Color.__new(255,255,0))
        vci.assets._ALL_SetMaterialColorFromIndex(6, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(7, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(8, Color.__new(255,255,255))
    end

    if count == 3 then
        vci.assets._ALL_SetMaterialColorFromIndex(4, Color.__new(255,255,0))
        vci.assets._ALL_SetMaterialColorFromIndex(5, Color.__new(255,255,0))
        vci.assets._ALL_SetMaterialColorFromIndex(6, Color.__new(255,255,0))
        vci.assets._ALL_SetMaterialColorFromIndex(7, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(8, Color.__new(255,255,255))
    end

    if count == 4 then
         vci.assets._ALL_SetMaterialColorFromIndex(4, Color.__new(255,255,0))
         vci.assets._ALL_SetMaterialColorFromIndex(5, Color.__new(255,255,0))
         vci.assets._ALL_SetMaterialColorFromIndex(6, Color.__new(255,255,0))
         vci.assets._ALL_SetMaterialColorFromIndex(7, Color.__new(255,255,0))
        vci.assets._ALL_SetMaterialColorFromIndex(8, Color.__new(255,255,255))
     end

     if count == 5 then
         vci.assets._ALL_SetMaterialColorFromIndex(4, Color.__new(255,255,0))
         vci.assets._ALL_SetMaterialColorFromIndex(5, Color.__new(255,255,0))
         vci.assets._ALL_SetMaterialColorFromIndex(6, Color.__new(255,255,0))
         vci.assets._ALL_SetMaterialColorFromIndex(7, Color.__new(255,255,0))
         vci.assets._ALL_SetMaterialColorFromIndex(8, Color.__new(255,255,0))
     end
end

 

 

 

以下の関数で音を鳴らせるから、第2引数のボリュームを変えれるようにしただけです。

vci.assets.audio._ALL_Play(鳴らしたい音ファイル, ボリューム, false)

 

 

以下で+-をタッチすると、1~5まででbgmvolとcountも増減できるようにした。

countの数字で条件分岐させてマテリアルの色を変えている。

 

function onTriggerEnter(item, hit)

    if (hit == "Cube1 (1)" or item == "Cube1 (1)") and count < 5 and 0 <= count          then
        bgmvol = bgmvol + 0.2
        count = count + 1
    end
    if (hit == "Cube1" or item == "Cube1") and count <= 5 and 0 < count then
        bgmvol = bgmvol - 0.2
        count = count - 1
    end

end

 

最初はbgmvolの値で条件分岐させようとしたけど、

0と0.6、0.8の時に反応しなかった。

 

どうやら計算誤差というやつが起きているらしい。

↓のサイトがわかりやすい。

www.ritsumei.ac.jp

 

とりあえず、小数点の値を使用するのはできないみたいなので、countの変数を用意して条件分岐させた。

 

    if count == 0 then
        vci.assets._ALL_SetMaterialColorFromIndex(4, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(5, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(6, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(7, Color.__new(255,255,255))
        vci.assets._ALL_SetMaterialColorFromIndex(8, Color.__new(255,255,255))
    end

 
 
色はRGBで変えれる。 Color.__new(R,G,B) 
↓のサイトとか参考になる。

(255,255,0)で黄色、(255,255,255)で白なので、だらだらとif文書いて音量に合わせて色が変わるようにした。

 

これで、放送中に音量に対するリクエストに答えられるようになったはず!

 

 

Programming in Lua プログラミング言語Lua公式解説書

Programming in Lua プログラミング言語Lua公式解説書