const rust = import('./webaudio'); // Most browsers don't let WebAudio autoplay without some interaction from the user. So once the module is loaded, // it's passed to this function which will set up the UI elements for the user to interact with function setup(rust_module) { play = function() { console.log("About to create some music!"); fm = new rust_module.FmOsc(); fm.set_note(50); fm.set_fm_frequency(0); fm.set_fm_amount(0); fm.set_gain(0.8); }; // create some UI elements const primary_slider = document.getElementById("primary_input"); primary_slider.oninput = (e) => { fm.set_note(e.target.value); }; const fm_freq = document.getElementById("fm_freq"); fm_freq.oninput = (e) => { fm.set_fm_frequency(e.target.value); }; const fm_amount = document.getElementById("fm_amount"); fm_amount.oninput = (e) => { fm.set_fm_amount(e.target.value); }; console.log("Ready! Press the play button!"); } rust.then(m => { setup(m); });