我说的是反馈 - 当您制作一个简单的 JavaScript 应用程序时,它会打开来自用户的流并读取频率分析(或其他任何内容),它会将所有接收到的数据发送回 Google Chrome 和 Opera 中的耳机。Firefox 大部分时间都处于沉默状态,并随机产生不稳定反馈的巨大混乱——它还会在几秒钟后关闭流。一般来说,这个东西在 Firefox 中还不起作用。
我创造了一个小提琴。如果您的浏览器不支持它,您只会在我假设的控制台中收到错误。
代码的关键部分是当用户接受麦克风访问请求时调用的函数:
//Not sure why do I do this
var inputPoint = context.createGain();
// Create an AudioNode from the stream.
var source = context.createMediaStreamSource(stream);
source.connect(inputPoint);
//Analyser - this converts raw data into spectral analysis
window.analyser = context.createAnalyser();
//Mores stuff I know nothing about
analyser.fftSize = 2048;
//Sounds much like connecting nodes in MatLab, doesn't it?
inputPoint.connect(analyser);
analyser.connect(context.destination);
///THIS should probably make the sound silent (gain:0) but it doesn't
var zeroGain = context.createGain();
zeroGain.gain.value = 0.0;
//More connecting... are you already lost which node is which? Because I am.
inputPoint.connect(zeroGain);
zeroGain.connect(context.destination);
零增益的想法不是我的,我是从简单的录音机演示中偷来的。但是对他们有用的东西对我不起作用。该演示在 Firefox 中也没有问题,就像我一样。