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
You can’t perform that action at this time.