将 Auriotouch 线性刻度更改为对数
Posted
技术标签:
【中文标题】将 Auriotouch 线性刻度更改为对数【英文标题】:Changing Auriotouch Linear scale to logarithmic 【发布时间】:2010-08-04 20:05:36 【问题描述】:我不知道这是否可能,但我想我会问,我怀疑如果可能的话,它将在 - (void) renderFFTToTex 例程中进行更改。有没有人有关于这样做的任何想法或他们可以推荐的其他建议?谢谢。
【问题讨论】:
【参考方案1】:要重新调整频率,我们需要调整这个参数:
CGFloat yFract = (CGFloat)y / (CGFloat)(maxY - 1);
它的值介于 0..1 之间,并确定要在显示行 y 上显示的 fft 输出。
要获得对数刻度,首先进行数学运算:频率 f (0.1kHz-20kHz) 必须显示在位置 log(f) 上。调用下限 (0.1kHz) L,上限 (20kHz) H。然后经过一些数学运算 [[skipped]] 你得到:
yFract = ( exp(yFract*log(H/L)) - 1 ) / ( H/L - 1 );
您应该在哪里填写您认为的 H/L 比率,例如
yFract = ( exp(yFract*log(20)) - 1 ) / ( 20 - 1 );
(你应该检查 0 是否为 0 和 1 是否为 1,是这种情况)
【讨论】:
数据在频段的低端似乎仍然很拥挤。 没关系,我不得不在使用 yFract 的两个地方修改它。非常感谢您的帮助和回答。 您用来再次缩放 dB 级别的公式是什么? 您可以在interpVal
的 sqrt 之后使用相同的逻辑。决定因素还是 H/L 比率。以上是关于将 Auriotouch 线性刻度更改为对数的主要内容,如果未能解决你的问题,请参考以下文章