音乐样本中的谐波计数

Lau*_*ntC 6 audio processing signal-processing spectrum minim

为了确定声音的丰富程度,我想确定音乐样本中的谐波数量.为此,我正在使用Processing with Minim库,它为我提供了一个带有FFT的全谱.我想知道如何计算FFT产生的频谱中的所有峰值,我甚至对基频不感兴趣.

Ada*_*man 3

根据您的需要,有多种方法可以实现此目的。

如果您想计算每个峰值,那么您应该迭代频谱中的所有频率,记住强度是增加还是减少。每当您注意到方向从增加到减少的变化时,您就会增加峰值计数器。但请注意,这也将包括非常微弱的峰值,这可能是也可能不是您需要的。您可以对要记录的峰值必须发生多少增加和减少设置最低限制。

或者,您可以找到信号强度的基线(在最简单的情况下使用平均值),然后计算正异常值的数量(与基线有一些可配置的最小偏差)。如果您修改此方法以使用频率相关的基线和最小值来解释较高频率下强度的逐渐下降,您可能会获得更好的结果(同样,这取决于您的特定信号和需要,这是否有用)。一种简单的方法是将频谱划分为多个波段(足够小,以便能够在每个波段中假设或多或少平坦的能量分布),并为每个波段使用不同的基线和最小值。