Baseline Widely available
AnalyserNode
ì¸í°íì´ì¤ì getByteFrequencyData()
ë©ìëë ì ë¬ë Uint8Array
(unsigned byte array) ë´ë¡ íì¬ ì£¼íì ë°ì´í°ë¥¼ ë³µì¬í©ëë¤.
주íì ë°ì´í°ë 0ìì 255 ì¤ì¼ì¼ì ì ìë¡ êµ¬ì±ëì´ ììµëë¤.
ë°°ì´ ë´ì ê° ììë í¹ì í 주íìì ëí ë°ì벨 ê°ì ëíë
ëë¤. 주íìë¤ì 0ìì ìí ë ì´í¸ì 1/2ê¹ì§ ì íì ì¼ë¡ í¼ì ¸ ììµëë¤. ì를 ë¤ìë©´, 48000
ìí ë ì´í¸ì ëí´ì, ë°°ì´ì ë§ì§ë§ ììë 24000
Hzì ëí ë°ì벨 ê°ì ëíë
ëë¤.
ë§ì½ ë°°ì´ì´ AnalyserNode.frequencyBinCount
ë³´ë¤ ë ì ì ìì를 ê°ì§ê³ ìë¤ë©´, ì´ê³¼í ììë íë½ë©ëë¤. ë§ì½ ì´ê²ì´ íìí ê²ë³´ë¤ ë ë§ì ìì를 ê°ì§ê³ ìë¤ë©´, ì´ê³¼í ììë 무ìë©ëë¤.
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();
ëª
ì¸ ë¸ë¼ì°ì í¸íì± ê°ì´ 보기
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4