0

ここで、Web オーディオ API の動作の簡単な例を見つけました: http://jsfiddle.net/stuartmemo/xMruN/

JsFiddle で実行すると (Chrome で) 完璧に動作しますが、コードをローカルにコピーすると動作しません。ローカルで使用したコードは次のとおりです。

<!DOCTYPE html >
<meta charset="UTF-8">
<title>Test</title>

<script type="text/javascript">
var context = new webkitAudioContext(),
oscillator = context.createOscillator();
oscillator.type = 3;
oscillator.frequency.value = 500;
oscillator.connect(context.destination);
oscillator.noteOn(0);​
</script>

これには見落としている簡単な解決策があるように感じますが、20分間取り組んできました。ところで、Web サーバーでローカルの例を実行しています (実行する必要があるとは思えませんが)。

ありがとう

4

4 に答える 4

1

次のようにウィンドウがロードされるのを待つ必要があります。

window.addEventListener('load', function () {
    var context, oscillator;
    try {
        context = new webkitAudioContext();
    } catch (e) {
        alert("Your browser does not support Web Audio API");
    }
    oscillator = context.createOscillator();
    oscillator.type = 3;
    oscillator.frequency.value = 500;
    oscillator.connect(context.destination);
    oscillator.noteOn(0); // play it immediately
    oscillator.noteOff(1); // turn it off after 1 second from now
});
于 2013-01-18T12:52:18.983 に答える
0

この行を削除すると機能します。

oscillator.noteOn(0);</p>

于 2012-07-23T10:40:16.553 に答える
0

オシレータの型は整数で指定されなくなりました。代わりに文字列を使用します。

oscillator.type = 'sawtooth';

それがここであなたの問題を引き起こしているのかどうかはわかりません。おそらく、JsFiddle は Web オーディオ API の古い実装を使用していたのでしょうか?

于 2014-09-29T17:02:06.307 に答える
0

この行を削除すると機能します。

oscillator.noteOn(0);​

Web Audio API では、noteOn メソッドは廃止されました。その行を次のように変更できます。

oscillator.start(0);

…そして、当初の意図どおりに動作するはずです。

ところで、Web サーバーでローカルの例を実行しています (実行する必要があるとは思えませんが)。

実際、Web Audio API の一部は、サーバーから実行しないと機能しません。したがって、ローカルサーバーを実行することで正しいことを行っています.

于 2014-08-31T16:30:48.027 に答える