let timerInterval = null; let startTime = null; navigator.mediaDevices.getUserMedia({ audio: true }).then((stream) => { const audioContext = new AudioContext(); const analyser = audioContext.createAnalyser(); const microphone = audioContext.createMediaStreamSource(stream); const scriptProcessor = audioContext.createScriptProcessor(2048, 1, 1); analyser.smoothingTimeConstant = 0.8; analyser.fftSize = 1024; microphone.connect(analyser); analyser.connect(scriptProcessor); scriptProcessor.connect(audioContext.destination); setInterval(() => { const array = new Uint8Array(analyser.frequencyBinCount); analyser.getByteFrequencyData(array); const arraySum = array.reduce((a, value) => a + value, 0); const average = arraySum / array.length; document.querySelector('#mic').innerHTML = Math.round(average); }, 1000) }) .catch((err) => { console.error(err); }); const updateTimerDisplay = ()=>{ document.querySelector('#seconds').innerHTML = Math.floor((Date.now() - startTime)/1000) } document.querySelector('#start').addEventListener('click', ()=>{ startTime = Date.now(); timerInterval = window.setInterval(updateTimerDisplay,1000); }) document.querySelector('#stop').addEventListener('click', ()=>{ window.clearInterval(timerInterval); })