개인의 청력도 (http://howdeaf.com)를 기반으로 난청을 모델링하는 작은 웹 앱이 있습니다. 본질적으로, 그것은 간다 :자바 스크립트 웹 오디오를 사용하여 특정 주파수 범위를 왜곡하는 방법은 무엇입니까?
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 개 [각] 채널 중 12 개) 대신 병렬로 배열했지만 어느 것도 작동하지 않았다. –