Skip to content

Instantly share code, notes, and snippets.

@sbrichardson
Forked from tomhicks/plink-plonk.js
Created February 16, 2020 00:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sbrichardson/9244d4cdc37274ec4331aecba2841405 to your computer and use it in GitHub Desktop.
Save sbrichardson/9244d4cdc37274ec4331aecba2841405 to your computer and use it in GitHub Desktop.
Listen to your web pages
@sbrichardson
Copy link
Author

SweepSwoop.js

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
});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment