Baseline Widely available
getFloatTimeDomainData()
㯠AnalyserNode
渡ããããFloat32Array
ãé
åã«ãç¾å¨ã®æ³¢å½¢ãã¤ã¾ãæéé åã®ãã¼ã¿ãã³ãã¼ãã¾ããé
åã®åå¤ã¯ãµã³ãã«ã§ãããããã®æç¹ã«ãããä¿¡å·ã®å¤§ããã§ãã
getFloatTimeDomainData(array)
弿°
array
æéé åãã¼ã¿ã®ã³ãã¼å
ã¨ãªã Float32Array
ã§ãã é
åã®æã¤è¦ç´ ã AnalyserNode.fftSize
ããå°ãªãã£ãå ´åãä½åãªè¦ç´ ã¯åé¤ããã¾ããå¿
è¦ä»¥ä¸ã®è¦ç´ ããã£ãå ´åãä½åãªè¦ç´ ã¯ç¡è¦ããã¾ãã
ãªã (undefined
)ã
次ã®ä¾ã§ã¯ã AudioContext
ã§ AnalyserNode
ã使ãã requestAnimationFrame
㨠<canvas>
ã§æå»é åã®ãã¼ã¿ãç¹°ãè¿ãåéããç¾å¨ã®é³å£°å
¥åã®ããªã·ãã¹ã³ã¼ããåºåãæç»ããåºæ¬çãªä½¿ç¨æ¹æ³ã示ãã¾ãã ããå®å
¨ãªå¿ç¨ä¾/æ
å ±ã«ã¤ãã¦ã¯ã Voice-change-O-matic ã®ãã¢ã調ã¹ã¦ãã ããï¼é¢é£ããã³ã¼ã㯠app.js ã® 108 ï½ 193 è¡ç®ãåç
§ï¼ã
const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
const analyser = audioCtx.createAnalyser();
// â¦
analyser.fftSize = 1024;
const bufferLength = analyser.fftSize;
console.log(bufferLength);
const dataArray = new Float32Array(bufferLength);
canvasCtx.clearRect(0, 0, WIDTH, HEIGHT);
function draw() {
drawVisual = requestAnimationFrame(draw);
analyser.getFloatTimeDomainData(dataArray);
canvasCtx.fillStyle = "rgb(200, 200, 200)";
canvasCtx.fillRect(0, 0, WIDTH, HEIGHT);
canvasCtx.lineWidth = 2;
canvasCtx.strokeStyle = "rgb(0, 0, 0)";
canvasCtx.beginPath();
const sliceWidth = (WIDTH * 1.0) / bufferLength;
let x = 0;
for (let i = 0; i < bufferLength; i++) {
const v = dataArray[i] * 200.0;
const y = HEIGHT / 2 + v;
if (i === 0) {
canvasCtx.moveTo(x, y);
} else {
canvasCtx.lineTo(x, y);
}
x += sliceWidth;
}
canvasCtx.lineTo(canvas.width, canvas.height / 2);
canvasCtx.stroke();
}
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