2012-11-19 6 views
5

私は、Actionscriptを介してサウンドでオブジェクトをアニメーション化することが可能であることを知っています。非常に似ているので、JavaScriptを使ってオブジェクトをアニメートすることも可能です。音の大きさでオブジェクトをアニメーション化しますか?

多分それはjQueryのまたはHTML5で行うことができます。私はちょうどフラッシュの外でそれをする方法を見つけることを望んでいる。

これは、これらの形式のいずれかで可能であるならば、誰もが知っていますか?この私はたくさんの研究をしており、それが可能かどうかを示すフォームやチュートリアルを見つけることができないようです。

基本的に、私は、ActionScriptのコード化され、これと同じ効果を実現しようとしていますが、私はそうは引火景色も見ることができない別の言語を使用して、それをコーディングします。ここで

は、フラッシュの例である:ここでhttp://beaubird.com/presentation.php

は、ActionScriptで振幅をアニメーションの例です。 http://www.developphp.com/view.php?tid=22

+1

正確にはどういう意味ですか?あなたが投稿したビデオは、Flashでプレーヤーを作る男を示していますが、正確に何をしたいですか? (画像は素晴らしいでしょう) – corazza

+0

私はオブジェクトの振幅、すなわち音で開閉するくちばしをアニメーションしたいと思います。ここでは、それがどのようにフラッシュで動作するの例です:http://beaubird.com/presentation.php –

+0

可能性があります新しいHTML5機能[これを見て](http://www.html5rocks.com/ en/tutorials/getusermedia/intro /) –

答えて

4

私はan example that changes the radius and color of an svg circle element based on audio amplitudeを作成しました。

これはWebKitブラウザでは機能しますが、その他のものはです。 W3C Web Audio API Specの実装に至るまで、Webkitブラウザは私が知る限りでは唯一のブラウザだが、Mozilla Audio Data API Documentationは、Mozillaがその仕様を放棄してWeb Audio APIも実装することを示しているようだ。私は、その仕様のInternet Explorerの実装(またはその不足)の状態をうれしく知らない。

は残念ながら、答えは今のFlashよりも、この他には素晴らしいクロスブラウザのソリューションはありませんということですが、あなたはそのルートを行けば、あなたは、モバイルデバイス上でねじ込まれています。

ここfull, working JSBin exampleです。

そして、ここのコードです:

HTML:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset=utf-8 /> 
     <title>Drums</title> 
    </head> 
    <body> 
     <svg width="200" height="200"> 
      <circle id="circle" r="10" cx="100" cy="100" /> 
     </svg> 
    </body> 
</html> 

Javascriptを:振幅を評価するためにJavascriptのノードを使用して

var context = new webkitAudioContext(); 

// Here's where most of the work happens 
function processAudio(e) { 
    var buffer = e.inputBuffer.getChannelData(0); 
    var out = e.outputBuffer.getChannelData(0); 
    var amp = 0; 

    // Iterate through buffer to get the max amplitude for this frame 
    for (var i = 0; i < buffer.length; i++) { 
    var loud = Math.abs(buffer[i]); 
    if(loud > amp) { 
     amp = loud; 
    } 
    // write input samples to output unchanged 
    out[i] = buffer[i]; 
    } 

    // set the svg circle's radius according to the audio's amplitude 
    circle.setAttribute('r',20 + (amp * 15)); 

    // set the circle's color according to the audio's amplitude 
    var color = Math.round(amp * 255); 
    color = 'rgb(' + color + ',' + 0 + ',' + color + ')'; 
    circle.setAttribute('fill',color); 
} 

window.addEventListener('load',function() { 
    var circle = document.getElementById('circle'); 

    // Add an audio element 
    var audio = new Audio(); 
    audio.src = 'http://www.mhat.com/phatdrumloops/audio/acm/mole_on_the_dole.wav'; 
    audio.controls = true; 
    audio.preload = true; 
    document.body.appendChild(audio); 


    audio.addEventListener('canplaythrough',function() { 
    var node = context.createMediaElementSource(audio); 

    // create a node that will handle the animation, but won't alter the audio 
    // in any way   
    var processor = context.createJavaScriptNode(2048,1,1); 
    processor.onaudioprocess = processAudio; 

    // connect the audio element to the node responsible for the animation 
    node.connect(processor); 

    // connect the "animation" node to the output 
    processor.connect(context.destination); 

    // play the sound 
    audio.play(); 
    }); 
}); 
+1

私はAudio Data APIがW3Cによって拒否され、開発中ではないと思います。 MozillaもWeb Audioを実装しています。 –

+0

@OskarErikssonに関する情報をありがとう。私はそれをより明確にするために私の答えを編集しました。 –

+0

+1オスカー。聞いたことはありませんでしたが、後で見つかりましたhttps://wiki.mozilla.org/Web_Audio_API – MikeSmithDev

2

は動作しますが、パフォーマンス上の理由のために理想的とはいえないでしょう。 requestAnimationFrameタイマーでRealtimeAnalyserを使用することをお勧めします。 http://updates.html5rocks.com/2012/02/HTML5-audio-and-the-Web-Audio-API-are-BFFsのコードから始めて、小さいfftSize(128)を使用して値をRMSすることができます。

+0

クール! +1は 'requestAnimationFrame'について教えてくれます。 –

1

KievIIライブラリ(http://kievii.net)はオーディオアプリケーションを対象としています。おそらく、そこで役に立つものを見つけることができます(たとえば、Waveboxオブジェクトまたは一連のClickBarオブジェクトをアニメートすることができます)。そこの例を見てみましょう:http://kievII.net/examples.html

関連する問題