- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 html5 新手,我想使用 ScriptProcessorNode 来生成声音。我的问题是这个代码在 iPhone safari 中不起作用。但它可以在桌面上的 Safari 中运行。
var 上下文; var 正在播放; var 生成器节点; var isNeedShowAlert;
function myButtonClick(button)
{
isNeedShowAlert = true;
if (isPlaying)
{
isPlaying = false;
console.log("Stop!");
generatorNode.disconnect();
}
else
{
alert("Play!");
isPlaying = true;
console.log("Play!");
context = new webkitAudioContext();
generatorNode = context.createJavaScriptNode(2048, 1, 2);
generatorNode.onaudioprocess = function (e)
{
console.log("onaudioprocess!");
$("body").append("buffering<br/>");
var output = e.outputBuffer.getChannelData(0);
if (isNeedShowAlert)
{
isNeedShowAlert = false;
console.log("Length "+ output.length);
alert("Length "+ output.length);
}
for (var i = 0; i < output.length; i++)
{
output[i] = Math.random();
}
}
generatorNode.connect(context.destination);
alert("Node Connected");
}
}
看起来 onaudioprocess 从未调用过。 here人们写道 ScriptProcessorNode 可以被垃圾收集器销毁,但在我的例子中它是全局变量。我尝试了很多并开始思考,trere 是无法在 iPhone Safari 中使用 ScriptProcessorNode 的。有人可以做id吗?
UPD。但如果我使用 AudioBufferSourceNode,它就可以工作。
bufferNode = context.createBufferSource()
var buffer = context.createBuffer(1, 1024, context.sampleRate)
var data = buffer.getChannelData(0);
for (var i = 0; i < 1024; i++)
{
data[i] = Math.random();
}
bufferNode.buffer = buffer;
bufferNode.loop = true;
bufferNode.connect(context.destination);
bufferNode.noteOn(0);
看起来问题特别出在 ScriptProcessorNode 及其 onaudioprocess 方法中。
最佳答案
我自己找到了答案。需要向ScriptProcessorNode添加一个源节点。像这样的东西。
bufferNode = context.createBufferSource()
var buffer = context.createBuffer(1, 1024, context.sampleRate)
var data = buffer.getChannelData(0);
for (var i = 0; i < 2048; i++)
{
data[i] = 0;
}
bufferNode.buffer = buffer;
bufferNode.loop = true;
generatorNode = context.createJavaScriptNode(2048, 1, 1);
generatorNode.channelCount = 2;
generatorNode.channelCountMode = "max";
generatorNode.channelInterpretation = "speakers";
generatorNode.onaudioprocess = function generateWhiteNoise(e)
{
var output = e.outputBuffer.getChannelData(0);
console.log("onaudioprocess!");
for (var i = 0; i < output.length; i++)
{
output[i] = ( Math.random() * 2 ) - 1;
}
}
bufferNode.connect(generatorNode);
generatorNode.connect(context.destination);
bufferNode.noteOn(0);
此代码将在 iOS safari 浏览器中运行。
UPD。更新白噪声生成代码。我不是我的目标,只是用它来测试,但如果有人使用我的错误代码来生成真正的白噪声,那就不好了。
关于javascript - 在 iPhone Safari 中使用 ScriptProcessorNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17087119/
我正在尝试在 Dart 中创建一个 Web 音频脚本处理器。我注意到这个问题显示使用“javascriptnode”:ScriptProcessorNode 这似乎不存在于当前的 Dart 版本中。有
我正在研究网络音频随机振荡器,但在使用 scriptProcessorNode 时遇到了问题。我的算法使用随机游走来确定波形中的动态断点,然后在它们之间进行插值。 随着断点在x轴上的移动,我以为振荡波
我有以下 javascript 代码: var audio = null; try { window.AudioContext = window.AudioContext || window.
我正在围绕 scriptProcessorNode 振荡器构建类。我已将 onaudioprocess 事件处理程序包装在函数 Gendy.prototype.process 中。我可以从此包装函数中
我目前正在尝试使用 ScriptProcessorNode 动态降低播放速度。这是我迄今为止编写的代码(仅处理左 channel ): let processor = audioContext.cre
ScriptProcessorNode 不适用于 OfflineContext。 它适用于 Chrome、Mozilla Firefox。 它在 Edge 25、Safari 10 中不起作用。 问题
考虑以下代码: http://jsfiddle.net/LVFa6/ 未调用 ScriptProcessorNode EventHandler process。考虑在最后添加processor.con
目前我有以下代码 AudioContext = window.AudioContext || window.webkitAudioContext; context = new AudioContext
function createAudioMeter(audioContext,clipLevel,averaging,clipLag) { var processor = audioConte
这里是一个简单的 jsFiddle 链接,它使用网络音频测量实时输入的响度(它将值作为百分比输出到控制台)。 http://jsfiddle.net/XSnsF/ 我原计划只有一个输入而没有输出,因为
我正在记录来自用户的麦克风输入并进行处理。问题是我使用scriptProcessorNode来处理数据,但是here它说它已被弃用并替换为 AudioWorklet问题是没有明确的方法可以用 Audi
这里是一个简单的 jsFiddle 的链接,它使用网络音频测量实时输入的响度(它将值以百分比形式输出到控制台)。 http://jsfiddle.net/XSnsF/ 我计划只有一个输入,没有输出,因
我正在尝试获取有关麦克风数据的一些实时数据。所以我将一个 ScriptProcessorNode 连接到我的现场音频的输出,如下所示 (coffeescript): audioSource = nav
我是 html5 新手,我想使用 ScriptProcessorNode 来生成声音。我的问题是这个代码在 iPhone safari 中不起作用。但它可以在桌面上的 Safari 中运行。 var
我正在尝试使用 JavaScript 的 WebAudio API 以及其他一些 SO 文章( How to get frequency from fft result? 、 How do I obt
我正在尝试实现一个具有两个输入 channel 和一个输出 channel 的 ScriptProcessorNode。 var source = new Array(2); source[0] =
Web Audio API 规范声明 ScriptProcessorNode.bufferSize 属性值 "will be picked by the implementation if the b
我是一名优秀的程序员,十分优秀!