-1

我正在尝试做类似于这个参数均衡器的事情,仅关于频率轴,即沿中线的值: 参数方程

这似乎是均衡器的标准格式,但我无法计算出执行此操作的公式。

即第一组频率线的值是 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 但间距会随着你上升到 100 而减小,从那里开始,它会变为 100, 200, 300 , 400, 500.. 到 1000 并且间距重置为 100 然后在每个间隔减小到 1000 相同的模式重复到最大值,在这种情况下为 20,000

这是怎么做到的?它是对数的吗?

4

1 回答 1

1

在这个视频的帮助下,我能够制定出一个将频率轴绘制为对数刻度的公式。

        int factor = 10;
        for(int i = 10; i <= FREQ_MAX; i+=factor)
        {
            fx = (float) ((float) (Math.log10(i) - Math.log10(PEQ.FREQ_MIN))/(Math.log10(PEQ.FREQ_MAX)-Math.log10(PEQ.FREQ_MIN)) * getMaxCanvasWidth());
            canvas.drawLine(fx, 0, fx, getHeight(), paintLinesThick);

            if(isDisplayedFreq(i))
            {
                paintText.setTextAlign(Paint.Align.LEFT);
                canvas.drawText(getFreqAsFormattedLabel(i), fx + (getMaxCanvasWidth() / 120f), (getHeight() / 2f) + (getHeight() / 50f), paintText);
            }

            if(i >= (factor*10))
            {
                factor *= 10;
            }
        }
于 2018-10-04T07:11:54.903 回答