2017-02-18 8 views
-1

AnalyserNode에 대해 MDN Article을 읽었으며 W3C 문서를 이해하기 어려워했습니다. 더 상세하게 낮은 주파수를 보여줄 수 있나요 ..Javascript AnalyserNode 저주파수 (저음)

Frequency Canvas

그러나 매우 낮은 "베이스"주파수 만 5 줄 정도를 차지 : 나는 작업 코드가?

+2

코드는 이미지에서 실행할 수 없으므로 코드가 아닌 이미지를 포함하십시오. –

답변

0

아니요, 더 큰 FFT를 분석기에 사용하지 않아도됩니다. FFT에서 수학이 작동하는 방식은 상자가 선형으로 펼쳐집니다. 좀 더 자세한 정보가 필요하면 전체 주파수 스펙트럼에 대한 세부 정보를 얻어야합니다 (해당 CPU 비용으로).

1

@cwilso는 기본적으로 옳습니다.

그러나 여기에 (아주) 약간의 작업과 분석 및 사고로 원하는 것을 얻을 수있는 대안이 있습니다.

관심있는 저주파수 신호를 저역 통과 필터링하십시오. 신호를 줄입니다. 이 신호를 AudioBuffer에 보존합니다. AudioBufferSourceAnalyserNodeOfflineAudioContext을 만듭니다. 오프라인 컨텍스트를 실행하고 분석기에서 주파수 데이터를 가져옵니다.

예를 들어 컨텍스트가 48kHz로 실행되고 있다고 가정 해 봅시다. 우리는 3kHz 이하의 주파수를 정제하려고합니다. 따라서 3 kHz의 컷오프 (cutoff)를 가진 저역 통과 필터를 생성하십시오. (단일 IIRFilter 또는 여러 바이 쿼드 필터의 캐스케이드 사용) 필터링 된 오디오를 가져 와서 AudioWorklet 또는 ScriptProcessor로 보냅니다. 이 노드는 매 16 번째 샘플 만 유지함으로써 8 (48/(2 * 3))의 인수로 신호를 데시 메이트합니다. 충분한 데이터를 모으고 6kHz의 샘플 레이트로 AudioBuffer에 저장하십시오. 이 데시 메이션은 6kHz의 샘플 속도에서 3kHz의 대역폭을 갖는 신호를 생성합니다. 따라서 신호의 흥미로운 부분이 전체 대역폭을 차지합니다.

이제이 버퍼가 있으므로 샘플 속도가 3kHz 인 오프라인 컨텍스트를 만듭니다. 이 컨텍스트에서는 해당 버퍼를 사용하여 AudioBufferSourceNode를 만들고이를 AnalyserNode로 전달합니다. 분석기에서 주파수 데이터를 가져옵니다. 1024 포인트를 사용했다면, 각 주파수 빈은 이제 3kHz/1024 또는 약 3Hz 폭이됩니다. 저주파를 다듬 었습니다.

+0

이 방법에 대해 좀 더 자세히 알고 싶습니다. 오디오에 대해 아직 많이 배우고 있지만 지침을 이해하는 데 어려움이 있습니다. – adamk33n3r

+0

아, 내 대답이 잘못되었습니다. 높은 주파수를 정제하기위한 것입니다. 곧 더 좋은 답변으로 업데이트하겠습니다. –