Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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
});
@tomhicks

This comment has been minimized.

Copy link
Owner Author

@tomhicks tomhicks commented Feb 14, 2020

This is a slightly different version where the pitch of a single oscillator changes continuously so it's a bit more continuous.

@R4meau

This comment has been minimized.

Copy link

@R4meau R4meau commented Feb 16, 2020

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