我有一個小型的網絡應用程序,基於一個人的個人聽力圖(http://howdeaf.com)對耳聾模型。從本質上講,這是不言而喻:如何使用JavaScript網絡音頻只扭曲特定的頻率範圍?
source -> 2-ch splitter -> 6 inline frequency separators -> merge node -> destination -> 6 inline frequency separators ->
頻率分離器使用此代碼創建:
for (let i = 0; i < bandSplit.length; i++) {
for (let j in sides) {
var side = sides[j];
let filterNode = context.createBiquadFilter();
filterNode.frequency.value = bandSplit[i];
if (i === 0)
filterNode.type = 'lowshelf';
else if (i === bandSplit.length - 1)
filterNode.type = 'highshelf';
else
filterNode.type = 'peaking';
filterNode.gain.value = 0.0;
this.eqNodes[side].push(filterNode);
if (i > 0)
this.eqNodes[side][i - 1].connect(this.eqNodes[side][i]);
}
}
我調整在每個12個頻率分離節點的增益,這是一個非常整潔的模擬。
我想單獨使用不同的曲線值向這12個雙二階濾波器節點中的每一個添加失真(使用createWaveShaper()
),但我沒有任何成功扭曲個別頻率。我創建的任何失真節點都會影響該頻道的整個音頻輸出。
有沒有辦法在個別基礎上對這些頻率選擇節點應用失真?
你把WaveShaper節點放在哪裏? –
@RaymondToy我試圖將WaveShaper連接到每個雙分支節點,但這顯然是錯誤的;它形成了所有通過的聲音,而不僅僅是雙二階濾波器的目標頻率。然後我重新安排他們並行而不是系列,源 - >分離器 - > [biquad - >波形整形器] - >合併 - >目的地([這些] 12,每個通道6),但沒有工作 –