在Java中生成噪声的颜色

Dor*_*onz 8 java audio noise noise-generator

我想创建一个使用Java的彩色噪声生成器,它将能够生成本文中定义的所有颜色:http://en.wikipedia.org/wiki/Colors_of_noise

  1. 从最简单的一个,白噪声开始,我如何产生噪音,以便它可以无限播放?
  2. 从那里,我如何修改我的生成器以生成任何颜色?

我对如何产生噪声本身感到困惑,并对如何生成我可以让它通过扬声器输出感到困惑.

任何链接或提示将非常感谢!

我还看了另一个问题:Java生成声音

但我不完全理解其中一条评论中给出的代码中发生了什么.它也没有告诉我该代码会产生什么样的噪音,所以我不知道如何修改它会产生白噪声.

Mic*_*ein 1

实际上,我目前正在开展一个项目,用于获取白噪声并对其进行采样以产生随机数。你需要的是相反的!

声音是压力与时间的关系。基本上从 0 压力开始,然后添加从 -(最大幅度)到(最大幅度)的随机压力量。白噪声的幅度是随机且正态分布的,因此您可以使用Random.nextGaussian()生成随机 z 分数。将 z 分数乘以标准差(您可能需要进行一些测试才能找到所需幅度的标准差),然后将其设为音频文件中每个样本的幅度。

至于生成声音文件本身,如果您还没有,您应该查看Java Sound API。它具有许多用于创建声音文件和播放的好方法。

你问题的下一部分,非白噪声,恐怕我不确定波形是什么样的。它可能遵循类似的生成随机 z 分数并将它们乘以某个幅度标准偏差(或更可能乘以某个随时间变化的幅度函数)。

  • 产生其他有色噪声的常用方法是过滤白噪声。例如,粉红噪声可以通过对白噪声应用 3dB/倍频程低通滤波器来产生,棕色噪声是 6dB/倍频程低通滤波器,蓝色噪声是 3dB/倍频程高通滤波器,紫色噪声是 6dB/倍频程高通滤波器,最后灰噪声使用倒置的 A - 加权滤波器。 (3认同)