0

サウンド ファイルから周波数データを取得するために Web オーディオ API を使用しています。基本的に、この例で示したコードを実装しました。追加したいのは gainNode であるため、コードの任意の場所で音量を制御できますが、作成した接続に問題があり、他のすべては正常に機能します。

元のコードから変更したのはボリューム部分だけです。

request.onload = function() {
    context.decodeAudioData(
        request.response,
        function(buffer) {
            if(!buffer) {
                $('#info').text('Error decoding file data');
                return;
            }

            sourceJs = context.createJavaScriptNode(2048);
            sourceJs.buffer = buffer;
            sourceJs.connect(context.destination);
            analyser = context.createAnalyser();
            analyser.smoothingTimeConstant = 0.6;
            analyser.fftSize = 512;

            source = context.createBufferSource();
            source.buffer = buffer;
            source.loop = true;

            source.connect(analyser);
            analyser.connect(sourceJs);
            source.connect(context.destination);

                       //////////////////////////////////// 
                       //////////VOLUME////////////////////                            
                       gainNode = context.createGain();                        
                       source.connect(gainNode);                         
                       gainNode.connect(context.destination);
                       //////////////////////////////////////

            sourceJs.onaudioprocess = function(e) {
                array = new Uint8Array(analyser.frequencyBinCount);
                analyser.getByteFrequencyData(array);
                boost = 0;
                for (var i = 0; i < array.length; i++) {
                    boost += array[i];
                }
                boost = boost / array.length;
            };



            // popup
            //aca avisa cuando ya cargo el buffer
        },
        function(error) {
            $('#info').text('Decoding error:' + error);
        }
    );
};

次に、これを使用してボリュームをオフにしましたが、機能しませんでした: ...gainNode.gain.value = 0;

4

1 に答える 1

2

sourceの出力が接続される唯一のものであるゲイン ノードが必要です。

現在、複数の接続があり、ゲイン ノードはそのうちの 1 つにすぎません。つまり、信号全体に影響を与えていません。

于 2013-06-22T19:17:15.173 に答える