如何在参数均衡器中绘制频率间隔

时间:2018-10-01 12:03:41

标签: math frequency logarithm equalizer parametric-equations

我正在尝试做与this parametric equalizer类似的事情,仅在频率轴方面,即沿中间线的值: Parametric eq

这似乎是均衡器的标准格式,但我无法得出公式来实现。

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

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

1 个答案:

答案 0 :(得分:0)

借助this video,我能够得出一个公式,将频率轴绘制为对数刻度。

        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;
            }
        }