问题标签 [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 投票
1 回答
216 浏览

javascript - 尝试抽象 WebAudio API xhr 请求的部分时,无法将 DOM 元素传递给 Javascript 中的构造函数

我的问题是这个。当我在下面的audioBoing 函数中添加一个参数,然后将相同的参数放在getElementById字符串中时,该函数不起作用。我收到一个错误,显示未捕获的类型错误,无法调用 null 的方法“AddEventListener”

下面的功能工作正常。我重写了它下面的函数以反映我正在尝试做的事情。最终,我试图抽象出函数的很大一部分,这样我就可以插入参数并运行它,而不必每次为它存储/启动的每个声音都重写它。

重写不工作

0 投票
1 回答
1746 浏览

javascript - 使用 Web Audio API 进行离线/非实时渲染

问题

我正在开发一个 Web 应用程序,用户可以在其中对音频样本进行排序,并可以选择将效果应用于他们使用 Web Audio API 创建的音乐模式。模式存储为 JSON 数据,我想对每个模式服务器端的渲染音频进行一些分析。据我所知,这给我留下了两个选择:

  1. 在服务器端运行我自己的渲染代码,尽量使其忠实于浏览器内的渲染。也许我什至可以从 Chromium 项目中提取 Web Audio 代码并对其进行修改,但这似乎可能需要大量工作。

  2. 在客户端进行渲染,希望比实时更快,然后将渲染的音频发送到服务器。这是理想的(和干燥的),因为只有一个引擎用于模式渲染。

可能的解决方案

这个问题将我引向Chromium 存储库中的这个代码示例,这似乎表明可以进行离线处理。诀窍似乎是webkitAudioContext用一些参数构造 a (通常使用零参数构造函数)。以下是我对参数含义的猜测:

我稍微修改了示例,并在 Windows、Mac 和 Linux 上的 Chrome 23.0.1271.91 中对其进行了测试。 这是现场示例和结果(打开 Dev Tools Javascript 控制台以查看发生了什么):

  • 麦克 -它的工作原理!
  • Windows -失败 - SYNTAX_ERR:DOM 异常 12
  • Linux -失败 - SYNTAX_ERR:DOM 异常 12

我上面描述的webkitAudioContext构造函数会导致 Windows 和 Linux 上的异​​常。

我的问题

离线渲染对于我正在尝试做的事情来说是完美的,但我在任何地方都找不到文档,而且支持也不太理想。有没有人有这方面的更多信息?我应该期待很快在 Windows 和/或 Linux 中对此提供支持,还是应该期待在 Mac 上的支持很快消失?

0 投票
1 回答
176 浏览

javascript - 使用按钮功能切换 WebAudio API 节点分配时遇到问题

下面我有一个名为buttonClickResult的函数,当用户单击图像时会启动该函数。我希望单击打开/关闭以在两个值之间重新分配名为distortionSwitch的变量。一种称为emptyCable,另一种称为overdrive。此变量位于名为bufferFunctionName的函数内

我不太清楚如何将此变量赋值传递给另一个函数。

总而言之,当用户单击按钮时,bufferFunctionName 中 名为distortionSwitch的变量应在名为emptyCable的变量赋值和名为overdrive的变量赋值之间切换

谢谢你。

附录 当我在 bufferFunctionName 下面编写代码时,即使范围以它应该的方式(我认为?)

当我这样写它时,它工作正常

0 投票
3 回答
8262 浏览

javascript - 网络音频 API,事件?

是否可以将事件侦听器添加到网络音频 api 声音?我一直在寻找声音完成但找不到任何东西的事件或触发器。这是我想象它的工作方式:

0 投票
1 回答
1400 浏览

javascript - Chrome 打包应用程序:getUserMedia() 音频输入权限

我正在将我的 Web 应用程序移植到 Chrome 打包应用程序中,并且我大量使用 Web Audio API(效果很好),但我使用 getUserMedia() 来获取音频。通常会出现一个状态栏,请求用户的许可。在打包的应用程序中,这不会发生,并且会引发错误 1(权限被拒绝)。有没有人在打包的应用程序设置中对此有任何经验,或者知道我是否需要添加某些权限?

哦,我也做了一些研究,发现了一些用 chrome 提交的错误,但我不知道它们中的任何一个是否已经实现。

0 投票
2 回答
3608 浏览

javascript - Creating a custom echo node with web-audio

I'm playing with the webkit Audio API and I'm trying to create an Echo effect, to accomplish that I've connected a DelayNode with a GainNode in a loop (The output of one is the input of the other, and viceversa).

Echo Node

The effect works fine, but now I want to create an EchoNode Object that I can just plug-in and connect with the other AudioNode objects.

Something like:

I think that I should make my EchoNode inherit from AudioNode, so that the connect function of every other AudioNode would work, but I don't know how to do that in Javascript with the web Audio API.

Can anyone give me a hint, or if you think that there is a better way to accomplish that I would greatly appreciate it.

Thanks

0 投票
3 回答
2900 浏览

javascript - 合并多个音频缓冲源

关于html5 webaudio的问题:是否可以将多首歌曲合并在一起?

我有不同的轨道,它们都使用 webaudio 同时播放,但我需要处理音频,所以我需要一个缓冲区内的所有音频,而不是每个轨道都有自己的缓冲区。

我尝试通过添加它们的通道数据来合并它们,但我总是得到“未捕获的 RangeError:索引超出范围。”

0 投票
0 回答
918 浏览

javascript - 如何在 AudioBufferSourceNode 上使用音高保留执行时间拉伸?

我正在寻找 javascript 中的相位声码器或某种音高移位/时间拉伸算法,我可以在更改播放速度时与 webaudio 一起使用,以防止音高也发生变化。

编辑:我找到了https://github.com/also/soundtouch-js 但是它并不理想,因为它必须有权访问完整的源文件;我正在开发一个具有多个轨道的系统(每个轨道都有自己的增益控制);所以理想情况下,我需要一个可以将所有节点连接到的系统,而不必合并它们或制作多个 soundtouch 系统。

0 投票
2 回答
9357 浏览

javascript - 有没有办法从音频文件中获取分贝级别并将该信息转换为 json 数组?

这样我就可以使用这些信息来协调页面动画,例如随着分贝水平的提高使元素更亮

0 投票
1 回答
2404 浏览

javascript - 使用 Web Audio API 实现 3 频段均衡器

我正在寻找模仿标准 DJ 混音器的 3 波段均衡器。

不幸的是,我运气不佳。我知道它涉及创建 BiquadFilter 节点并将它们连接到增益节点。不幸的是,我没有接近预期的结果。

到目前为止,我唯一的成功就是控制轨道音量的 gainNode。

任何帮助将不胜感激。

谢谢,斯坦