From 91177c3f2afcb948692a0bef1694a10240abd471 Mon Sep 17 00:00:00 2001 From: Matthew Huntington Date: Tue, 21 Nov 2023 16:37:43 -0500 Subject: [PATCH] basic timer. display mic volume --- app.js | 58 +++++++++++++++++++++++++++++++++--------------------- index.html | 11 +++++++++-- 2 files changed, 45 insertions(+), 24 deletions(-) diff --git a/app.js b/app.js index fbf5c95..9851f46 100644 --- a/app.js +++ b/app.js @@ -1,27 +1,41 @@ +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); + 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) +} - analyser.smoothingTimeConstant = 0.8; - analyser.fftSize = 1024; +document.querySelector('#start').addEventListener('click', ()=>{ + startTime = Date.now(); + timerInterval = window.setInterval(updateTimerDisplay,1000); +}) - 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; - console.log(Math.round(average)); - // colorPids(average); - }, 1000) - }) - .catch((err) => { - /* handle the error */ - console.error(err); - }); +document.querySelector('#stop').addEventListener('click', ()=>{ + window.clearInterval(timerInterval); +}) diff --git a/index.html b/index.html index 147288c..5418822 100644 --- a/index.html +++ b/index.html @@ -3,9 +3,16 @@ - + - +
+
Mic Level
+
+
Seconds Recorded
+
+
+ +