问题标签 [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.
javascript - Web Audio API 延迟声音在 Chrome 中失真
我正在使用带有 javascript 的 Web Audio API。
我创建了一个振荡器,将其连接到音量(gainNode),将其连接到目的地。
行。好的。
我想要一个延迟效果,我把它放在振荡器和音量之间。
好吧,那不起作用,我只听到延迟。虽然,很干净。
好的,所以我将 osc 连接到卷的延迟,将 osc 连接到卷,然后将卷连接到目的地。
现在它似乎被扭曲了。
我尝试将 osc 延迟到目的地的音量,将 osc 延迟到目的地,因此有两个到目的地的连接。这也是扭曲的。
那是在铬上。
在我不得不尝试的一小段时间里,它似乎在 iOS6 上运行良好。不知道野生动物园。
通过访问http://cloudmusiccompany.appspot.com/watch.jsp并单击红色和绘图来尝试。这是一个正常的正弦振荡器。现在单击白色并绘制,这与延迟相同,并且在 chrome(Ubuntu)上它被扭曲了。不知道萨法尔。
显然,您可以在链接中看到完整的源代码,因为它是 javascript。
相关来源:
javascript - 为什么网络音频振荡器只播放一次音符?
当我使用网络音频振荡器(带有noteOn
)成功创建音调,然后调用其noteOff
函数时,后续调用noteOn
不会再次播放音调。我似乎必须创建一个新的振荡器来播放一个新的音符。为什么是这样?
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。谢谢
html5-audio - 无论如何,网络音频和 html5 音频有什么区别?
我刚刚问了一个关于音频的问题,人们认为这是一个关于 html5-audio 而不是网络音频的问题。
所以我想知道有什么区别?
html - 音频 API:无法恢复音乐并对其进行可视化。html5-audio 中是否有错误?
我有一个按钮。每点击一次,就会播放一段音乐。第二次点击时,音乐继续播放。我也想把音乐形象化。
所以我从html5 音频开始( http://jsfiddle.net/karenpeng/PAW7r/中的完整代码):
但是当它被点击不止一次时,它 console.log 错误:
然后我更改为使用网络音频 API,并将源更改为:
错误消失了。
然后,我需要将其可视化。但具有讽刺意味的是,它只适用于html5 音频!
( http://jsfiddle.net/karenpeng/FvgQF/中的完整代码,它在 jsfiddle 中不起作用,因为我不知道如何正确编写 processing.js 脚本,但它确实在我的电脑上运行)
当我将源更改为:
它没有显示任何内容。
那么有没有办法将它可视化但没有错误并使其一次又一次地恢复?
javascript - 播放生成的声音
我想捕获音频(在我的情况下来自getUserMedia
)并播放。我可以像这样将一堆 AudioBuffers 推送到一个数组中:
但是那我如何播放recorded
数组中的缓冲区呢?
一种将这些合并到一个缓冲区并与它一起播放的方法createBufferSource
?
完全不同的方法?
raphael - 使用 raphael.js 中的单击事件启动 Web 音频 api 缓冲音频文件
我有一个拉斐尔圆圈,我想附加一个启动函数的鼠标事件。该函数称为 PlayAudioFile(),Raphael.js 代码块无法访问该函数。我不知道如何修改下面的代码以使其范围可用。
javascript - 网络音频:Karplus 强弦合成
编辑:稍微清理了代码和播放器(在 Github 上),以便更容易设置频率
我正在尝试使用Karplus Strong 字符串合成算法来合成字符串,但我无法正确调整字符串。有谁有想法吗?
如上链接,代码在 Github:https ://github.com/achalddave/Audio-API-Frequency-Generator (相关位在 中strings.js
)。
Wiki 有以下图表:
所以本质上,我产生了噪声,然后将其输出并同时发送到延迟滤波器。延迟滤波器连接到低通滤波器,然后与输出混合。根据维基百科,延迟应该是 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 上,实际上在低通和输出之间有一个增益节点,但这对输出并没有太大的影响。
javascript - Webaudio API ScriptProcessorNode如何输出信号
我想用 ScriptProcessorNode 接口处理音频,但我无法写入输出缓冲区。
我从 getChannelData 获取数据,但如何将它们发送到输出缓冲区?
提前致谢。
javascript - Web 音频 API 事件是否在单独的线程中运行?
我对ScriptProcessorNode的onaudioprocess(直到最近称为JavaScriptNode)特别感兴趣。它是一个事件侦听器,定期调用以进行音频处理。它是否在单独的线程中运行?
我想将数据提供给循环缓冲区并在此回调之外处理它,这样我就不会占用 CPU。我可以使用网络工作者进行异步处理,但是在不同线程的情况下,我需要一个不同的环形缓冲区实现。
有没有办法测试这个?