Listen to your web pages
const audioCtx = new window.AudioContext(); | |
const oscillator = audioCtx.createOscillator(); | |
oscillator.connect(audioCtx.destination); | |
oscillator.type = "sine"; | |
let numItems = 0 | |
oscillator.frequency.setValueAtTime( | |
1, | |
audioCtx.currentTime | |
); | |
oscillator.start(); | |
const observer = new MutationObserver(function (mutationsList) { | |
numItems += mutationsList.length | |
oscillator.frequency.setValueAtTime( | |
Math.log(numItems + 1) * 440, | |
audioCtx.currentTime | |
); | |
setTimeout(() => { | |
numItems -= mutationsList.length | |
if (numItems === 0) { | |
oscillator.frequency.setValueAtTime( | |
1, | |
audioCtx.currentTime | |
) | |
} else { | |
oscillator.frequency.setValueAtTime( | |
Math.log(numItems + 1) * 440, | |
audioCtx.currentTime | |
) | |
} | |
}, 100) | |
}); | |
observer.observe(document, { | |
attributes: true, | |
childList: true, | |
subtree: true, | |
characterData: true | |
}); |
This comment has been minimized.
This comment has been minimized.
Hahaha, even cooler. Sounds more futuristic. I'll add this as a feature to my Chrome extension. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
This is a slightly different version where the pitch of a single oscillator changes continuously so it's a bit more continuous.