将Auriotouch线性刻度更改为对数

时间:2010-08-04 20:05:37

标签: iphone audio fft

我不知道这是否可行,但我想我会问,我怀疑如果有可能,它会在 - (void)renderFFTToTex例程中改变。有没有人对这个或他们可以推荐的其他建议有任何想法?谢谢。

1 个答案:

答案 0 :(得分:2)

要重新调整频率,我们需要缩放此参数:

CGFloat yFract = (CGFloat)y / (CGFloat)(maxY - 1);

,其值介于0..1之间,并确定要在显示行y上显示的fft输出。

要获得对数刻度,首先要进行数学计算:必须在位置记录(f)上显示频率f(0.1kHz-20kHz)。调用低限(0.1kHz)L,高限(20kHz)H。然后经过一些数学[[跳过]]得到:

yFract = ( exp(yFract*log(H/L)) - 1 ) / ( H/L - 1 );

你应该填写你认为的H / L比例,例如

yFract = ( exp(yFract*log(20)) - 1 ) / ( 20 - 1 );

(你应该检查0是否给出0而1给出1,情况就是这样)