问题标签 [web-audio-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1266 浏览

javascript - Web Audio API 延迟声音在 Chrome 中失真

我正在使用带有 javascript 的 Web Audio API。

我创建了一个振荡器,将其连接到音量(gainNode),将其连接到目的地。

行。好的。

我想要一个延迟效果,我把它放在振荡器和音量之间。

好吧,那不起作用,我只听到延迟。虽然,很干净。

好的,所以我将 osc 连接到卷的延迟,将 osc 连接到卷,然后将卷连接到目的地。

现在它似乎被扭曲了。

我尝试将 osc 延迟到目的地的音量,将 osc 延迟到目的地,因此有两个到目的地的连接。这也是扭曲的。

那是在铬上。

在我不得不尝试的一小段时间里,它似乎在 iOS6 上运行良好。不知道野生动物园。

通过访问http://cloudmusiccompany.appspot.com/watch.jsp并单击红色和绘图来尝试。这是一个正常的正弦振荡器。现在单击白色并绘制,这与延迟相同,并且在 chrome(Ubuntu)上它被扭曲了。不知道萨法尔。

显然,您可以在链接中看到完整的源代码,因为它是 javascript。

相关来源:

0 投票
3 回答
3325 浏览

javascript - 为什么网络音频振荡器只播放一次音符?

当我使用网络音频振荡器(带有noteOn)成功创建音调,然后调用其noteOff函数时,后续调用noteOn不会再次播放音调。我似乎必须创建一个新的振荡器来播放一个新的音符。为什么是这样?

0 投票
1 回答
449 浏览

html5-audio - 使用 Web Audio API 将两个声音分配给两个 Div,并通过带有 javascript 的 click 事件独立播放

我一直在挑选下面链接中的代码,但我无法到达任何地方。我只设法将事件处理程序重新分配给一个小 div 而不是整个页面。我不知道如何调整它以加载多个声音。

http://www.f1lt3r.com/w3caudio/web-audio-api/basic-examples/low-latency-playback-user-input.html

使用下面的代码示例,我根本无法通过单击 div 来触发声音。然而,这段代码看起来更好看,所以我真的很想修改它以用于学习目的。

我了解如何创建振荡器并连接滤波器/增益和其他节点。到目前为止,这是我使用 API 时的参考点。XMLHttpRequest 处理与缓冲区创建相结合是令人困惑的。我了解缓冲区是什么,我了解 XMLHttprequest 是什么,但由于某种原因,加载音频文件以进行播放的过程对我来说似乎并不清晰,更不用说加载多个我最终想要做的事情了。我也尝试阅读 HTML-5 Rocks 教程,但如果没有可以调整的 C&P 代码,我永远无法判断我是否走在正确的轨道上。顺便说一句,我不想​​使用抽象库。我想从头开始学习 API。谢谢

0 投票
1 回答
5722 浏览

html5-audio - 无论如何,网络音频和 html5 音频有什么区别?

我刚刚问了一个关于音频的问题,人们认为这是一个关于 html5-audio 而不是网络音频的问题。

所以我想知道有什么区别?

0 投票
2 回答
980 浏览

html - 音频 API:无法恢复音乐并对其进行可视化。html5-audio 中是否有错误?

我有一个按钮。每点击一次,就会播放一段音乐。第二次点击时,音乐继续播放。我也想把音乐形象化。

所以我从html5 音频开始( http://jsfiddle.net/karenpeng/PAW7r/中的完整代码):

但是当它被点击不止一次时,它 console.log 错误:

然后我更改为使用网络音频 API,并将源更改为:

错误消失了。

然后,我需要将其可视化。但具有讽刺意味的是,它只适用html5 音频

( http://jsfiddle.net/karenpeng/FvgQF/中的完整代码,它在 jsfiddle 中不起作用,因为我不知道如何正确编写 processing.js 脚本,但它确实在我的电脑上运行)

当我将源更改为:

它没有显示任何内容。

那么有没有办法将它可视化但没有错误并使其一次又一次地恢复?

0 投票
2 回答
1037 浏览

javascript - 播放生成的声音

我想捕获音频(在我的情况下来自getUserMedia)并播放。我可以像这样将一堆 AudioBuffers 推送到一个数组中:

但是那我如何播放recorded数组中的缓冲区呢?

一种将这些合并到一个缓冲区并与它一起播放的方法createBufferSource

完全不同的方法?

0 投票
1 回答
263 浏览

raphael - 使用 raphael.js 中的单击事件启动 Web 音频 api 缓冲音频文件

我有一个拉斐尔圆圈,我想附加一个启动函数的鼠标事件。该函数称为 PlayAudioFile(),Raphael.js 代码块无法访问该函数。我不知道如何修改下面的代码以使其范围可用。

0 投票
1 回答
2090 浏览

javascript - 网络音频:Karplus 强弦合成

编辑:稍微清理了代码和播放器(在 Github 上),以便更容易设置频率

我正在尝试使用Karplus Strong 字符串合成算法来合成字符串,但我无法正确调整字符串。有谁有想法吗?

如上链接,代码在 Github:https ://github.com/achalddave/Audio-API-Frequency-Generator (相关位在 中strings.js)。

Wiki 有以下图表:

Karplus 强弦合成图

所以本质上,我产生了噪声,然后将其输出并同时发送到延迟滤波器。延迟滤波器连接到低通滤波器,然后与输出混合。根据维基百科,延迟应该是 N 个样本,其中 N 是采样频率除以基频 ( N = f_s/f_0)。

我的代码摘录:

产生噪音(bufferSize是 2048,但这不应该太重要)

创建延迟节点

我们需要延迟f_s/f_0样品。但是,延迟节点以秒为单位获取延迟,因此我们需要将其除以每秒样本数,我们得到(f_s/f_0) / f_s,即1/f_0

创建低通滤波器(据我所知,截止频率不应该影响频率,更多的是字符串“听起来”是否自然):

将噪声连接到输出和延迟节点(destination = context.destination之前已定义):

将延迟连接到低通滤波器:

将低通连接到输出并返回延迟*:

有没有人有任何想法?我不知道问题是我的代码、我对算法的解释、我对 API 的理解,还是(尽管这不太可能)是 API 本身的问题。


*请注意,在 Github 上,实际上在低通和输出之间有一个增益节点,但这对输出并没有太大的影响。

0 投票
1 回答
2444 浏览

javascript - Webaudio API ScriptProcessorNode如何输出信号

我想用 ScriptProcessorNode 接口处理音频,但我无法写入输出缓冲区。

我从 getChannelData 获取数据,但如何将它们发送到输出缓冲区?

提前致谢。

0 投票
2 回答
3052 浏览

javascript - Web 音频 API 事件是否在单独的线程中运行?

我对ScriptProcessorNodeonaudioprocess(直到最近称为JavaScriptNode)特别感兴趣。它是一个事件侦听器,定期调用以进行音频处理。它是否在单独的线程中运行?

我想将数据提供给循环缓冲区并在此回调之外处理它,这样我就不会占用 CPU。我可以使用网络工作者进行异步处理,但是在不同线程的情况下,我需要一个不同的环形缓冲区实现。

有没有办法测试这个?