このサンプルはjQueryとhowlerJSを使って、音がでるボタンを作り、音から抽出した音の長さを使って、CSSでアニメーションを実装しました。
howerJSというオーディオに特化したライブラリを使うと音源のデータからいろいろな情報を取得できます。
以下はその中で一番シンプルな音の長さ(秒数)をアニメーションの尺にあてた例です。
以下のボタンを押すと音が出ます。
自転車ベル
そうすると上記のエリアにDIVが生成され、アニメーションとして左から右に動き出します。
まず、音のライブラリは以下のにjQuery同様に読み込みます。
<script src="https://cdnjs.cloudflare.com/ajax/libs/howler/2.1.2/howler.min.js"></script>
JSは以下になります。
window.onload = () => {
$(".btn_effect").on("click",function(){
eff = new Howl({
src: [$(this).attr("data-eff")],
autoplay: false,
loop: false,
volume: 0.8,
onplay: (id) => {
$("#stage").append('<div class=item id=i'+id+'></div>');
$("#i"+id).css("animation-duration",eff.duration()+'s')
},
onend: (id) => {
$("#i"+id).remove();
}
});
eff.play();
});
};
HTMLは以下になります。
<div class="demo_flex">
<div class="btn_effect demo_btn" data-eff="/sound/demo/vehicle/001.mp3">自転車ベル</div>
</div>
<div id="stage"></div>
ボタンを連打すると次々と追加される仕様です。
HTML上で音源(ボタン)を増やすと、同じようにアニメーションが生成されるようになっています。
今後は秒数の他にも取れる音の情報で、エフェクトを考えたいと思います。