2012-03-01 8 views
4

audiolib.jsを使用して、このオシレータの持続時間を約10秒に制限するのに問題があります。 dsp.jsライブラリを使用していたとき、bufferSizeを使用して期間を制限しましたが、audiolib.jsライブラリを使用してどのように行うかについては全く考えていませんでした。私がそれをしている間、誰も私に最大と最小の周波数と振幅を教えてくれるでしょうか?JavaScriptのオシレータの持続時間を制限する問題

$(document).ready(function() { 

    //var context = new webkitAudioContext(); 
    var playing; 
    var dev = audioLib.AudioDevice(audioCallback, 2); 
    var osc = audioLib.Oscillator(dev.sampleRate, 440); 
    //var bfo = audioLib.Oscillator(dev.sampleRate, 1.0); 
    //osc.addAutomation('frequency', bfo, 0.5, 'modulation'); 
    osc.waveShape = 'pulse'; 

    function audioCallback(buffer, channelCount) { 
     if (playing) { 
      //bfo.generateBuffer(buffer.length/channelCount); 
      osc.append(buffer, channelCount); 
      //remove the audiocallback function 
     } 
    } 

    $('#playButton').click(function() { 
     playing = true; 
    }); 

}); 

乾杯!

+0

「最大と最小の周波数と振幅」とはどういう意味ですか?発振器の? – kindohm

答えて

1

サンプルレートは毎秒サンプラーの数であるので、あなたは、サンプルレート回10秒を乗じて再生するには、サンプルの数を計算することができます

var maxSamples = dev.sampleRate * 10; 

あなたは、このようにそれを使用することができます。

$(document).ready(function() { 

    var playing; 
    var dev = audioLib.AudioDevice(audioCallback, 2); 
    var osc = audioLib.Oscillator(dev.sampleRate, 440); 
    var maxSamples = dev.SampleRate * 10; 
    var totalSamples = 0; 
    osc.waveShape = 'pulse'; 

    function audioCallback(buffer, channelCount) { 
     if (playing) { 
      osc.append(buffer, channelCount); 
      totalSamples += buffer.length/channelCount; 
      if (totalSamples >= maxSamples) { 
       // remove audioCallback 
       dev.kill(); 
      } 
     } 
    } 

    $('#playButton').click(function() { 
     playing = true; 
    }); 

}); 
+0

ありがとう、それは素晴らしいです...最大/最小周波数/振幅を心配しないでください。 audioCallbackを削除するにはどうすればよいですか? –

+0

私は上記のコードをdev.kill()の呼び出しをインクルードするように更新しました。 audiolib.jsの作者によると、これが好ましい(そして唯一の)方法です。残念ながら、オーディオバックアップを再び開始するには、AudioDeviceの新しいインスタンスを作成する必要がありますが、これがオーディオコールバックを削除する唯一の方法です。 – kindohm

+0

Jon_091 - これはあなたの質問に答えているのですか、答えを受け入れられる前に追加情報を探していますか? – kindohm