Baseline Widely available
AnalyserNode
æ¥å£ç getByteTimeDomainData()
æ¹æ³å¤å¶å½åæ³¢å½¢ææ¶åæ°æ®å°ä¼ éç»å®ç Uint8Array
(æ 符å·åèæ°ç») ä¸ã
å¦æè¯¥æ°ç»çå
ç´ å°äº AnalyserNode.fftSize
, å¤ä½çå
ç´ ä¼è¢«ä¸¢å¼ã妿宿å¤äºæéçå
ç´ ï¼å忽ç¥å¤ä½çå
ç´ ã
var audioCtx = new AudioContext();
var analyser = audioCtx.createAnalyser();
var dataArray = new Uint8Array(analyser.fftSize); // Uint8Array should be the same length as the fftSize
analyser.getByteTimeDomainData(dataArray); // fill the Uint8Array with data returned from getByteTimeDomainData()
åæ°
array
æ¶åæ°æ®å°è¢«å¤å¶å°ç Uint8Array
ã 妿æ°ç»ä¸çå
ç´ å°äº AnalyserNode.frequencyBinCount
, åä¼å é¤å¤ä½çå
ç´ ã妿å®å
å«çå
ç´ å¤äºéè¦çå
ç´ ï¼å忽ç¥å¤ä½çå
ç´ ã
void
| None
以ä¸çä¾åå±ç¤ºäº AudioContext
çæä¸ä¸ª AnalyserNode
åºç¡ç¨æ³ï¼ç¶åéè¿ requestAnimationFrame
å <canvas>
éå¤çæ¶éåç»å¶ä¸ä¸ªå½åé³é¢è¾å
¥çâç¤ºæ³¢å¨æ ·å¼âè¾åºãæå
³æ´å®æ´çåºç¨å®ä¾/ä¿¡æ¯ï¼è¯·æ¥çæä»¬ç Voice-change-O-matic demo (æå
³ä»£ç 请åé
app.js lines 128â205)ã
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var analyser = audioCtx.createAnalyser();
...
analyser.fftSize = 2048;
var bufferLength = analyser.frequencyBinCount;
var dataArray = new Uint8Array(bufferLength);
analyser.getByteTimeDomainData(dataArray);
// draw an oscilloscope of the current audio source
function draw() {
drawVisual = requestAnimationFrame(draw);
analyser.getByteTimeDomainData(dataArray);
canvasCtx.fillStyle = 'rgb(200, 200, 200)';
canvasCtx.fillRect(0, 0, WIDTH, HEIGHT);
canvasCtx.lineWidth = 2;
canvasCtx.strokeStyle = 'rgb(0, 0, 0)';
var sliceWidth = WIDTH * 1.0 / bufferLength;
var x = 0;
ctx.beginPath();
for(var i = 0; i < bufferLength; i++) {
let v = dataArray[i]/128.0,
y = v * HEIGHT/2;
if(i === 0)
canvasCtx.moveTo(x, y);
else
canvasCtx.lineTo(x, y);
x += sliceWidth;
}
canvasCtx.lineTo(canvas.width, canvas.height/2);
canvasCtx.stroke();
};
draw();
è§æ ¼ æµè§å¨å
¼å®¹æ§ See also
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