我正在寻找一种简单的(伪)代码,用于对采样的音频信号进行频谱反转。 理想情况下是C ++
代码应支持不同的采样率(16/32 / 48KHz)。
答案 0 :(得分:7)
通过Fs/2
混合信号将交换高频和低频 - 想想将单位圆周围的光谱旋转半圈。您可以通过将每个其他样本乘以-1来实现此旋转。
按Fs/2
混音相当于按exp(j*pi*n)
混音。如果x
是输入,y
是输出,
y[n] = x[n] * exp(j*pi*n) = x[n] * [cos(pi*n) + j*sin(pi*n)]
这很容易简化,因为sin(pi*n)
为0,cos(pi*n)
交替为1,-1。
答案 1 :(得分:1)
为了获得与原始内容具有相同类型的时间结构的内容,您需要
由于它是一个音频信号,因此相位将全部搞砸并不重要。无论如何你通常听不到它们。除了翻转部分,ARSS执行频谱图创建和声音再合成。
否则,您可以采用FFT,反转分量的幅度,并采用逆FFT。但这基本上是荒谬的,因为它将完全扰乱声音的时间结构以及频率结构。
答案 2 :(得分:0)
使用余弦没有多大意义。对于数字信号来说,在这里运行一个真正的ringmod并不是必需的,无论如何,在nyquist中,一个consine就是一个正方形。
所以你只需将每个其他样本乘以* -1就可以了。
没有延迟,没有别名,没有任何东西。