将 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 线性刻度更改为对数的主要内容,如果未能解决你的问题,请参考以下文章

使用 d3 对数刻度而不是线性刻度

如何适应对数刻度[重复]

对数刻度返回 NaN

将 midi 弯音转换为 0 到 4 对数刻度

对数刻度返回NaN

Matplotlib 对数刻度刻度标签数字格式