问题标签 [audiocontext]

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 投票
0 回答
626 浏览

javascript - 使用网络音频 api 生成声音的最有效方法

我正在使用网络音频 api 构建一个带有一些效果的 fm 合成器。一切正常,但是音频非常有问题,并开始冻结和剪切,我认为这是我的浏览器无法一次处理所有音频信息的结果。

每次播放音符时都会将很多音频节点添加到音频上下文中,所以我想知道未使用的节点是否会减慢音频上下文的速度,如果是的话,有什么办法可以破坏它们?

我的代码:

它看起来很丑,但我想不出另一种播放声音的方法。

我正在使用 tuna js 来创建合唱、混响和过滤器。

另外,如果有任何关于如何低级优化 javascript 的信息,我将不胜感激。

0 投票
0 回答
2469 浏览

node.js - 带有 AudioContext 的 Socket.io 在接收时发送和接收音频错误

我正在尝试构建一些东西,用户可以在其中使用 socket.io、audioContext、js 的前端和 Node.js、socket.io 的服务器立即向许多人发送音频。

我可以录制音频,将其发送到服务器并发送回其他用户,但我无法播放数据。我想这一定是我如何发送它们或我如何处理接收它们的缓冲区的问题。

我收到以下错误:更新!

传递给 decodeAudioData 的缓冲区包含未知的内容类型。

音频通过正常,缓冲区创建时没有错误,但没有声音反馈。

用户按下记录并开始使用以下功能进行记录/流式传输:

这就是一切的开始:

然后服务器使用套接字广播原始发送者发送的内容:

然后播放数据:更新! 我正在使用 audioContext.decodeData ,我发现它仅用于从 MP3 或 WAV 文件中读取/解码音频而不是流式传输。使用新代码不会出现错误,但是没有音频反馈。

PS如果有人对我正在尝试做的事情进一步感兴趣,请随时与我联系。

0 投票
2 回答
375 浏览

javascript - 网络音频 api 卷积器似乎不输出零

我已经使用网络音频 api 将麦克风连接到卷积器到分析仪到 flot gui 以绘制频谱。为了测试,我将卷积器的缓冲区设置为统一,但我没有得到任何输出。如果我绕过卷积器并将麦克风直接连接到分析仪,它就可以工作。你能帮忙吗?

在下面的代码中use_convolver确定是否绕过卷积器。

0 投票
1 回答
195 浏览

javascript - 使用 audioContext

受这个SO answer的启发,我有这段代码,它可以工作,但它会弹出并且听起来不像它可以的那样流畅。

问:有没有一种简单的方法可以让这听起来更流畅一些?

0 投票
1 回答
168 浏览

html - AudioContext (HTML5) 上是否有任何音量变化事件?

我正在使用音频节点开发一个应用程序,我需要知道音量是否发生了变化,例如是否使用物理按钮修改了设备音量。有什么办法吗?

谢谢。

0 投票
1 回答
168 浏览

javascript - 缓冲 mp3 时重叠部分

我正在尝试使用 BinaryJS - http://binaryjs.com/从 nodeJS 服务器流式传输 MP3 文件

但是,当我在客户端解码缓冲区时,它们似乎是重叠的,这意味着新的数据块在前一个数据结束前几毫秒播放,导致音频滞后。

有什么方法可以让客户端等到当前缓冲区完成后再开始新的缓冲区?

服务器:

客户:

0 投票
1 回答
415 浏览

javascript - Livescript:无法定义 AudioContext

我正在尝试使用 XMLHttpRequests 和 AudioContext 加载音频,我的代码如下所示:

错误是TypeError: Cannot read property 'decodeAudioData' of undefined.

当我对 audioContext 进行 console.log 时,我得到了一个有效的 audioContext 对象,那么为什么它在代码执行时未定义?

0 投票
2 回答
765 浏览

javascript - 如何在 Jasmine 测试中释放 AudioContext

我有一个设置 audioContext 的 Angular 服务。Jasmine 正在为每个测试创建一个新服务,因此在 6 次测试之后,所有测试都失败并出现错误:

Error: Failed to construct 'AudioContext': The number of hardware contexts provided (6) is greater than or equal to the maximum bound (6).

有没有办法让我在测试之间清除 AudioContext?我AudioPlayer.context.close()在 afterEach 块中尝试过,但似乎没有工作。

服务看起来有点像这样:

和测试看起来有点像这样:

谢谢您的帮助!

这是一个说明问题的 jsFiddle:http: //jsfiddle.net/briankeane/cp929can/1/

0 投票
1 回答
2877 浏览

javascript - 使用 JavaScript 进行 FFT 分析:如何找到特定频率?

我有以下问题:我使用 javascript 和 FFT 分析音频数据。我已经可以将 FFT 数据写入数组:

每次我想获得新数据时,我都会调用:

变量“audio”是一个用 HTML 定义的 mp3 文件:

到目前为止,一切都很好。

我现在的问题是我想检查当前数组“frequencyData”是否包含特定频率。例如:我在 mp3 文件中的某处放置了一个 1000 Hz 信号,并且希望在 mp3 文件的这部分当前位于数组“frequencyData”中时得到通知。

第一步,当 mp3 文件的重要部分仅包含 1000 Hz 信号时,它将帮助我解决问题。在第二步中,如果有音乐覆盖,我还想找到该部分。

0 投票
1 回答
204 浏览

html5-audio - Web Audio API Stream:为什么 dataArray 没有改变?

编辑2:解决了。请参阅下面的答案。

编辑1:

我稍微改变了我的代码,添加了一个增益节点,移动了一个函数。我还发现如果我使用麦克风,它会起作用。仍然不适用于 USB 音频输入。任何想法?这是我当前的代码:

旧/原始帖子:

我目前的代码是这样的,我目前通过USB音频接口连接了一个kewboard:我有信号,已经尝试过其他程序..所以:

当我弹奏键盘时,dataArray 根本没有变化。为什么?我对这件事很陌生,所以可能我做错了什么......