{
let request = requestAnimationFrame(function draw(timestamp) {
const fps = 60;
if (timestamp - prev < 1000 / fps) {
request = requestAnimationFrame(draw);
return;
}
mutable prev = timestamp;
analyser.getFloatFrequencyData(mutable data);
analyser.getFloatTimeDomainData(mutable timeData);
processFiltered(mutable data);
processData(mutable data, timestamp);
mutable data = mutable data;
mutable timeData = mutable timeData;
request = requestAnimationFrame(draw);
});
invalidation.then(() => cancelAnimationFrame(request));
}