我正在制作有源噪音控制的程序(也使用自适应而不是使用取消代替控件)
系统很简单。
Follwing是我的问题
我听说stackoverflow有很多顶级程序员。所以,我期待得到批判的答案:D
答案 0 :(得分:1)
回答你的问题:
(1)当您读取声音时,返回一个字节数组。字节可以很容易地解码成整数,短路,浮点数等等。 Java支持许多常见格式,并且可能有一个与麦克风输入和扬声器输出相匹配的格式。例如,Java支持16位编码,立体声,44100 fps,这被认为是CD质量的标准。 StackOverflow上已经有几个问题显示了解码和重新编码的编码。
(2)是的,只需将-1乘以PCM数组的每个元素即可。将负数添加到正确排列的对应项时,将产生0。
(3& 4)我不知道延迟时间的公差是多少!我想如果你只是简单地接受输入,解码,乘以-1,重新编码和输出,就有可能获得非常少量的处理时间。我不知道Java在这里有什么能力,但我敢打赌它会在十几毫米的范围内,给予或接受。取消多少钱?声音从麦克风到扬声器的位置有多远?这允许多长时间? (或者我错过了一些关于它是如何工作的东西?我之前没有做过这样的事情。)
Java非常快,通过读写和简单的数字转换,您将与本机代码级别相对接近。核心代码(用于测试)可能在下午编写,使用以下教程示例作为模板:Reading/Writing sound files, see code snippets。我特别注意评论所在的位置"这里对字节数组中的音频数据做了一些有用的事情......"在此刻, 您可以将代码转换为DSP,再乘以-1,然后再转换回字节。
如果Java没有足够快的证明,我认为接下来要尝试的是C的某种风格。