查找值和设置状态之间的范围

时间:2016-09-20 02:07:58

标签: javascript lodash web-audio

我目前正在创建一个使用双耳节拍的应用程序/在每只耳朵中播放不同的频率。以下是我正在使用的内容:

var frequency = {
    "Gamma": [30, 50],
    "Beta": [14, 30],
    "Alpha": [8, 14],
    "Theta": [4, 8],
    "Delta": [0.1, 4]
};

Binaural Beats的工作方式是左耳和右耳播放频率之间的差异应该等于数组中的值。例如,Gamma Wave双耳节拍的频率差异为30 - 50,如对象/数组所示。

我目前正在使用滑块和文本框来设置播放的频率。如何通过检查频率之间的值而不是笨重来动态设置状态(Gamma,Beta,Alpha等)?我已尝试在Lodash中使用_inRange,但似乎无法弄明白。

非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解你的逻辑,你需要找出左右之间的差异是否属于其中一个范围:

var frequency = {
  "Gamma": [30, 50],
  "Beta": [14, 30],
  "Alpha": [8, 14],
  "Theta": [4, 8],
  "Delta": [0.1, 4]
};

var freqs = ['Delta', 'Theta', 'Alpha', 'Beta', 'Gamma']; // array of frequencies from the lowset to the highest range

function findFrequency(left, right) {
  return _.find(freqs, function(value) { // find the frequnecy
    var range = frequency[value]; // take the range from the frequency array
    var diff = Math.abs(left - right); // get the diff btween right to left
    return _.inRange(diff, range[0], range[1]); // find if the diff is in the range
  });
}

var result = findFrequency(3, 32);

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.0/lodash.min.js"></script>