【发布时间】:2016-09-13 11:58:53
【问题描述】:
我正在尝试学习如何正确使用网络音频 api,但我遇到了一些困惑。
在我的项目中,我试图复制旧 1982 Harman/Kardon receiver 的功能。 (点击链接查看照片)
此接收器具有用于高音和低音控制的单独拨盘。我将在这个问题中处理高音。我敢肯定,一旦我指向正确的方向,我就能计算出相应的低音。
在初始化函数中,我创建上下文和过滤节点。
window.AudioContext = window.AudioContext || window.webkitAudioContext;
context = new AudioContext();
source = context.createMediaElementSource(document.getElementById('audio'));
gainNode = context.createGain();
//filter nodes
bassTurnoverFilter = context.createBiquadFilter();
trebleTurnoverFilter = context.createBiquadFilter();
loudnessTrebFilter = context.createBiquadFilter();
loudnessBassFilter = context.createBiquadFilter();
trebleLevelFilter = context.createBiquadFilter();
bassLevelFilter = context.createBiquadFilter();
我目前正在使用jogDial plugin 来控制转盘。刻度盘确实有效,当刻度盘从 0% 转到 100% 时,我可以获得介于 0 和 1 之间的“高音”变量范围。
这是我用于高音拨盘的当前鼠标移动功能:
.on("mousemove", function(event){
var treble = (event.target.rotation + 140) / 280;
if(trebleLevelFilter !== undefined){
trebleLevelFilter.disconnect();
}
source.connect(trebleLevelFilter);
trebleLevelFilter.type = "highshelf";
trebleLevelFilter.frequency.value = 200;
trebleLevelFilter.gain.value = treble;
trebleLevelFilter.connect(context.destination);
});
我的问题或多部分问题是... 我应该使用 6 种类型中的哪一种? (“lowpass”、“highpass”、“bandpass”、“lowshelf”、“highshelf”、“peaking”、“notch”、“allpass”)猜测是highpass还是highself。
我应该设置什么频率?
当表盘转动时,gain.value 应该是动态的吗?
我是不是完全走错了方向?
我将 gain.value 设置为高音变量值,当转到 100% 时,它似乎会稍微增加音量......但我认为这不是我想要的正确功能完成。
【问题讨论】: