-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
32 lines (24 loc) · 1006 Bytes
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import './main.scss';
const worker = new Worker('./worker.js');
const canvas = document.querySelector('canvas');
const offscreenCanvas = document.querySelector('canvas').transferControlToOffscreen();
const cHeight = canvas.height;
const cWidth = canvas.width;
const audio = document.querySelector("audio");
let audioCtx = new (window.webkitAudioContext || window.AudioContext)();
let analyser = audioCtx.createAnalyser();
let source = audioCtx.createMediaElementSource(audio);
source.connect(audioCtx.destination);
source.connect(analyser);
analyser.fftSize = 256;
var bufferLength = analyser.frequencyBinCount;
var dataArray = new Uint8Array(bufferLength);
const audioData = analyser.getByteTimeDomainData(dataArray);
worker.postMessage({msg: 'init', canvas: offscreenCanvas}, [offscreenCanvas]);
function draw() {
audioCtx.resume();
let drawVisual = requestAnimationFrame(draw);
analyser.getByteFrequencyData(dataArray);
worker.postMessage({dataArray, bufferLength});
};
draw();