This page was translated from English by the community.Learn more and join the MDN Web Docs community.
AnalyserNode.getByteFrequencyData()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015년 7월.
AnalyserNode 인터페이스의getByteFrequencyData() 메서드는 전달된Uint8Array (unsigned byte array) 내로 현재 주파수 데이터를 복사합니다.
주파수 데이터는 0에서 255 스케일의 정수로 구성되어 있습니다.
배열 내의 각 원소는 특정한 주파수에 대한 데시벨 값을 나타냅니다. 주파수들은 0에서 샘플 레이트의 1/2까지 선형적으로 퍼져 있습니다. 예를 들자면,48000 샘플 레이트에 대해서, 배열의 마지막 원소는24000 Hz에 대한 데시벨 값을 나타냅니다.
만약 배열이AnalyserNode.frequencyBinCount보다 더 적은 요소를 가지고 있다면, 초과한 요소는 탈락됩니다. 만약 이것이 필요한 것보다 더 많은 요소를 가지고 있다면, 초과한 요소는 무시됩니다.
In this article
구문
var audioCtx = new AudioContext();var analyser = audioCtx.createAnalyser();var dataArray = new Uint8Array(analyser.frequencyBinCount); // Uint8Array는 frequencyBinCount와 같은 길이여야만 합니다void analyser.getByteFrequencyData(dataArray); // getByteFrequencyData()로부터 반환된 데이터로 Uint8Array를 채웁니다매개변수
array주파수 영역 데이터가 복사될
Uint8Array. 소리가 없는 모든 샘플에 대해서, 값은-Infinity입니다.만약 배열이AnalyserNode.frequencyBinCount보다 더 적은 요소를 가지고 있다면, 초과한 요소는 탈락됩니다. 만약 이것이 필요한 것보다 더 많은 요소를 가지고 있다면, 초과한 요소는 무시됩니다.
반환 값
없음.
예제
다음의 예제는AnalyserNode를 생성하기 위한AudioContext와 그리고 나서 반복적으로 주파수 데이터를 수집하고 현재 오디오 입력의 "winamp 막대그래프 스타일의" 출력을 그리기 위한requestAnimationFrame과<canvas>의 기본 사용을 보여줍니다. 더 완벽한 응용 예제/정보를 보려면Voice-change-O-matic 데모를 확인하세요 (관련된 코드를 보려면app.js 라인 128–205를 참고하세요).
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();var analyser = audioCtx.createAnalyser(); ...analyser.fftSize = 256;var bufferLength = analyser.frequencyBinCount;console.log(bufferLength);var dataArray = new Uint8Array(bufferLength);canvasCtx.clearRect(0, 0, WIDTH, HEIGHT);function draw() { drawVisual = requestAnimationFrame(draw); analyser.getByteFrequencyData(dataArray); canvasCtx.fillStyle = 'rgb(0, 0, 0)'; canvasCtx.fillRect(0, 0, WIDTH, HEIGHT); var barWidth = (WIDTH / bufferLength) * 2.5; var barHeight; var x = 0; for(var i = 0; i < bufferLength; i++) { barHeight = dataArray[i]; canvasCtx.fillStyle = 'rgb(' + (barHeight+100) + ',50,50)'; canvasCtx.fillRect(x,HEIGHT-barHeight/2,barWidth,barHeight/2); x += barWidth + 1; }};draw();명세
| Specification |
|---|
| Web Audio API> # dom-analysernode-getbytefrequencydata> |