我期待實現模擬標準DJ混音器的3頻段均衡器。使用網絡音頻API實現3頻段均衡器
不幸的是我沒有太多的運氣。我知道它涉及到創建BiquadFilter節點並將它們連接到增益節點。不幸的是,我沒有得到任何希望的結果。
我到目前爲止唯一的成功只是gainNode來控制音軌的音量。
任何援助將不勝感激。
感謝, 斯坦
我期待實現模擬標準DJ混音器的3頻段均衡器。使用網絡音頻API實現3頻段均衡器
不幸的是我沒有太多的運氣。我知道它涉及到創建BiquadFilter節點並將它們連接到增益節點。不幸的是,我沒有得到任何希望的結果。
我到目前爲止唯一的成功只是gainNode來控制音軌的音量。
任何援助將不勝感激。
感謝, 斯坦
我會繼續和我的答案闡述idbehold的問題:
我要說的是,你可能想使用的過濾器與5型(峯值),它可以讓所有頻率通過並僅在您設置相應的filter.frequency.value的頻率處放大/縮小。這可以讓你串聯連接濾波器,所以你不需要單獨的音頻路徑。您也可以考慮使用低架濾波器作爲第一個濾波器,使用高架濾波器作爲第三個濾波器,這在3頻段均衡器中很常見。
如果您使用峯化濾波器串聯,每個頻率都不需要單獨的增益節點,您只需爲特定濾波器設置filter.gain.value即可。
的代碼會是這個樣子:
var lowshelf = context.createBiquadFilter(),
mid = context.createBiquadFilter(),
highshelf = context.createBiquadFilter();
//set the filter types (you could set all to 5, for a different result, feel free to experiment)
lowshelf.type = 3;
mid.type = 5;
highshelf.type = 4;
//connect 'em in order
yourInput.connect(lowshelf);
lowshelf.connect(mid);
mid.connect(highshelf);
highshelf.connect(yourOutput);
然後,您可以用各自的Q,頻率和增益值(檢查https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#BiquadFilterNode,看看哪些PARAMS與濾波器類型的作品),例如調節各頻段:
lowshelf.gain.value = 0.6;
lowshelf.frequency.value = 300;
編輯:
要添加一個獨立的增益,只是做
var gainNode = context.createGainNode();
,然後要麼做
gainNode.connect(lowshelf); //pre EQ
或
highshelf.connect(gainNode); //post EQ
取決於你是否希望它張貼或預先的EQ。您可通過執行
gainNode.gain.value = 0.6;
控制增益我有一個非常類似的問題在這裏:創建10波段均衡器使用網絡音頻API(http://stackoverflow.com/questions/12738056/creating-a-10 -band-equalizer-using-web-audio-api) – idbehold
看起來答案並沒有真正討論如何定義濾波器並將它們與增益節點連接起來。 – stan229