Browse Source

noise

master
Roderic Day 4 years ago
parent
commit
dcb0a1762c
1 changed files with 55 additions and 0 deletions
  1. +55
    -0
      apps/noise.js

+ 55
- 0
apps/noise.js View File

lastNoise: {}

function isNoisy(username) {
const now = +new Date()
const then = VideoShare.lastNoise[username] || 0
console.log(now - then)
}

function notifySound(stream) {
const audioContext = new AudioContext()
const analyser = audioContext.createAnalyser()
const microphone = audioContext.createMediaStreamSource(stream)
const scriptProcessor = audioContext.createScriptProcessor(0, 1, 1)

analyser.smoothingTimeConstant = 0.3
analyser.fftSize = 1024

microphone.connect(analyser)
analyser.connect(scriptProcessor)
scriptProcessor.connect(audioContext.destination)
scriptProcessor.onaudioprocess = () => {
const array = new Uint8Array(analyser.frequencyBinCount)
analyser.getByteFrequencyData(array)
const isLoud = array.reduce((a, b) => a + b) / array.length | 0
if(isLoud) {
wire({kind: 'noise'})
}
}
}

function showNoise() {
const now = +new Date()
for([username, ts] of Object.entries(VideoShare.lastNoise)) {
const isNoisy = (now - ts) < 100
const query = `.label-${username}`
const el = document.querySelector(query)
if(el && isNoisy) {
el.style.color = 'lime'
}
else if (el) {
el.style.color = 'white'
}
}
}

addEventListener('noise', ({detail: {source}}) => {
VideoShare.lastNoise[source] = +new Date()
})

addEventListener('load', () => {
setInterval(showNoise, 100)
doNotLog.add('noise')
})

// VideoShare.notifySound(stream)

Loading…
Cancel
Save