class Synth { constructor(audioContext, waveType = "sine", frequency = 400) { this.audioContext = audioContext; this.oscWaveType = waveType; this.oscFrequency = frequency; // osc setup this.osc = this.audioContext.createOscillator(); this.osc.type = this.oscWaveType; this.osc.frequency.setValueAtTime(this.oscFrequency, this.audioContext.currentTime); this.osc.connect(this.audioContext.destination); } setOscWaveType(type) { this.oscWaveType = type; this.osc.type = this.oscWaveType; } startOsc() { this.osc.start(); } stopOsc() { // first get all the parameters for this osc let currentFreq = this.osc.frequency.value; let currentType = this.osc.type; this.osc.stop(); this.osc = this.audioContext.createOscillator(); console.log(this.osc); this.osc.type = currentType; this.osc.frequency.setValueAtTime(currentFreq, this.audioContext.currentTime); } } let globalAudioContext = new AudioContext(); let synth = new Synth(globalAudioContext); window.onload = function() { console.log("hello world!"); console.log(synth); }