过滤器的线性到日志滑块值

时间:2016-04-19 15:53:37

标签: javascript jquery

您好我已经为我的鼓垫设置了一个过滤器部分,它的工作正常,除了它代表的值我想将值从线性转换为日志代码如下

HTML CODE

<div id="sectionEffects">

            <div id="Effect1">
            <title> Effect 1 </title>
            <p>
            Filter on: <input class="slider" type="checkbox" checked="false" oninput="biquadFilter.togglebiquadFilter(this);"/>
            </p>
            <p>
            Frequency: <input type="range" min="0" max="40" step="1" value="20000" onChange="" id="filter"/>
            </p>
            <p class="note">Current value: <span id="currentValue">0</span></p>

            </div>

JS CODE

var selectedPad = "";
var padCutoffs = [];


padCutoffs["Kick"] = 20000;
padCutoffs["Snare"] = 20000;
padCutoffs["Tom"] = 20000;
padCutoffs["Crash"] = 20000;
padCutoffs["Roll"] = 20000;
padCutoffs["Hi-Hat"] = 20000;

$('#filter').on("change mousemove", function() {
          padCutoffs[selectedPad] = $(this).val()* 500; //look up linear to log
});

2 个答案:

答案 0 :(得分:0)

为什么要使用查找表?你可以这两种方式:

  1. 使用数学函数 - Math.log2(x)和Math.pow(2,x) - 在实际数据之间进行转换。
  2. 使用filter.detune AudioParam(将filter.frequency设置为已知数字后),而不是纯数字。例如,对于5倍频程滤波器扫描,设置filter.frequency.value = 0,然后从最小0到最大1200 * 5变化失谐。 (Detune是美分,每个八度音程1200美分。)

答案 1 :(得分:0)

我能想到的是从数据创建指数回归(我使用desmos),我得到y = 1058500 * e ^(9.0015)x-131640 你可以将e近似为2.71828