gpt4 book ai didi

javascript - createOscillator noteOn 不工作

转载 作者:行者123 更新时间:2023-11-30 08:38:21 25 4
gpt4 key购买 nike

我从一个网站(目前不记得是从哪里)得到了这个片段,但它已经停止工作了。

我用它来播放音调。

是我做错了什么还是 Chrome 最近发生了变化?

Play = (function () {
var ctx = new(window.audioContext || window.webkitAudioContext);
return function (duration, freq, finishedCallback) {
duration = +duration;
if (typeof finishedCallback != "function") {
finishedCallback = function () {};
}
var osc = ctx.createOscillator();
osc.type = 0;
osc.connect(ctx.destination);
osc.frequency.value = freq;
osc.noteOn(0);
setTimeout(
function () {
osc.noteOff(0);
finishedCallback();
}
,duration
);
};
})();
Play(50,500)

最佳答案

这里有两个问题 - 没有 audioContext(小“a”,目前不影响 Chrome)。只需将其更改为:

var ctx = new (window.AudioContext || window.webkitAudioContext);

添加对 start() 的支持,这是最近的方法。有几种方法可以做到这一点,下面是一个基本示例:

if (osc.start) {
osc.start(0);
}
else {
osc.noteOn(0);
}

(当然还有 osc.noteOff(0)osc.stop(0))

Play = (function() {

var ctx = new(AudioContext || webkitAudioContext);

return function(duration, freq, finishedCallback) {
duration = +duration;
if (typeof finishedCallback != "function") {
finishedCallback = function() {};
}
var osc = ctx.createOscillator();
osc.type = 0;
osc.connect(ctx.destination);
osc.frequency.value = freq;

if (osc.start) osc.start();
else osc.noteOn(0);

setTimeout(
function() {
if (osc.stop) osc.stop(0);
else osc.noteOff(0);
finishedCallback();
}, duration
);
};
})();
Play(50, 500)

关于javascript - createOscillator noteOn 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29356041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com