问题标签 [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 回答
156 浏览

javascript - 使用动态创建的 dom 元素和我似乎无法传递的变量创建软件合成器

这是一个 JSfiddle。http://jsfiddle.net/ZttnJ/5/

问题是我只需要一个范围内的变量可以访问另一个范围,但是如果我将变量放在更高的范围内,它会破坏元素的动态创建。这似乎是动态创建的 dom 元素和我很好奇是否有一种样板方法来解决这个问题,而无需将代码重新创建到带有原型或其他东西的构造函数中。为了清楚起见,我评论了代码。只有一条评论。

0 投票
2 回答
3421 浏览

javascript - 使用 Web Audio API 使用 OscillatorNodes 演奏和弦

我想使用 OscillatorNodes 演奏和弦:

但是这种方法听起来像一团糟(听起来是这样的)。如果我尝试为和弦中的每个音符创建新的 AudioContexts,那么听起来不错(像这样):

但我读到你应该只有一个 AudioContext。我究竟做错了什么?

0 投票
1 回答
328 浏览

javascript - 动态创建一系列与 keyup/down 一起播放的振荡器

问题是这样的:在下面的例子中, http: //jsfiddle.net/GmgGY/2/

当您单击橙色按钮时,它会创建一个新的 div。当你点击这个 div 时,它会播放一个振荡器。如果您在键盘上按下一个键(keydown),它也会播放它。然后当键盘字符被抬起(keyup)时它会停止播放。这很好,也是我想要的。

但是,当您多次单击橙色按钮并创建多个合成器时。当您在键盘上按下一个键时,它们都会播放(这就是我想要的),但只有最后一个创建的键似乎响应 keyup 事件。我希望它们都响应 keyup 事件。不仅仅是最后一个.

我不知道如何解决这个问题。

每个动态创建的 div 都有一个唯一的 ID,但也有一个通用的类。我认为可能有一种方法可以选择类(synth.class)并在 keyup 上启动通用振荡器.disconnect() ???

我在想的另一件事是我的问题可能需要某种迭代线程来补偿导致此问题的任何 DOM 问题(假设它不仅仅是迄今为止的编程)。但我不确定。

Javascript代码如下。我试图让它尽可能小,但我不知道如何使它比这更小并且仍然很清楚。我省略了 html 和 css 元素,但将它们保留在 JSfiddle 示例中。

0 投票
3 回答
5712 浏览

javascript - 如何使用 createPanner() 创建非常基本的左/右等功率平移;

我正在查看网络音频 API 规范,并且平移节点使用三个值来创建声音的 3D 频谱。我想知道是否为了创建一个基本的 2D“等幂”平移器,程序员是否需要进行公式化编程来扩展它......或者我是否考虑过度并且有一种更简单的方法来做到这一点。

编辑

现在引入了一个 stereoPanner 节点。

0 投票
2 回答
4749 浏览

web-audio-api - WebAudio API 采样率

是否可以为实时音频上下文指定采样率(对象sampleRate的属性)?AudioContext

对于我阅读的内容,可以sampleRateOfflineAudioContext对象指定 (构造函数接受 3 个参数,最后一个是采样率),但实时AudioContext不接受任何参数。

我想这是不可能的,因为这可能是由浏览器本身定义的,但也许有办法?

0 投票
2 回答
10959 浏览

audio-recording - 从 AudioContext 录制声音(Web Audio API)

有没有办法记录发送到的音频数据webkitAudioContext.destination

浏览器正在播放节点发送的数据,因此应该有某种方法将这些数据存储到 (.wav) 文件中。

0 投票
1 回答
1581 浏览

javascript - 在单个通道中播放振荡

我一直试图让振荡器声音只在一个通道中播放,但我无法让它工作。

我尝试使用一个panner节点来设置声音的位置,但它仍然在两个通道中播放,只是在更远的通道中没有那么响亮。

我最近尝试使用频道合并,但它仍然在两个频道中播放:

如何创建仅在单个通道中播放的振荡器?

0 投票
1 回答
1505 浏览

html - Safari 6.0.2 没有调用 onaudioprocess

我之前已经成功使用 Web Audio API 中的JavaScriptAudioNode在 Chrome 和 Safari 6.0 中合成和混合音频。但是,最新版本的 Safari 似乎不再工作,因为它不调用onaudioprocess来填充源缓冲区。

这是一个简化的示例,它只播放静音并在每次调用onaudioprocess时将文本附加到文档正文:

上面的示例在 Chrome 中按预期工作,但在桌面 Safari 中不起作用。iOS 版本的 Safari 也不起作用,但它一开始就对我不起作用。

调用context.createJavaScriptNode确实会返回类型为JavaScriptAudioNode的正确对象,并且将其连接到目标节点不会引发任何异常。context.activeSourceCount保持为零,但在 Chrome 中也是如此,因为它显然只计算AudioBufferSourceNode类型的活动节点。context.currentTime也按预期递增。

我在这里做错了什么还是这是一个实际的错误或 Safari 中缺少的功能?Apple 文档没有提到JavaScriptAudioNode(也没有提到新名称ScriptProcessorNode),但它在 Safari 6 的第一个版本之前确实有效。iOS Safari 对用户输入的要求似乎没有帮助,因为上面的示例应该注意那个。

简单的例子可以在这里找到,一个更复杂的例子是我的Protracker 模块播放器,它表现出相同的行为。

0 投票
3 回答
610 浏览

javascript - 网络音频 api:如何检查音频图?

Web Audio Api规范说:

[...] AudioContext 接口,其中包含表示 AudioNode 之间连接的音频信号图。

我有一个带有 +/- 30 个节点连接节点的项目。
我正在尝试编写测试来检查图表的设置是否正确。因此我需要检查结果图。
但是,我无法访问/检查最终图表,也无法找到有关如何执行此操作的信息。

0 投票
2 回答
2739 浏览

javascript - Web Audio API -- Chrome / Safari 中的频率调制听起来不同

我正在为 Web Audio API 合成器开发基于浏览器的修补接口。频率调制(将一个振荡器与另一个振荡器的频率挂钩)在 Chrome 中按预期工作。它应该是一种科幻的声音,就像一个 300Hz 的正弦波,频率在 30Hz 上下波动。

在 Safari(和 Mobile Safari)中,它听起来像是低沉的隆隆声。听起来好像有 FM,但没有正确的基频。这只是一个浏览器怪癖,将在未来的版本中解决吗?现在有解决办法吗?

这是视觉/交互式版本: http:
html5 调频合成器
//forresto.github.com/dataflow-webaudio/

还有fiddle版本,用最少的代码来演示效果:http:
//jsfiddle.net/FVaWL/28/