<button id="start" disabled>Start audio</button>
<output id="db">loading engine…</output>
<p><label>sweep rate <input id="rate" type="range" min="0.03" max="4" step="0.01" value="0.2"></label></p>
<script type="module">
import init, { NoiseTableEngine } from "noise-table";
import { NoiseTableEngineWrapper } from "noise-table/engine";
await init();
const engine = new NoiseTableEngineWrapper(new NoiseTableEngine());
lab.apply(engine); // loads the Patch tab (JSON or Koda), reports errors to the page
rate.oninput = () => engine.setParam("sweep", "frequency", Number(rate.value));
start.disabled = false;
start.onclick = async () => {
await engine.startAudio();
start.textContent = "audio running";
// Subscribe once audio is running: a meter registered before startAudio()
// never receives a reading.
engine.meter("filter", (rms) => {
db.textContent = rms.toFixed(1) + " dB";
});
};
</script>