diff --git a/docs/_snowpack/link/strudel.js b/docs/_snowpack/link/strudel.js index 66f5e2f9..ef16ac7b 100644 --- a/docs/_snowpack/link/strudel.js +++ b/docs/_snowpack/link/strudel.js @@ -118,21 +118,33 @@ class TimeSpan { } } class Hap { - constructor(whole, part, value) { + constructor(whole, part, value, context = {}, stateful = false) { this.whole = whole; this.part = part; this.value = value; + this.context = context; + this.stateful = stateful; + if (stateful) { + assert(typeof this.value === "function", "Stateful values must be functions"); + } } withSpan(func) { const whole = this.whole ? func(this.whole) : void 0; - return new Hap(whole, func(this.part), this.value); + return new Hap(whole, func(this.part), this.value, this.context); } withValue(func) { - return new Hap(this.whole, this.part, func(this.value)); + return new Hap(this.whole, this.part, func(this.value), this.context); } hasOnset() { return this.whole != void 0 && this.whole.begin.equals(this.part.begin); } + resolveState(state) { + if (this.stateful && this.hasOnset()) { + const func = this.value[newState, newValue] = func(state); + return [newState, this.withValue(() => newValue)]; + } + return [state, this]; + } spanEquals(other) { return this.whole == void 0 && other.whole == void 0 || this.whole.equals(other.whole); } @@ -140,7 +152,25 @@ class Hap { return this.spanEquals(other) && this.part.equals(other.part) && this.value === other.value; } show() { - return "(" + (this.whole == void 0 ? "~" : this.whole.show()) + ", " + this.part.show() + ", " + JSON.stringify(this.value?.value ?? this.value) + ")"; + return "(" + (this.whole == void 0 ? "~" : this.whole.show()) + ", " + this.part.show() + ", " + this.value + ")"; + } + setContext(context) { + return new Hap(this.whole, this.part, this.value, context); + } +} +export class State { + constructor(span, controls = {}) { + this.span = span; + this.controls = controls; + } + setSpan(span) { + return new State(span, this.controls); + } + withSpan(func) { + return this.setSpan(func(this.span)); + } + setControls(controls) { + return new State(this.span, controls); } } class Pattern { @@ -157,42 +187,55 @@ class Pattern { } _splitQueries() { const pat = this; - const q = (span) => flatten(span.spanCycles.map((subspan) => pat.query(subspan))); + const q = (state) => { + return flatten(state.span.spanCycles.map((subspan) => pat.query(state.setSpan(subspan)))); + }; return new Pattern(q); } withQuerySpan(func) { - return new Pattern((span) => this.query(func(span))); + return new Pattern((state) => this.query(state.withSpan(func))); } withQueryTime(func) { - return new Pattern((span) => this.query(span.withTime(func))); + return new Pattern((state) => this.query(state.withSpan((span) => span.withTime(func)))); } withEventSpan(func) { - return new Pattern((span) => this.query(span).map((hap) => hap.withSpan(func))); + return new Pattern((state) => this.query(state).map((hap) => hap.withSpan(func))); } withEventTime(func) { return this.withEventSpan((span) => span.withTime(func)); } _withEvents(func) { - return new Pattern((span) => func(this.query(span))); + return new Pattern((state) => func(this.query(state))); + } + _withEvent(func) { + return this._withEvents((events) => events.map(func)); + } + _setContext(context) { + return this._withEvent((event) => event.setContext(context)); + } + _withContext(func) { + return this._withEvent((event) => event.setContext(func(event.context))); + } + _stripContext() { + return this._withEvent((event) => event.setContext({})); } withLocation(location) { - return this.fmap((value) => { - value = typeof value === "object" && !Array.isArray(value) ? value : {value}; - const locations = (value.locations || []).concat([location]); - return {...value, locations}; + return this._withContext((context) => { + const locations = (context.locations || []).concat([location]); + return {...context, locations}; }); } withValue(func) { - return new Pattern((span) => this.query(span).map((hap) => hap.withValue(func))); + return new Pattern((state) => this.query(state).map((hap) => hap.withValue(func))); } fmap(func) { return this.withValue(func); } _filterEvents(event_test) { - return new Pattern((span) => this.query(span).filter(event_test)); + return new Pattern((state) => this.query(state).filter(event_test)); } _filterValues(value_test) { - return new Pattern((span) => this.query(span).filter((hap) => value_test(hap.value))); + return new Pattern((state) => this.query(state).filter((hap) => value_test(hap.value))); } _removeUndefineds() { return this._filterValues((val) => val != void 0); @@ -202,15 +245,15 @@ class Pattern { } _appWhole(whole_func, pat_val) { const pat_func = this; - const query = function(span) { - const event_funcs = pat_func.query(span); - const event_vals = pat_val.query(span); + const query = function(state) { + const event_funcs = pat_func.query(state); + const event_vals = pat_val.query(state); const apply = function(event_func, event_val) { const s = event_func.part.intersection(event_val.part); if (s == void 0) { return void 0; } - return new Hap(whole_func(event_func.whole, event_val.whole), s, event_func.value(event_val.value)); + return new Hap(whole_func(event_func.whole, event_val.whole), s, event_func.value(event_val.value), event_val.context); }; return flatten(event_funcs.map((event_func) => removeUndefineds(event_vals.map((event_val) => apply(event_func, event_val))))); }; @@ -227,15 +270,19 @@ class Pattern { } appLeft(pat_val) { const pat_func = this; - const query = function(span) { + const query = function(state) { const haps = []; - for (const hap_func of pat_func.query(span)) { - const event_vals = pat_val.query(hap_func.part); + for (const hap_func of pat_func.query(state)) { + const event_vals = pat_val.query(state.setSpan(hap_func.part)); for (const hap_val of event_vals) { const new_whole = hap_func.whole; const new_part = hap_func.part.intersection_e(hap_val.part); const new_value = hap_func.value(hap_val.value); - const hap = new Hap(new_whole, new_part, new_value); + const hap = new Hap(new_whole, new_part, new_value, { + ...hap_val.context, + ...hap_func.context, + locations: (hap_val.context.locations || []).concat(hap_func.context.locations || []) + }); haps.push(hap); } } @@ -245,15 +292,19 @@ class Pattern { } appRight(pat_val) { const pat_func = this; - const query = function(span) { + const query = function(state) { const haps = []; - for (const hap_val of pat_val.query(span)) { - const hap_funcs = pat_func.query(hap_val.part); + for (const hap_val of pat_val.query(state)) { + const hap_funcs = pat_func.query(state.setSpan(hap_val.part)); for (const hap_func of hap_funcs) { const new_whole = hap_val.whole; const new_part = hap_func.part.intersection_e(hap_val.part); const new_value = hap_func.value(hap_val.value); - const hap = new Hap(new_whole, new_part, new_value); + const hap = new Hap(new_whole, new_part, new_value, { + ...hap_func.context, + ...hap_val.context, + locations: (hap_val.context.locations || []).concat(hap_func.context.locations || []) + }); haps.push(hap); } } @@ -261,8 +312,12 @@ class Pattern { }; return new Pattern(query); } - get firstCycle() { - return this.query(new TimeSpan(Fraction(0), Fraction(1))); + firstCycle(with_context = false) { + var self = this; + if (!with_context) { + self = self._stripContext(); + } + return self.query(new State(new TimeSpan(Fraction(0), Fraction(1)))); } _sortEventsByPart() { return this._withEvents((events) => events.sort((a, b) => a.part.begin.sub(b.part.begin).or(a.part.end.sub(b.part.end)).or(a.whole.begin.sub(b.whole.begin).or(a.whole.end.sub(b.whole.end))))); @@ -287,14 +342,18 @@ class Pattern { } _bindWhole(choose_whole, func) { const pat_val = this; - const query = function(span) { + const query = function(state) { const withWhole = function(a, b) { - return new Hap(choose_whole(a.whole, b.whole), b.part, b.value); + return new Hap(choose_whole(a.whole, b.whole), b.part, b.value, { + ...a.context, + ...b.context, + locations: (a.context.locations || []).concat(b.context.locations || []) + }); }; const match = function(a) { - return func(a.value).query(a.part).map((b) => withWhole(a, b)); + return func(a.value).query(state.setSpan(a.part)).map((b) => withWhole(a, b)); }; - return flatten(pat_val.query(span).map((a) => match(a))); + return flatten(pat_val.query(state).map((a) => match(a))); }; return new Pattern(query); } @@ -409,7 +468,8 @@ class Pattern { } rev() { const pat = this; - const query = function(span) { + const query = function(state) { + const span = state.span; const cycle = span.begin.sam(); const next_cycle = span.begin.nextSam(); const reflect = function(to_reflect) { @@ -419,7 +479,7 @@ class Pattern { reflected.end = tmp; return reflected; }; - const haps = pat.query(reflect(span)); + const haps = pat.query(state.setSpan(reflect(span))); return haps.map((hap) => hap.withSpan(reflect)); }; return new Pattern(query)._splitQueries(); @@ -463,8 +523,8 @@ Pattern.prototype.patternified = ["apply", "fast", "slow", "early", "late"]; Pattern.prototype.factories = {pure, stack, slowcat, fastcat, cat, timeCat, sequence, polymeter, pm, polyrhythm, pr}; const silence = new Pattern((_) => []); function pure(value) { - function query(span) { - return span.spanCycles.map((subspan) => new Hap(Fraction(subspan.begin).wholeCycle(), subspan, value)); + function query(state) { + return state.span.spanCycles.map((subspan) => new Hap(Fraction(subspan.begin).wholeCycle(), subspan, value)); } return new Pattern(query); } @@ -472,7 +532,7 @@ function steady(value) { return new Pattern((span) => Hap(void 0, span, value)); } export const signal = (func) => { - const query = (span) => [new Hap(void 0, span, func(span.midpoint()))]; + const query = (state) => [new Hap(void 0, state.span, func(state.span.midpoint()))]; return new Pattern(query); }; const _toBipolar = (pat) => pat.fmap((x) => x * 2 - 1); @@ -497,28 +557,29 @@ function reify(thing) { } function stack(...pats) { const reified = pats.map((pat) => reify(pat)); - const query = (span) => flatten(reified.map((pat) => pat.query(span))); + const query = (state) => flatten(reified.map((pat) => pat.query(state))); return new Pattern(query); } function slowcat(...pats) { pats = pats.map(reify); - const query = function(span) { + const query = function(state) { + const span = state.span; const pat_n = Math.floor(span.begin) % pats.length; const pat = pats[pat_n]; if (!pat) { return []; } const offset = span.begin.floor().sub(span.begin.div(pats.length).floor()); - return pat.withEventTime((t) => t.add(offset)).query(span.withTime((t) => t.sub(offset))); + return pat.withEventTime((t) => t.add(offset)).query(state.setSpan(span.withTime((t) => t.sub(offset)))); }; return new Pattern(query)._splitQueries(); } function slowcatPrime(...pats) { pats = pats.map(reify); - const query = function(span) { - const pat_n = Math.floor(span.begin) % pats.length; + const query = function(state) { + const pat_n = Math.floor(state.span.begin) % pats.length; const pat = pats[pat_n]; - return pat.query(span); + return pat.query(state); }; return new Pattern(query)._splitQueries(); } @@ -638,9 +699,8 @@ Pattern.prototype.bootstrap = () => { return bootstrapped; }; function withLocationOffset(pat, offset) { - return pat.fmap((value) => { - value = typeof value === "object" && !Array.isArray(value) ? value : {value}; - let locations = value.locations || []; + return pat._withContext((context) => { + let locations = context.locations || []; locations = locations.map(({start, end}) => { const colOffset = start.line === 1 ? offset.start.column : 0; return { @@ -656,7 +716,7 @@ function withLocationOffset(pat, offset) { } }; }); - return {...value, locations}; + return {...context, locations}; }); } export { diff --git a/docs/_snowpack/pkg/@tonejs/piano.js b/docs/_snowpack/pkg/@tonejs/piano.js new file mode 100644 index 00000000..dbe0fff7 --- /dev/null +++ b/docs/_snowpack/pkg/@tonejs/piano.js @@ -0,0 +1,538 @@ +import { T as ToneAudioNode, V as Volume, F as Frequency, M as Midi, S as Sampler, a as ToneAudioBuffers, b as ToneBufferSource, o as optionsFromArguments, G as Gain, i as isString } from '../common/index-b6fc655f.js'; +import '../common/webmidi.min-97732fd4.js'; +import '../common/_commonjsHelpers-8c19dec8.js'; + +var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +/** + * Base class for the other components + */ +class PianoComponent extends ToneAudioNode { + constructor(options) { + super(options); + this.name = 'PianoComponent'; + this.input = undefined; + this.output = new Volume({ context: this.context }); + /** + * If the component is enabled or not + */ + this._enabled = false; + /** + * The volume output of the component + */ + this.volume = this.output.volume; + /** + * Boolean indication of if the component is loaded or not + */ + this._loaded = false; + this.volume.value = options.volume; + this._enabled = options.enabled; + this.samples = options.samples; + } + /** + * If the samples are loaded or not + */ + get loaded() { + return this._loaded; + } + /** + * Load the samples + */ + load() { + return __awaiter(this, void 0, void 0, function* () { + if (this._enabled) { + yield this._internalLoad(); + this._loaded = true; + } + else { + return Promise.resolve(); + } + }); + } +} + +// import * as Tone from '../node_modules/tone/Tone' +function midiToNote(midi) { + const frequency = Frequency(midi, 'midi'); + const ret = frequency.toNote(); + return ret; +} +function randomBetween(low, high) { + return Math.random() * (high - low) + low; +} + +function getReleasesUrl(midi) { + return `rel${midi - 20}.[mp3|ogg]`; +} +function getHarmonicsUrl(midi) { + return `harmS${midiToNote(midi).replace('#', 's')}.[mp3|ogg]`; +} +function getNotesUrl(midi, vel) { + return `${midiToNote(midi).replace('#', 's')}v${vel}.[mp3|ogg]`; +} +/** + * Maps velocity depths to Salamander velocities + */ +const velocitiesMap = { + 1: [8], + 2: [6, 12], + 3: [1, 7, 15], + 4: [1, 5, 10, 15], + 5: [1, 4, 8, 12, 16], + 6: [1, 3, 7, 10, 13, 16], + 7: [1, 3, 6, 9, 11, 13, 16], + 8: [1, 3, 5, 7, 9, 11, 13, 16], + 9: [1, 3, 5, 7, 9, 11, 13, 15, 16], + 10: [1, 2, 3, 5, 7, 9, 11, 13, 15, 16], + 11: [1, 2, 3, 5, 7, 9, 11, 13, 14, 15, 16], + 12: [1, 2, 3, 4, 5, 7, 9, 11, 13, 14, 15, 16], + 13: [1, 2, 3, 4, 5, 7, 9, 11, 12, 13, 14, 15, 16], + 14: [1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16], + 15: [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16], + 16: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], +}; +/** + * All the notes of audio samples + */ +const allNotes = [ + 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, + 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, + 87, 90, 93, 96, 99, 102, 105, 108 +]; +function getNotesInRange(min, max) { + return allNotes.filter(note => min <= note && note <= max); +} +/** + * All the notes of audio samples + */ +const harmonics = [21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87]; +function getHarmonicsInRange(min, max) { + return harmonics.filter(note => min <= note && note <= max); +} +function inHarmonicsRange(note) { + return harmonics[0] <= note && note <= harmonics[harmonics.length - 1]; +} + +class Harmonics extends PianoComponent { + constructor(options) { + super(options); + this._urls = {}; + const notes = getHarmonicsInRange(options.minNote, options.maxNote); + for (const n of notes) { + this._urls[n] = getHarmonicsUrl(n); + } + } + triggerAttack(note, time, velocity) { + if (this._enabled && inHarmonicsRange(note)) { + this._sampler.triggerAttack(Midi(note).toNote(), time, velocity * randomBetween(0.5, 1)); + } + } + _internalLoad() { + return new Promise(onload => { + this._sampler = new Sampler({ + baseUrl: this.samples, + onload, + urls: this._urls, + }).connect(this.output); + }); + } +} + +class Keybed extends PianoComponent { + constructor(options) { + super(options); + /** + * The urls to load + */ + this._urls = {}; + for (let i = options.minNote; i <= options.maxNote; i++) { + this._urls[i] = getReleasesUrl(i); + } + } + _internalLoad() { + return new Promise(success => { + this._buffers = new ToneAudioBuffers(this._urls, success, this.samples); + }); + } + start(note, time, velocity) { + if (this._enabled && this._buffers.has(note)) { + const source = new ToneBufferSource({ + url: this._buffers.get(note), + context: this.context, + }).connect(this.output); + // randomize the velocity slightly + source.start(time, 0, undefined, 0.015 * velocity * randomBetween(0.5, 1)); + } + } +} + +class Pedal extends PianoComponent { + constructor(options) { + super(options); + this._downTime = Infinity; + this._currentSound = null; + this._downTime = Infinity; + } + _internalLoad() { + return new Promise((success) => { + this._buffers = new ToneAudioBuffers({ + down1: 'pedalD1.mp3', + down2: 'pedalD2.mp3', + up1: 'pedalU1.mp3', + up2: 'pedalU2.mp3', + }, success, this.samples); + }); + } + /** + * Squash the current playing sound + */ + _squash(time) { + if (this._currentSound && this._currentSound.state !== 'stopped') { + this._currentSound.stop(time); + } + this._currentSound = null; + } + _playSample(time, dir) { + if (this._enabled) { + this._currentSound = new ToneBufferSource({ + url: this._buffers.get(`${dir}${Math.random() > 0.5 ? 1 : 2}`), + context: this.context, + curve: 'exponential', + fadeIn: 0.05, + fadeOut: 0.1, + }).connect(this.output); + this._currentSound.start(time, randomBetween(0, 0.01), undefined, 0.1 * randomBetween(0.5, 1)); + } + } + /** + * Put the pedal down + */ + down(time) { + this._squash(time); + this._downTime = time; + this._playSample(time, 'down'); + } + /** + * Put the pedal up + */ + up(time) { + this._squash(time); + this._downTime = Infinity; + this._playSample(time, 'up'); + } + /** + * Indicates if the pedal is down at the given time + */ + isDown(time) { + return time > this._downTime; + } +} + +/** + * A single velocity of strings + */ +class PianoString extends ToneAudioNode { + constructor(options) { + super(options); + this.name = 'PianoString'; + this._urls = {}; + // create the urls + options.notes.forEach(note => this._urls[note] = getNotesUrl(note, options.velocity)); + this.samples = options.samples; + } + load() { + return new Promise(onload => { + this._sampler = this.output = new Sampler({ + attack: 0, + baseUrl: this.samples, + curve: 'exponential', + onload, + release: 0.4, + urls: this._urls, + volume: 3, + }); + }); + } + triggerAttack(note, time, velocity) { + this._sampler.triggerAttack(note, time, velocity); + } + triggerRelease(note, time) { + this._sampler.triggerRelease(note, time); + } +} + +var __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +/** + * Manages all of the hammered string sounds + */ +class PianoStrings extends PianoComponent { + constructor(options) { + super(options); + const notes = getNotesInRange(options.minNote, options.maxNote); + const velocities = velocitiesMap[options.velocities].slice(); + this._strings = velocities.map(velocity => { + const string = new PianoString(Object.assign(options, { + notes, velocity, + })); + return string; + }); + this._activeNotes = new Map(); + } + /** + * Scale a value between a given range + */ + scale(val, inMin, inMax, outMin, outMax) { + return ((val - inMin) / (inMax - inMin)) * (outMax - outMin) + outMin; + } + triggerAttack(note, time, velocity) { + const scaledVel = this.scale(velocity, 0, 1, -0.5, this._strings.length - 0.51); + const stringIndex = Math.max(Math.round(scaledVel), 0); + let gain = 1 + scaledVel - stringIndex; + if (this._strings.length === 1) { + gain = velocity; + } + const sampler = this._strings[stringIndex]; + if (this._activeNotes.has(note)) { + this.triggerRelease(note, time); + } + this._activeNotes.set(note, sampler); + sampler.triggerAttack(Midi(note).toNote(), time, gain); + } + triggerRelease(note, time) { + // trigger the release of all of the notes at that velociy + if (this._activeNotes.has(note)) { + this._activeNotes.get(note).triggerRelease(Midi(note).toNote(), time); + this._activeNotes.delete(note); + } + } + _internalLoad() { + return __awaiter$1(this, void 0, void 0, function* () { + yield Promise.all(this._strings.map((s) => __awaiter$1(this, void 0, void 0, function* () { + yield s.load(); + s.connect(this.output); + }))); + }); + } +} + +var __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +/** + * The Piano + */ +class Piano extends ToneAudioNode { + constructor() { + super(optionsFromArguments(Piano.getDefaults(), arguments)); + this.name = 'Piano'; + this.input = undefined; + this.output = new Gain({ context: this.context }); + /** + * The currently held notes + */ + this._heldNotes = new Map(); + /** + * If it's loaded or not + */ + this._loaded = false; + const options = optionsFromArguments(Piano.getDefaults(), arguments); + // make sure it ends with a / + if (!options.url.endsWith('/')) { + options.url += '/'; + } + this.maxPolyphony = options.maxPolyphony; + this._heldNotes = new Map(); + this._sustainedNotes = new Map(); + this._strings = new PianoStrings(Object.assign({}, options, { + enabled: true, + samples: options.url, + volume: options.volume.strings, + })).connect(this.output); + this.strings = this._strings.volume; + this._pedal = new Pedal(Object.assign({}, options, { + enabled: options.pedal, + samples: options.url, + volume: options.volume.pedal, + })).connect(this.output); + this.pedal = this._pedal.volume; + this._keybed = new Keybed(Object.assign({}, options, { + enabled: options.release, + samples: options.url, + volume: options.volume.keybed, + })).connect(this.output); + this.keybed = this._keybed.volume; + this._harmonics = new Harmonics(Object.assign({}, options, { + enabled: options.release, + samples: options.url, + volume: options.volume.harmonics, + })).connect(this.output); + this.harmonics = this._harmonics.volume; + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + maxNote: 108, + minNote: 21, + pedal: true, + release: false, + url: 'https://tambien.github.io/Piano/audio/', + velocities: 1, + maxPolyphony: 32, + volume: { + harmonics: 0, + keybed: 0, + pedal: 0, + strings: 0, + }, + }); + } + /** + * Load all the samples + */ + load() { + return __awaiter$2(this, void 0, void 0, function* () { + yield Promise.all([ + this._strings.load(), + this._pedal.load(), + this._keybed.load(), + this._harmonics.load(), + ]); + this._loaded = true; + }); + } + /** + * If all the samples are loaded or not + */ + get loaded() { + return this._loaded; + } + /** + * Put the pedal down at the given time. Causes subsequent + * notes and currently held notes to sustain. + */ + pedalDown({ time = this.immediate() } = {}) { + if (this.loaded) { + time = this.toSeconds(time); + if (!this._pedal.isDown(time)) { + this._pedal.down(time); + } + } + return this; + } + /** + * Put the pedal up. Dampens sustained notes + */ + pedalUp({ time = this.immediate() } = {}) { + if (this.loaded) { + const seconds = this.toSeconds(time); + if (this._pedal.isDown(seconds)) { + this._pedal.up(seconds); + // dampen each of the notes + this._sustainedNotes.forEach((t, note) => { + if (!this._heldNotes.has(note)) { + this._strings.triggerRelease(note, seconds); + } + }); + this._sustainedNotes.clear(); + } + } + return this; + } + /** + * Play a note. + * @param note The note to play. If it is a number, it is assumed to be MIDI + * @param velocity The velocity to play the note + * @param time The time of the event + */ + keyDown({ note, midi, time = this.immediate(), velocity = 0.8 }) { + if (this.loaded && this.maxPolyphony > this._heldNotes.size + this._sustainedNotes.size) { + time = this.toSeconds(time); + if (isString(note)) { + midi = Math.round(Midi(note).toMidi()); + } + if (!this._heldNotes.has(midi)) { + // record the start time and velocity + this._heldNotes.set(midi, { time, velocity }); + this._strings.triggerAttack(midi, time, velocity); + } + } + else { + console.warn('samples not loaded'); + } + return this; + } + /** + * Release a held note. + */ + keyUp({ note, midi, time = this.immediate(), velocity = 0.8 }) { + if (this.loaded) { + time = this.toSeconds(time); + if (isString(note)) { + midi = Math.round(Midi(note).toMidi()); + } + if (this._heldNotes.has(midi)) { + const prevNote = this._heldNotes.get(midi); + this._heldNotes.delete(midi); + // compute the release velocity + const holdTime = Math.pow(Math.max(time - prevNote.time, 0.1), 0.7); + const prevVel = prevNote.velocity; + let dampenGain = (3 / holdTime) * prevVel * velocity; + dampenGain = Math.max(dampenGain, 0.4); + dampenGain = Math.min(dampenGain, 4); + if (this._pedal.isDown(time)) { + if (!this._sustainedNotes.has(midi)) { + this._sustainedNotes.set(midi, time); + } + } + else { + // release the string sound + this._strings.triggerRelease(midi, time); + // trigger the harmonics sound + this._harmonics.triggerAttack(midi, time, dampenGain); + } + // trigger the keybed release sound + this._keybed.start(midi, time, velocity); + } + } + return this; + } + stopAll() { + this.pedalUp(); + this._heldNotes.forEach((_, midi) => { + this.keyUp({ midi }); + }); + return this; + } +} + +var __awaiter$3 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; + +export { Piano }; diff --git a/docs/_snowpack/pkg/common/index-b6fc655f.js b/docs/_snowpack/pkg/common/index-b6fc655f.js new file mode 100644 index 00000000..962c1f95 --- /dev/null +++ b/docs/_snowpack/pkg/common/index-b6fc655f.js @@ -0,0 +1,19651 @@ +const version = "14.7.77"; + +const createExtendedExponentialRampToValueAutomationEvent = (value, endTime, insertTime) => { + return { endTime, insertTime, type: 'exponentialRampToValue', value }; +}; + +const createExtendedLinearRampToValueAutomationEvent = (value, endTime, insertTime) => { + return { endTime, insertTime, type: 'linearRampToValue', value }; +}; + +const createSetValueAutomationEvent = (value, startTime) => { + return { startTime, type: 'setValue', value }; +}; + +const createSetValueCurveAutomationEvent = (values, startTime, duration) => { + return { duration, startTime, type: 'setValueCurve', values }; +}; + +const getTargetValueAtTime = (time, valueAtStartTime, { startTime, target, timeConstant }) => { + return target + (valueAtStartTime - target) * Math.exp((startTime - time) / timeConstant); +}; + +const isExponentialRampToValueAutomationEvent = (automationEvent) => { + return automationEvent.type === 'exponentialRampToValue'; +}; + +const isLinearRampToValueAutomationEvent = (automationEvent) => { + return automationEvent.type === 'linearRampToValue'; +}; + +const isAnyRampToValueAutomationEvent = (automationEvent) => { + return isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent); +}; + +const isSetValueAutomationEvent = (automationEvent) => { + return automationEvent.type === 'setValue'; +}; + +const isSetValueCurveAutomationEvent = (automationEvent) => { + return automationEvent.type === 'setValueCurve'; +}; + +const getValueOfAutomationEventAtIndexAtTime = (automationEvents, index, time, defaultValue) => { + const automationEvent = automationEvents[index]; + return automationEvent === undefined + ? defaultValue + : isAnyRampToValueAutomationEvent(automationEvent) || isSetValueAutomationEvent(automationEvent) + ? automationEvent.value + : isSetValueCurveAutomationEvent(automationEvent) + ? automationEvent.values[automationEvent.values.length - 1] + : getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, automationEvent.startTime, defaultValue), automationEvent); +}; + +const getEndTimeAndValueOfPreviousAutomationEvent = (automationEvents, index, currentAutomationEvent, nextAutomationEvent, defaultValue) => { + return currentAutomationEvent === undefined + ? [nextAutomationEvent.insertTime, defaultValue] + : isAnyRampToValueAutomationEvent(currentAutomationEvent) + ? [currentAutomationEvent.endTime, currentAutomationEvent.value] + : isSetValueAutomationEvent(currentAutomationEvent) + ? [currentAutomationEvent.startTime, currentAutomationEvent.value] + : isSetValueCurveAutomationEvent(currentAutomationEvent) + ? [ + currentAutomationEvent.startTime + currentAutomationEvent.duration, + currentAutomationEvent.values[currentAutomationEvent.values.length - 1] + ] + : [ + currentAutomationEvent.startTime, + getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, currentAutomationEvent.startTime, defaultValue) + ]; +}; + +const isCancelAndHoldAutomationEvent = (automationEvent) => { + return automationEvent.type === 'cancelAndHold'; +}; + +const isCancelScheduledValuesAutomationEvent = (automationEvent) => { + return automationEvent.type === 'cancelScheduledValues'; +}; + +const getEventTime = (automationEvent) => { + if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) { + return automationEvent.cancelTime; + } + if (isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent)) { + return automationEvent.endTime; + } + return automationEvent.startTime; +}; + +const getExponentialRampValueAtTime = (time, startTime, valueAtStartTime, { endTime, value }) => { + if (valueAtStartTime === value) { + return value; + } + if ((0 < valueAtStartTime && 0 < value) || (valueAtStartTime < 0 && value < 0)) { + return valueAtStartTime * (value / valueAtStartTime) ** ((time - startTime) / (endTime - startTime)); + } + return 0; +}; + +const getLinearRampValueAtTime = (time, startTime, valueAtStartTime, { endTime, value }) => { + return valueAtStartTime + ((time - startTime) / (endTime - startTime)) * (value - valueAtStartTime); +}; + +const interpolateValue = (values, theoreticIndex) => { + const lowerIndex = Math.floor(theoreticIndex); + const upperIndex = Math.ceil(theoreticIndex); + if (lowerIndex === upperIndex) { + return values[lowerIndex]; + } + return (1 - (theoreticIndex - lowerIndex)) * values[lowerIndex] + (1 - (upperIndex - theoreticIndex)) * values[upperIndex]; +}; + +const getValueCurveValueAtTime = (time, { duration, startTime, values }) => { + const theoreticIndex = ((time - startTime) / duration) * (values.length - 1); + return interpolateValue(values, theoreticIndex); +}; + +const isSetTargetAutomationEvent = (automationEvent) => { + return automationEvent.type === 'setTarget'; +}; + +class AutomationEventList { + constructor(defaultValue) { + this._automationEvents = []; + this._currenTime = 0; + this._defaultValue = defaultValue; + } + [Symbol.iterator]() { + return this._automationEvents[Symbol.iterator](); + } + add(automationEvent) { + const eventTime = getEventTime(automationEvent); + if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) { + const index = this._automationEvents.findIndex((currentAutomationEvent) => { + if (isCancelScheduledValuesAutomationEvent(automationEvent) && isSetValueCurveAutomationEvent(currentAutomationEvent)) { + return currentAutomationEvent.startTime + currentAutomationEvent.duration >= eventTime; + } + return getEventTime(currentAutomationEvent) >= eventTime; + }); + const removedAutomationEvent = this._automationEvents[index]; + if (index !== -1) { + this._automationEvents = this._automationEvents.slice(0, index); + } + if (isCancelAndHoldAutomationEvent(automationEvent)) { + const lastAutomationEvent = this._automationEvents[this._automationEvents.length - 1]; + if (removedAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(removedAutomationEvent)) { + if (isSetTargetAutomationEvent(lastAutomationEvent)) { + throw new Error('The internal list is malformed.'); + } + const startTime = isSetValueCurveAutomationEvent(lastAutomationEvent) + ? lastAutomationEvent.startTime + lastAutomationEvent.duration + : getEventTime(lastAutomationEvent); + const startValue = isSetValueCurveAutomationEvent(lastAutomationEvent) + ? lastAutomationEvent.values[lastAutomationEvent.values.length - 1] + : lastAutomationEvent.value; + const value = isExponentialRampToValueAutomationEvent(removedAutomationEvent) + ? getExponentialRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent) + : getLinearRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent); + const truncatedAutomationEvent = isExponentialRampToValueAutomationEvent(removedAutomationEvent) + ? createExtendedExponentialRampToValueAutomationEvent(value, eventTime, this._currenTime) + : createExtendedLinearRampToValueAutomationEvent(value, eventTime, this._currenTime); + this._automationEvents.push(truncatedAutomationEvent); + } + if (lastAutomationEvent !== undefined && isSetTargetAutomationEvent(lastAutomationEvent)) { + this._automationEvents.push(createSetValueAutomationEvent(this.getValue(eventTime), eventTime)); + } + if (lastAutomationEvent !== undefined && + isSetValueCurveAutomationEvent(lastAutomationEvent) && + lastAutomationEvent.startTime + lastAutomationEvent.duration > eventTime) { + this._automationEvents[this._automationEvents.length - 1] = createSetValueCurveAutomationEvent(new Float32Array([6, 7]), lastAutomationEvent.startTime, eventTime - lastAutomationEvent.startTime); + } + } + } + else { + const index = this._automationEvents.findIndex((currentAutomationEvent) => getEventTime(currentAutomationEvent) > eventTime); + const previousAutomationEvent = index === -1 ? this._automationEvents[this._automationEvents.length - 1] : this._automationEvents[index - 1]; + if (previousAutomationEvent !== undefined && + isSetValueCurveAutomationEvent(previousAutomationEvent) && + getEventTime(previousAutomationEvent) + previousAutomationEvent.duration > eventTime) { + return false; + } + const persistentAutomationEvent = isExponentialRampToValueAutomationEvent(automationEvent) + ? createExtendedExponentialRampToValueAutomationEvent(automationEvent.value, automationEvent.endTime, this._currenTime) + : isLinearRampToValueAutomationEvent(automationEvent) + ? createExtendedLinearRampToValueAutomationEvent(automationEvent.value, eventTime, this._currenTime) + : automationEvent; + if (index === -1) { + this._automationEvents.push(persistentAutomationEvent); + } + else { + if (isSetValueCurveAutomationEvent(automationEvent) && + eventTime + automationEvent.duration > getEventTime(this._automationEvents[index])) { + return false; + } + this._automationEvents.splice(index, 0, persistentAutomationEvent); + } + } + return true; + } + flush(time) { + const index = this._automationEvents.findIndex((currentAutomationEvent) => getEventTime(currentAutomationEvent) > time); + if (index > 1) { + const remainingAutomationEvents = this._automationEvents.slice(index - 1); + const firstRemainingAutomationEvent = remainingAutomationEvents[0]; + if (isSetTargetAutomationEvent(firstRemainingAutomationEvent)) { + remainingAutomationEvents.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents, index - 2, firstRemainingAutomationEvent.startTime, this._defaultValue), firstRemainingAutomationEvent.startTime)); + } + this._automationEvents = remainingAutomationEvents; + } + } + getValue(time) { + if (this._automationEvents.length === 0) { + return this._defaultValue; + } + const indexOfNextEvent = this._automationEvents.findIndex((automationEvent) => getEventTime(automationEvent) > time); + const nextAutomationEvent = this._automationEvents[indexOfNextEvent]; + const indexOfCurrentEvent = (indexOfNextEvent === -1 ? this._automationEvents.length : indexOfNextEvent) - 1; + const currentAutomationEvent = this._automationEvents[indexOfCurrentEvent]; + if (currentAutomationEvent !== undefined && + isSetTargetAutomationEvent(currentAutomationEvent) && + (nextAutomationEvent === undefined || + !isAnyRampToValueAutomationEvent(nextAutomationEvent) || + nextAutomationEvent.insertTime > time)) { + return getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(this._automationEvents, indexOfCurrentEvent - 1, currentAutomationEvent.startTime, this._defaultValue), currentAutomationEvent); + } + if (currentAutomationEvent !== undefined && + isSetValueAutomationEvent(currentAutomationEvent) && + (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) { + return currentAutomationEvent.value; + } + if (currentAutomationEvent !== undefined && + isSetValueCurveAutomationEvent(currentAutomationEvent) && + (nextAutomationEvent === undefined || + !isAnyRampToValueAutomationEvent(nextAutomationEvent) || + currentAutomationEvent.startTime + currentAutomationEvent.duration > time)) { + if (time < currentAutomationEvent.startTime + currentAutomationEvent.duration) { + return getValueCurveValueAtTime(time, currentAutomationEvent); + } + return currentAutomationEvent.values[currentAutomationEvent.values.length - 1]; + } + if (currentAutomationEvent !== undefined && + isAnyRampToValueAutomationEvent(currentAutomationEvent) && + (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) { + return currentAutomationEvent.value; + } + if (nextAutomationEvent !== undefined && isExponentialRampToValueAutomationEvent(nextAutomationEvent)) { + const [startTime, value] = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue); + return getExponentialRampValueAtTime(time, startTime, value, nextAutomationEvent); + } + if (nextAutomationEvent !== undefined && isLinearRampToValueAutomationEvent(nextAutomationEvent)) { + const [startTime, value] = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue); + return getLinearRampValueAtTime(time, startTime, value, nextAutomationEvent); + } + return this._defaultValue; + } +} + +const createCancelAndHoldAutomationEvent = (cancelTime) => { + return { cancelTime, type: 'cancelAndHold' }; +}; + +const createCancelScheduledValuesAutomationEvent = (cancelTime) => { + return { cancelTime, type: 'cancelScheduledValues' }; +}; + +const createExponentialRampToValueAutomationEvent = (value, endTime) => { + return { endTime, type: 'exponentialRampToValue', value }; +}; + +const createLinearRampToValueAutomationEvent = (value, endTime) => { + return { endTime, type: 'linearRampToValue', value }; +}; + +const createSetTargetAutomationEvent = (target, startTime, timeConstant) => { + return { startTime, target, timeConstant, type: 'setTarget' }; +}; + +const createAbortError = () => new DOMException('', 'AbortError'); + +const createAddActiveInputConnectionToAudioNode = (insertElementInSet) => { + return (activeInputs, source, [output, input, eventListener], ignoreDuplicates) => { + insertElementInSet(activeInputs[input], [source, output, eventListener], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output, ignoreDuplicates); + }; +}; + +const createAddAudioNodeConnections = (audioNodeConnectionsStore) => { + return (audioNode, audioNodeRenderer, nativeAudioNode) => { + const activeInputs = []; + for (let i = 0; i < nativeAudioNode.numberOfInputs; i += 1) { + activeInputs.push(new Set()); + } + audioNodeConnectionsStore.set(audioNode, { + activeInputs, + outputs: new Set(), + passiveInputs: new WeakMap(), + renderer: audioNodeRenderer + }); + }; +}; + +const createAddAudioParamConnections = (audioParamConnectionsStore) => { + return (audioParam, audioParamRenderer) => { + audioParamConnectionsStore.set(audioParam, { activeInputs: new Set(), passiveInputs: new WeakMap(), renderer: audioParamRenderer }); + }; +}; + +const ACTIVE_AUDIO_NODE_STORE = new WeakSet(); +const AUDIO_NODE_CONNECTIONS_STORE = new WeakMap(); +const AUDIO_NODE_STORE = new WeakMap(); +const AUDIO_PARAM_CONNECTIONS_STORE = new WeakMap(); +const AUDIO_PARAM_STORE = new WeakMap(); +const CONTEXT_STORE = new WeakMap(); +const EVENT_LISTENERS = new WeakMap(); +const CYCLE_COUNTERS = new WeakMap(); +// This clunky name is borrowed from the spec. :-) +const NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS = new WeakMap(); +const NODE_TO_PROCESSOR_MAPS = new WeakMap(); + +const handler = { + construct() { + return handler; + } +}; +const isConstructible = (constructible) => { + try { + const proxy = new Proxy(constructible, handler); + new proxy(); // tslint:disable-line:no-unused-expression + } + catch { + return false; + } + return true; +}; + +/* + * This massive regex tries to cover all the following cases. + * + * import './path'; + * import defaultImport from './path'; + * import { namedImport } from './path'; + * import { namedImport as renamendImport } from './path'; + * import * as namespaceImport from './path'; + * import defaultImport, { namedImport } from './path'; + * import defaultImport, { namedImport as renamendImport } from './path'; + * import defaultImport, * as namespaceImport from './path'; + */ +const IMPORT_STATEMENT_REGEX = /^import(?:(?:[\s]+[\w]+|(?:[\s]+[\w]+[\s]*,)?[\s]*\{[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?(?:[\s]*,[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?)*[\s]*}|(?:[\s]+[\w]+[\s]*,)?[\s]*\*[\s]+as[\s]+[\w]+)[\s]+from)?(?:[\s]*)("([^"\\]|\\.)+"|'([^'\\]|\\.)+')(?:[\s]*);?/; // tslint:disable-line:max-line-length +const splitImportStatements = (source, url) => { + const importStatements = []; + let sourceWithoutImportStatements = source.replace(/^[\s]+/, ''); + let result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX); + while (result !== null) { + const unresolvedUrl = result[1].slice(1, -1); + const importStatementWithResolvedUrl = result[0] + .replace(/([\s]+)?;?$/, '') + .replace(unresolvedUrl, new URL(unresolvedUrl, url).toString()); + importStatements.push(importStatementWithResolvedUrl); + sourceWithoutImportStatements = sourceWithoutImportStatements.slice(result[0].length).replace(/^[\s]+/, ''); + result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX); + } + return [importStatements.join(';'), sourceWithoutImportStatements]; +}; + +const verifyParameterDescriptors = (parameterDescriptors) => { + if (parameterDescriptors !== undefined && !Array.isArray(parameterDescriptors)) { + throw new TypeError('The parameterDescriptors property of given value for processorCtor is not an array.'); + } +}; +const verifyProcessorCtor = (processorCtor) => { + if (!isConstructible(processorCtor)) { + throw new TypeError('The given value for processorCtor should be a constructor.'); + } + if (processorCtor.prototype === null || typeof processorCtor.prototype !== 'object') { + throw new TypeError('The given value for processorCtor should have a prototype.'); + } +}; +const createAddAudioWorkletModule = (cacheTestResult, createNotSupportedError, evaluateSource, exposeCurrentFrameAndCurrentTime, fetchSource, getNativeContext, getOrCreateBackupOfflineAudioContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, ongoingRequests, resolvedRequests, testAudioWorkletProcessorPostMessageSupport, window) => { + let index = 0; + return (context, moduleURL, options = { credentials: 'omit' }) => { + const resolvedRequestsOfContext = resolvedRequests.get(context); + if (resolvedRequestsOfContext !== undefined && resolvedRequestsOfContext.has(moduleURL)) { + return Promise.resolve(); + } + const ongoingRequestsOfContext = ongoingRequests.get(context); + if (ongoingRequestsOfContext !== undefined) { + const promiseOfOngoingRequest = ongoingRequestsOfContext.get(moduleURL); + if (promiseOfOngoingRequest !== undefined) { + return promiseOfOngoingRequest; + } + } + const nativeContext = getNativeContext(context); + // Bug #59: Safari does not implement the audioWorklet property. + const promise = nativeContext.audioWorklet === undefined + ? fetchSource(moduleURL) + .then(([source, absoluteUrl]) => { + const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl); + /* + * This is the unminified version of the code used below: + * + * ```js + * ${ importStatements }; + * ((a, b) => { + * (a[b] = a[b] || [ ]).push( + * (AudioWorkletProcessor, global, registerProcessor, sampleRate, self, window) => { + * ${ sourceWithoutImportStatements } + * } + * ); + * })(window, '_AWGS'); + * ``` + */ + // tslint:disable-next-line:max-line-length + const wrappedSource = `${importStatements};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${sourceWithoutImportStatements} +})})(window,'_AWGS')`; + // @todo Evaluating the given source code is a possible security problem. + return evaluateSource(wrappedSource); + }) + .then(() => { + const evaluateAudioWorkletGlobalScope = window._AWGS.pop(); + if (evaluateAudioWorkletGlobalScope === undefined) { + // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException. + throw new SyntaxError(); + } + exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () => evaluateAudioWorkletGlobalScope(class AudioWorkletProcessor { + }, undefined, (name, processorCtor) => { + if (name.trim() === '') { + throw createNotSupportedError(); + } + const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext); + if (nodeNameToProcessorConstructorMap !== undefined) { + if (nodeNameToProcessorConstructorMap.has(name)) { + throw createNotSupportedError(); + } + verifyProcessorCtor(processorCtor); + verifyParameterDescriptors(processorCtor.parameterDescriptors); + nodeNameToProcessorConstructorMap.set(name, processorCtor); + } + else { + verifyProcessorCtor(processorCtor); + verifyParameterDescriptors(processorCtor.parameterDescriptors); + NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(nativeContext, new Map([[name, processorCtor]])); + } + }, nativeContext.sampleRate, undefined, undefined)); + }) + : Promise.all([ + fetchSource(moduleURL), + Promise.resolve(cacheTestResult(testAudioWorkletProcessorPostMessageSupport, testAudioWorkletProcessorPostMessageSupport)) + ]).then(([[source, absoluteUrl], isSupportingPostMessage]) => { + const currentIndex = index + 1; + index = currentIndex; + const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl); + /* + * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument. + * + * This is the unminified version of the code used below. + * + * ```js + * class extends AudioWorkletProcessor { + * + * __buffers = new WeakSet(); + * + * constructor () { + * super(); + * + * this.port.postMessage = ((postMessage) => { + * return (message, transferables) => { + * const filteredTransferables = (transferables) + * ? transferables.filter((transferable) => !this.__buffers.has(transferable)) + * : transferables; + * + * return postMessage.call(this.port, message, filteredTransferables); + * }; + * })(this.port.postMessage); + * } + * } + * ``` + */ + const patchedAudioWorkletProcessor = isSupportingPostMessage + ? 'AudioWorkletProcessor' + : 'class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}'; + /* + * Bug #170: Chrome and Edge do call process() with an array with empty channelData for each input if no input is connected. + * + * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument. + * + * Bug #190: Safari doesn't throw an error when loading an unparsable module. + * + * This is the unminified version of the code used below: + * + * ```js + * `${ importStatements }; + * ((AudioWorkletProcessor, registerProcessor) => {${ sourceWithoutImportStatements } + * })( + * ${ patchedAudioWorkletProcessor }, + * (name, processorCtor) => registerProcessor(name, class extends processorCtor { + * + * __collectBuffers = (array) => { + * array.forEach((element) => this.__buffers.add(element.buffer)); + * }; + * + * process (inputs, outputs, parameters) { + * inputs.forEach(this.__collectBuffers); + * outputs.forEach(this.__collectBuffers); + * this.__collectBuffers(Object.values(parameters)); + * + * return super.process( + * (inputs.map((input) => input.some((channelData) => channelData.length === 0)) ? [ ] : input), + * outputs, + * parameters + * ); + * } + * + * }) + * ); + * + * registerProcessor(`__sac${currentIndex}`, class extends AudioWorkletProcessor{ + * + * process () { + * return false; + * } + * + * })` + * ``` + */ + const memberDefinition = isSupportingPostMessage ? '' : '__c = (a) => a.forEach(e=>this.__b.add(e.buffer));'; + const bufferRegistration = isSupportingPostMessage + ? '' + : 'i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));'; + const wrappedSource = `${importStatements};((AudioWorkletProcessor,registerProcessor)=>{${sourceWithoutImportStatements} +})(${patchedAudioWorkletProcessor},(n,p)=>registerProcessor(n,class extends p{${memberDefinition}process(i,o,p){${bufferRegistration}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${currentIndex}',class extends AudioWorkletProcessor{process(){return !1}})`; + const blob = new Blob([wrappedSource], { type: 'application/javascript; charset=utf-8' }); + const url = URL.createObjectURL(blob); + return nativeContext.audioWorklet + .addModule(url, options) + .then(() => { + if (isNativeOfflineAudioContext(nativeContext)) { + return nativeContext; + } + // Bug #186: Chrome, Edge and Opera do not allow to create an AudioWorkletNode on a closed AudioContext. + const backupOfflineAudioContext = getOrCreateBackupOfflineAudioContext(nativeContext); + return backupOfflineAudioContext.audioWorklet.addModule(url, options).then(() => backupOfflineAudioContext); + }) + .then((nativeContextOrBackupOfflineAudioContext) => { + if (nativeAudioWorkletNodeConstructor === null) { + throw new SyntaxError(); + } + try { + // Bug #190: Safari doesn't throw an error when loading an unparsable module. + new nativeAudioWorkletNodeConstructor(nativeContextOrBackupOfflineAudioContext, `__sac${currentIndex}`); // tslint:disable-line:no-unused-expression + } + catch { + throw new SyntaxError(); + } + }) + .finally(() => URL.revokeObjectURL(url)); + }); + if (ongoingRequestsOfContext === undefined) { + ongoingRequests.set(context, new Map([[moduleURL, promise]])); + } + else { + ongoingRequestsOfContext.set(moduleURL, promise); + } + promise + .then(() => { + const updatedResolvedRequestsOfContext = resolvedRequests.get(context); + if (updatedResolvedRequestsOfContext === undefined) { + resolvedRequests.set(context, new Set([moduleURL])); + } + else { + updatedResolvedRequestsOfContext.add(moduleURL); + } + }) + .finally(() => { + const updatedOngoingRequestsOfContext = ongoingRequests.get(context); + if (updatedOngoingRequestsOfContext !== undefined) { + updatedOngoingRequestsOfContext.delete(moduleURL); + } + }); + return promise; + }; +}; + +const getValueForKey = (map, key) => { + const value = map.get(key); + if (value === undefined) { + throw new Error('A value with the given key could not be found.'); + } + return value; +}; + +const pickElementFromSet = (set, predicate) => { + const matchingElements = Array.from(set).filter(predicate); + if (matchingElements.length > 1) { + throw Error('More than one element was found.'); + } + if (matchingElements.length === 0) { + throw Error('No element was found.'); + } + const [matchingElement] = matchingElements; + set.delete(matchingElement); + return matchingElement; +}; + +const deletePassiveInputConnectionToAudioNode = (passiveInputs, source, output, input) => { + const passiveInputConnections = getValueForKey(passiveInputs, source); + const matchingConnection = pickElementFromSet(passiveInputConnections, (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input); + if (passiveInputConnections.size === 0) { + passiveInputs.delete(source); + } + return matchingConnection; +}; + +const getEventListenersOfAudioNode = (audioNode) => { + return getValueForKey(EVENT_LISTENERS, audioNode); +}; + +const setInternalStateToActive = (audioNode) => { + if (ACTIVE_AUDIO_NODE_STORE.has(audioNode)) { + throw new Error('The AudioNode is already stored.'); + } + ACTIVE_AUDIO_NODE_STORE.add(audioNode); + getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(true)); +}; + +const isAudioWorkletNode = (audioNode) => { + return 'port' in audioNode; +}; + +const setInternalStateToPassive = (audioNode) => { + if (!ACTIVE_AUDIO_NODE_STORE.has(audioNode)) { + throw new Error('The AudioNode is not stored.'); + } + ACTIVE_AUDIO_NODE_STORE.delete(audioNode); + getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(false)); +}; + +// Set the internalState of the audioNode to 'passive' if it is not an AudioWorkletNode and if it has no 'active' input connections. +const setInternalStateToPassiveWhenNecessary = (audioNode, activeInputs) => { + if (!isAudioWorkletNode(audioNode) && activeInputs.every((connections) => connections.size === 0)) { + setInternalStateToPassive(audioNode); + } +}; + +const createAddConnectionToAudioNode = (addActiveInputConnectionToAudioNode, addPassiveInputConnectionToAudioNode, connectNativeAudioNodeToNativeAudioNode, deleteActiveInputConnectionToAudioNode, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getAudioNodeTailTime, getEventListenersOfAudioNode, getNativeAudioNode, insertElementInSet, isActiveAudioNode, isPartOfACycle, isPassiveAudioNode) => { + const tailTimeTimeoutIds = new WeakMap(); + return (source, destination, output, input, isOffline) => { + const { activeInputs, passiveInputs } = getAudioNodeConnections(destination); + const { outputs } = getAudioNodeConnections(source); + const eventListeners = getEventListenersOfAudioNode(source); + const eventListener = (isActive) => { + const nativeDestinationAudioNode = getNativeAudioNode(destination); + const nativeSourceAudioNode = getNativeAudioNode(source); + if (isActive) { + const partialConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input); + addActiveInputConnectionToAudioNode(activeInputs, source, partialConnection, false); + if (!isOffline && !isPartOfACycle(source)) { + connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input); + } + if (isPassiveAudioNode(destination)) { + setInternalStateToActive(destination); + } + } + else { + const partialConnection = deleteActiveInputConnectionToAudioNode(activeInputs, source, output, input); + addPassiveInputConnectionToAudioNode(passiveInputs, input, partialConnection, false); + if (!isOffline && !isPartOfACycle(source)) { + disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input); + } + const tailTime = getAudioNodeTailTime(destination); + if (tailTime === 0) { + if (isActiveAudioNode(destination)) { + setInternalStateToPassiveWhenNecessary(destination, activeInputs); + } + } + else { + const tailTimeTimeoutId = tailTimeTimeoutIds.get(destination); + if (tailTimeTimeoutId !== undefined) { + clearTimeout(tailTimeTimeoutId); + } + tailTimeTimeoutIds.set(destination, setTimeout(() => { + if (isActiveAudioNode(destination)) { + setInternalStateToPassiveWhenNecessary(destination, activeInputs); + } + }, tailTime * 1000)); + } + } + }; + if (insertElementInSet(outputs, [destination, output, input], (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output && outputConnection[2] === input, true)) { + eventListeners.add(eventListener); + if (isActiveAudioNode(source)) { + addActiveInputConnectionToAudioNode(activeInputs, source, [output, input, eventListener], true); + } + else { + addPassiveInputConnectionToAudioNode(passiveInputs, input, [source, output, eventListener], true); + } + return true; + } + return false; + }; +}; + +const createAddPassiveInputConnectionToAudioNode = (insertElementInSet) => { + return (passiveInputs, input, [source, output, eventListener], ignoreDuplicates) => { + const passiveInputConnections = passiveInputs.get(source); + if (passiveInputConnections === undefined) { + passiveInputs.set(source, new Set([[output, input, eventListener]])); + } + else { + insertElementInSet(passiveInputConnections, [output, input, eventListener], (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input, ignoreDuplicates); + } + }; +}; + +const createAddSilentConnection = (createNativeGainNode) => { + return (nativeContext, nativeAudioScheduledSourceNode) => { + const nativeGainNode = createNativeGainNode(nativeContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + gain: 0 + }); + nativeAudioScheduledSourceNode.connect(nativeGainNode).connect(nativeContext.destination); + const disconnect = () => { + nativeAudioScheduledSourceNode.removeEventListener('ended', disconnect); + nativeAudioScheduledSourceNode.disconnect(nativeGainNode); + nativeGainNode.disconnect(); + }; + nativeAudioScheduledSourceNode.addEventListener('ended', disconnect); + }; +}; + +const createAddUnrenderedAudioWorkletNode = (getUnrenderedAudioWorkletNodes) => { + return (nativeContext, audioWorkletNode) => { + getUnrenderedAudioWorkletNodes(nativeContext).add(audioWorkletNode); + }; +}; + +const DEFAULT_OPTIONS = { + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + fftSize: 2048, + maxDecibels: -30, + minDecibels: -100, + smoothingTimeConstant: 0.8 +}; +const createAnalyserNodeConstructor = (audionNodeConstructor, createAnalyserNodeRenderer, createIndexSizeError, createNativeAnalyserNode, getNativeContext, isNativeOfflineAudioContext) => { + return class AnalyserNode extends audionNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS, ...options }; + const nativeAnalyserNode = createNativeAnalyserNode(nativeContext, mergedOptions); + const analyserNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createAnalyserNodeRenderer() : null)); + super(context, false, nativeAnalyserNode, analyserNodeRenderer); + this._nativeAnalyserNode = nativeAnalyserNode; + } + get fftSize() { + return this._nativeAnalyserNode.fftSize; + } + set fftSize(value) { + this._nativeAnalyserNode.fftSize = value; + } + get frequencyBinCount() { + return this._nativeAnalyserNode.frequencyBinCount; + } + get maxDecibels() { + return this._nativeAnalyserNode.maxDecibels; + } + set maxDecibels(value) { + // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels. + const maxDecibels = this._nativeAnalyserNode.maxDecibels; + this._nativeAnalyserNode.maxDecibels = value; + if (!(value > this._nativeAnalyserNode.minDecibels)) { + this._nativeAnalyserNode.maxDecibels = maxDecibels; + throw createIndexSizeError(); + } + } + get minDecibels() { + return this._nativeAnalyserNode.minDecibels; + } + set minDecibels(value) { + // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels. + const minDecibels = this._nativeAnalyserNode.minDecibels; + this._nativeAnalyserNode.minDecibels = value; + if (!(this._nativeAnalyserNode.maxDecibels > value)) { + this._nativeAnalyserNode.minDecibels = minDecibels; + throw createIndexSizeError(); + } + } + get smoothingTimeConstant() { + return this._nativeAnalyserNode.smoothingTimeConstant; + } + set smoothingTimeConstant(value) { + this._nativeAnalyserNode.smoothingTimeConstant = value; + } + getByteFrequencyData(array) { + this._nativeAnalyserNode.getByteFrequencyData(array); + } + getByteTimeDomainData(array) { + this._nativeAnalyserNode.getByteTimeDomainData(array); + } + getFloatFrequencyData(array) { + this._nativeAnalyserNode.getFloatFrequencyData(array); + } + getFloatTimeDomainData(array) { + this._nativeAnalyserNode.getFloatTimeDomainData(array); + } + }; +}; + +const isOwnedByContext = (nativeAudioNode, nativeContext) => { + return nativeAudioNode.context === nativeContext; +}; + +const createAnalyserNodeRendererFactory = (createNativeAnalyserNode, getNativeAudioNode, renderInputsOfAudioNode) => { + return () => { + const renderedNativeAnalyserNodes = new WeakMap(); + const createAnalyserNode = async (proxy, nativeOfflineAudioContext) => { + let nativeAnalyserNode = getNativeAudioNode(proxy); + // If the initially used nativeAnalyserNode was not constructed on the same OfflineAudioContext it needs to be created again. + const nativeAnalyserNodeIsOwnedByContext = isOwnedByContext(nativeAnalyserNode, nativeOfflineAudioContext); + if (!nativeAnalyserNodeIsOwnedByContext) { + const options = { + channelCount: nativeAnalyserNode.channelCount, + channelCountMode: nativeAnalyserNode.channelCountMode, + channelInterpretation: nativeAnalyserNode.channelInterpretation, + fftSize: nativeAnalyserNode.fftSize, + maxDecibels: nativeAnalyserNode.maxDecibels, + minDecibels: nativeAnalyserNode.minDecibels, + smoothingTimeConstant: nativeAnalyserNode.smoothingTimeConstant + }; + nativeAnalyserNode = createNativeAnalyserNode(nativeOfflineAudioContext, options); + } + renderedNativeAnalyserNodes.set(nativeOfflineAudioContext, nativeAnalyserNode); + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAnalyserNode); + return nativeAnalyserNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeAnalyserNode = renderedNativeAnalyserNodes.get(nativeOfflineAudioContext); + if (renderedNativeAnalyserNode !== undefined) { + return Promise.resolve(renderedNativeAnalyserNode); + } + return createAnalyserNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const testAudioBufferCopyChannelMethodsOutOfBoundsSupport = (nativeAudioBuffer) => { + try { + nativeAudioBuffer.copyToChannel(new Float32Array(1), 0, -1); + } + catch { + return false; + } + return true; +}; + +const createIndexSizeError = () => new DOMException('', 'IndexSizeError'); + +const wrapAudioBufferGetChannelDataMethod = (audioBuffer) => { + audioBuffer.getChannelData = ((getChannelData) => { + return (channel) => { + try { + return getChannelData.call(audioBuffer, channel); + } + catch (err) { + if (err.code === 12) { + throw createIndexSizeError(); + } + throw err; + } + }; + })(audioBuffer.getChannelData); +}; + +const DEFAULT_OPTIONS$1 = { + numberOfChannels: 1 +}; +const createAudioBufferConstructor = (audioBufferStore, cacheTestResult, createNotSupportedError, nativeAudioBufferConstructor, nativeOfflineAudioContextConstructor, testNativeAudioBufferConstructorSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => { + let nativeOfflineAudioContext = null; + return class AudioBuffer { + constructor(options) { + if (nativeOfflineAudioContextConstructor === null) { + throw new Error('Missing the native OfflineAudioContext constructor.'); + } + const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS$1, ...options }; + if (nativeOfflineAudioContext === null) { + nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); + } + /* + * Bug #99: Firefox does not throw a NotSupportedError when the numberOfChannels is zero. But it only does it when using the + * factory function. But since Firefox also supports the constructor everything should be fine. + */ + const audioBuffer = nativeAudioBufferConstructor !== null && + cacheTestResult(testNativeAudioBufferConstructorSupport, testNativeAudioBufferConstructorSupport) + ? new nativeAudioBufferConstructor({ length, numberOfChannels, sampleRate }) + : nativeOfflineAudioContext.createBuffer(numberOfChannels, length, sampleRate); + // Bug #99: Safari does not throw an error when the numberOfChannels is zero. + if (audioBuffer.numberOfChannels === 0) { + throw createNotSupportedError(); + } + // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). + // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value. + if (typeof audioBuffer.copyFromChannel !== 'function') { + wrapAudioBufferCopyChannelMethods(audioBuffer); + wrapAudioBufferGetChannelDataMethod(audioBuffer); + // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds. + } + else if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) { + wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer); + } + audioBufferStore.add(audioBuffer); + /* + * This does violate all good pratices but it is necessary to allow this AudioBuffer to be used with native + * (Offline)AudioContexts. + */ + return audioBuffer; + } + static [Symbol.hasInstance](instance) { + return ((instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === AudioBuffer.prototype) || + audioBufferStore.has(instance)); + } + }; +}; + +const MOST_NEGATIVE_SINGLE_FLOAT = -3.4028234663852886e38; +const MOST_POSITIVE_SINGLE_FLOAT = -MOST_NEGATIVE_SINGLE_FLOAT; + +const isActiveAudioNode = (audioNode) => ACTIVE_AUDIO_NODE_STORE.has(audioNode); + +const DEFAULT_OPTIONS$2 = { + buffer: null, + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + // Bug #149: Safari does not yet support the detune AudioParam. + loop: false, + loopEnd: 0, + loopStart: 0, + playbackRate: 1 +}; +const createAudioBufferSourceNodeConstructor = (audioNodeConstructor, createAudioBufferSourceNodeRenderer, createAudioParam, createInvalidStateError, createNativeAudioBufferSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => { + return class AudioBufferSourceNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$2, ...options }; + const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, mergedOptions); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const audioBufferSourceNodeRenderer = ((isOffline ? createAudioBufferSourceNodeRenderer() : null)); + super(context, false, nativeAudioBufferSourceNode, audioBufferSourceNodeRenderer); + this._audioBufferSourceNodeRenderer = audioBufferSourceNodeRenderer; + this._isBufferNullified = false; + this._isBufferSet = mergedOptions.buffer !== null; + this._nativeAudioBufferSourceNode = nativeAudioBufferSourceNode; + this._onended = null; + // Bug #73: Safari does not export the correct values for maxValue and minValue. + this._playbackRate = createAudioParam(this, isOffline, nativeAudioBufferSourceNode.playbackRate, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); + } + get buffer() { + if (this._isBufferNullified) { + return null; + } + return this._nativeAudioBufferSourceNode.buffer; + } + set buffer(value) { + this._nativeAudioBufferSourceNode.buffer = value; + // Bug #72: Only Chrome, Edge & Opera do not allow to reassign the buffer yet. + if (value !== null) { + if (this._isBufferSet) { + throw createInvalidStateError(); + } + this._isBufferSet = true; + } + } + get loop() { + return this._nativeAudioBufferSourceNode.loop; + } + set loop(value) { + this._nativeAudioBufferSourceNode.loop = value; + } + get loopEnd() { + return this._nativeAudioBufferSourceNode.loopEnd; + } + set loopEnd(value) { + this._nativeAudioBufferSourceNode.loopEnd = value; + } + get loopStart() { + return this._nativeAudioBufferSourceNode.loopStart; + } + set loopStart(value) { + this._nativeAudioBufferSourceNode.loopStart = value; + } + get onended() { + return this._onended; + } + set onended(value) { + const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null; + this._nativeAudioBufferSourceNode.onended = wrappedListener; + const nativeOnEnded = this._nativeAudioBufferSourceNode.onended; + this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded; + } + get playbackRate() { + return this._playbackRate; + } + start(when = 0, offset = 0, duration) { + this._nativeAudioBufferSourceNode.start(when, offset, duration); + if (this._audioBufferSourceNodeRenderer !== null) { + this._audioBufferSourceNodeRenderer.start = duration === undefined ? [when, offset] : [when, offset, duration]; + } + if (this.context.state !== 'closed') { + setInternalStateToActive(this); + const resetInternalStateToPassive = () => { + this._nativeAudioBufferSourceNode.removeEventListener('ended', resetInternalStateToPassive); + if (isActiveAudioNode(this)) { + setInternalStateToPassive(this); + } + }; + this._nativeAudioBufferSourceNode.addEventListener('ended', resetInternalStateToPassive); + } + } + stop(when = 0) { + this._nativeAudioBufferSourceNode.stop(when); + if (this._audioBufferSourceNodeRenderer !== null) { + this._audioBufferSourceNodeRenderer.stop = when; + } + } + }; +}; + +const createAudioBufferSourceNodeRendererFactory = (connectAudioParam, createNativeAudioBufferSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { + return () => { + const renderedNativeAudioBufferSourceNodes = new WeakMap(); + let start = null; + let stop = null; + const createAudioBufferSourceNode = async (proxy, nativeOfflineAudioContext) => { + let nativeAudioBufferSourceNode = getNativeAudioNode(proxy); + /* + * If the initially used nativeAudioBufferSourceNode was not constructed on the same OfflineAudioContext it needs to be created + * again. + */ + const nativeAudioBufferSourceNodeIsOwnedByContext = isOwnedByContext(nativeAudioBufferSourceNode, nativeOfflineAudioContext); + if (!nativeAudioBufferSourceNodeIsOwnedByContext) { + const options = { + buffer: nativeAudioBufferSourceNode.buffer, + channelCount: nativeAudioBufferSourceNode.channelCount, + channelCountMode: nativeAudioBufferSourceNode.channelCountMode, + channelInterpretation: nativeAudioBufferSourceNode.channelInterpretation, + // Bug #149: Safari does not yet support the detune AudioParam. + loop: nativeAudioBufferSourceNode.loop, + loopEnd: nativeAudioBufferSourceNode.loopEnd, + loopStart: nativeAudioBufferSourceNode.loopStart, + playbackRate: nativeAudioBufferSourceNode.playbackRate.value + }; + nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, options); + if (start !== null) { + nativeAudioBufferSourceNode.start(...start); + } + if (stop !== null) { + nativeAudioBufferSourceNode.stop(stop); + } + } + renderedNativeAudioBufferSourceNodes.set(nativeOfflineAudioContext, nativeAudioBufferSourceNode); + if (!nativeAudioBufferSourceNodeIsOwnedByContext) { + // Bug #149: Safari does not yet support the detune AudioParam. + await renderAutomation(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate); + } + else { + // Bug #149: Safari does not yet support the detune AudioParam. + await connectAudioParam(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate); + } + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioBufferSourceNode); + return nativeAudioBufferSourceNode; + }; + return { + set start(value) { + start = value; + }, + set stop(value) { + stop = value; + }, + render(proxy, nativeOfflineAudioContext) { + const renderedNativeAudioBufferSourceNode = renderedNativeAudioBufferSourceNodes.get(nativeOfflineAudioContext); + if (renderedNativeAudioBufferSourceNode !== undefined) { + return Promise.resolve(renderedNativeAudioBufferSourceNode); + } + return createAudioBufferSourceNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const isAudioBufferSourceNode = (audioNode) => { + return 'playbackRate' in audioNode; +}; + +const isBiquadFilterNode = (audioNode) => { + return 'frequency' in audioNode && 'gain' in audioNode; +}; + +const isConstantSourceNode = (audioNode) => { + return 'offset' in audioNode; +}; + +const isGainNode = (audioNode) => { + return !('frequency' in audioNode) && 'gain' in audioNode; +}; + +const isOscillatorNode = (audioNode) => { + return 'detune' in audioNode && 'frequency' in audioNode; +}; + +const isStereoPannerNode = (audioNode) => { + return 'pan' in audioNode; +}; + +const getAudioNodeConnections = (audioNode) => { + return getValueForKey(AUDIO_NODE_CONNECTIONS_STORE, audioNode); +}; + +const getAudioParamConnections = (audioParam) => { + return getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE, audioParam); +}; + +const deactivateActiveAudioNodeInputConnections = (audioNode, trace) => { + const { activeInputs } = getAudioNodeConnections(audioNode); + activeInputs.forEach((connections) => connections.forEach(([source]) => { + if (!trace.includes(audioNode)) { + deactivateActiveAudioNodeInputConnections(source, [...trace, audioNode]); + } + })); + const audioParams = isAudioBufferSourceNode(audioNode) + ? [ + // Bug #149: Safari does not yet support the detune AudioParam. + audioNode.playbackRate + ] + : isAudioWorkletNode(audioNode) + ? Array.from(audioNode.parameters.values()) + : isBiquadFilterNode(audioNode) + ? [audioNode.Q, audioNode.detune, audioNode.frequency, audioNode.gain] + : isConstantSourceNode(audioNode) + ? [audioNode.offset] + : isGainNode(audioNode) + ? [audioNode.gain] + : isOscillatorNode(audioNode) + ? [audioNode.detune, audioNode.frequency] + : isStereoPannerNode(audioNode) + ? [audioNode.pan] + : []; + for (const audioParam of audioParams) { + const audioParamConnections = getAudioParamConnections(audioParam); + if (audioParamConnections !== undefined) { + audioParamConnections.activeInputs.forEach(([source]) => deactivateActiveAudioNodeInputConnections(source, trace)); + } + } + if (isActiveAudioNode(audioNode)) { + setInternalStateToPassive(audioNode); + } +}; + +const deactivateAudioGraph = (context) => { + deactivateActiveAudioNodeInputConnections(context.destination, []); +}; + +const isValidLatencyHint = (latencyHint) => { + return (latencyHint === undefined || + typeof latencyHint === 'number' || + (typeof latencyHint === 'string' && (latencyHint === 'balanced' || latencyHint === 'interactive' || latencyHint === 'playback'))); +}; + +const createAudioContextConstructor = (baseAudioContextConstructor, createInvalidStateError, createNotSupportedError, createUnknownError, mediaElementAudioSourceNodeConstructor, mediaStreamAudioDestinationNodeConstructor, mediaStreamAudioSourceNodeConstructor, mediaStreamTrackAudioSourceNodeConstructor, nativeAudioContextConstructor) => { + return class AudioContext extends baseAudioContextConstructor { + constructor(options = {}) { + if (nativeAudioContextConstructor === null) { + throw new Error('Missing the native AudioContext constructor.'); + } + let nativeAudioContext; + try { + nativeAudioContext = new nativeAudioContextConstructor(options); + } + catch (err) { + // Bug #192 Safari does throw a SyntaxError if the sampleRate is not supported. + if (err.code === 12 && err.message === 'sampleRate is not in range') { + throw createNotSupportedError(); + } + throw err; + } + // Bug #131 Safari returns null when there are four other AudioContexts running already. + if (nativeAudioContext === null) { + throw createUnknownError(); + } + // Bug #51 Only Chrome, Edge and Opera throw an error if the given latencyHint is invalid. + if (!isValidLatencyHint(options.latencyHint)) { + throw new TypeError(`The provided value '${options.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`); + } + // Bug #150 Safari does not support setting the sampleRate. + if (options.sampleRate !== undefined && nativeAudioContext.sampleRate !== options.sampleRate) { + throw createNotSupportedError(); + } + super(nativeAudioContext, 2); + const { latencyHint } = options; + const { sampleRate } = nativeAudioContext; + // @todo The values for 'balanced', 'interactive' and 'playback' are just copied from Chrome's implementation. + this._baseLatency = + typeof nativeAudioContext.baseLatency === 'number' + ? nativeAudioContext.baseLatency + : latencyHint === 'balanced' + ? 512 / sampleRate + : latencyHint === 'interactive' || latencyHint === undefined + ? 256 / sampleRate + : latencyHint === 'playback' + ? 1024 / sampleRate + : /* + * @todo The min (256) and max (16384) values are taken from the allowed bufferSize values of a + * ScriptProcessorNode. + */ + (Math.max(2, Math.min(128, Math.round((latencyHint * sampleRate) / 128))) * 128) / sampleRate; + this._nativeAudioContext = nativeAudioContext; + // Bug #188: Safari will set the context's state to 'interrupted' in case the user switches tabs. + if (nativeAudioContextConstructor.name === 'webkitAudioContext') { + this._nativeGainNode = nativeAudioContext.createGain(); + this._nativeOscillatorNode = nativeAudioContext.createOscillator(); + this._nativeGainNode.gain.value = 1e-37; + this._nativeOscillatorNode.connect(this._nativeGainNode).connect(nativeAudioContext.destination); + this._nativeOscillatorNode.start(); + } + else { + this._nativeGainNode = null; + this._nativeOscillatorNode = null; + } + this._state = null; + /* + * Bug #34: Chrome, Edge and Opera pretend to be running right away, but fire an onstatechange event when the state actually + * changes to 'running'. + */ + if (nativeAudioContext.state === 'running') { + this._state = 'suspended'; + const revokeState = () => { + if (this._state === 'suspended') { + this._state = null; + } + nativeAudioContext.removeEventListener('statechange', revokeState); + }; + nativeAudioContext.addEventListener('statechange', revokeState); + } + } + get baseLatency() { + return this._baseLatency; + } + get state() { + return this._state !== null ? this._state : this._nativeAudioContext.state; + } + close() { + // Bug #35: Firefox does not throw an error if the AudioContext was closed before. + if (this.state === 'closed') { + return this._nativeAudioContext.close().then(() => { + throw createInvalidStateError(); + }); + } + // Bug #34: If the state was set to suspended before it should be revoked now. + if (this._state === 'suspended') { + this._state = null; + } + return this._nativeAudioContext.close().then(() => { + if (this._nativeGainNode !== null && this._nativeOscillatorNode !== null) { + this._nativeOscillatorNode.stop(); + this._nativeGainNode.disconnect(); + this._nativeOscillatorNode.disconnect(); + } + deactivateAudioGraph(this); + }); + } + createMediaElementSource(mediaElement) { + return new mediaElementAudioSourceNodeConstructor(this, { mediaElement }); + } + createMediaStreamDestination() { + return new mediaStreamAudioDestinationNodeConstructor(this); + } + createMediaStreamSource(mediaStream) { + return new mediaStreamAudioSourceNodeConstructor(this, { mediaStream }); + } + createMediaStreamTrackSource(mediaStreamTrack) { + return new mediaStreamTrackAudioSourceNodeConstructor(this, { mediaStreamTrack }); + } + resume() { + if (this._state === 'suspended') { + return new Promise((resolve, reject) => { + const resolvePromise = () => { + this._nativeAudioContext.removeEventListener('statechange', resolvePromise); + if (this._nativeAudioContext.state === 'running') { + resolve(); + } + else { + this.resume().then(resolve, reject); + } + }; + this._nativeAudioContext.addEventListener('statechange', resolvePromise); + }); + } + return this._nativeAudioContext.resume().catch((err) => { + // Bug #55: Chrome, Edge and Opera do throw an InvalidAccessError instead of an InvalidStateError. + // Bug #56: Safari invokes the catch handler but without an error. + if (err === undefined || err.code === 15) { + throw createInvalidStateError(); + } + throw err; + }); + } + suspend() { + return this._nativeAudioContext.suspend().catch((err) => { + // Bug #56: Safari invokes the catch handler but without an error. + if (err === undefined) { + throw createInvalidStateError(); + } + throw err; + }); + } + }; +}; + +const createAudioDestinationNodeConstructor = (audioNodeConstructor, createAudioDestinationNodeRenderer, createIndexSizeError, createInvalidStateError, createNativeAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext, renderInputsOfAudioNode) => { + return class AudioDestinationNode extends audioNodeConstructor { + constructor(context, channelCount) { + const nativeContext = getNativeContext(context); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const nativeAudioDestinationNode = createNativeAudioDestinationNode(nativeContext, channelCount, isOffline); + const audioDestinationNodeRenderer = ((isOffline ? createAudioDestinationNodeRenderer(renderInputsOfAudioNode) : null)); + super(context, false, nativeAudioDestinationNode, audioDestinationNodeRenderer); + this._isNodeOfNativeOfflineAudioContext = isOffline; + this._nativeAudioDestinationNode = nativeAudioDestinationNode; + } + get channelCount() { + return this._nativeAudioDestinationNode.channelCount; + } + set channelCount(value) { + // Bug #52: Chrome, Edge, Opera & Safari do not throw an exception at all. + // Bug #54: Firefox does throw an IndexSizeError. + if (this._isNodeOfNativeOfflineAudioContext) { + throw createInvalidStateError(); + } + // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly. + if (value > this._nativeAudioDestinationNode.maxChannelCount) { + throw createIndexSizeError(); + } + this._nativeAudioDestinationNode.channelCount = value; + } + get channelCountMode() { + return this._nativeAudioDestinationNode.channelCountMode; + } + set channelCountMode(value) { + // Bug #53: No browser does throw an exception yet. + if (this._isNodeOfNativeOfflineAudioContext) { + throw createInvalidStateError(); + } + this._nativeAudioDestinationNode.channelCountMode = value; + } + get maxChannelCount() { + return this._nativeAudioDestinationNode.maxChannelCount; + } + }; +}; + +const createAudioDestinationNodeRenderer = (renderInputsOfAudioNode) => { + const renderedNativeAudioDestinationNodes = new WeakMap(); + const createAudioDestinationNode = async (proxy, nativeOfflineAudioContext) => { + const nativeAudioDestinationNode = nativeOfflineAudioContext.destination; + renderedNativeAudioDestinationNodes.set(nativeOfflineAudioContext, nativeAudioDestinationNode); + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioDestinationNode); + return nativeAudioDestinationNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeAudioDestinationNode = renderedNativeAudioDestinationNodes.get(nativeOfflineAudioContext); + if (renderedNativeAudioDestinationNode !== undefined) { + return Promise.resolve(renderedNativeAudioDestinationNode); + } + return createAudioDestinationNode(proxy, nativeOfflineAudioContext); + } + }; +}; + +const createAudioListenerFactory = (createAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeScriptProcessorNode, createNotSupportedError, getFirstSample, isNativeOfflineAudioContext, overwriteAccessors) => { + return (context, nativeContext) => { + const nativeListener = nativeContext.listener; + // Bug #117: Only Chrome, Edge & Opera support the new interface already. + const createFakeAudioParams = () => { + const buffer = new Float32Array(1); + const channelMergerNode = createNativeChannelMergerNode(nativeContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'speakers', + numberOfInputs: 9 + }); + const isOffline = isNativeOfflineAudioContext(nativeContext); + let isScriptProcessorNodeCreated = false; + let lastOrientation = [0, 0, -1, 0, 1, 0]; + let lastPosition = [0, 0, 0]; + const createScriptProcessorNode = () => { + if (isScriptProcessorNodeCreated) { + return; + } + isScriptProcessorNodeCreated = true; + const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 9, 0); + // tslint:disable-next-line:deprecation + scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => { + const orientation = [ + getFirstSample(inputBuffer, buffer, 0), + getFirstSample(inputBuffer, buffer, 1), + getFirstSample(inputBuffer, buffer, 2), + getFirstSample(inputBuffer, buffer, 3), + getFirstSample(inputBuffer, buffer, 4), + getFirstSample(inputBuffer, buffer, 5) + ]; + if (orientation.some((value, index) => value !== lastOrientation[index])) { + nativeListener.setOrientation(...orientation); // tslint:disable-line:deprecation + lastOrientation = orientation; + } + const positon = [ + getFirstSample(inputBuffer, buffer, 6), + getFirstSample(inputBuffer, buffer, 7), + getFirstSample(inputBuffer, buffer, 8) + ]; + if (positon.some((value, index) => value !== lastPosition[index])) { + nativeListener.setPosition(...positon); // tslint:disable-line:deprecation + lastPosition = positon; + } + }; + channelMergerNode.connect(scriptProcessorNode); + }; + const createSetOrientation = (index) => (value) => { + if (value !== lastOrientation[index]) { + lastOrientation[index] = value; + nativeListener.setOrientation(...lastOrientation); // tslint:disable-line:deprecation + } + }; + const createSetPosition = (index) => (value) => { + if (value !== lastPosition[index]) { + lastPosition[index] = value; + nativeListener.setPosition(...lastPosition); // tslint:disable-line:deprecation + } + }; + const createFakeAudioParam = (input, initialValue, setValue) => { + const constantSourceNode = createNativeConstantSourceNode(nativeContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + offset: initialValue + }); + constantSourceNode.connect(channelMergerNode, 0, input); + // @todo This should be stopped when the context is closed. + constantSourceNode.start(); + Object.defineProperty(constantSourceNode.offset, 'defaultValue', { + get() { + return initialValue; + } + }); + /* + * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and + * minValue for GainNodes. + */ + const audioParam = createAudioParam({ context }, isOffline, constantSourceNode.offset, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); + overwriteAccessors(audioParam, 'value', (get) => () => get.call(audioParam), (set) => (value) => { + try { + set.call(audioParam, value); + } + catch (err) { + if (err.code !== 9) { + throw err; + } + } + createScriptProcessorNode(); + if (isOffline) { + // Bug #117: Using setOrientation() and setPosition() doesn't work with an OfflineAudioContext. + setValue(value); + } + }); + audioParam.cancelAndHoldAtTime = ((cancelAndHoldAtTime) => { + if (isOffline) { + return () => { + throw createNotSupportedError(); + }; + } + return (...args) => { + const value = cancelAndHoldAtTime.apply(audioParam, args); + createScriptProcessorNode(); + return value; + }; + })(audioParam.cancelAndHoldAtTime); + audioParam.cancelScheduledValues = ((cancelScheduledValues) => { + if (isOffline) { + return () => { + throw createNotSupportedError(); + }; + } + return (...args) => { + const value = cancelScheduledValues.apply(audioParam, args); + createScriptProcessorNode(); + return value; + }; + })(audioParam.cancelScheduledValues); + audioParam.exponentialRampToValueAtTime = ((exponentialRampToValueAtTime) => { + if (isOffline) { + return () => { + throw createNotSupportedError(); + }; + } + return (...args) => { + const value = exponentialRampToValueAtTime.apply(audioParam, args); + createScriptProcessorNode(); + return value; + }; + })(audioParam.exponentialRampToValueAtTime); + audioParam.linearRampToValueAtTime = ((linearRampToValueAtTime) => { + if (isOffline) { + return () => { + throw createNotSupportedError(); + }; + } + return (...args) => { + const value = linearRampToValueAtTime.apply(audioParam, args); + createScriptProcessorNode(); + return value; + }; + })(audioParam.linearRampToValueAtTime); + audioParam.setTargetAtTime = ((setTargetAtTime) => { + if (isOffline) { + return () => { + throw createNotSupportedError(); + }; + } + return (...args) => { + const value = setTargetAtTime.apply(audioParam, args); + createScriptProcessorNode(); + return value; + }; + })(audioParam.setTargetAtTime); + audioParam.setValueAtTime = ((setValueAtTime) => { + if (isOffline) { + return () => { + throw createNotSupportedError(); + }; + } + return (...args) => { + const value = setValueAtTime.apply(audioParam, args); + createScriptProcessorNode(); + return value; + }; + })(audioParam.setValueAtTime); + audioParam.setValueCurveAtTime = ((setValueCurveAtTime) => { + if (isOffline) { + return () => { + throw createNotSupportedError(); + }; + } + return (...args) => { + const value = setValueCurveAtTime.apply(audioParam, args); + createScriptProcessorNode(); + return value; + }; + })(audioParam.setValueCurveAtTime); + return audioParam; + }; + return { + forwardX: createFakeAudioParam(0, 0, createSetOrientation(0)), + forwardY: createFakeAudioParam(1, 0, createSetOrientation(1)), + forwardZ: createFakeAudioParam(2, -1, createSetOrientation(2)), + positionX: createFakeAudioParam(6, 0, createSetPosition(0)), + positionY: createFakeAudioParam(7, 0, createSetPosition(1)), + positionZ: createFakeAudioParam(8, 0, createSetPosition(2)), + upX: createFakeAudioParam(3, 0, createSetOrientation(3)), + upY: createFakeAudioParam(4, 1, createSetOrientation(4)), + upZ: createFakeAudioParam(5, 0, createSetOrientation(5)) + }; + }; + const { forwardX, forwardY, forwardZ, positionX, positionY, positionZ, upX, upY, upZ } = nativeListener.forwardX === undefined ? createFakeAudioParams() : nativeListener; + return { + get forwardX() { + return forwardX; + }, + get forwardY() { + return forwardY; + }, + get forwardZ() { + return forwardZ; + }, + get positionX() { + return positionX; + }, + get positionY() { + return positionY; + }, + get positionZ() { + return positionZ; + }, + get upX() { + return upX; + }, + get upY() { + return upY; + }, + get upZ() { + return upZ; + } + }; + }; +}; + +const isAudioNode = (audioNodeOrAudioParam) => { + return 'context' in audioNodeOrAudioParam; +}; + +const isAudioNodeOutputConnection = (outputConnection) => { + return isAudioNode(outputConnection[0]); +}; + +const insertElementInSet = (set, element, predicate, ignoreDuplicates) => { + for (const lmnt of set) { + if (predicate(lmnt)) { + if (ignoreDuplicates) { + return false; + } + throw Error('The set contains at least one similar element.'); + } + } + set.add(element); + return true; +}; + +const addActiveInputConnectionToAudioParam = (activeInputs, source, [output, eventListener], ignoreDuplicates) => { + insertElementInSet(activeInputs, [source, output, eventListener], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output, ignoreDuplicates); +}; + +const addPassiveInputConnectionToAudioParam = (passiveInputs, [source, output, eventListener], ignoreDuplicates) => { + const passiveInputConnections = passiveInputs.get(source); + if (passiveInputConnections === undefined) { + passiveInputs.set(source, new Set([[output, eventListener]])); + } + else { + insertElementInSet(passiveInputConnections, [output, eventListener], (passiveInputConnection) => passiveInputConnection[0] === output, ignoreDuplicates); + } +}; + +const isNativeAudioNodeFaker = (nativeAudioNodeOrNativeAudioNodeFaker) => { + return 'inputs' in nativeAudioNodeOrNativeAudioNodeFaker; +}; + +const connectNativeAudioNodeToNativeAudioNode = (nativeSourceAudioNode, nativeDestinationAudioNode, output, input) => { + if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) { + const fakeNativeDestinationAudioNode = nativeDestinationAudioNode.inputs[input]; + nativeSourceAudioNode.connect(fakeNativeDestinationAudioNode, output, 0); + return [fakeNativeDestinationAudioNode, output, 0]; + } + nativeSourceAudioNode.connect(nativeDestinationAudioNode, output, input); + return [nativeDestinationAudioNode, output, input]; +}; + +const deleteActiveInputConnection = (activeInputConnections, source, output) => { + for (const activeInputConnection of activeInputConnections) { + if (activeInputConnection[0] === source && activeInputConnection[1] === output) { + activeInputConnections.delete(activeInputConnection); + return activeInputConnection; + } + } + return null; +}; + +const deleteActiveInputConnectionToAudioParam = (activeInputs, source, output) => { + return pickElementFromSet(activeInputs, (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output); +}; + +const deleteEventListenerOfAudioNode = (audioNode, eventListener) => { + const eventListeners = getEventListenersOfAudioNode(audioNode); + if (!eventListeners.delete(eventListener)) { + throw new Error('Missing the expected event listener.'); + } +}; + +const deletePassiveInputConnectionToAudioParam = (passiveInputs, source, output) => { + const passiveInputConnections = getValueForKey(passiveInputs, source); + const matchingConnection = pickElementFromSet(passiveInputConnections, (passiveInputConnection) => passiveInputConnection[0] === output); + if (passiveInputConnections.size === 0) { + passiveInputs.delete(source); + } + return matchingConnection; +}; + +const disconnectNativeAudioNodeFromNativeAudioNode = (nativeSourceAudioNode, nativeDestinationAudioNode, output, input) => { + if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) { + nativeSourceAudioNode.disconnect(nativeDestinationAudioNode.inputs[input], output, 0); + } + else { + nativeSourceAudioNode.disconnect(nativeDestinationAudioNode, output, input); + } +}; + +const getNativeAudioNode = (audioNode) => { + return getValueForKey(AUDIO_NODE_STORE, audioNode); +}; + +const getNativeAudioParam = (audioParam) => { + return getValueForKey(AUDIO_PARAM_STORE, audioParam); +}; + +const isPartOfACycle = (audioNode) => { + return CYCLE_COUNTERS.has(audioNode); +}; + +const isPassiveAudioNode = (audioNode) => { + return !ACTIVE_AUDIO_NODE_STORE.has(audioNode); +}; + +const testAudioNodeDisconnectMethodSupport = (nativeAudioContext, nativeAudioWorkletNodeConstructor) => { + return new Promise((resolve) => { + /* + * This bug existed in Safari up until v14.0.2. Since AudioWorklets were not supported in Safari until v14.1 the presence of the + * constructor for an AudioWorkletNode can be used here to skip the test. + */ + if (nativeAudioWorkletNodeConstructor !== null) { + resolve(true); + } + else { + const analyzer = nativeAudioContext.createScriptProcessor(256, 1, 1); // tslint:disable-line deprecation + const dummy = nativeAudioContext.createGain(); + // Bug #95: Safari does not play one sample buffers. + const ones = nativeAudioContext.createBuffer(1, 2, 44100); + const channelData = ones.getChannelData(0); + channelData[0] = 1; + channelData[1] = 1; + const source = nativeAudioContext.createBufferSource(); + source.buffer = ones; + source.loop = true; + source.connect(analyzer).connect(nativeAudioContext.destination); + source.connect(dummy); + source.disconnect(dummy); + // tslint:disable-next-line:deprecation + analyzer.onaudioprocess = (event) => { + const chnnlDt = event.inputBuffer.getChannelData(0); // tslint:disable-line deprecation + if (Array.prototype.some.call(chnnlDt, (sample) => sample === 1)) { + resolve(true); + } + else { + resolve(false); + } + source.stop(); + analyzer.onaudioprocess = null; // tslint:disable-line:deprecation + source.disconnect(analyzer); + analyzer.disconnect(nativeAudioContext.destination); + }; + source.start(); + } + }); +}; + +const visitEachAudioNodeOnce = (cycles, visitor) => { + const counts = new Map(); + for (const cycle of cycles) { + for (const audioNode of cycle) { + const count = counts.get(audioNode); + counts.set(audioNode, count === undefined ? 1 : count + 1); + } + } + counts.forEach((count, audioNode) => visitor(audioNode, count)); +}; + +const isNativeAudioNode = (nativeAudioNodeOrAudioParam) => { + return 'context' in nativeAudioNodeOrAudioParam; +}; + +const wrapAudioNodeDisconnectMethod = (nativeAudioNode) => { + const connections = new Map(); + nativeAudioNode.connect = ((connect) => { + // tslint:disable-next-line:invalid-void no-inferrable-types + return (destination, output = 0, input = 0) => { + const returnValue = isNativeAudioNode(destination) ? connect(destination, output, input) : connect(destination, output); + // Save the new connection only if the calls to connect above didn't throw an error. + const connectionsToDestination = connections.get(destination); + if (connectionsToDestination === undefined) { + connections.set(destination, [{ input, output }]); + } + else { + if (connectionsToDestination.every((connection) => connection.input !== input || connection.output !== output)) { + connectionsToDestination.push({ input, output }); + } + } + return returnValue; + }; + })(nativeAudioNode.connect.bind(nativeAudioNode)); + nativeAudioNode.disconnect = ((disconnect) => { + return (destinationOrOutput, output, input) => { + disconnect.apply(nativeAudioNode); + if (destinationOrOutput === undefined) { + connections.clear(); + } + else if (typeof destinationOrOutput === 'number') { + for (const [destination, connectionsToDestination] of connections) { + const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== destinationOrOutput); + if (filteredConnections.length === 0) { + connections.delete(destination); + } + else { + connections.set(destination, filteredConnections); + } + } + } + else if (connections.has(destinationOrOutput)) { + if (output === undefined) { + connections.delete(destinationOrOutput); + } + else { + const connectionsToDestination = connections.get(destinationOrOutput); + if (connectionsToDestination !== undefined) { + const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== output && (connection.input !== input || input === undefined)); + if (filteredConnections.length === 0) { + connections.delete(destinationOrOutput); + } + else { + connections.set(destinationOrOutput, filteredConnections); + } + } + } + } + for (const [destination, connectionsToDestination] of connections) { + connectionsToDestination.forEach((connection) => { + if (isNativeAudioNode(destination)) { + nativeAudioNode.connect(destination, connection.output, connection.input); + } + else { + nativeAudioNode.connect(destination, connection.output); + } + }); + } + }; + })(nativeAudioNode.disconnect); +}; + +const addConnectionToAudioParamOfAudioContext = (source, destination, output, isOffline) => { + const { activeInputs, passiveInputs } = getAudioParamConnections(destination); + const { outputs } = getAudioNodeConnections(source); + const eventListeners = getEventListenersOfAudioNode(source); + const eventListener = (isActive) => { + const nativeAudioNode = getNativeAudioNode(source); + const nativeAudioParam = getNativeAudioParam(destination); + if (isActive) { + const partialConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output); + addActiveInputConnectionToAudioParam(activeInputs, source, partialConnection, false); + if (!isOffline && !isPartOfACycle(source)) { + nativeAudioNode.connect(nativeAudioParam, output); + } + } + else { + const partialConnection = deleteActiveInputConnectionToAudioParam(activeInputs, source, output); + addPassiveInputConnectionToAudioParam(passiveInputs, partialConnection, false); + if (!isOffline && !isPartOfACycle(source)) { + nativeAudioNode.disconnect(nativeAudioParam, output); + } + } + }; + if (insertElementInSet(outputs, [destination, output], (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output, true)) { + eventListeners.add(eventListener); + if (isActiveAudioNode(source)) { + addActiveInputConnectionToAudioParam(activeInputs, source, [output, eventListener], true); + } + else { + addPassiveInputConnectionToAudioParam(passiveInputs, [source, output, eventListener], true); + } + return true; + } + return false; +}; +const deleteInputConnectionOfAudioNode = (source, destination, output, input) => { + const { activeInputs, passiveInputs } = getAudioNodeConnections(destination); + const activeInputConnection = deleteActiveInputConnection(activeInputs[input], source, output); + if (activeInputConnection === null) { + const passiveInputConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input); + return [passiveInputConnection[2], false]; + } + return [activeInputConnection[2], true]; +}; +const deleteInputConnectionOfAudioParam = (source, destination, output) => { + const { activeInputs, passiveInputs } = getAudioParamConnections(destination); + const activeInputConnection = deleteActiveInputConnection(activeInputs, source, output); + if (activeInputConnection === null) { + const passiveInputConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output); + return [passiveInputConnection[1], false]; + } + return [activeInputConnection[2], true]; +}; +const deleteInputsOfAudioNode = (source, isOffline, destination, output, input) => { + const [listener, isActive] = deleteInputConnectionOfAudioNode(source, destination, output, input); + if (listener !== null) { + deleteEventListenerOfAudioNode(source, listener); + if (isActive && !isOffline && !isPartOfACycle(source)) { + disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(source), getNativeAudioNode(destination), output, input); + } + } + if (isActiveAudioNode(destination)) { + const { activeInputs } = getAudioNodeConnections(destination); + setInternalStateToPassiveWhenNecessary(destination, activeInputs); + } +}; +const deleteInputsOfAudioParam = (source, isOffline, destination, output) => { + const [listener, isActive] = deleteInputConnectionOfAudioParam(source, destination, output); + if (listener !== null) { + deleteEventListenerOfAudioNode(source, listener); + if (isActive && !isOffline && !isPartOfACycle(source)) { + getNativeAudioNode(source).disconnect(getNativeAudioParam(destination), output); + } + } +}; +const deleteAnyConnection = (source, isOffline) => { + const audioNodeConnectionsOfSource = getAudioNodeConnections(source); + const destinations = []; + for (const outputConnection of audioNodeConnectionsOfSource.outputs) { + if (isAudioNodeOutputConnection(outputConnection)) { + deleteInputsOfAudioNode(source, isOffline, ...outputConnection); + } + else { + deleteInputsOfAudioParam(source, isOffline, ...outputConnection); + } + destinations.push(outputConnection[0]); + } + audioNodeConnectionsOfSource.outputs.clear(); + return destinations; +}; +const deleteConnectionAtOutput = (source, isOffline, output) => { + const audioNodeConnectionsOfSource = getAudioNodeConnections(source); + const destinations = []; + for (const outputConnection of audioNodeConnectionsOfSource.outputs) { + if (outputConnection[1] === output) { + if (isAudioNodeOutputConnection(outputConnection)) { + deleteInputsOfAudioNode(source, isOffline, ...outputConnection); + } + else { + deleteInputsOfAudioParam(source, isOffline, ...outputConnection); + } + destinations.push(outputConnection[0]); + audioNodeConnectionsOfSource.outputs.delete(outputConnection); + } + } + return destinations; +}; +const deleteConnectionToDestination = (source, isOffline, destination, output, input) => { + const audioNodeConnectionsOfSource = getAudioNodeConnections(source); + return Array.from(audioNodeConnectionsOfSource.outputs) + .filter((outputConnection) => outputConnection[0] === destination && + (output === undefined || outputConnection[1] === output) && + (input === undefined || outputConnection[2] === input)) + .map((outputConnection) => { + if (isAudioNodeOutputConnection(outputConnection)) { + deleteInputsOfAudioNode(source, isOffline, ...outputConnection); + } + else { + deleteInputsOfAudioParam(source, isOffline, ...outputConnection); + } + audioNodeConnectionsOfSource.outputs.delete(outputConnection); + return outputConnection[0]; + }); +}; +const createAudioNodeConstructor = (addAudioNodeConnections, addConnectionToAudioNode, cacheTestResult, createIncrementCycleCounter, createIndexSizeError, createInvalidAccessError, createNotSupportedError, decrementCycleCounter, detectCycles, eventTargetConstructor, getNativeContext, isNativeAudioContext, isNativeAudioNode, isNativeAudioParam, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor) => { + return class AudioNode extends eventTargetConstructor { + constructor(context, isActive, nativeAudioNode, audioNodeRenderer) { + super(nativeAudioNode); + this._context = context; + this._nativeAudioNode = nativeAudioNode; + const nativeContext = getNativeContext(context); + // Bug #12: Safari does not support to disconnect a specific destination. + if (isNativeAudioContext(nativeContext) && + true !== + cacheTestResult(testAudioNodeDisconnectMethodSupport, () => { + return testAudioNodeDisconnectMethodSupport(nativeContext, nativeAudioWorkletNodeConstructor); + })) { + wrapAudioNodeDisconnectMethod(nativeAudioNode); + } + AUDIO_NODE_STORE.set(this, nativeAudioNode); + EVENT_LISTENERS.set(this, new Set()); + if (context.state !== 'closed' && isActive) { + setInternalStateToActive(this); + } + addAudioNodeConnections(this, audioNodeRenderer, nativeAudioNode); + } + get channelCount() { + return this._nativeAudioNode.channelCount; + } + set channelCount(value) { + this._nativeAudioNode.channelCount = value; + } + get channelCountMode() { + return this._nativeAudioNode.channelCountMode; + } + set channelCountMode(value) { + this._nativeAudioNode.channelCountMode = value; + } + get channelInterpretation() { + return this._nativeAudioNode.channelInterpretation; + } + set channelInterpretation(value) { + this._nativeAudioNode.channelInterpretation = value; + } + get context() { + return this._context; + } + get numberOfInputs() { + return this._nativeAudioNode.numberOfInputs; + } + get numberOfOutputs() { + return this._nativeAudioNode.numberOfOutputs; + } + // tslint:disable-next-line:invalid-void + connect(destination, output = 0, input = 0) { + // Bug #174: Safari does expose a wrong numberOfOutputs for MediaStreamAudioDestinationNodes. + if (output < 0 || output >= this._nativeAudioNode.numberOfOutputs) { + throw createIndexSizeError(); + } + const nativeContext = getNativeContext(this._context); + const isOffline = isNativeOfflineAudioContext(nativeContext); + if (isNativeAudioNode(destination) || isNativeAudioParam(destination)) { + throw createInvalidAccessError(); + } + if (isAudioNode(destination)) { + const nativeDestinationAudioNode = getNativeAudioNode(destination); + try { + const connection = connectNativeAudioNodeToNativeAudioNode(this._nativeAudioNode, nativeDestinationAudioNode, output, input); + const isPassive = isPassiveAudioNode(this); + if (isOffline || isPassive) { + this._nativeAudioNode.disconnect(...connection); + } + if (this.context.state !== 'closed' && !isPassive && isPassiveAudioNode(destination)) { + setInternalStateToActive(destination); + } + } + catch (err) { + // Bug #41: Safari does not throw the correct exception so far. + if (err.code === 12) { + throw createInvalidAccessError(); + } + throw err; + } + const isNewConnectionToAudioNode = addConnectionToAudioNode(this, destination, output, input, isOffline); + // Bug #164: Only Firefox detects cycles so far. + if (isNewConnectionToAudioNode) { + const cycles = detectCycles([this], destination); + visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline)); + } + return destination; + } + const nativeAudioParam = getNativeAudioParam(destination); + /* + * Bug #73, #147 & #153: Safari does not support to connect an input signal to the playbackRate AudioParam of an + * AudioBufferSourceNode. This can't be easily detected and that's why the outdated name property is used here to identify + * Safari. In addition to that the maxValue property is used to only detect the affected versions below v14.0.2. + */ + if (nativeAudioParam.name === 'playbackRate' && nativeAudioParam.maxValue === 1024) { + throw createNotSupportedError(); + } + try { + this._nativeAudioNode.connect(nativeAudioParam, output); + if (isOffline || isPassiveAudioNode(this)) { + this._nativeAudioNode.disconnect(nativeAudioParam, output); + } + } + catch (err) { + // Bug #58: Safari doesn't throw an InvalidAccessError yet. + if (err.code === 12) { + throw createInvalidAccessError(); + } + throw err; + } + const isNewConnectionToAudioParam = addConnectionToAudioParamOfAudioContext(this, destination, output, isOffline); + // Bug #164: Only Firefox detects cycles so far. + if (isNewConnectionToAudioParam) { + const cycles = detectCycles([this], destination); + visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline)); + } + } + disconnect(destinationOrOutput, output, input) { + let destinations; + const nativeContext = getNativeContext(this._context); + const isOffline = isNativeOfflineAudioContext(nativeContext); + if (destinationOrOutput === undefined) { + destinations = deleteAnyConnection(this, isOffline); + } + else if (typeof destinationOrOutput === 'number') { + if (destinationOrOutput < 0 || destinationOrOutput >= this.numberOfOutputs) { + throw createIndexSizeError(); + } + destinations = deleteConnectionAtOutput(this, isOffline, destinationOrOutput); + } + else { + if (output !== undefined && (output < 0 || output >= this.numberOfOutputs)) { + throw createIndexSizeError(); + } + if (isAudioNode(destinationOrOutput) && input !== undefined && (input < 0 || input >= destinationOrOutput.numberOfInputs)) { + throw createIndexSizeError(); + } + destinations = deleteConnectionToDestination(this, isOffline, destinationOrOutput, output, input); + if (destinations.length === 0) { + throw createInvalidAccessError(); + } + } + // Bug #164: Only Firefox detects cycles so far. + for (const destination of destinations) { + const cycles = detectCycles([this], destination); + visitEachAudioNodeOnce(cycles, decrementCycleCounter); + } + } + }; +}; + +const createAudioParamFactory = (addAudioParamConnections, audioParamAudioNodeStore, audioParamStore, createAudioParamRenderer, createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent, nativeAudioContextConstructor, setValueAtTimeUntilPossible) => { + return (audioNode, isAudioParamOfOfflineAudioContext, nativeAudioParam, maxValue = null, minValue = null) => { + const automationEventList = new AutomationEventList(nativeAudioParam.defaultValue); + const audioParamRenderer = isAudioParamOfOfflineAudioContext ? createAudioParamRenderer(automationEventList) : null; + const audioParam = { + get defaultValue() { + return nativeAudioParam.defaultValue; + }, + get maxValue() { + return maxValue === null ? nativeAudioParam.maxValue : maxValue; + }, + get minValue() { + return minValue === null ? nativeAudioParam.minValue : minValue; + }, + get value() { + return nativeAudioParam.value; + }, + set value(value) { + nativeAudioParam.value = value; + // Bug #98: Firefox & Safari do not yet treat the value setter like a call to setValueAtTime(). + audioParam.setValueAtTime(value, audioNode.context.currentTime); + }, + cancelAndHoldAtTime(cancelTime) { + // Bug #28: Firefox & Safari do not yet implement cancelAndHoldAtTime(). + if (typeof nativeAudioParam.cancelAndHoldAtTime === 'function') { + if (audioParamRenderer === null) { + automationEventList.flush(audioNode.context.currentTime); + } + automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime)); + nativeAudioParam.cancelAndHoldAtTime(cancelTime); + } + else { + const previousLastEvent = Array.from(automationEventList).pop(); + if (audioParamRenderer === null) { + automationEventList.flush(audioNode.context.currentTime); + } + automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime)); + const currentLastEvent = Array.from(automationEventList).pop(); + nativeAudioParam.cancelScheduledValues(cancelTime); + if (previousLastEvent !== currentLastEvent && currentLastEvent !== undefined) { + if (currentLastEvent.type === 'exponentialRampToValue') { + nativeAudioParam.exponentialRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime); + } + else if (currentLastEvent.type === 'linearRampToValue') { + nativeAudioParam.linearRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime); + } + else if (currentLastEvent.type === 'setValue') { + nativeAudioParam.setValueAtTime(currentLastEvent.value, currentLastEvent.startTime); + } + else if (currentLastEvent.type === 'setValueCurve') { + nativeAudioParam.setValueCurveAtTime(currentLastEvent.values, currentLastEvent.startTime, currentLastEvent.duration); + } + } + } + return audioParam; + }, + cancelScheduledValues(cancelTime) { + if (audioParamRenderer === null) { + automationEventList.flush(audioNode.context.currentTime); + } + automationEventList.add(createCancelScheduledValuesAutomationEvent(cancelTime)); + nativeAudioParam.cancelScheduledValues(cancelTime); + return audioParam; + }, + exponentialRampToValueAtTime(value, endTime) { + // Bug #45: Safari does not throw an error yet. + if (value === 0) { + throw new RangeError(); + } + // Bug #187: Safari does not throw an error yet. + if (!Number.isFinite(endTime) || endTime < 0) { + throw new RangeError(); + } + if (audioParamRenderer === null) { + automationEventList.flush(audioNode.context.currentTime); + } + automationEventList.add(createExponentialRampToValueAutomationEvent(value, endTime)); + nativeAudioParam.exponentialRampToValueAtTime(value, endTime); + return audioParam; + }, + linearRampToValueAtTime(value, endTime) { + if (audioParamRenderer === null) { + automationEventList.flush(audioNode.context.currentTime); + } + automationEventList.add(createLinearRampToValueAutomationEvent(value, endTime)); + nativeAudioParam.linearRampToValueAtTime(value, endTime); + return audioParam; + }, + setTargetAtTime(target, startTime, timeConstant) { + if (audioParamRenderer === null) { + automationEventList.flush(audioNode.context.currentTime); + } + automationEventList.add(createSetTargetAutomationEvent(target, startTime, timeConstant)); + nativeAudioParam.setTargetAtTime(target, startTime, timeConstant); + return audioParam; + }, + setValueAtTime(value, startTime) { + if (audioParamRenderer === null) { + automationEventList.flush(audioNode.context.currentTime); + } + automationEventList.add(createSetValueAutomationEvent(value, startTime)); + nativeAudioParam.setValueAtTime(value, startTime); + return audioParam; + }, + setValueCurveAtTime(values, startTime, duration) { + // Bug 183: Safari only accepts a Float32Array. + const convertedValues = values instanceof Float32Array ? values : new Float32Array(values); + /* + * Bug #152: Safari does not correctly interpolate the values of the curve. + * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the + * existence of the webkitAudioContext is used as a workaround here. + */ + if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') { + const endTime = startTime + duration; + const sampleRate = audioNode.context.sampleRate; + const firstSample = Math.ceil(startTime * sampleRate); + const lastSample = Math.floor(endTime * sampleRate); + const numberOfInterpolatedValues = lastSample - firstSample; + const interpolatedValues = new Float32Array(numberOfInterpolatedValues); + for (let i = 0; i < numberOfInterpolatedValues; i += 1) { + const theoreticIndex = ((convertedValues.length - 1) / duration) * ((firstSample + i) / sampleRate - startTime); + const lowerIndex = Math.floor(theoreticIndex); + const upperIndex = Math.ceil(theoreticIndex); + interpolatedValues[i] = + lowerIndex === upperIndex + ? convertedValues[lowerIndex] + : (1 - (theoreticIndex - lowerIndex)) * convertedValues[lowerIndex] + + (1 - (upperIndex - theoreticIndex)) * convertedValues[upperIndex]; + } + if (audioParamRenderer === null) { + automationEventList.flush(audioNode.context.currentTime); + } + automationEventList.add(createSetValueCurveAutomationEvent(interpolatedValues, startTime, duration)); + nativeAudioParam.setValueCurveAtTime(interpolatedValues, startTime, duration); + const timeOfLastSample = lastSample / sampleRate; + if (timeOfLastSample < endTime) { + setValueAtTimeUntilPossible(audioParam, interpolatedValues[interpolatedValues.length - 1], timeOfLastSample); + } + setValueAtTimeUntilPossible(audioParam, convertedValues[convertedValues.length - 1], endTime); + } + else { + if (audioParamRenderer === null) { + automationEventList.flush(audioNode.context.currentTime); + } + automationEventList.add(createSetValueCurveAutomationEvent(convertedValues, startTime, duration)); + nativeAudioParam.setValueCurveAtTime(convertedValues, startTime, duration); + } + return audioParam; + } + }; + audioParamStore.set(audioParam, nativeAudioParam); + audioParamAudioNodeStore.set(audioParam, audioNode); + addAudioParamConnections(audioParam, audioParamRenderer); + return audioParam; + }; +}; + +const createAudioParamRenderer = (automationEventList) => { + return { + replay(audioParam) { + for (const automationEvent of automationEventList) { + if (automationEvent.type === 'exponentialRampToValue') { + const { endTime, value } = automationEvent; + audioParam.exponentialRampToValueAtTime(value, endTime); + } + else if (automationEvent.type === 'linearRampToValue') { + const { endTime, value } = automationEvent; + audioParam.linearRampToValueAtTime(value, endTime); + } + else if (automationEvent.type === 'setTarget') { + const { startTime, target, timeConstant } = automationEvent; + audioParam.setTargetAtTime(target, startTime, timeConstant); + } + else if (automationEvent.type === 'setValue') { + const { startTime, value } = automationEvent; + audioParam.setValueAtTime(value, startTime); + } + else if (automationEvent.type === 'setValueCurve') { + const { duration, startTime, values } = automationEvent; + audioParam.setValueCurveAtTime(values, startTime, duration); + } + else { + throw new Error("Can't apply an unknown automation."); + } + } + } + }; +}; + +class ReadOnlyMap { + constructor(parameters) { + this._map = new Map(parameters); + } + get size() { + return this._map.size; + } + entries() { + return this._map.entries(); + } + forEach(callback, thisArg = null) { + return this._map.forEach((value, key) => callback.call(thisArg, value, key, this)); + } + get(name) { + return this._map.get(name); + } + has(name) { + return this._map.has(name); + } + keys() { + return this._map.keys(); + } + values() { + return this._map.values(); + } +} + +const DEFAULT_OPTIONS$3 = { + channelCount: 2, + // Bug #61: The channelCountMode should be 'max' according to the spec but is set to 'explicit' to achieve consistent behavior. + channelCountMode: 'explicit', + channelInterpretation: 'speakers', + numberOfInputs: 1, + numberOfOutputs: 1, + parameterData: {}, + processorOptions: {} +}; +const createAudioWorkletNodeConstructor = (addUnrenderedAudioWorkletNode, audioNodeConstructor, createAudioParam, createAudioWorkletNodeRenderer, createNativeAudioWorkletNode, getAudioNodeConnections, getBackupOfflineAudioContext, getNativeContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, sanitizeAudioWorkletNodeOptions, setActiveAudioWorkletNodeInputs, testAudioWorkletNodeOptionsClonability, wrapEventListener) => { + return class AudioWorkletNode extends audioNodeConstructor { + constructor(context, name, options) { + var _a; + const nativeContext = getNativeContext(context); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const mergedOptions = sanitizeAudioWorkletNodeOptions({ ...DEFAULT_OPTIONS$3, ...options }); + // Bug #191: Safari doesn't throw an error if the options aren't clonable. + testAudioWorkletNodeOptionsClonability(mergedOptions); + const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext); + const processorConstructor = nodeNameToProcessorConstructorMap === null || nodeNameToProcessorConstructorMap === void 0 ? void 0 : nodeNameToProcessorConstructorMap.get(name); + // Bug #186: Chrome, Edge and Opera do not allow to create an AudioWorkletNode on a closed AudioContext. + const nativeContextOrBackupOfflineAudioContext = isOffline || nativeContext.state !== 'closed' + ? nativeContext + : (_a = getBackupOfflineAudioContext(nativeContext)) !== null && _a !== void 0 ? _a : nativeContext; + const nativeAudioWorkletNode = createNativeAudioWorkletNode(nativeContextOrBackupOfflineAudioContext, isOffline ? null : context.baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, mergedOptions); + const audioWorkletNodeRenderer = ((isOffline ? createAudioWorkletNodeRenderer(name, mergedOptions, processorConstructor) : null)); + /* + * @todo Add a mechanism to switch an AudioWorkletNode to passive once the process() function of the AudioWorkletProcessor + * returns false. + */ + super(context, true, nativeAudioWorkletNode, audioWorkletNodeRenderer); + const parameters = []; + nativeAudioWorkletNode.parameters.forEach((nativeAudioParam, nm) => { + const audioParam = createAudioParam(this, isOffline, nativeAudioParam); + parameters.push([nm, audioParam]); + }); + this._nativeAudioWorkletNode = nativeAudioWorkletNode; + this._onprocessorerror = null; + this._parameters = new ReadOnlyMap(parameters); + /* + * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to + * the destination. + */ + if (isOffline) { + addUnrenderedAudioWorkletNode(nativeContext, this); + } + const { activeInputs } = getAudioNodeConnections(this); + setActiveAudioWorkletNodeInputs(nativeAudioWorkletNode, activeInputs); + } + get onprocessorerror() { + return this._onprocessorerror; + } + set onprocessorerror(value) { + const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null; + this._nativeAudioWorkletNode.onprocessorerror = wrappedListener; + const nativeOnProcessorError = this._nativeAudioWorkletNode.onprocessorerror; + this._onprocessorerror = + nativeOnProcessorError !== null && nativeOnProcessorError === wrappedListener + ? value + : nativeOnProcessorError; + } + get parameters() { + if (this._parameters === null) { + // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods. + return this._nativeAudioWorkletNode.parameters; + } + return this._parameters; + } + get port() { + return this._nativeAudioWorkletNode.port; + } + }; +}; + +function copyFromChannel(audioBuffer, +// @todo There is currently no way to define something like { [ key: number | string ]: Float32Array } +parent, key, channelNumber, bufferOffset) { + if (typeof audioBuffer.copyFromChannel === 'function') { + // The byteLength will be 0 when the ArrayBuffer was transferred. + if (parent[key].byteLength === 0) { + parent[key] = new Float32Array(128); + } + audioBuffer.copyFromChannel(parent[key], channelNumber, bufferOffset); + // Bug #5: Safari does not support copyFromChannel(). + } + else { + const channelData = audioBuffer.getChannelData(channelNumber); + // The byteLength will be 0 when the ArrayBuffer was transferred. + if (parent[key].byteLength === 0) { + parent[key] = channelData.slice(bufferOffset, bufferOffset + 128); + } + else { + const slicedInput = new Float32Array(channelData.buffer, bufferOffset * Float32Array.BYTES_PER_ELEMENT, 128); + parent[key].set(slicedInput); + } + } +} + +const copyToChannel = (audioBuffer, parent, key, channelNumber, bufferOffset) => { + if (typeof audioBuffer.copyToChannel === 'function') { + // The byteLength will be 0 when the ArrayBuffer was transferred. + if (parent[key].byteLength !== 0) { + audioBuffer.copyToChannel(parent[key], channelNumber, bufferOffset); + } + // Bug #5: Safari does not support copyToChannel(). + } + else { + // The byteLength will be 0 when the ArrayBuffer was transferred. + if (parent[key].byteLength !== 0) { + audioBuffer.getChannelData(channelNumber).set(parent[key], bufferOffset); + } + } +}; + +const createNestedArrays = (x, y) => { + const arrays = []; + for (let i = 0; i < x; i += 1) { + const array = []; + const length = typeof y === 'number' ? y : y[i]; + for (let j = 0; j < length; j += 1) { + array.push(new Float32Array(128)); + } + arrays.push(array); + } + return arrays; +}; + +const getAudioWorkletProcessor = (nativeOfflineAudioContext, proxy) => { + const nodeToProcessorMap = getValueForKey(NODE_TO_PROCESSOR_MAPS, nativeOfflineAudioContext); + const nativeAudioWorkletNode = getNativeAudioNode(proxy); + return getValueForKey(nodeToProcessorMap, nativeAudioWorkletNode); +}; + +const processBuffer = async (proxy, renderedBuffer, nativeOfflineAudioContext, options, outputChannelCount, processorConstructor, exposeCurrentFrameAndCurrentTime) => { + // Ceil the length to the next full render quantum. + // Bug #17: Safari does not yet expose the length. + const length = renderedBuffer === null ? Math.ceil(proxy.context.length / 128) * 128 : renderedBuffer.length; + const numberOfInputChannels = options.channelCount * options.numberOfInputs; + const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0); + const processedBuffer = numberOfOutputChannels === 0 + ? null + : nativeOfflineAudioContext.createBuffer(numberOfOutputChannels, length, nativeOfflineAudioContext.sampleRate); + if (processorConstructor === undefined) { + throw new Error('Missing the processor constructor.'); + } + const audioNodeConnections = getAudioNodeConnections(proxy); + const audioWorkletProcessor = await getAudioWorkletProcessor(nativeOfflineAudioContext, proxy); + const inputs = createNestedArrays(options.numberOfInputs, options.channelCount); + const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount); + const parameters = Array.from(proxy.parameters.keys()).reduce((prmtrs, name) => ({ ...prmtrs, [name]: new Float32Array(128) }), {}); + for (let i = 0; i < length; i += 128) { + if (options.numberOfInputs > 0 && renderedBuffer !== null) { + for (let j = 0; j < options.numberOfInputs; j += 1) { + for (let k = 0; k < options.channelCount; k += 1) { + copyFromChannel(renderedBuffer, inputs[j], k, k, i); + } + } + } + if (processorConstructor.parameterDescriptors !== undefined && renderedBuffer !== null) { + processorConstructor.parameterDescriptors.forEach(({ name }, index) => { + copyFromChannel(renderedBuffer, parameters, name, numberOfInputChannels + index, i); + }); + } + for (let j = 0; j < options.numberOfInputs; j += 1) { + for (let k = 0; k < outputChannelCount[j]; k += 1) { + // The byteLength will be 0 when the ArrayBuffer was transferred. + if (outputs[j][k].byteLength === 0) { + outputs[j][k] = new Float32Array(128); + } + } + } + try { + const potentiallyEmptyInputs = inputs.map((input, index) => { + if (audioNodeConnections.activeInputs[index].size === 0) { + return []; + } + return input; + }); + const activeSourceFlag = exposeCurrentFrameAndCurrentTime(i / nativeOfflineAudioContext.sampleRate, nativeOfflineAudioContext.sampleRate, () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters)); + if (processedBuffer !== null) { + for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) { + for (let k = 0; k < outputChannelCount[j]; k += 1) { + copyToChannel(processedBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i); + } + outputChannelSplitterNodeOutput += outputChannelCount[j]; + } + } + if (!activeSourceFlag) { + break; + } + } + catch (error) { + proxy.dispatchEvent(new ErrorEvent('processorerror', { + colno: error.colno, + filename: error.filename, + lineno: error.lineno, + message: error.message + })); + break; + } + } + return processedBuffer; +}; +const createAudioWorkletNodeRendererFactory = (connectAudioParam, connectMultipleOutputs, createNativeAudioBufferSourceNode, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, deleteUnrenderedAudioWorkletNode, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getNativeAudioNode, nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => { + return (name, options, processorConstructor) => { + const renderedNativeAudioNodes = new WeakMap(); + let processedBufferPromise = null; + const createAudioNode = async (proxy, nativeOfflineAudioContext) => { + let nativeAudioWorkletNode = getNativeAudioNode(proxy); + let nativeOutputNodes = null; + const nativeAudioWorkletNodeIsOwnedByContext = isOwnedByContext(nativeAudioWorkletNode, nativeOfflineAudioContext); + const outputChannelCount = Array.isArray(options.outputChannelCount) + ? options.outputChannelCount + : Array.from(options.outputChannelCount); + // Bug #61: Only Chrome, Edge, Firefox & Opera have an implementation of the AudioWorkletNode yet. + if (nativeAudioWorkletNodeConstructor === null) { + const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0); + const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, { + channelCount: Math.max(1, numberOfOutputChannels), + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + numberOfOutputs: Math.max(1, numberOfOutputChannels) + }); + const outputChannelMergerNodes = []; + for (let i = 0; i < proxy.numberOfOutputs; i += 1) { + outputChannelMergerNodes.push(createNativeChannelMergerNode(nativeOfflineAudioContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'speakers', + numberOfInputs: outputChannelCount[i] + })); + } + const outputGainNode = createNativeGainNode(nativeOfflineAudioContext, { + channelCount: options.channelCount, + channelCountMode: options.channelCountMode, + channelInterpretation: options.channelInterpretation, + gain: 1 + }); + outputGainNode.connect = connectMultipleOutputs.bind(null, outputChannelMergerNodes); + outputGainNode.disconnect = disconnectMultipleOutputs.bind(null, outputChannelMergerNodes); + nativeOutputNodes = [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode]; + } + else if (!nativeAudioWorkletNodeIsOwnedByContext) { + nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeOfflineAudioContext, name); + } + renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeOutputNodes === null ? nativeAudioWorkletNode : nativeOutputNodes[2]); + if (nativeOutputNodes !== null) { + if (processedBufferPromise === null) { + if (processorConstructor === undefined) { + throw new Error('Missing the processor constructor.'); + } + if (nativeOfflineAudioContextConstructor === null) { + throw new Error('Missing the native OfflineAudioContext constructor.'); + } + // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly. + const numberOfInputChannels = proxy.channelCount * proxy.numberOfInputs; + const numberOfParameters = processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length; + const numberOfChannels = numberOfInputChannels + numberOfParameters; + const renderBuffer = async () => { + const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(numberOfChannels, + // Ceil the length to the next full render quantum. + // Bug #17: Safari does not yet expose the length. + Math.ceil(proxy.context.length / 128) * 128, nativeOfflineAudioContext.sampleRate); + const gainNodes = []; + const inputChannelSplitterNodes = []; + for (let i = 0; i < options.numberOfInputs; i += 1) { + gainNodes.push(createNativeGainNode(partialOfflineAudioContext, { + channelCount: options.channelCount, + channelCountMode: options.channelCountMode, + channelInterpretation: options.channelInterpretation, + gain: 1 + })); + inputChannelSplitterNodes.push(createNativeChannelSplitterNode(partialOfflineAudioContext, { + channelCount: options.channelCount, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + numberOfOutputs: options.channelCount + })); + } + const constantSourceNodes = await Promise.all(Array.from(proxy.parameters.values()).map(async (audioParam) => { + const constantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + offset: audioParam.value + }); + await renderAutomation(partialOfflineAudioContext, audioParam, constantSourceNode.offset); + return constantSourceNode; + })); + const inputChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'speakers', + numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters) + }); + for (let i = 0; i < options.numberOfInputs; i += 1) { + gainNodes[i].connect(inputChannelSplitterNodes[i]); + for (let j = 0; j < options.channelCount; j += 1) { + inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j); + } + } + for (const [index, constantSourceNode] of constantSourceNodes.entries()) { + constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index); + constantSourceNode.start(0); + } + inputChannelMergerNode.connect(partialOfflineAudioContext.destination); + await Promise.all(gainNodes.map((gainNode) => renderInputsOfAudioNode(proxy, partialOfflineAudioContext, gainNode))); + return renderNativeOfflineAudioContext(partialOfflineAudioContext); + }; + processedBufferPromise = processBuffer(proxy, numberOfChannels === 0 ? null : await renderBuffer(), nativeOfflineAudioContext, options, outputChannelCount, processorConstructor, exposeCurrentFrameAndCurrentTime); + } + const processedBuffer = await processedBufferPromise; + const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, { + buffer: null, + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + loop: false, + loopEnd: 0, + loopStart: 0, + playbackRate: 1 + }); + const [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode] = nativeOutputNodes; + if (processedBuffer !== null) { + audioBufferSourceNode.buffer = processedBuffer; + audioBufferSourceNode.start(0); + } + audioBufferSourceNode.connect(outputChannelSplitterNode); + for (let i = 0, outputChannelSplitterNodeOutput = 0; i < proxy.numberOfOutputs; i += 1) { + const outputChannelMergerNode = outputChannelMergerNodes[i]; + for (let j = 0; j < outputChannelCount[i]; j += 1) { + outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j); + } + outputChannelSplitterNodeOutput += outputChannelCount[i]; + } + return outputGainNode; + } + if (!nativeAudioWorkletNodeIsOwnedByContext) { + for (const [nm, audioParam] of proxy.parameters.entries()) { + await renderAutomation(nativeOfflineAudioContext, audioParam, + // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods. + nativeAudioWorkletNode.parameters.get(nm)); + } + } + else { + for (const [nm, audioParam] of proxy.parameters.entries()) { + await connectAudioParam(nativeOfflineAudioContext, audioParam, + // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods. + nativeAudioWorkletNode.parameters.get(nm)); + } + } + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioWorkletNode); + return nativeAudioWorkletNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + deleteUnrenderedAudioWorkletNode(nativeOfflineAudioContext, proxy); + const renderedNativeAudioWorkletNodeOrGainNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext); + if (renderedNativeAudioWorkletNodeOrGainNode !== undefined) { + return Promise.resolve(renderedNativeAudioWorkletNodeOrGainNode); + } + return createAudioNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const createBaseAudioContextConstructor = (addAudioWorkletModule, analyserNodeConstructor, audioBufferConstructor, audioBufferSourceNodeConstructor, biquadFilterNodeConstructor, channelMergerNodeConstructor, channelSplitterNodeConstructor, constantSourceNodeConstructor, convolverNodeConstructor, decodeAudioData, delayNodeConstructor, dynamicsCompressorNodeConstructor, gainNodeConstructor, iIRFilterNodeConstructor, minimalBaseAudioContextConstructor, oscillatorNodeConstructor, pannerNodeConstructor, periodicWaveConstructor, stereoPannerNodeConstructor, waveShaperNodeConstructor) => { + return class BaseAudioContext extends minimalBaseAudioContextConstructor { + constructor(_nativeContext, numberOfChannels) { + super(_nativeContext, numberOfChannels); + this._nativeContext = _nativeContext; + this._audioWorklet = + addAudioWorkletModule === undefined + ? undefined + : { + addModule: (moduleURL, options) => { + return addAudioWorkletModule(this, moduleURL, options); + } + }; + } + get audioWorklet() { + return this._audioWorklet; + } + createAnalyser() { + return new analyserNodeConstructor(this); + } + createBiquadFilter() { + return new biquadFilterNodeConstructor(this); + } + createBuffer(numberOfChannels, length, sampleRate) { + return new audioBufferConstructor({ length, numberOfChannels, sampleRate }); + } + createBufferSource() { + return new audioBufferSourceNodeConstructor(this); + } + createChannelMerger(numberOfInputs = 6) { + return new channelMergerNodeConstructor(this, { numberOfInputs }); + } + createChannelSplitter(numberOfOutputs = 6) { + return new channelSplitterNodeConstructor(this, { numberOfOutputs }); + } + createConstantSource() { + return new constantSourceNodeConstructor(this); + } + createConvolver() { + return new convolverNodeConstructor(this); + } + createDelay(maxDelayTime = 1) { + return new delayNodeConstructor(this, { maxDelayTime }); + } + createDynamicsCompressor() { + return new dynamicsCompressorNodeConstructor(this); + } + createGain() { + return new gainNodeConstructor(this); + } + createIIRFilter(feedforward, feedback) { + return new iIRFilterNodeConstructor(this, { feedback, feedforward }); + } + createOscillator() { + return new oscillatorNodeConstructor(this); + } + createPanner() { + return new pannerNodeConstructor(this); + } + createPeriodicWave(real, imag, constraints = { disableNormalization: false }) { + return new periodicWaveConstructor(this, { ...constraints, imag, real }); + } + createStereoPanner() { + return new stereoPannerNodeConstructor(this); + } + createWaveShaper() { + return new waveShaperNodeConstructor(this); + } + decodeAudioData(audioData, successCallback, errorCallback) { + return decodeAudioData(this._nativeContext, audioData).then((audioBuffer) => { + if (typeof successCallback === 'function') { + successCallback(audioBuffer); + } + return audioBuffer; + }, (err) => { + if (typeof errorCallback === 'function') { + errorCallback(err); + } + throw err; + }); + } + }; +}; + +const DEFAULT_OPTIONS$4 = { + Q: 1, + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + detune: 0, + frequency: 350, + gain: 0, + type: 'lowpass' +}; +const createBiquadFilterNodeConstructor = (audioNodeConstructor, createAudioParam, createBiquadFilterNodeRenderer, createInvalidAccessError, createNativeBiquadFilterNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { + return class BiquadFilterNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$4, ...options }; + const nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeContext, mergedOptions); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const biquadFilterNodeRenderer = (isOffline ? createBiquadFilterNodeRenderer() : null); + super(context, false, nativeBiquadFilterNode, biquadFilterNodeRenderer); + // Bug #80: Safari does not export the correct values for maxValue and minValue. + this._Q = createAudioParam(this, isOffline, nativeBiquadFilterNode.Q, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); + // Bug #78: Firefox & Safari do not export the correct values for maxValue and minValue. + this._detune = createAudioParam(this, isOffline, nativeBiquadFilterNode.detune, 1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT), -1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT)); + // Bug #77: Firefox & Safari do not export the correct value for minValue. + this._frequency = createAudioParam(this, isOffline, nativeBiquadFilterNode.frequency, context.sampleRate / 2, 0); + // Bug #79: Firefox & Safari do not export the correct values for maxValue and minValue. + this._gain = createAudioParam(this, isOffline, nativeBiquadFilterNode.gain, 40 * Math.log10(MOST_POSITIVE_SINGLE_FLOAT), MOST_NEGATIVE_SINGLE_FLOAT); + this._nativeBiquadFilterNode = nativeBiquadFilterNode; + // @todo Determine a meaningful tail-time instead of just using one second. + setAudioNodeTailTime(this, 1); + } + get detune() { + return this._detune; + } + get frequency() { + return this._frequency; + } + get gain() { + return this._gain; + } + get Q() { + return this._Q; + } + get type() { + return this._nativeBiquadFilterNode.type; + } + set type(value) { + this._nativeBiquadFilterNode.type = value; + } + getFrequencyResponse(frequencyHz, magResponse, phaseResponse) { + // Bug #189: Safari does throw an InvalidStateError. + try { + this._nativeBiquadFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse); + } + catch (err) { + if (err.code === 11) { + throw createInvalidAccessError(); + } + throw err; + } + // Bug #68: Safari does not throw an error if the parameters differ in their length. + if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) { + throw createInvalidAccessError(); + } + } + }; +}; + +const createBiquadFilterNodeRendererFactory = (connectAudioParam, createNativeBiquadFilterNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { + return () => { + const renderedNativeBiquadFilterNodes = new WeakMap(); + const createBiquadFilterNode = async (proxy, nativeOfflineAudioContext) => { + let nativeBiquadFilterNode = getNativeAudioNode(proxy); + /* + * If the initially used nativeBiquadFilterNode was not constructed on the same OfflineAudioContext it needs to be created + * again. + */ + const nativeBiquadFilterNodeIsOwnedByContext = isOwnedByContext(nativeBiquadFilterNode, nativeOfflineAudioContext); + if (!nativeBiquadFilterNodeIsOwnedByContext) { + const options = { + Q: nativeBiquadFilterNode.Q.value, + channelCount: nativeBiquadFilterNode.channelCount, + channelCountMode: nativeBiquadFilterNode.channelCountMode, + channelInterpretation: nativeBiquadFilterNode.channelInterpretation, + detune: nativeBiquadFilterNode.detune.value, + frequency: nativeBiquadFilterNode.frequency.value, + gain: nativeBiquadFilterNode.gain.value, + type: nativeBiquadFilterNode.type + }; + nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeOfflineAudioContext, options); + } + renderedNativeBiquadFilterNodes.set(nativeOfflineAudioContext, nativeBiquadFilterNode); + if (!nativeBiquadFilterNodeIsOwnedByContext) { + await renderAutomation(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q); + await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune); + await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency); + await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain); + } + else { + await connectAudioParam(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q); + await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune); + await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency); + await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain); + } + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeBiquadFilterNode); + return nativeBiquadFilterNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeBiquadFilterNode = renderedNativeBiquadFilterNodes.get(nativeOfflineAudioContext); + if (renderedNativeBiquadFilterNode !== undefined) { + return Promise.resolve(renderedNativeBiquadFilterNode); + } + return createBiquadFilterNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const createCacheTestResult = (ongoingTests, testResults) => { + return (tester, test) => { + const cachedTestResult = testResults.get(tester); + if (cachedTestResult !== undefined) { + return cachedTestResult; + } + const ongoingTest = ongoingTests.get(tester); + if (ongoingTest !== undefined) { + return ongoingTest; + } + try { + const synchronousTestResult = test(); + if (synchronousTestResult instanceof Promise) { + ongoingTests.set(tester, synchronousTestResult); + return synchronousTestResult + .catch(() => false) + .then((finalTestResult) => { + ongoingTests.delete(tester); + testResults.set(tester, finalTestResult); + return finalTestResult; + }); + } + testResults.set(tester, synchronousTestResult); + return synchronousTestResult; + } + catch { + testResults.set(tester, false); + return false; + } + }; +}; + +const DEFAULT_OPTIONS$5 = { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'speakers', + numberOfInputs: 6 +}; +const createChannelMergerNodeConstructor = (audioNodeConstructor, createChannelMergerNodeRenderer, createNativeChannelMergerNode, getNativeContext, isNativeOfflineAudioContext) => { + return class ChannelMergerNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$5, ...options }; + const nativeChannelMergerNode = createNativeChannelMergerNode(nativeContext, mergedOptions); + const channelMergerNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createChannelMergerNodeRenderer() : null)); + super(context, false, nativeChannelMergerNode, channelMergerNodeRenderer); + } + }; +}; + +const createChannelMergerNodeRendererFactory = (createNativeChannelMergerNode, getNativeAudioNode, renderInputsOfAudioNode) => { + return () => { + const renderedNativeAudioNodes = new WeakMap(); + const createAudioNode = async (proxy, nativeOfflineAudioContext) => { + let nativeAudioNode = getNativeAudioNode(proxy); + // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again. + const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext); + if (!nativeAudioNodeIsOwnedByContext) { + const options = { + channelCount: nativeAudioNode.channelCount, + channelCountMode: nativeAudioNode.channelCountMode, + channelInterpretation: nativeAudioNode.channelInterpretation, + numberOfInputs: nativeAudioNode.numberOfInputs + }; + nativeAudioNode = createNativeChannelMergerNode(nativeOfflineAudioContext, options); + } + renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode); + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode); + return nativeAudioNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext); + if (renderedNativeAudioNode !== undefined) { + return Promise.resolve(renderedNativeAudioNode); + } + return createAudioNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const DEFAULT_OPTIONS$6 = { + channelCount: 6, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + numberOfOutputs: 6 +}; +const createChannelSplitterNodeConstructor = (audioNodeConstructor, createChannelSplitterNodeRenderer, createNativeChannelSplitterNode, getNativeContext, isNativeOfflineAudioContext, sanitizeChannelSplitterOptions) => { + return class ChannelSplitterNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = sanitizeChannelSplitterOptions({ ...DEFAULT_OPTIONS$6, ...options }); + const nativeChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, mergedOptions); + const channelSplitterNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createChannelSplitterNodeRenderer() : null)); + super(context, false, nativeChannelSplitterNode, channelSplitterNodeRenderer); + } + }; +}; + +const createChannelSplitterNodeRendererFactory = (createNativeChannelSplitterNode, getNativeAudioNode, renderInputsOfAudioNode) => { + return () => { + const renderedNativeAudioNodes = new WeakMap(); + const createAudioNode = async (proxy, nativeOfflineAudioContext) => { + let nativeAudioNode = getNativeAudioNode(proxy); + // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again. + const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext); + if (!nativeAudioNodeIsOwnedByContext) { + const options = { + channelCount: nativeAudioNode.channelCount, + channelCountMode: nativeAudioNode.channelCountMode, + channelInterpretation: nativeAudioNode.channelInterpretation, + numberOfOutputs: nativeAudioNode.numberOfOutputs + }; + nativeAudioNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, options); + } + renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode); + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode); + return nativeAudioNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext); + if (renderedNativeAudioNode !== undefined) { + return Promise.resolve(renderedNativeAudioNode); + } + return createAudioNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const createConnectAudioParam = (renderInputsOfAudioParam) => { + return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => { + return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam); + }; +}; + +const createConnectMultipleOutputs = (createIndexSizeError) => { + return (outputAudioNodes, destination, output = 0, input = 0) => { + const outputAudioNode = outputAudioNodes[output]; + if (outputAudioNode === undefined) { + throw createIndexSizeError(); + } + if (isNativeAudioNode(destination)) { + return outputAudioNode.connect(destination, 0, input); + } + return outputAudioNode.connect(destination, 0); + }; +}; + +const createConnectedNativeAudioBufferSourceNodeFactory = (createNativeAudioBufferSourceNode) => { + return (nativeContext, nativeAudioNode) => { + const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, { + buffer: null, + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + loop: false, + loopEnd: 0, + loopStart: 0, + playbackRate: 1 + }); + const nativeAudioBuffer = nativeContext.createBuffer(1, 2, 44100); + nativeAudioBufferSourceNode.buffer = nativeAudioBuffer; + nativeAudioBufferSourceNode.loop = true; + nativeAudioBufferSourceNode.connect(nativeAudioNode); + nativeAudioBufferSourceNode.start(); + return () => { + nativeAudioBufferSourceNode.stop(); + nativeAudioBufferSourceNode.disconnect(nativeAudioNode); + }; + }; +}; + +const DEFAULT_OPTIONS$7 = { + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + offset: 1 +}; +const createConstantSourceNodeConstructor = (audioNodeConstructor, createAudioParam, createConstantSourceNodeRendererFactory, createNativeConstantSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => { + return class ConstantSourceNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$7, ...options }; + const nativeConstantSourceNode = createNativeConstantSourceNode(nativeContext, mergedOptions); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const constantSourceNodeRenderer = ((isOffline ? createConstantSourceNodeRendererFactory() : null)); + super(context, false, nativeConstantSourceNode, constantSourceNodeRenderer); + this._constantSourceNodeRenderer = constantSourceNodeRenderer; + this._nativeConstantSourceNode = nativeConstantSourceNode; + /* + * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and minValue + * for GainNodes. + */ + this._offset = createAudioParam(this, isOffline, nativeConstantSourceNode.offset, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); + this._onended = null; + } + get offset() { + return this._offset; + } + get onended() { + return this._onended; + } + set onended(value) { + const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null; + this._nativeConstantSourceNode.onended = wrappedListener; + const nativeOnEnded = this._nativeConstantSourceNode.onended; + this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded; + } + start(when = 0) { + this._nativeConstantSourceNode.start(when); + if (this._constantSourceNodeRenderer !== null) { + this._constantSourceNodeRenderer.start = when; + } + if (this.context.state !== 'closed') { + setInternalStateToActive(this); + const resetInternalStateToPassive = () => { + this._nativeConstantSourceNode.removeEventListener('ended', resetInternalStateToPassive); + if (isActiveAudioNode(this)) { + setInternalStateToPassive(this); + } + }; + this._nativeConstantSourceNode.addEventListener('ended', resetInternalStateToPassive); + } + } + stop(when = 0) { + this._nativeConstantSourceNode.stop(when); + if (this._constantSourceNodeRenderer !== null) { + this._constantSourceNodeRenderer.stop = when; + } + } + }; +}; + +const createConstantSourceNodeRendererFactory = (connectAudioParam, createNativeConstantSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { + return () => { + const renderedNativeConstantSourceNodes = new WeakMap(); + let start = null; + let stop = null; + const createConstantSourceNode = async (proxy, nativeOfflineAudioContext) => { + let nativeConstantSourceNode = getNativeAudioNode(proxy); + /* + * If the initially used nativeConstantSourceNode was not constructed on the same OfflineAudioContext it needs to be created + * again. + */ + const nativeConstantSourceNodeIsOwnedByContext = isOwnedByContext(nativeConstantSourceNode, nativeOfflineAudioContext); + if (!nativeConstantSourceNodeIsOwnedByContext) { + const options = { + channelCount: nativeConstantSourceNode.channelCount, + channelCountMode: nativeConstantSourceNode.channelCountMode, + channelInterpretation: nativeConstantSourceNode.channelInterpretation, + offset: nativeConstantSourceNode.offset.value + }; + nativeConstantSourceNode = createNativeConstantSourceNode(nativeOfflineAudioContext, options); + if (start !== null) { + nativeConstantSourceNode.start(start); + } + if (stop !== null) { + nativeConstantSourceNode.stop(stop); + } + } + renderedNativeConstantSourceNodes.set(nativeOfflineAudioContext, nativeConstantSourceNode); + if (!nativeConstantSourceNodeIsOwnedByContext) { + await renderAutomation(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset); + } + else { + await connectAudioParam(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset); + } + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConstantSourceNode); + return nativeConstantSourceNode; + }; + return { + set start(value) { + start = value; + }, + set stop(value) { + stop = value; + }, + render(proxy, nativeOfflineAudioContext) { + const renderedNativeConstantSourceNode = renderedNativeConstantSourceNodes.get(nativeOfflineAudioContext); + if (renderedNativeConstantSourceNode !== undefined) { + return Promise.resolve(renderedNativeConstantSourceNode); + } + return createConstantSourceNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const createConvertNumberToUnsignedLong = (unit32Array) => { + return (value) => { + unit32Array[0] = value; + return unit32Array[0]; + }; +}; + +const DEFAULT_OPTIONS$8 = { + buffer: null, + channelCount: 2, + channelCountMode: 'clamped-max', + channelInterpretation: 'speakers', + disableNormalization: false +}; +const createConvolverNodeConstructor = (audioNodeConstructor, createConvolverNodeRenderer, createNativeConvolverNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { + return class ConvolverNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$8, ...options }; + const nativeConvolverNode = createNativeConvolverNode(nativeContext, mergedOptions); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const convolverNodeRenderer = (isOffline ? createConvolverNodeRenderer() : null); + super(context, false, nativeConvolverNode, convolverNodeRenderer); + this._isBufferNullified = false; + this._nativeConvolverNode = nativeConvolverNode; + if (mergedOptions.buffer !== null) { + setAudioNodeTailTime(this, mergedOptions.buffer.duration); + } + } + get buffer() { + if (this._isBufferNullified) { + return null; + } + return this._nativeConvolverNode.buffer; + } + set buffer(value) { + this._nativeConvolverNode.buffer = value; + // Bug #115: Safari does not allow to set the buffer to null. + if (value === null && this._nativeConvolverNode.buffer !== null) { + const nativeContext = this._nativeConvolverNode.context; + this._nativeConvolverNode.buffer = nativeContext.createBuffer(1, 1, 44100); + this._isBufferNullified = true; + setAudioNodeTailTime(this, 0); + } + else { + this._isBufferNullified = false; + setAudioNodeTailTime(this, this._nativeConvolverNode.buffer === null ? 0 : this._nativeConvolverNode.buffer.duration); + } + } + get normalize() { + return this._nativeConvolverNode.normalize; + } + set normalize(value) { + this._nativeConvolverNode.normalize = value; + } + }; +}; + +const createConvolverNodeRendererFactory = (createNativeConvolverNode, getNativeAudioNode, renderInputsOfAudioNode) => { + return () => { + const renderedNativeConvolverNodes = new WeakMap(); + const createConvolverNode = async (proxy, nativeOfflineAudioContext) => { + let nativeConvolverNode = getNativeAudioNode(proxy); + // If the initially used nativeConvolverNode was not constructed on the same OfflineAudioContext it needs to be created again. + const nativeConvolverNodeIsOwnedByContext = isOwnedByContext(nativeConvolverNode, nativeOfflineAudioContext); + if (!nativeConvolverNodeIsOwnedByContext) { + const options = { + buffer: nativeConvolverNode.buffer, + channelCount: nativeConvolverNode.channelCount, + channelCountMode: nativeConvolverNode.channelCountMode, + channelInterpretation: nativeConvolverNode.channelInterpretation, + disableNormalization: !nativeConvolverNode.normalize + }; + nativeConvolverNode = createNativeConvolverNode(nativeOfflineAudioContext, options); + } + renderedNativeConvolverNodes.set(nativeOfflineAudioContext, nativeConvolverNode); + if (isNativeAudioNodeFaker(nativeConvolverNode)) { + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode.inputs[0]); + } + else { + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode); + } + return nativeConvolverNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeConvolverNode = renderedNativeConvolverNodes.get(nativeOfflineAudioContext); + if (renderedNativeConvolverNode !== undefined) { + return Promise.resolve(renderedNativeConvolverNode); + } + return createConvolverNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const createCreateNativeOfflineAudioContext = (createNotSupportedError, nativeOfflineAudioContextConstructor) => { + return (numberOfChannels, length, sampleRate) => { + if (nativeOfflineAudioContextConstructor === null) { + throw new Error('Missing the native OfflineAudioContext constructor.'); + } + try { + return new nativeOfflineAudioContextConstructor(numberOfChannels, length, sampleRate); + } + catch (err) { + // Bug #143, #144 & #146: Safari throws a SyntaxError when numberOfChannels, length or sampleRate are invalid. + if (err.name === 'SyntaxError') { + throw createNotSupportedError(); + } + throw err; + } + }; +}; + +const createDataCloneError = () => new DOMException('', 'DataCloneError'); + +const detachArrayBuffer = (arrayBuffer) => { + const { port1, port2 } = new MessageChannel(); + return new Promise((resolve) => { + const closeAndResolve = () => { + port2.onmessage = null; + port1.close(); + port2.close(); + resolve(); + }; + port2.onmessage = () => closeAndResolve(); + try { + port1.postMessage(arrayBuffer, [arrayBuffer]); + } + finally { + closeAndResolve(); + } + }); +}; + +const createDecodeAudioData = (audioBufferStore, cacheTestResult, createDataCloneError, createEncodingError, detachedArrayBuffers, getNativeContext, isNativeContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, testPromiseSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => { + return (anyContext, audioData) => { + const nativeContext = isNativeContext(anyContext) ? anyContext : getNativeContext(anyContext); + // Bug #43: Only Chrome, Edge and Opera do throw a DataCloneError. + if (detachedArrayBuffers.has(audioData)) { + const err = createDataCloneError(); + return Promise.reject(err); + } + // The audioData parameter maybe of a type which can't be added to a WeakSet. + try { + detachedArrayBuffers.add(audioData); + } + catch { + // Ignore errors. + } + // Bug #21: Safari does not support promises yet. + if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeContext))) { + return nativeContext.decodeAudioData(audioData).then((audioBuffer) => { + // Bug #133: Safari does neuter the ArrayBuffer. + detachArrayBuffer(audioData).catch(() => { + // Ignore errors. + }); + // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds. + if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) { + wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer); + } + audioBufferStore.add(audioBuffer); + return audioBuffer; + }); + } + // Bug #21: Safari does not return a Promise yet. + return new Promise((resolve, reject) => { + const complete = async () => { + // Bug #133: Safari does neuter the ArrayBuffer. + try { + await detachArrayBuffer(audioData); + } + catch { + // Ignore errors. + } + }; + const fail = (err) => { + reject(err); + complete(); + }; + // Bug #26: Safari throws a synchronous error. + try { + // Bug #1: Safari requires a successCallback. + nativeContext.decodeAudioData(audioData, (audioBuffer) => { + // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). + // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value. + if (typeof audioBuffer.copyFromChannel !== 'function') { + wrapAudioBufferCopyChannelMethods(audioBuffer); + wrapAudioBufferGetChannelDataMethod(audioBuffer); + } + audioBufferStore.add(audioBuffer); + complete().then(() => resolve(audioBuffer)); + }, (err) => { + // Bug #4: Safari returns null instead of an error. + if (err === null) { + fail(createEncodingError()); + } + else { + fail(err); + } + }); + } + catch (err) { + fail(err); + } + }); + }; +}; + +const createDecrementCycleCounter = (connectNativeAudioNodeToNativeAudioNode, cycleCounters, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, getNativeContext, isActiveAudioNode, isNativeOfflineAudioContext) => { + return (audioNode, count) => { + const cycleCounter = cycleCounters.get(audioNode); + if (cycleCounter === undefined) { + throw new Error('Missing the expected cycle count.'); + } + const nativeContext = getNativeContext(audioNode.context); + const isOffline = isNativeOfflineAudioContext(nativeContext); + if (cycleCounter === count) { + cycleCounters.delete(audioNode); + if (!isOffline && isActiveAudioNode(audioNode)) { + const nativeSourceAudioNode = getNativeAudioNode(audioNode); + const { outputs } = getAudioNodeConnections(audioNode); + for (const output of outputs) { + if (isAudioNodeOutputConnection(output)) { + const nativeDestinationAudioNode = getNativeAudioNode(output[0]); + connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]); + } + else { + const nativeDestinationAudioParam = getNativeAudioParam(output[0]); + nativeSourceAudioNode.connect(nativeDestinationAudioParam, output[1]); + } + } + } + } + else { + cycleCounters.set(audioNode, cycleCounter - count); + } + }; +}; + +const DEFAULT_OPTIONS$9 = { + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + delayTime: 0, + maxDelayTime: 1 +}; +const createDelayNodeConstructor = (audioNodeConstructor, createAudioParam, createDelayNodeRenderer, createNativeDelayNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { + return class DelayNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$9, ...options }; + const nativeDelayNode = createNativeDelayNode(nativeContext, mergedOptions); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const delayNodeRenderer = (isOffline ? createDelayNodeRenderer(mergedOptions.maxDelayTime) : null); + super(context, false, nativeDelayNode, delayNodeRenderer); + this._delayTime = createAudioParam(this, isOffline, nativeDelayNode.delayTime); + setAudioNodeTailTime(this, mergedOptions.maxDelayTime); + } + get delayTime() { + return this._delayTime; + } + }; +}; + +const createDelayNodeRendererFactory = (connectAudioParam, createNativeDelayNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { + return (maxDelayTime) => { + const renderedNativeDelayNodes = new WeakMap(); + const createDelayNode = async (proxy, nativeOfflineAudioContext) => { + let nativeDelayNode = getNativeAudioNode(proxy); + // If the initially used nativeDelayNode was not constructed on the same OfflineAudioContext it needs to be created again. + const nativeDelayNodeIsOwnedByContext = isOwnedByContext(nativeDelayNode, nativeOfflineAudioContext); + if (!nativeDelayNodeIsOwnedByContext) { + const options = { + channelCount: nativeDelayNode.channelCount, + channelCountMode: nativeDelayNode.channelCountMode, + channelInterpretation: nativeDelayNode.channelInterpretation, + delayTime: nativeDelayNode.delayTime.value, + maxDelayTime + }; + nativeDelayNode = createNativeDelayNode(nativeOfflineAudioContext, options); + } + renderedNativeDelayNodes.set(nativeOfflineAudioContext, nativeDelayNode); + if (!nativeDelayNodeIsOwnedByContext) { + await renderAutomation(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime); + } + else { + await connectAudioParam(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime); + } + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDelayNode); + return nativeDelayNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeDelayNode = renderedNativeDelayNodes.get(nativeOfflineAudioContext); + if (renderedNativeDelayNode !== undefined) { + return Promise.resolve(renderedNativeDelayNode); + } + return createDelayNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const createDeleteActiveInputConnectionToAudioNode = (pickElementFromSet) => { + return (activeInputs, source, output, input) => { + return pickElementFromSet(activeInputs[input], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output); + }; +}; + +const createDeleteUnrenderedAudioWorkletNode = (getUnrenderedAudioWorkletNodes) => { + return (nativeContext, audioWorkletNode) => { + getUnrenderedAudioWorkletNodes(nativeContext).delete(audioWorkletNode); + }; +}; + +const isDelayNode = (audioNode) => { + return 'delayTime' in audioNode; +}; + +const createDetectCycles = (audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey) => { + return function detectCycles(chain, nextLink) { + const audioNode = isAudioNode(nextLink) ? nextLink : getValueForKey(audioParamAudioNodeStore, nextLink); + if (isDelayNode(audioNode)) { + return []; + } + if (chain[0] === audioNode) { + return [chain]; + } + if (chain.includes(audioNode)) { + return []; + } + const { outputs } = getAudioNodeConnections(audioNode); + return Array.from(outputs) + .map((outputConnection) => detectCycles([...chain, audioNode], outputConnection[0])) + .reduce((mergedCycles, nestedCycles) => mergedCycles.concat(nestedCycles), []); + }; +}; + +const getOutputAudioNodeAtIndex = (createIndexSizeError, outputAudioNodes, output) => { + const outputAudioNode = outputAudioNodes[output]; + if (outputAudioNode === undefined) { + throw createIndexSizeError(); + } + return outputAudioNode; +}; +const createDisconnectMultipleOutputs = (createIndexSizeError) => { + return (outputAudioNodes, destinationOrOutput = undefined, output = undefined, input = 0) => { + if (destinationOrOutput === undefined) { + return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect()); + } + if (typeof destinationOrOutput === 'number') { + return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, destinationOrOutput).disconnect(); + } + if (isNativeAudioNode(destinationOrOutput)) { + if (output === undefined) { + return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput)); + } + if (input === undefined) { + return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0); + } + return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0, input); + } + if (output === undefined) { + return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput)); + } + return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0); + }; +}; + +const DEFAULT_OPTIONS$a = { + attack: 0.003, + channelCount: 2, + channelCountMode: 'clamped-max', + channelInterpretation: 'speakers', + knee: 30, + ratio: 12, + release: 0.25, + threshold: -24 +}; +const createDynamicsCompressorNodeConstructor = (audioNodeConstructor, createAudioParam, createDynamicsCompressorNodeRenderer, createNativeDynamicsCompressorNode, createNotSupportedError, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { + return class DynamicsCompressorNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$a, ...options }; + const nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeContext, mergedOptions); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const dynamicsCompressorNodeRenderer = (isOffline ? createDynamicsCompressorNodeRenderer() : null); + super(context, false, nativeDynamicsCompressorNode, dynamicsCompressorNodeRenderer); + this._attack = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.attack); + this._knee = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.knee); + this._nativeDynamicsCompressorNode = nativeDynamicsCompressorNode; + this._ratio = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.ratio); + this._release = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.release); + this._threshold = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.threshold); + setAudioNodeTailTime(this, 0.006); + } + get attack() { + return this._attack; + } + // Bug #108: Safari allows a channelCount of three and above which is why the getter and setter needs to be overwritten here. + get channelCount() { + return this._nativeDynamicsCompressorNode.channelCount; + } + set channelCount(value) { + const previousChannelCount = this._nativeDynamicsCompressorNode.channelCount; + this._nativeDynamicsCompressorNode.channelCount = value; + if (value > 2) { + this._nativeDynamicsCompressorNode.channelCount = previousChannelCount; + throw createNotSupportedError(); + } + } + /* + * Bug #109: Only Chrome, Firefox and Opera disallow a channelCountMode of 'max' yet which is why the getter and setter needs to be + * overwritten here. + */ + get channelCountMode() { + return this._nativeDynamicsCompressorNode.channelCountMode; + } + set channelCountMode(value) { + const previousChannelCount = this._nativeDynamicsCompressorNode.channelCountMode; + this._nativeDynamicsCompressorNode.channelCountMode = value; + if (value === 'max') { + this._nativeDynamicsCompressorNode.channelCountMode = previousChannelCount; + throw createNotSupportedError(); + } + } + get knee() { + return this._knee; + } + get ratio() { + return this._ratio; + } + get reduction() { + // Bug #111: Safari returns an AudioParam instead of a number. + if (typeof this._nativeDynamicsCompressorNode.reduction.value === 'number') { + return this._nativeDynamicsCompressorNode.reduction.value; + } + return this._nativeDynamicsCompressorNode.reduction; + } + get release() { + return this._release; + } + get threshold() { + return this._threshold; + } + }; +}; + +const createDynamicsCompressorNodeRendererFactory = (connectAudioParam, createNativeDynamicsCompressorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { + return () => { + const renderedNativeDynamicsCompressorNodes = new WeakMap(); + const createDynamicsCompressorNode = async (proxy, nativeOfflineAudioContext) => { + let nativeDynamicsCompressorNode = getNativeAudioNode(proxy); + /* + * If the initially used nativeDynamicsCompressorNode was not constructed on the same OfflineAudioContext it needs to be + * created again. + */ + const nativeDynamicsCompressorNodeIsOwnedByContext = isOwnedByContext(nativeDynamicsCompressorNode, nativeOfflineAudioContext); + if (!nativeDynamicsCompressorNodeIsOwnedByContext) { + const options = { + attack: nativeDynamicsCompressorNode.attack.value, + channelCount: nativeDynamicsCompressorNode.channelCount, + channelCountMode: nativeDynamicsCompressorNode.channelCountMode, + channelInterpretation: nativeDynamicsCompressorNode.channelInterpretation, + knee: nativeDynamicsCompressorNode.knee.value, + ratio: nativeDynamicsCompressorNode.ratio.value, + release: nativeDynamicsCompressorNode.release.value, + threshold: nativeDynamicsCompressorNode.threshold.value + }; + nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeOfflineAudioContext, options); + } + renderedNativeDynamicsCompressorNodes.set(nativeOfflineAudioContext, nativeDynamicsCompressorNode); + if (!nativeDynamicsCompressorNodeIsOwnedByContext) { + await renderAutomation(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack); + await renderAutomation(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee); + await renderAutomation(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio); + await renderAutomation(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release); + await renderAutomation(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold); + } + else { + await connectAudioParam(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack); + await connectAudioParam(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee); + await connectAudioParam(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio); + await connectAudioParam(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release); + await connectAudioParam(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold); + } + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDynamicsCompressorNode); + return nativeDynamicsCompressorNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeDynamicsCompressorNode = renderedNativeDynamicsCompressorNodes.get(nativeOfflineAudioContext); + if (renderedNativeDynamicsCompressorNode !== undefined) { + return Promise.resolve(renderedNativeDynamicsCompressorNode); + } + return createDynamicsCompressorNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const createEncodingError = () => new DOMException('', 'EncodingError'); + +const createEvaluateSource = (window) => { + return (source) => new Promise((resolve, reject) => { + if (window === null) { + // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException. + reject(new SyntaxError()); + return; + } + const head = window.document.head; + if (head === null) { + // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException. + reject(new SyntaxError()); + } + else { + const script = window.document.createElement('script'); + // @todo Safari doesn't like URLs with a type of 'application/javascript; charset=utf-8'. + const blob = new Blob([source], { type: 'application/javascript' }); + const url = URL.createObjectURL(blob); + const originalOnErrorHandler = window.onerror; + const removeErrorEventListenerAndRevokeUrl = () => { + window.onerror = originalOnErrorHandler; + URL.revokeObjectURL(url); + }; + window.onerror = (message, src, lineno, colno, error) => { + // @todo Edge thinks the source is the one of the html document. + if (src === url || (src === window.location.href && lineno === 1 && colno === 1)) { + removeErrorEventListenerAndRevokeUrl(); + reject(error); + return false; + } + if (originalOnErrorHandler !== null) { + return originalOnErrorHandler(message, src, lineno, colno, error); + } + }; + script.onerror = () => { + removeErrorEventListenerAndRevokeUrl(); + // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException. + reject(new SyntaxError()); + }; + script.onload = () => { + removeErrorEventListenerAndRevokeUrl(); + resolve(); + }; + script.src = url; + script.type = 'module'; + head.appendChild(script); + } + }); +}; + +const createEventTargetConstructor = (wrapEventListener) => { + return class EventTarget { + constructor(_nativeEventTarget) { + this._nativeEventTarget = _nativeEventTarget; + this._listeners = new WeakMap(); + } + addEventListener(type, listener, options) { + if (listener !== null) { + let wrappedEventListener = this._listeners.get(listener); + if (wrappedEventListener === undefined) { + wrappedEventListener = wrapEventListener(this, listener); + if (typeof listener === 'function') { + this._listeners.set(listener, wrappedEventListener); + } + } + this._nativeEventTarget.addEventListener(type, wrappedEventListener, options); + } + } + dispatchEvent(event) { + return this._nativeEventTarget.dispatchEvent(event); + } + removeEventListener(type, listener, options) { + const wrappedEventListener = listener === null ? undefined : this._listeners.get(listener); + this._nativeEventTarget.removeEventListener(type, wrappedEventListener === undefined ? null : wrappedEventListener, options); + } + }; +}; + +const createExposeCurrentFrameAndCurrentTime = (window) => { + return (currentTime, sampleRate, fn) => { + Object.defineProperties(window, { + currentFrame: { + configurable: true, + get() { + return Math.round(currentTime * sampleRate); + } + }, + currentTime: { + configurable: true, + get() { + return currentTime; + } + } + }); + try { + return fn(); + } + finally { + if (window !== null) { + delete window.currentFrame; + delete window.currentTime; + } + } + }; +}; + +const createFetchSource = (createAbortError) => { + return async (url) => { + try { + const response = await fetch(url); + if (response.ok) { + return [await response.text(), response.url]; + } + } + catch { + // Ignore errors. + } // tslint:disable-line:no-empty + throw createAbortError(); + }; +}; + +const DEFAULT_OPTIONS$b = { + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + gain: 1 +}; +const createGainNodeConstructor = (audioNodeConstructor, createAudioParam, createGainNodeRenderer, createNativeGainNode, getNativeContext, isNativeOfflineAudioContext) => { + return class GainNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$b, ...options }; + const nativeGainNode = createNativeGainNode(nativeContext, mergedOptions); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const gainNodeRenderer = (isOffline ? createGainNodeRenderer() : null); + super(context, false, nativeGainNode, gainNodeRenderer); + // Bug #74: Safari does not export the correct values for maxValue and minValue. + this._gain = createAudioParam(this, isOffline, nativeGainNode.gain, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); + } + get gain() { + return this._gain; + } + }; +}; + +const createGainNodeRendererFactory = (connectAudioParam, createNativeGainNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { + return () => { + const renderedNativeGainNodes = new WeakMap(); + const createGainNode = async (proxy, nativeOfflineAudioContext) => { + let nativeGainNode = getNativeAudioNode(proxy); + // If the initially used nativeGainNode was not constructed on the same OfflineAudioContext it needs to be created again. + const nativeGainNodeIsOwnedByContext = isOwnedByContext(nativeGainNode, nativeOfflineAudioContext); + if (!nativeGainNodeIsOwnedByContext) { + const options = { + channelCount: nativeGainNode.channelCount, + channelCountMode: nativeGainNode.channelCountMode, + channelInterpretation: nativeGainNode.channelInterpretation, + gain: nativeGainNode.gain.value + }; + nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, options); + } + renderedNativeGainNodes.set(nativeOfflineAudioContext, nativeGainNode); + if (!nativeGainNodeIsOwnedByContext) { + await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain); + } + else { + await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain); + } + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeGainNode); + return nativeGainNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeGainNode = renderedNativeGainNodes.get(nativeOfflineAudioContext); + if (renderedNativeGainNode !== undefined) { + return Promise.resolve(renderedNativeGainNode); + } + return createGainNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const createGetActiveAudioWorkletNodeInputs = (activeAudioWorkletNodeInputsStore, getValueForKey) => { + return (nativeAudioWorkletNode) => getValueForKey(activeAudioWorkletNodeInputsStore, nativeAudioWorkletNode); +}; + +const createGetAudioNodeRenderer = (getAudioNodeConnections) => { + return (audioNode) => { + const audioNodeConnections = getAudioNodeConnections(audioNode); + if (audioNodeConnections.renderer === null) { + throw new Error('Missing the renderer of the given AudioNode in the audio graph.'); + } + return audioNodeConnections.renderer; + }; +}; + +const createGetAudioNodeTailTime = (audioNodeTailTimeStore) => { + return (audioNode) => { var _a; return (_a = audioNodeTailTimeStore.get(audioNode)) !== null && _a !== void 0 ? _a : 0; }; +}; + +const createGetAudioParamRenderer = (getAudioParamConnections) => { + return (audioParam) => { + const audioParamConnections = getAudioParamConnections(audioParam); + if (audioParamConnections.renderer === null) { + throw new Error('Missing the renderer of the given AudioParam in the audio graph.'); + } + return audioParamConnections.renderer; + }; +}; + +const createGetBackupOfflineAudioContext = (backupOfflineAudioContextStore) => { + return (nativeContext) => { + return backupOfflineAudioContextStore.get(nativeContext); + }; +}; + +const createInvalidStateError = () => new DOMException('', 'InvalidStateError'); + +const createGetNativeContext = (contextStore) => { + return (context) => { + const nativeContext = contextStore.get(context); + if (nativeContext === undefined) { + throw createInvalidStateError(); + } + return (nativeContext); + }; +}; + +const createGetOrCreateBackupOfflineAudioContext = (backupOfflineAudioContextStore, nativeOfflineAudioContextConstructor) => { + return (nativeContext) => { + let backupOfflineAudioContext = backupOfflineAudioContextStore.get(nativeContext); + if (backupOfflineAudioContext !== undefined) { + return backupOfflineAudioContext; + } + if (nativeOfflineAudioContextConstructor === null) { + throw new Error('Missing the native OfflineAudioContext constructor.'); + } + // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz. + backupOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); + backupOfflineAudioContextStore.set(nativeContext, backupOfflineAudioContext); + return backupOfflineAudioContext; + }; +}; + +const createGetUnrenderedAudioWorkletNodes = (unrenderedAudioWorkletNodeStore) => { + return (nativeContext) => { + const unrenderedAudioWorkletNodes = unrenderedAudioWorkletNodeStore.get(nativeContext); + if (unrenderedAudioWorkletNodes === undefined) { + throw new Error('The context has no set of AudioWorkletNodes.'); + } + return unrenderedAudioWorkletNodes; + }; +}; + +const createInvalidAccessError = () => new DOMException('', 'InvalidAccessError'); + +const wrapIIRFilterNodeGetFrequencyResponseMethod = (nativeIIRFilterNode) => { + nativeIIRFilterNode.getFrequencyResponse = ((getFrequencyResponse) => { + return (frequencyHz, magResponse, phaseResponse) => { + if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) { + throw createInvalidAccessError(); + } + return getFrequencyResponse.call(nativeIIRFilterNode, frequencyHz, magResponse, phaseResponse); + }; + })(nativeIIRFilterNode.getFrequencyResponse); +}; + +const DEFAULT_OPTIONS$c = { + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers' +}; +const createIIRFilterNodeConstructor = (audioNodeConstructor, createNativeIIRFilterNode, createIIRFilterNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { + return class IIRFilterNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const mergedOptions = { ...DEFAULT_OPTIONS$c, ...options }; + const nativeIIRFilterNode = createNativeIIRFilterNode(nativeContext, isOffline ? null : context.baseLatency, mergedOptions); + const iirFilterNodeRenderer = ((isOffline ? createIIRFilterNodeRenderer(mergedOptions.feedback, mergedOptions.feedforward) : null)); + super(context, false, nativeIIRFilterNode, iirFilterNodeRenderer); + // Bug #23 & #24: FirefoxDeveloper does not throw an InvalidAccessError. + // @todo Write a test which allows other browsers to remain unpatched. + wrapIIRFilterNodeGetFrequencyResponseMethod(nativeIIRFilterNode); + this._nativeIIRFilterNode = nativeIIRFilterNode; + // @todo Determine a meaningful tail-time instead of just using one second. + setAudioNodeTailTime(this, 1); + } + getFrequencyResponse(frequencyHz, magResponse, phaseResponse) { + return this._nativeIIRFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse); + } + }; +}; + +// This implementation as shamelessly inspired by source code of +// tslint:disable-next-line:max-line-length +// {@link https://chromium.googlesource.com/chromium/src.git/+/master/third_party/WebKit/Source/platform/audio/IIRFilter.cpp|Chromium's IIRFilter}. +const filterBuffer = (feedback, feedbackLength, feedforward, feedforwardLength, minLength, xBuffer, yBuffer, bufferIndex, bufferLength, input, output) => { + const inputLength = input.length; + let i = bufferIndex; + for (let j = 0; j < inputLength; j += 1) { + let y = feedforward[0] * input[j]; + for (let k = 1; k < minLength; k += 1) { + const x = (i - k) & (bufferLength - 1); // tslint:disable-line:no-bitwise + y += feedforward[k] * xBuffer[x]; + y -= feedback[k] * yBuffer[x]; + } + for (let k = minLength; k < feedforwardLength; k += 1) { + y += feedforward[k] * xBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise + } + for (let k = minLength; k < feedbackLength; k += 1) { + y -= feedback[k] * yBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise + } + xBuffer[i] = input[j]; + yBuffer[i] = y; + i = (i + 1) & (bufferLength - 1); // tslint:disable-line:no-bitwise + output[j] = y; + } + return i; +}; + +const filterFullBuffer = (renderedBuffer, nativeOfflineAudioContext, feedback, feedforward) => { + const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback); + const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward); + const feedbackLength = convertedFeedback.length; + const feedforwardLength = convertedFeedforward.length; + const minLength = Math.min(feedbackLength, feedforwardLength); + if (convertedFeedback[0] !== 1) { + for (let i = 0; i < feedbackLength; i += 1) { + convertedFeedforward[i] /= convertedFeedback[0]; + } + for (let i = 1; i < feedforwardLength; i += 1) { + convertedFeedback[i] /= convertedFeedback[0]; + } + } + const bufferLength = 32; + const xBuffer = new Float32Array(bufferLength); + const yBuffer = new Float32Array(bufferLength); + const filteredBuffer = nativeOfflineAudioContext.createBuffer(renderedBuffer.numberOfChannels, renderedBuffer.length, renderedBuffer.sampleRate); + const numberOfChannels = renderedBuffer.numberOfChannels; + for (let i = 0; i < numberOfChannels; i += 1) { + const input = renderedBuffer.getChannelData(i); + const output = filteredBuffer.getChannelData(i); + xBuffer.fill(0); + yBuffer.fill(0); + filterBuffer(convertedFeedback, feedbackLength, convertedFeedforward, feedforwardLength, minLength, xBuffer, yBuffer, 0, bufferLength, input, output); + } + return filteredBuffer; +}; +const createIIRFilterNodeRendererFactory = (createNativeAudioBufferSourceNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => { + return (feedback, feedforward) => { + const renderedNativeAudioNodes = new WeakMap(); + let filteredBufferPromise = null; + const createAudioNode = async (proxy, nativeOfflineAudioContext) => { + let nativeAudioBufferSourceNode = null; + let nativeIIRFilterNode = getNativeAudioNode(proxy); + // If the initially used nativeIIRFilterNode was not constructed on the same OfflineAudioContext it needs to be created again. + const nativeIIRFilterNodeIsOwnedByContext = isOwnedByContext(nativeIIRFilterNode, nativeOfflineAudioContext); + // Bug #9: Safari does not support IIRFilterNodes. + if (nativeOfflineAudioContext.createIIRFilter === undefined) { + nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, { + buffer: null, + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + loop: false, + loopEnd: 0, + loopStart: 0, + playbackRate: 1 + }); + } + else if (!nativeIIRFilterNodeIsOwnedByContext) { + // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers. + nativeIIRFilterNode = nativeOfflineAudioContext.createIIRFilter(feedforward, feedback); + } + renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioBufferSourceNode === null ? nativeIIRFilterNode : nativeAudioBufferSourceNode); + if (nativeAudioBufferSourceNode !== null) { + if (filteredBufferPromise === null) { + if (nativeOfflineAudioContextConstructor === null) { + throw new Error('Missing the native OfflineAudioContext constructor.'); + } + const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor( + // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly. + proxy.context.destination.channelCount, + // Bug #17: Safari does not yet expose the length. + proxy.context.length, nativeOfflineAudioContext.sampleRate); + filteredBufferPromise = (async () => { + await renderInputsOfAudioNode(proxy, partialOfflineAudioContext, partialOfflineAudioContext.destination); + const renderedBuffer = await renderNativeOfflineAudioContext(partialOfflineAudioContext); + return filterFullBuffer(renderedBuffer, nativeOfflineAudioContext, feedback, feedforward); + })(); + } + const filteredBuffer = await filteredBufferPromise; + nativeAudioBufferSourceNode.buffer = filteredBuffer; + nativeAudioBufferSourceNode.start(0); + return nativeAudioBufferSourceNode; + } + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeIIRFilterNode); + return nativeIIRFilterNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext); + if (renderedNativeAudioNode !== undefined) { + return Promise.resolve(renderedNativeAudioNode); + } + return createAudioNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const createIncrementCycleCounterFactory = (cycleCounters, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, isActiveAudioNode) => { + return (isOffline) => { + return (audioNode, count) => { + const cycleCounter = cycleCounters.get(audioNode); + if (cycleCounter === undefined) { + if (!isOffline && isActiveAudioNode(audioNode)) { + const nativeSourceAudioNode = getNativeAudioNode(audioNode); + const { outputs } = getAudioNodeConnections(audioNode); + for (const output of outputs) { + if (isAudioNodeOutputConnection(output)) { + const nativeDestinationAudioNode = getNativeAudioNode(output[0]); + disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]); + } + else { + const nativeDestinationAudioParam = getNativeAudioParam(output[0]); + nativeSourceAudioNode.disconnect(nativeDestinationAudioParam, output[1]); + } + } + } + cycleCounters.set(audioNode, count); + } + else { + cycleCounters.set(audioNode, cycleCounter + count); + } + }; + }; +}; + +const createIsAnyAudioContext = (contextStore, isNativeAudioContext) => { + return (anything) => { + const nativeContext = contextStore.get(anything); + return isNativeAudioContext(nativeContext) || isNativeAudioContext(anything); + }; +}; + +const createIsAnyAudioNode = (audioNodeStore, isNativeAudioNode) => { + return (anything) => audioNodeStore.has(anything) || isNativeAudioNode(anything); +}; + +const createIsAnyAudioParam = (audioParamStore, isNativeAudioParam) => { + return (anything) => audioParamStore.has(anything) || isNativeAudioParam(anything); +}; + +const createIsAnyOfflineAudioContext = (contextStore, isNativeOfflineAudioContext) => { + return (anything) => { + const nativeContext = contextStore.get(anything); + return isNativeOfflineAudioContext(nativeContext) || isNativeOfflineAudioContext(anything); + }; +}; + +const createIsNativeAudioContext = (nativeAudioContextConstructor) => { + return (anything) => { + return nativeAudioContextConstructor !== null && anything instanceof nativeAudioContextConstructor; + }; +}; + +const createIsNativeAudioNode = (window) => { + return (anything) => { + return window !== null && typeof window.AudioNode === 'function' && anything instanceof window.AudioNode; + }; +}; + +const createIsNativeAudioParam = (window) => { + return (anything) => { + return window !== null && typeof window.AudioParam === 'function' && anything instanceof window.AudioParam; + }; +}; + +const createIsNativeContext = (isNativeAudioContext, isNativeOfflineAudioContext) => { + return (anything) => { + return isNativeAudioContext(anything) || isNativeOfflineAudioContext(anything); + }; +}; + +const createIsNativeOfflineAudioContext = (nativeOfflineAudioContextConstructor) => { + return (anything) => { + return nativeOfflineAudioContextConstructor !== null && anything instanceof nativeOfflineAudioContextConstructor; + }; +}; + +const createIsSecureContext = (window) => window !== null && window.isSecureContext; + +const createIsSupportedPromise = async (cacheTestResult, testAudioBufferCopyChannelMethodsSubarraySupport, testAudioContextCloseMethodSupport, testAudioContextDecodeAudioDataMethodTypeErrorSupport, testAudioContextOptionsSupport, testAudioNodeConnectMethodSupport, testAudioWorkletProcessorNoOutputsSupport, testChannelMergerNodeChannelCountSupport, testConstantSourceNodeAccurateSchedulingSupport, testConvolverNodeBufferReassignabilitySupport, testConvolverNodeChannelCountSupport, testDomExceptionContrucorSupport, testIsSecureContextSupport, testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport, testStereoPannerNodeDefaultValueSupport, testTransferablesSupport) => { + if (cacheTestResult(testAudioBufferCopyChannelMethodsSubarraySupport, testAudioBufferCopyChannelMethodsSubarraySupport) && + cacheTestResult(testAudioContextCloseMethodSupport, testAudioContextCloseMethodSupport) && + cacheTestResult(testAudioContextOptionsSupport, testAudioContextOptionsSupport) && + cacheTestResult(testAudioNodeConnectMethodSupport, testAudioNodeConnectMethodSupport) && + cacheTestResult(testChannelMergerNodeChannelCountSupport, testChannelMergerNodeChannelCountSupport) && + cacheTestResult(testConstantSourceNodeAccurateSchedulingSupport, testConstantSourceNodeAccurateSchedulingSupport) && + cacheTestResult(testConvolverNodeBufferReassignabilitySupport, testConvolverNodeBufferReassignabilitySupport) && + cacheTestResult(testConvolverNodeChannelCountSupport, testConvolverNodeChannelCountSupport) && + cacheTestResult(testDomExceptionContrucorSupport, testDomExceptionContrucorSupport) && + cacheTestResult(testIsSecureContextSupport, testIsSecureContextSupport) && + cacheTestResult(testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport, testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport)) { + const results = await Promise.all([ + cacheTestResult(testAudioContextDecodeAudioDataMethodTypeErrorSupport, testAudioContextDecodeAudioDataMethodTypeErrorSupport), + cacheTestResult(testAudioWorkletProcessorNoOutputsSupport, testAudioWorkletProcessorNoOutputsSupport), + cacheTestResult(testStereoPannerNodeDefaultValueSupport, testStereoPannerNodeDefaultValueSupport), + cacheTestResult(testTransferablesSupport, testTransferablesSupport) + ]); + return results.every((result) => result); + } + return false; +}; + +const createMediaElementAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaElementAudioSourceNode, getNativeContext, isNativeOfflineAudioContext) => { + return class MediaElementAudioSourceNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const nativeMediaElementAudioSourceNode = createNativeMediaElementAudioSourceNode(nativeContext, options); + // Bug #171: Safari allows to create a MediaElementAudioSourceNode with an OfflineAudioContext. + if (isNativeOfflineAudioContext(nativeContext)) { + throw TypeError(); + } + super(context, true, nativeMediaElementAudioSourceNode, null); + this._nativeMediaElementAudioSourceNode = nativeMediaElementAudioSourceNode; + } + get mediaElement() { + return this._nativeMediaElementAudioSourceNode.mediaElement; + } + }; +}; + +const DEFAULT_OPTIONS$d = { + channelCount: 2, + channelCountMode: 'explicit', + channelInterpretation: 'speakers' +}; +const createMediaStreamAudioDestinationNodeConstructor = (audioNodeConstructor, createNativeMediaStreamAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext) => { + return class MediaStreamAudioDestinationNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + // Bug #173: Safari allows to create a MediaStreamAudioDestinationNode with an OfflineAudioContext. + if (isNativeOfflineAudioContext(nativeContext)) { + throw new TypeError(); + } + const mergedOptions = { ...DEFAULT_OPTIONS$d, ...options }; + const nativeMediaStreamAudioDestinationNode = createNativeMediaStreamAudioDestinationNode(nativeContext, mergedOptions); + super(context, false, nativeMediaStreamAudioDestinationNode, null); + this._nativeMediaStreamAudioDestinationNode = nativeMediaStreamAudioDestinationNode; + } + get stream() { + return this._nativeMediaStreamAudioDestinationNode.stream; + } + }; +}; + +const createMediaStreamAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaStreamAudioSourceNode, getNativeContext, isNativeOfflineAudioContext) => { + return class MediaStreamAudioSourceNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const nativeMediaStreamAudioSourceNode = createNativeMediaStreamAudioSourceNode(nativeContext, options); + // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext. + if (isNativeOfflineAudioContext(nativeContext)) { + throw new TypeError(); + } + super(context, true, nativeMediaStreamAudioSourceNode, null); + this._nativeMediaStreamAudioSourceNode = nativeMediaStreamAudioSourceNode; + } + get mediaStream() { + return this._nativeMediaStreamAudioSourceNode.mediaStream; + } + }; +}; + +const createMediaStreamTrackAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext) => { + return class MediaStreamTrackAudioSourceNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const nativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNode(nativeContext, options); + super(context, true, nativeMediaStreamTrackAudioSourceNode, null); + } + }; +}; + +const createMinimalBaseAudioContextConstructor = (audioDestinationNodeConstructor, createAudioListener, eventTargetConstructor, isNativeOfflineAudioContext, unrenderedAudioWorkletNodeStore, wrapEventListener) => { + return class MinimalBaseAudioContext extends eventTargetConstructor { + constructor(_nativeContext, numberOfChannels) { + super(_nativeContext); + this._nativeContext = _nativeContext; + CONTEXT_STORE.set(this, _nativeContext); + if (isNativeOfflineAudioContext(_nativeContext)) { + unrenderedAudioWorkletNodeStore.set(_nativeContext, new Set()); + } + this._destination = new audioDestinationNodeConstructor(this, numberOfChannels); + this._listener = createAudioListener(this, _nativeContext); + this._onstatechange = null; + } + get currentTime() { + return this._nativeContext.currentTime; + } + get destination() { + return this._destination; + } + get listener() { + return this._listener; + } + get onstatechange() { + return this._onstatechange; + } + set onstatechange(value) { + const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null; + this._nativeContext.onstatechange = wrappedListener; + const nativeOnStateChange = this._nativeContext.onstatechange; + this._onstatechange = nativeOnStateChange !== null && nativeOnStateChange === wrappedListener ? value : nativeOnStateChange; + } + get sampleRate() { + return this._nativeContext.sampleRate; + } + get state() { + return this._nativeContext.state; + } + }; +}; + +const testPromiseSupport = (nativeContext) => { + // This 12 numbers represent the 48 bytes of an empty WAVE file with a single sample. + const uint32Array = new Uint32Array([1179011410, 40, 1163280727, 544501094, 16, 131073, 44100, 176400, 1048580, 1635017060, 4, 0]); + try { + // Bug #1: Safari requires a successCallback. + const promise = nativeContext.decodeAudioData(uint32Array.buffer, () => { + // Ignore the success callback. + }); + if (promise === undefined) { + return false; + } + promise.catch(() => { + // Ignore rejected errors. + }); + return true; + } + catch { + // Ignore errors. + } + return false; +}; + +const createMonitorConnections = (insertElementInSet, isNativeAudioNode) => { + return (nativeAudioNode, whenConnected, whenDisconnected) => { + const connections = new Set(); + nativeAudioNode.connect = ((connect) => { + // tslint:disable-next-line:invalid-void no-inferrable-types + return (destination, output = 0, input = 0) => { + const wasDisconnected = connections.size === 0; + if (isNativeAudioNode(destination)) { + // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet. + connect.call(nativeAudioNode, destination, output, input); + insertElementInSet(connections, [destination, output, input], (connection) => connection[0] === destination && connection[1] === output && connection[2] === input, true); + if (wasDisconnected) { + whenConnected(); + } + return destination; + } + connect.call(nativeAudioNode, destination, output); + insertElementInSet(connections, [destination, output], (connection) => connection[0] === destination && connection[1] === output, true); + if (wasDisconnected) { + whenConnected(); + } + return; + }; + })(nativeAudioNode.connect); + nativeAudioNode.disconnect = ((disconnect) => { + return (destinationOrOutput, output, input) => { + const wasConnected = connections.size > 0; + if (destinationOrOutput === undefined) { + disconnect.apply(nativeAudioNode); + connections.clear(); + } + else if (typeof destinationOrOutput === 'number') { + // @todo TypeScript cannot infer the overloaded signature with 1 argument yet. + disconnect.call(nativeAudioNode, destinationOrOutput); + for (const connection of connections) { + if (connection[1] === destinationOrOutput) { + connections.delete(connection); + } + } + } + else { + if (isNativeAudioNode(destinationOrOutput)) { + // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet. + disconnect.call(nativeAudioNode, destinationOrOutput, output, input); + } + else { + // @todo TypeScript cannot infer the overloaded signature with 2 arguments yet. + disconnect.call(nativeAudioNode, destinationOrOutput, output); + } + for (const connection of connections) { + if (connection[0] === destinationOrOutput && + (output === undefined || connection[1] === output) && + (input === undefined || connection[2] === input)) { + connections.delete(connection); + } + } + } + const isDisconnected = connections.size === 0; + if (wasConnected && isDisconnected) { + whenDisconnected(); + } + }; + })(nativeAudioNode.disconnect); + return nativeAudioNode; + }; +}; + +const assignNativeAudioNodeOption = (nativeAudioNode, options, option) => { + const value = options[option]; + if (value !== undefined && value !== nativeAudioNode[option]) { + nativeAudioNode[option] = value; + } +}; + +const assignNativeAudioNodeOptions = (nativeAudioNode, options) => { + assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCount'); + assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCountMode'); + assignNativeAudioNodeOption(nativeAudioNode, options, 'channelInterpretation'); +}; + +const testAnalyserNodeGetFloatTimeDomainDataMethodSupport = (nativeAnalyserNode) => { + return typeof nativeAnalyserNode.getFloatTimeDomainData === 'function'; +}; + +const wrapAnalyserNodeGetFloatTimeDomainDataMethod = (nativeAnalyserNode) => { + nativeAnalyserNode.getFloatTimeDomainData = (array) => { + const byteTimeDomainData = new Uint8Array(array.length); + nativeAnalyserNode.getByteTimeDomainData(byteTimeDomainData); + const length = Math.max(byteTimeDomainData.length, nativeAnalyserNode.fftSize); + for (let i = 0; i < length; i += 1) { + array[i] = (byteTimeDomainData[i] - 128) * 0.0078125; + } + return array; + }; +}; + +const createNativeAnalyserNodeFactory = (cacheTestResult, createIndexSizeError) => { + return (nativeContext, options) => { + const nativeAnalyserNode = nativeContext.createAnalyser(); + // Bug #37: Firefox does not create an AnalyserNode with the default properties. + assignNativeAudioNodeOptions(nativeAnalyserNode, options); + // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels. + if (!(options.maxDecibels > options.minDecibels)) { + throw createIndexSizeError(); + } + assignNativeAudioNodeOption(nativeAnalyserNode, options, 'fftSize'); + assignNativeAudioNodeOption(nativeAnalyserNode, options, 'maxDecibels'); + assignNativeAudioNodeOption(nativeAnalyserNode, options, 'minDecibels'); + assignNativeAudioNodeOption(nativeAnalyserNode, options, 'smoothingTimeConstant'); + // Bug #36: Safari does not support getFloatTimeDomainData() yet. + if (!cacheTestResult(testAnalyserNodeGetFloatTimeDomainDataMethodSupport, () => testAnalyserNodeGetFloatTimeDomainDataMethodSupport(nativeAnalyserNode))) { + wrapAnalyserNodeGetFloatTimeDomainDataMethod(nativeAnalyserNode); + } + return nativeAnalyserNode; + }; +}; + +const createNativeAudioBufferConstructor = (window) => { + if (window === null) { + return null; + } + if (window.hasOwnProperty('AudioBuffer')) { + return window.AudioBuffer; + } + return null; +}; + +const assignNativeAudioNodeAudioParamValue = (nativeAudioNode, options, audioParam) => { + const value = options[audioParam]; + if (value !== undefined && value !== nativeAudioNode[audioParam].value) { + nativeAudioNode[audioParam].value = value; + } +}; + +const wrapAudioBufferSourceNodeStartMethodConsecutiveCalls = (nativeAudioBufferSourceNode) => { + nativeAudioBufferSourceNode.start = ((start) => { + let isScheduled = false; + return (when = 0, offset = 0, duration) => { + if (isScheduled) { + throw createInvalidStateError(); + } + start.call(nativeAudioBufferSourceNode, when, offset, duration); + isScheduled = true; + }; + })(nativeAudioBufferSourceNode.start); +}; + +const wrapAudioScheduledSourceNodeStartMethodNegativeParameters = (nativeAudioScheduledSourceNode) => { + nativeAudioScheduledSourceNode.start = ((start) => { + return (when = 0, offset = 0, duration) => { + if ((typeof duration === 'number' && duration < 0) || offset < 0 || when < 0) { + throw new RangeError("The parameters can't be negative."); + } + // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet. + start.call(nativeAudioScheduledSourceNode, when, offset, duration); + }; + })(nativeAudioScheduledSourceNode.start); +}; + +const wrapAudioScheduledSourceNodeStopMethodNegativeParameters = (nativeAudioScheduledSourceNode) => { + nativeAudioScheduledSourceNode.stop = ((stop) => { + return (when = 0) => { + if (when < 0) { + throw new RangeError("The parameter can't be negative."); + } + stop.call(nativeAudioScheduledSourceNode, when); + }; + })(nativeAudioScheduledSourceNode.stop); +}; + +const createNativeAudioBufferSourceNodeFactory = (addSilentConnection, cacheTestResult, testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, testAudioBufferSourceNodeStartMethodOffsetClampingSupport, testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioBufferSourceNodeStartMethodOffsetClampling, wrapAudioBufferSourceNodeStopMethodNullifiedBuffer, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls) => { + return (nativeContext, options) => { + const nativeAudioBufferSourceNode = nativeContext.createBufferSource(); + assignNativeAudioNodeOptions(nativeAudioBufferSourceNode, options); + assignNativeAudioNodeAudioParamValue(nativeAudioBufferSourceNode, options, 'playbackRate'); + assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'buffer'); + // Bug #149: Safari does not yet support the detune AudioParam. + assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loop'); + assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopEnd'); + assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopStart'); + // Bug #69: Safari does allow calls to start() of an already scheduled AudioBufferSourceNode. + if (!cacheTestResult(testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, () => testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport(nativeContext))) { + wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(nativeAudioBufferSourceNode); + } + // Bug #154 & #155: Safari does not handle offsets which are equal to or greater than the duration of the buffer. + if (!cacheTestResult(testAudioBufferSourceNodeStartMethodOffsetClampingSupport, () => testAudioBufferSourceNodeStartMethodOffsetClampingSupport(nativeContext))) { + wrapAudioBufferSourceNodeStartMethodOffsetClampling(nativeAudioBufferSourceNode); + } + // Bug #162: Safari does throw an error when stop() is called on an AudioBufferSourceNode which has no buffer assigned to it. + if (!cacheTestResult(testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, () => testAudioBufferSourceNodeStopMethodNullifiedBufferSupport(nativeContext))) { + wrapAudioBufferSourceNodeStopMethodNullifiedBuffer(nativeAudioBufferSourceNode, nativeContext); + } + // Bug #44: Safari does not throw a RangeError yet. + if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) { + wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeAudioBufferSourceNode); + } + // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode. + if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () => testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext))) { + wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeAudioBufferSourceNode, nativeContext); + } + // Bug #44: Only Firefox does not throw a RangeError yet. + if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) { + wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeAudioBufferSourceNode); + } + // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected. + addSilentConnection(nativeContext, nativeAudioBufferSourceNode); + return nativeAudioBufferSourceNode; + }; +}; + +const createNativeAudioContextConstructor = (window) => { + if (window === null) { + return null; + } + if (window.hasOwnProperty('AudioContext')) { + return window.AudioContext; + } + return window.hasOwnProperty('webkitAudioContext') ? window.webkitAudioContext : null; +}; + +const createNativeAudioDestinationNodeFactory = (createNativeGainNode, overwriteAccessors) => { + return (nativeContext, channelCount, isNodeOfNativeOfflineAudioContext) => { + const nativeAudioDestinationNode = nativeContext.destination; + // Bug #132: Safari does not have the correct channelCount. + if (nativeAudioDestinationNode.channelCount !== channelCount) { + try { + nativeAudioDestinationNode.channelCount = channelCount; + } + catch { + // Bug #169: Safari throws an error on each attempt to change the channelCount. + } + } + // Bug #83: Safari does not have the correct channelCountMode. + if (isNodeOfNativeOfflineAudioContext && nativeAudioDestinationNode.channelCountMode !== 'explicit') { + nativeAudioDestinationNode.channelCountMode = 'explicit'; + } + // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly. + if (nativeAudioDestinationNode.maxChannelCount === 0) { + Object.defineProperty(nativeAudioDestinationNode, 'maxChannelCount', { + value: channelCount + }); + } + // Bug #168: No browser does yet have an AudioDestinationNode with an output. + const gainNode = createNativeGainNode(nativeContext, { + channelCount, + channelCountMode: nativeAudioDestinationNode.channelCountMode, + channelInterpretation: nativeAudioDestinationNode.channelInterpretation, + gain: 1 + }); + overwriteAccessors(gainNode, 'channelCount', (get) => () => get.call(gainNode), (set) => (value) => { + set.call(gainNode, value); + try { + nativeAudioDestinationNode.channelCount = value; + } + catch (err) { + // Bug #169: Safari throws an error on each attempt to change the channelCount. + if (value > nativeAudioDestinationNode.maxChannelCount) { + throw err; + } + } + }); + overwriteAccessors(gainNode, 'channelCountMode', (get) => () => get.call(gainNode), (set) => (value) => { + set.call(gainNode, value); + nativeAudioDestinationNode.channelCountMode = value; + }); + overwriteAccessors(gainNode, 'channelInterpretation', (get) => () => get.call(gainNode), (set) => (value) => { + set.call(gainNode, value); + nativeAudioDestinationNode.channelInterpretation = value; + }); + Object.defineProperty(gainNode, 'maxChannelCount', { + get: () => nativeAudioDestinationNode.maxChannelCount + }); + // @todo This should be disconnected when the context is closed. + gainNode.connect(nativeAudioDestinationNode); + return gainNode; + }; +}; + +const createNativeAudioWorkletNodeConstructor = (window) => { + if (window === null) { + return null; + } + return window.hasOwnProperty('AudioWorkletNode') ? window.AudioWorkletNode : null; +}; + +const testClonabilityOfAudioWorkletNodeOptions = (audioWorkletNodeOptions) => { + const { port1 } = new MessageChannel(); + try { + // This will throw an error if the audioWorkletNodeOptions are not clonable. + port1.postMessage(audioWorkletNodeOptions); + } + finally { + port1.close(); + } +}; + +const createNativeAudioWorkletNodeFactory = (createInvalidStateError, createNativeAudioWorkletNodeFaker, createNativeGainNode, createNotSupportedError, monitorConnections) => { + return (nativeContext, baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, options) => { + if (nativeAudioWorkletNodeConstructor !== null) { + try { + const nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeContext, name, options); + const patchedEventListeners = new Map(); + let onprocessorerror = null; + Object.defineProperties(nativeAudioWorkletNode, { + /* + * Bug #61: Overwriting the property accessors for channelCount and channelCountMode is necessary as long as some + * browsers have no native implementation to achieve a consistent behavior. + */ + channelCount: { + get: () => options.channelCount, + set: () => { + throw createInvalidStateError(); + } + }, + channelCountMode: { + get: () => 'explicit', + set: () => { + throw createInvalidStateError(); + } + }, + // Bug #156: Chrome and Edge do not yet fire an ErrorEvent. + onprocessorerror: { + get: () => onprocessorerror, + set: (value) => { + if (typeof onprocessorerror === 'function') { + nativeAudioWorkletNode.removeEventListener('processorerror', onprocessorerror); + } + onprocessorerror = typeof value === 'function' ? value : null; + if (typeof onprocessorerror === 'function') { + nativeAudioWorkletNode.addEventListener('processorerror', onprocessorerror); + } + } + } + }); + nativeAudioWorkletNode.addEventListener = ((addEventListener) => { + return (...args) => { + if (args[0] === 'processorerror') { + const unpatchedEventListener = typeof args[1] === 'function' + ? args[1] + : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function' + ? args[1].handleEvent + : null; + if (unpatchedEventListener !== null) { + const patchedEventListener = patchedEventListeners.get(args[1]); + if (patchedEventListener !== undefined) { + args[1] = patchedEventListener; + } + else { + args[1] = (event) => { + // Bug #178: Chrome, Edge and Opera do fire an event of type error. + if (event.type === 'error') { + Object.defineProperties(event, { + type: { value: 'processorerror' } + }); + unpatchedEventListener(event); + } + else { + unpatchedEventListener(new ErrorEvent(args[0], { ...event })); + } + }; + patchedEventListeners.set(unpatchedEventListener, args[1]); + } + } + } + // Bug #178: Chrome, Edge and Opera do fire an event of type error. + addEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]); + return addEventListener.call(nativeAudioWorkletNode, ...args); + }; + })(nativeAudioWorkletNode.addEventListener); + nativeAudioWorkletNode.removeEventListener = ((removeEventListener) => { + return (...args) => { + if (args[0] === 'processorerror') { + const patchedEventListener = patchedEventListeners.get(args[1]); + if (patchedEventListener !== undefined) { + patchedEventListeners.delete(args[1]); + args[1] = patchedEventListener; + } + } + // Bug #178: Chrome, Edge and Opera do fire an event of type error. + removeEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]); + return removeEventListener.call(nativeAudioWorkletNode, args[0], args[1], args[2]); + }; + })(nativeAudioWorkletNode.removeEventListener); + /* + * Bug #86: Chrome and Edge do not invoke the process() function if the corresponding AudioWorkletNode is unconnected but + * has an output. + */ + if (options.numberOfOutputs !== 0) { + const nativeGainNode = createNativeGainNode(nativeContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + gain: 0 + }); + nativeAudioWorkletNode.connect(nativeGainNode).connect(nativeContext.destination); + const whenConnected = () => nativeGainNode.disconnect(); + const whenDisconnected = () => nativeGainNode.connect(nativeContext.destination); + // @todo Disconnect the connection when the process() function of the AudioWorkletNode returns false. + return monitorConnections(nativeAudioWorkletNode, whenConnected, whenDisconnected); + } + return nativeAudioWorkletNode; + } + catch (err) { + // Bug #60: Chrome, Edge & Opera throw an InvalidStateError instead of a NotSupportedError. + if (err.code === 11) { + throw createNotSupportedError(); + } + throw err; + } + } + // Bug #61: Only Chrome & Opera have an implementation of the AudioWorkletNode yet. + if (processorConstructor === undefined) { + throw createNotSupportedError(); + } + testClonabilityOfAudioWorkletNodeOptions(options); + return createNativeAudioWorkletNodeFaker(nativeContext, baseLatency, processorConstructor, options); + }; +}; + +const computeBufferSize = (baseLatency, sampleRate) => { + if (baseLatency === null) { + return 512; + } + return Math.max(512, Math.min(16384, Math.pow(2, Math.round(Math.log2(baseLatency * sampleRate))))); +}; + +const cloneAudioWorkletNodeOptions = (audioWorkletNodeOptions) => { + return new Promise((resolve, reject) => { + const { port1, port2 } = new MessageChannel(); + port1.onmessage = ({ data }) => { + port1.close(); + port2.close(); + resolve(data); + }; + port1.onmessageerror = ({ data }) => { + port1.close(); + port2.close(); + reject(data); + }; + // This will throw an error if the audioWorkletNodeOptions are not clonable. + port2.postMessage(audioWorkletNodeOptions); + }); +}; + +const createAudioWorkletProcessorPromise = async (processorConstructor, audioWorkletNodeOptions) => { + const clonedAudioWorkletNodeOptions = await cloneAudioWorkletNodeOptions(audioWorkletNodeOptions); + return new processorConstructor(clonedAudioWorkletNodeOptions); +}; + +const createAudioWorkletProcessor = (nativeContext, nativeAudioWorkletNode, processorConstructor, audioWorkletNodeOptions) => { + let nodeToProcessorMap = NODE_TO_PROCESSOR_MAPS.get(nativeContext); + if (nodeToProcessorMap === undefined) { + nodeToProcessorMap = new WeakMap(); + NODE_TO_PROCESSOR_MAPS.set(nativeContext, nodeToProcessorMap); + } + const audioWorkletProcessorPromise = createAudioWorkletProcessorPromise(processorConstructor, audioWorkletNodeOptions); + nodeToProcessorMap.set(nativeAudioWorkletNode, audioWorkletProcessorPromise); + return audioWorkletProcessorPromise; +}; + +const createNativeAudioWorkletNodeFakerFactory = (connectMultipleOutputs, createIndexSizeError, createInvalidStateError, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, createNativeScriptProcessorNode, createNotSupportedError, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getActiveAudioWorkletNodeInputs, monitorConnections) => { + return (nativeContext, baseLatency, processorConstructor, options) => { + if (options.numberOfInputs === 0 && options.numberOfOutputs === 0) { + throw createNotSupportedError(); + } + const outputChannelCount = Array.isArray(options.outputChannelCount) + ? options.outputChannelCount + : Array.from(options.outputChannelCount); + // @todo Check if any of the channelCount values is greater than the implementation's maximum number of channels. + if (outputChannelCount.some((channelCount) => channelCount < 1)) { + throw createNotSupportedError(); + } + if (outputChannelCount.length !== options.numberOfOutputs) { + throw createIndexSizeError(); + } + // Bug #61: This is not part of the standard but required for the faker to work. + if (options.channelCountMode !== 'explicit') { + throw createNotSupportedError(); + } + const numberOfInputChannels = options.channelCount * options.numberOfInputs; + const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0); + const numberOfParameters = processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length; + // Bug #61: This is not part of the standard but required for the faker to work. + if (numberOfInputChannels + numberOfParameters > 6 || numberOfOutputChannels > 6) { + throw createNotSupportedError(); + } + const messageChannel = new MessageChannel(); + const gainNodes = []; + const inputChannelSplitterNodes = []; + for (let i = 0; i < options.numberOfInputs; i += 1) { + gainNodes.push(createNativeGainNode(nativeContext, { + channelCount: options.channelCount, + channelCountMode: options.channelCountMode, + channelInterpretation: options.channelInterpretation, + gain: 1 + })); + inputChannelSplitterNodes.push(createNativeChannelSplitterNode(nativeContext, { + channelCount: options.channelCount, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + numberOfOutputs: options.channelCount + })); + } + const constantSourceNodes = []; + if (processorConstructor.parameterDescriptors !== undefined) { + for (const { defaultValue, maxValue, minValue, name } of processorConstructor.parameterDescriptors) { + const constantSourceNode = createNativeConstantSourceNode(nativeContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + offset: options.parameterData[name] !== undefined + ? options.parameterData[name] + : defaultValue === undefined + ? 0 + : defaultValue + }); + Object.defineProperties(constantSourceNode.offset, { + defaultValue: { + get: () => (defaultValue === undefined ? 0 : defaultValue) + }, + maxValue: { + get: () => (maxValue === undefined ? MOST_POSITIVE_SINGLE_FLOAT : maxValue) + }, + minValue: { + get: () => (minValue === undefined ? MOST_NEGATIVE_SINGLE_FLOAT : minValue) + } + }); + constantSourceNodes.push(constantSourceNode); + } + } + const inputChannelMergerNode = createNativeChannelMergerNode(nativeContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'speakers', + numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters) + }); + const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate); + const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, bufferSize, numberOfInputChannels + numberOfParameters, + // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output. + Math.max(1, numberOfOutputChannels)); + const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, { + channelCount: Math.max(1, numberOfOutputChannels), + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + numberOfOutputs: Math.max(1, numberOfOutputChannels) + }); + const outputChannelMergerNodes = []; + for (let i = 0; i < options.numberOfOutputs; i += 1) { + outputChannelMergerNodes.push(createNativeChannelMergerNode(nativeContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'speakers', + numberOfInputs: outputChannelCount[i] + })); + } + for (let i = 0; i < options.numberOfInputs; i += 1) { + gainNodes[i].connect(inputChannelSplitterNodes[i]); + for (let j = 0; j < options.channelCount; j += 1) { + inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j); + } + } + const parameterMap = new ReadOnlyMap(processorConstructor.parameterDescriptors === undefined + ? [] + : processorConstructor.parameterDescriptors.map(({ name }, index) => { + const constantSourceNode = constantSourceNodes[index]; + constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index); + constantSourceNode.start(0); + return [name, constantSourceNode.offset]; + })); + inputChannelMergerNode.connect(scriptProcessorNode); + let channelInterpretation = options.channelInterpretation; + let onprocessorerror = null; + // Bug #87: Expose at least one output to make this node connectable. + const outputAudioNodes = options.numberOfOutputs === 0 ? [scriptProcessorNode] : outputChannelMergerNodes; + const nativeAudioWorkletNodeFaker = { + get bufferSize() { + return bufferSize; + }, + get channelCount() { + return options.channelCount; + }, + set channelCount(_) { + // Bug #61: This is not part of the standard but required for the faker to work. + throw createInvalidStateError(); + }, + get channelCountMode() { + return options.channelCountMode; + }, + set channelCountMode(_) { + // Bug #61: This is not part of the standard but required for the faker to work. + throw createInvalidStateError(); + }, + get channelInterpretation() { + return channelInterpretation; + }, + set channelInterpretation(value) { + for (const gainNode of gainNodes) { + gainNode.channelInterpretation = value; + } + channelInterpretation = value; + }, + get context() { + return scriptProcessorNode.context; + }, + get inputs() { + return gainNodes; + }, + get numberOfInputs() { + return options.numberOfInputs; + }, + get numberOfOutputs() { + return options.numberOfOutputs; + }, + get onprocessorerror() { + return onprocessorerror; + }, + set onprocessorerror(value) { + if (typeof onprocessorerror === 'function') { + nativeAudioWorkletNodeFaker.removeEventListener('processorerror', onprocessorerror); + } + onprocessorerror = typeof value === 'function' ? value : null; + if (typeof onprocessorerror === 'function') { + nativeAudioWorkletNodeFaker.addEventListener('processorerror', onprocessorerror); + } + }, + get parameters() { + return parameterMap; + }, + get port() { + return messageChannel.port2; + }, + addEventListener(...args) { + return scriptProcessorNode.addEventListener(args[0], args[1], args[2]); + }, + connect: connectMultipleOutputs.bind(null, outputAudioNodes), + disconnect: disconnectMultipleOutputs.bind(null, outputAudioNodes), + dispatchEvent(...args) { + return scriptProcessorNode.dispatchEvent(args[0]); + }, + removeEventListener(...args) { + return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]); + } + }; + const patchedEventListeners = new Map(); + messageChannel.port1.addEventListener = ((addEventListener) => { + return (...args) => { + if (args[0] === 'message') { + const unpatchedEventListener = typeof args[1] === 'function' + ? args[1] + : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function' + ? args[1].handleEvent + : null; + if (unpatchedEventListener !== null) { + const patchedEventListener = patchedEventListeners.get(args[1]); + if (patchedEventListener !== undefined) { + args[1] = patchedEventListener; + } + else { + args[1] = (event) => { + exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () => unpatchedEventListener(event)); + }; + patchedEventListeners.set(unpatchedEventListener, args[1]); + } + } + } + return addEventListener.call(messageChannel.port1, args[0], args[1], args[2]); + }; + })(messageChannel.port1.addEventListener); + messageChannel.port1.removeEventListener = ((removeEventListener) => { + return (...args) => { + if (args[0] === 'message') { + const patchedEventListener = patchedEventListeners.get(args[1]); + if (patchedEventListener !== undefined) { + patchedEventListeners.delete(args[1]); + args[1] = patchedEventListener; + } + } + return removeEventListener.call(messageChannel.port1, args[0], args[1], args[2]); + }; + })(messageChannel.port1.removeEventListener); + let onmessage = null; + Object.defineProperty(messageChannel.port1, 'onmessage', { + get: () => onmessage, + set: (value) => { + if (typeof onmessage === 'function') { + messageChannel.port1.removeEventListener('message', onmessage); + } + onmessage = typeof value === 'function' ? value : null; + if (typeof onmessage === 'function') { + messageChannel.port1.addEventListener('message', onmessage); + messageChannel.port1.start(); + } + } + }); + processorConstructor.prototype.port = messageChannel.port1; + let audioWorkletProcessor = null; + const audioWorkletProcessorPromise = createAudioWorkletProcessor(nativeContext, nativeAudioWorkletNodeFaker, processorConstructor, options); + audioWorkletProcessorPromise.then((dWrkltPrcssr) => (audioWorkletProcessor = dWrkltPrcssr)); + const inputs = createNestedArrays(options.numberOfInputs, options.channelCount); + const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount); + const parameters = processorConstructor.parameterDescriptors === undefined + ? [] + : processorConstructor.parameterDescriptors.reduce((prmtrs, { name }) => ({ ...prmtrs, [name]: new Float32Array(128) }), {}); + let isActive = true; + const disconnectOutputsGraph = () => { + if (options.numberOfOutputs > 0) { + scriptProcessorNode.disconnect(outputChannelSplitterNode); + } + for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) { + const outputChannelMergerNode = outputChannelMergerNodes[i]; + for (let j = 0; j < outputChannelCount[i]; j += 1) { + outputChannelSplitterNode.disconnect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j); + } + outputChannelSplitterNodeOutput += outputChannelCount[i]; + } + }; + const activeInputIndexes = new Map(); + // tslint:disable-next-line:deprecation + scriptProcessorNode.onaudioprocess = ({ inputBuffer, outputBuffer }) => { + if (audioWorkletProcessor !== null) { + const activeInputs = getActiveAudioWorkletNodeInputs(nativeAudioWorkletNodeFaker); + for (let i = 0; i < bufferSize; i += 128) { + for (let j = 0; j < options.numberOfInputs; j += 1) { + for (let k = 0; k < options.channelCount; k += 1) { + copyFromChannel(inputBuffer, inputs[j], k, k, i); + } + } + if (processorConstructor.parameterDescriptors !== undefined) { + processorConstructor.parameterDescriptors.forEach(({ name }, index) => { + copyFromChannel(inputBuffer, parameters, name, numberOfInputChannels + index, i); + }); + } + for (let j = 0; j < options.numberOfInputs; j += 1) { + for (let k = 0; k < outputChannelCount[j]; k += 1) { + // The byteLength will be 0 when the ArrayBuffer was transferred. + if (outputs[j][k].byteLength === 0) { + outputs[j][k] = new Float32Array(128); + } + } + } + try { + const potentiallyEmptyInputs = inputs.map((input, index) => { + const activeInput = activeInputs[index]; + if (activeInput.size > 0) { + activeInputIndexes.set(index, bufferSize / 128); + return input; + } + const count = activeInputIndexes.get(index); + if (count === undefined) { + return []; + } + if (input.every((channelData) => channelData.every((sample) => sample === 0))) { + if (count === 1) { + activeInputIndexes.delete(index); + } + else { + activeInputIndexes.set(index, count - 1); + } + } + return input; + }); + const activeSourceFlag = exposeCurrentFrameAndCurrentTime(nativeContext.currentTime + i / nativeContext.sampleRate, nativeContext.sampleRate, () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters)); + isActive = activeSourceFlag; + for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) { + for (let k = 0; k < outputChannelCount[j]; k += 1) { + copyToChannel(outputBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i); + } + outputChannelSplitterNodeOutput += outputChannelCount[j]; + } + } + catch (error) { + isActive = false; + nativeAudioWorkletNodeFaker.dispatchEvent(new ErrorEvent('processorerror', { + colno: error.colno, + filename: error.filename, + lineno: error.lineno, + message: error.message + })); + } + if (!isActive) { + for (let j = 0; j < options.numberOfInputs; j += 1) { + gainNodes[j].disconnect(inputChannelSplitterNodes[j]); + for (let k = 0; k < options.channelCount; k += 1) { + inputChannelSplitterNodes[i].disconnect(inputChannelMergerNode, k, j * options.channelCount + k); + } + } + if (processorConstructor.parameterDescriptors !== undefined) { + const length = processorConstructor.parameterDescriptors.length; + for (let j = 0; j < length; j += 1) { + const constantSourceNode = constantSourceNodes[j]; + constantSourceNode.disconnect(inputChannelMergerNode, 0, numberOfInputChannels + j); + constantSourceNode.stop(); + } + } + inputChannelMergerNode.disconnect(scriptProcessorNode); + scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation + if (isConnected) { + disconnectOutputsGraph(); + } + else { + disconnectFakeGraph(); + } + break; + } + } + } + }; + let isConnected = false; + // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output. + const nativeGainNode = createNativeGainNode(nativeContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + gain: 0 + }); + const connectFakeGraph = () => scriptProcessorNode.connect(nativeGainNode).connect(nativeContext.destination); + const disconnectFakeGraph = () => { + scriptProcessorNode.disconnect(nativeGainNode); + nativeGainNode.disconnect(); + }; + const whenConnected = () => { + if (isActive) { + disconnectFakeGraph(); + if (options.numberOfOutputs > 0) { + scriptProcessorNode.connect(outputChannelSplitterNode); + } + for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) { + const outputChannelMergerNode = outputChannelMergerNodes[i]; + for (let j = 0; j < outputChannelCount[i]; j += 1) { + outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j); + } + outputChannelSplitterNodeOutput += outputChannelCount[i]; + } + } + isConnected = true; + }; + const whenDisconnected = () => { + if (isActive) { + connectFakeGraph(); + disconnectOutputsGraph(); + } + isConnected = false; + }; + connectFakeGraph(); + return monitorConnections(nativeAudioWorkletNodeFaker, whenConnected, whenDisconnected); + }; +}; + +const createNativeBiquadFilterNode = (nativeContext, options) => { + const nativeBiquadFilterNode = nativeContext.createBiquadFilter(); + assignNativeAudioNodeOptions(nativeBiquadFilterNode, options); + assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'Q'); + assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'detune'); + assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'frequency'); + assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'gain'); + assignNativeAudioNodeOption(nativeBiquadFilterNode, options, 'type'); + return nativeBiquadFilterNode; +}; + +const createNativeChannelMergerNodeFactory = (nativeAudioContextConstructor, wrapChannelMergerNode) => { + return (nativeContext, options) => { + const nativeChannelMergerNode = nativeContext.createChannelMerger(options.numberOfInputs); + /* + * Bug #20: Safari requires a connection of any kind to treat the input signal correctly. + * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of + * the webkitAudioContext is used as a workaround here. + */ + if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') { + wrapChannelMergerNode(nativeContext, nativeChannelMergerNode); + } + assignNativeAudioNodeOptions(nativeChannelMergerNode, options); + return nativeChannelMergerNode; + }; +}; + +const wrapChannelSplitterNode = (channelSplitterNode) => { + const channelCount = channelSplitterNode.numberOfOutputs; + // Bug #97: Safari does not throw an error when attempting to change the channelCount to something other than its initial value. + Object.defineProperty(channelSplitterNode, 'channelCount', { + get: () => channelCount, + set: (value) => { + if (value !== channelCount) { + throw createInvalidStateError(); + } + } + }); + // Bug #30: Safari does not throw an error when attempting to change the channelCountMode to something other than explicit. + Object.defineProperty(channelSplitterNode, 'channelCountMode', { + get: () => 'explicit', + set: (value) => { + if (value !== 'explicit') { + throw createInvalidStateError(); + } + } + }); + // Bug #32: Safari does not throw an error when attempting to change the channelInterpretation to something other than discrete. + Object.defineProperty(channelSplitterNode, 'channelInterpretation', { + get: () => 'discrete', + set: (value) => { + if (value !== 'discrete') { + throw createInvalidStateError(); + } + } + }); +}; + +const createNativeChannelSplitterNode = (nativeContext, options) => { + const nativeChannelSplitterNode = nativeContext.createChannelSplitter(options.numberOfOutputs); + // Bug #96: Safari does not have the correct channelCount. + // Bug #29: Safari does not have the correct channelCountMode. + // Bug #31: Safari does not have the correct channelInterpretation. + assignNativeAudioNodeOptions(nativeChannelSplitterNode, options); + // Bug #29, #30, #31, #32, #96 & #97: Only Chrome, Edge, Firefox & Opera partially support the spec yet. + wrapChannelSplitterNode(nativeChannelSplitterNode); + return nativeChannelSplitterNode; +}; + +const createNativeConstantSourceNodeFactory = (addSilentConnection, cacheTestResult, createNativeConstantSourceNodeFaker, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport) => { + return (nativeContext, options) => { + // Bug #62: Safari does not support ConstantSourceNodes. + if (nativeContext.createConstantSource === undefined) { + return createNativeConstantSourceNodeFaker(nativeContext, options); + } + const nativeConstantSourceNode = nativeContext.createConstantSource(); + assignNativeAudioNodeOptions(nativeConstantSourceNode, options); + assignNativeAudioNodeAudioParamValue(nativeConstantSourceNode, options, 'offset'); + // Bug #44: Safari does not throw a RangeError yet. + if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) { + wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeConstantSourceNode); + } + // Bug #44: Only Firefox does not throw a RangeError yet. + if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) { + wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeConstantSourceNode); + } + // Bug #175: Safari will not fire an ended event if the ConstantSourceNode is unconnected. + addSilentConnection(nativeContext, nativeConstantSourceNode); + return nativeConstantSourceNode; + }; +}; + +const interceptConnections = (original, interceptor) => { + original.connect = interceptor.connect.bind(interceptor); + original.disconnect = interceptor.disconnect.bind(interceptor); + return original; +}; + +const createNativeConstantSourceNodeFakerFactory = (addSilentConnection, createNativeAudioBufferSourceNode, createNativeGainNode, monitorConnections) => { + return (nativeContext, { offset, ...audioNodeOptions }) => { + const audioBuffer = nativeContext.createBuffer(1, 2, 44100); + const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, { + buffer: null, + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + loop: false, + loopEnd: 0, + loopStart: 0, + playbackRate: 1 + }); + const gainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: offset }); + // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). + const channelData = audioBuffer.getChannelData(0); + // Bug #95: Safari does not play or loop one sample buffers. + channelData[0] = 1; + channelData[1] = 1; + audioBufferSourceNode.buffer = audioBuffer; + audioBufferSourceNode.loop = true; + const nativeConstantSourceNodeFaker = { + get bufferSize() { + return undefined; + }, + get channelCount() { + return gainNode.channelCount; + }, + set channelCount(value) { + gainNode.channelCount = value; + }, + get channelCountMode() { + return gainNode.channelCountMode; + }, + set channelCountMode(value) { + gainNode.channelCountMode = value; + }, + get channelInterpretation() { + return gainNode.channelInterpretation; + }, + set channelInterpretation(value) { + gainNode.channelInterpretation = value; + }, + get context() { + return gainNode.context; + }, + get inputs() { + return []; + }, + get numberOfInputs() { + return audioBufferSourceNode.numberOfInputs; + }, + get numberOfOutputs() { + return gainNode.numberOfOutputs; + }, + get offset() { + return gainNode.gain; + }, + get onended() { + return audioBufferSourceNode.onended; + }, + set onended(value) { + audioBufferSourceNode.onended = value; + }, + addEventListener(...args) { + return audioBufferSourceNode.addEventListener(args[0], args[1], args[2]); + }, + dispatchEvent(...args) { + return audioBufferSourceNode.dispatchEvent(args[0]); + }, + removeEventListener(...args) { + return audioBufferSourceNode.removeEventListener(args[0], args[1], args[2]); + }, + start(when = 0) { + audioBufferSourceNode.start.call(audioBufferSourceNode, when); + }, + stop(when = 0) { + audioBufferSourceNode.stop.call(audioBufferSourceNode, when); + } + }; + const whenConnected = () => audioBufferSourceNode.connect(gainNode); + const whenDisconnected = () => audioBufferSourceNode.disconnect(gainNode); + // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected. + addSilentConnection(nativeContext, audioBufferSourceNode); + return monitorConnections(interceptConnections(nativeConstantSourceNodeFaker, gainNode), whenConnected, whenDisconnected); + }; +}; + +const createNativeConvolverNodeFactory = (createNotSupportedError, overwriteAccessors) => { + return (nativeContext, options) => { + const nativeConvolverNode = nativeContext.createConvolver(); + assignNativeAudioNodeOptions(nativeConvolverNode, options); + // The normalize property needs to be set before setting the buffer. + if (options.disableNormalization === nativeConvolverNode.normalize) { + nativeConvolverNode.normalize = !options.disableNormalization; + } + assignNativeAudioNodeOption(nativeConvolverNode, options, 'buffer'); + // Bug #113: Safari does allow to set the channelCount to a value larger than 2. + if (options.channelCount > 2) { + throw createNotSupportedError(); + } + overwriteAccessors(nativeConvolverNode, 'channelCount', (get) => () => get.call(nativeConvolverNode), (set) => (value) => { + if (value > 2) { + throw createNotSupportedError(); + } + return set.call(nativeConvolverNode, value); + }); + // Bug #114: Safari allows to set the channelCountMode to 'max'. + if (options.channelCountMode === 'max') { + throw createNotSupportedError(); + } + overwriteAccessors(nativeConvolverNode, 'channelCountMode', (get) => () => get.call(nativeConvolverNode), (set) => (value) => { + if (value === 'max') { + throw createNotSupportedError(); + } + return set.call(nativeConvolverNode, value); + }); + return nativeConvolverNode; + }; +}; + +const createNativeDelayNode = (nativeContext, options) => { + const nativeDelayNode = nativeContext.createDelay(options.maxDelayTime); + assignNativeAudioNodeOptions(nativeDelayNode, options); + assignNativeAudioNodeAudioParamValue(nativeDelayNode, options, 'delayTime'); + return nativeDelayNode; +}; + +const createNativeDynamicsCompressorNodeFactory = (createNotSupportedError) => { + return (nativeContext, options) => { + const nativeDynamicsCompressorNode = nativeContext.createDynamicsCompressor(); + assignNativeAudioNodeOptions(nativeDynamicsCompressorNode, options); + // Bug #108: Safari allows a channelCount of three and above. + if (options.channelCount > 2) { + throw createNotSupportedError(); + } + // Bug #109: Only Chrome, Firefox and Opera disallow a channelCountMode of 'max'. + if (options.channelCountMode === 'max') { + throw createNotSupportedError(); + } + assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'attack'); + assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'knee'); + assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'ratio'); + assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'release'); + assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'threshold'); + return nativeDynamicsCompressorNode; + }; +}; + +const createNativeGainNode = (nativeContext, options) => { + const nativeGainNode = nativeContext.createGain(); + assignNativeAudioNodeOptions(nativeGainNode, options); + assignNativeAudioNodeAudioParamValue(nativeGainNode, options, 'gain'); + return nativeGainNode; +}; + +const createNativeIIRFilterNodeFactory = (createNativeIIRFilterNodeFaker) => { + return (nativeContext, baseLatency, options) => { + // Bug #9: Safari does not support IIRFilterNodes. + if (nativeContext.createIIRFilter === undefined) { + return createNativeIIRFilterNodeFaker(nativeContext, baseLatency, options); + } + // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers. + const nativeIIRFilterNode = nativeContext.createIIRFilter(options.feedforward, options.feedback); + assignNativeAudioNodeOptions(nativeIIRFilterNode, options); + return nativeIIRFilterNode; + }; +}; + +function divide(a, b) { + const denominator = b[0] * b[0] + b[1] * b[1]; + return [(a[0] * b[0] + a[1] * b[1]) / denominator, (a[1] * b[0] - a[0] * b[1]) / denominator]; +} +function multiply(a, b) { + return [a[0] * b[0] - a[1] * b[1], a[0] * b[1] + a[1] * b[0]]; +} +function evaluatePolynomial(coefficient, z) { + let result = [0, 0]; + for (let i = coefficient.length - 1; i >= 0; i -= 1) { + result = multiply(result, z); + result[0] += coefficient[i]; + } + return result; +} +const createNativeIIRFilterNodeFakerFactory = (createInvalidAccessError, createInvalidStateError, createNativeScriptProcessorNode, createNotSupportedError) => { + return (nativeContext, baseLatency, { channelCount, channelCountMode, channelInterpretation, feedback, feedforward }) => { + const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate); + const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback); + const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward); + const feedbackLength = convertedFeedback.length; + const feedforwardLength = convertedFeedforward.length; + const minLength = Math.min(feedbackLength, feedforwardLength); + if (feedbackLength === 0 || feedbackLength > 20) { + throw createNotSupportedError(); + } + if (convertedFeedback[0] === 0) { + throw createInvalidStateError(); + } + if (feedforwardLength === 0 || feedforwardLength > 20) { + throw createNotSupportedError(); + } + if (convertedFeedforward[0] === 0) { + throw createInvalidStateError(); + } + if (convertedFeedback[0] !== 1) { + for (let i = 0; i < feedforwardLength; i += 1) { + convertedFeedforward[i] /= convertedFeedback[0]; + } + for (let i = 1; i < feedbackLength; i += 1) { + convertedFeedback[i] /= convertedFeedback[0]; + } + } + const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, bufferSize, channelCount, channelCount); + scriptProcessorNode.channelCount = channelCount; + scriptProcessorNode.channelCountMode = channelCountMode; + scriptProcessorNode.channelInterpretation = channelInterpretation; + const bufferLength = 32; + const bufferIndexes = []; + const xBuffers = []; + const yBuffers = []; + for (let i = 0; i < channelCount; i += 1) { + bufferIndexes.push(0); + const xBuffer = new Float32Array(bufferLength); + const yBuffer = new Float32Array(bufferLength); + xBuffer.fill(0); + yBuffer.fill(0); + xBuffers.push(xBuffer); + yBuffers.push(yBuffer); + } + // tslint:disable-next-line:deprecation + scriptProcessorNode.onaudioprocess = (event) => { + const inputBuffer = event.inputBuffer; + const outputBuffer = event.outputBuffer; + const numberOfChannels = inputBuffer.numberOfChannels; + for (let i = 0; i < numberOfChannels; i += 1) { + const input = inputBuffer.getChannelData(i); + const output = outputBuffer.getChannelData(i); + bufferIndexes[i] = filterBuffer(convertedFeedback, feedbackLength, convertedFeedforward, feedforwardLength, minLength, xBuffers[i], yBuffers[i], bufferIndexes[i], bufferLength, input, output); + } + }; + const nyquist = nativeContext.sampleRate / 2; + const nativeIIRFilterNodeFaker = { + get bufferSize() { + return bufferSize; + }, + get channelCount() { + return scriptProcessorNode.channelCount; + }, + set channelCount(value) { + scriptProcessorNode.channelCount = value; + }, + get channelCountMode() { + return scriptProcessorNode.channelCountMode; + }, + set channelCountMode(value) { + scriptProcessorNode.channelCountMode = value; + }, + get channelInterpretation() { + return scriptProcessorNode.channelInterpretation; + }, + set channelInterpretation(value) { + scriptProcessorNode.channelInterpretation = value; + }, + get context() { + return scriptProcessorNode.context; + }, + get inputs() { + return [scriptProcessorNode]; + }, + get numberOfInputs() { + return scriptProcessorNode.numberOfInputs; + }, + get numberOfOutputs() { + return scriptProcessorNode.numberOfOutputs; + }, + addEventListener(...args) { + // @todo Dissallow adding an audioprocess listener. + return scriptProcessorNode.addEventListener(args[0], args[1], args[2]); + }, + dispatchEvent(...args) { + return scriptProcessorNode.dispatchEvent(args[0]); + }, + getFrequencyResponse(frequencyHz, magResponse, phaseResponse) { + if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) { + throw createInvalidAccessError(); + } + const length = frequencyHz.length; + for (let i = 0; i < length; i += 1) { + const omega = -Math.PI * (frequencyHz[i] / nyquist); + const z = [Math.cos(omega), Math.sin(omega)]; + const numerator = evaluatePolynomial(convertedFeedforward, z); + const denominator = evaluatePolynomial(convertedFeedback, z); + const response = divide(numerator, denominator); + magResponse[i] = Math.sqrt(response[0] * response[0] + response[1] * response[1]); + phaseResponse[i] = Math.atan2(response[1], response[0]); + } + }, + removeEventListener(...args) { + return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]); + } + }; + return interceptConnections(nativeIIRFilterNodeFaker, scriptProcessorNode); + }; +}; + +const createNativeMediaElementAudioSourceNode = (nativeAudioContext, options) => { + return nativeAudioContext.createMediaElementSource(options.mediaElement); +}; + +const createNativeMediaStreamAudioDestinationNode = (nativeAudioContext, options) => { + const nativeMediaStreamAudioDestinationNode = nativeAudioContext.createMediaStreamDestination(); + assignNativeAudioNodeOptions(nativeMediaStreamAudioDestinationNode, options); + // Bug #174: Safari does expose a wrong numberOfOutputs. + if (nativeMediaStreamAudioDestinationNode.numberOfOutputs === 1) { + Object.defineProperty(nativeMediaStreamAudioDestinationNode, 'numberOfOutputs', { get: () => 0 }); + } + return nativeMediaStreamAudioDestinationNode; +}; + +const createNativeMediaStreamAudioSourceNode = (nativeAudioContext, { mediaStream }) => { + const audioStreamTracks = mediaStream.getAudioTracks(); + /* + * Bug #151: Safari does not use the audio track as input anymore if it gets removed from the mediaStream after construction. + * Bug #159: Safari picks the first audio track if the MediaStream has more than one audio track. + */ + audioStreamTracks.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0)); + const filteredAudioStreamTracks = audioStreamTracks.slice(0, 1); + const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(new MediaStream(filteredAudioStreamTracks)); + /* + * Bug #151 & #159: The given mediaStream gets reconstructed before it gets passed to the native node which is why the accessor needs + * to be overwritten as it would otherwise expose the reconstructed version. + */ + Object.defineProperty(nativeMediaStreamAudioSourceNode, 'mediaStream', { value: mediaStream }); + return nativeMediaStreamAudioSourceNode; +}; + +const createNativeMediaStreamTrackAudioSourceNodeFactory = (createInvalidStateError, isNativeOfflineAudioContext) => { + return (nativeAudioContext, { mediaStreamTrack }) => { + // Bug #121: Only Firefox does yet support the MediaStreamTrackAudioSourceNode. + if (typeof nativeAudioContext.createMediaStreamTrackSource === 'function') { + return nativeAudioContext.createMediaStreamTrackSource(mediaStreamTrack); + } + const mediaStream = new MediaStream([mediaStreamTrack]); + const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(mediaStream); + // Bug #120: Firefox does not throw an error if the mediaStream has no audio track. + if (mediaStreamTrack.kind !== 'audio') { + throw createInvalidStateError(); + } + // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext. + if (isNativeOfflineAudioContext(nativeAudioContext)) { + throw new TypeError(); + } + return nativeMediaStreamAudioSourceNode; + }; +}; + +const createNativeOfflineAudioContextConstructor = (window) => { + if (window === null) { + return null; + } + if (window.hasOwnProperty('OfflineAudioContext')) { + return window.OfflineAudioContext; + } + return window.hasOwnProperty('webkitOfflineAudioContext') ? window.webkitOfflineAudioContext : null; +}; + +const createNativeOscillatorNodeFactory = (addSilentConnection, cacheTestResult, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls) => { + return (nativeContext, options) => { + const nativeOscillatorNode = nativeContext.createOscillator(); + assignNativeAudioNodeOptions(nativeOscillatorNode, options); + assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'detune'); + assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'frequency'); + if (options.periodicWave !== undefined) { + nativeOscillatorNode.setPeriodicWave(options.periodicWave); + } + else { + assignNativeAudioNodeOption(nativeOscillatorNode, options, 'type'); + } + // Bug #44: Only Chrome, Edge & Opera throw a RangeError yet. + if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) { + wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeOscillatorNode); + } + // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode. + if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () => testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext))) { + wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeOscillatorNode, nativeContext); + } + // Bug #44: Only Firefox does not throw a RangeError yet. + if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) { + wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeOscillatorNode); + } + // Bug #175: Safari will not fire an ended event if the OscillatorNode is unconnected. + addSilentConnection(nativeContext, nativeOscillatorNode); + return nativeOscillatorNode; + }; +}; + +const createNativePannerNodeFactory = (createNativePannerNodeFaker) => { + return (nativeContext, options) => { + const nativePannerNode = nativeContext.createPanner(); + // Bug #124: Safari does not support modifying the orientation and the position with AudioParams. + if (nativePannerNode.orientationX === undefined) { + return createNativePannerNodeFaker(nativeContext, options); + } + assignNativeAudioNodeOptions(nativePannerNode, options); + assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationX'); + assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationY'); + assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationZ'); + assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionX'); + assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionY'); + assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionZ'); + assignNativeAudioNodeOption(nativePannerNode, options, 'coneInnerAngle'); + assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterAngle'); + assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterGain'); + assignNativeAudioNodeOption(nativePannerNode, options, 'distanceModel'); + assignNativeAudioNodeOption(nativePannerNode, options, 'maxDistance'); + assignNativeAudioNodeOption(nativePannerNode, options, 'panningModel'); + assignNativeAudioNodeOption(nativePannerNode, options, 'refDistance'); + assignNativeAudioNodeOption(nativePannerNode, options, 'rolloffFactor'); + return nativePannerNode; + }; +}; + +const createNativePannerNodeFakerFactory = (connectNativeAudioNodeToNativeAudioNode, createInvalidStateError, createNativeChannelMergerNode, createNativeGainNode, createNativeScriptProcessorNode, createNativeWaveShaperNode, createNotSupportedError, disconnectNativeAudioNodeFromNativeAudioNode, getFirstSample, monitorConnections) => { + return (nativeContext, { coneInnerAngle, coneOuterAngle, coneOuterGain, distanceModel, maxDistance, orientationX, orientationY, orientationZ, panningModel, positionX, positionY, positionZ, refDistance, rolloffFactor, ...audioNodeOptions }) => { + const pannerNode = nativeContext.createPanner(); + // Bug #125: Safari does not throw an error yet. + if (audioNodeOptions.channelCount > 2) { + throw createNotSupportedError(); + } + // Bug #126: Safari does not throw an error yet. + if (audioNodeOptions.channelCountMode === 'max') { + throw createNotSupportedError(); + } + assignNativeAudioNodeOptions(pannerNode, audioNodeOptions); + const SINGLE_CHANNEL_OPTIONS = { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete' + }; + const channelMergerNode = createNativeChannelMergerNode(nativeContext, { + ...SINGLE_CHANNEL_OPTIONS, + channelInterpretation: 'speakers', + numberOfInputs: 6 + }); + const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 }); + const orientationXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 1 }); + const orientationYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); + const orientationZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); + const positionXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); + const positionYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); + const positionZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); + const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 6, 1); + const waveShaperNode = createNativeWaveShaperNode(nativeContext, { + ...SINGLE_CHANNEL_OPTIONS, + curve: new Float32Array([1, 1]), + oversample: 'none' + }); + let lastOrientation = [orientationX, orientationY, orientationZ]; + let lastPosition = [positionX, positionY, positionZ]; + const buffer = new Float32Array(1); + // tslint:disable-next-line:deprecation + scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => { + const orientation = [ + getFirstSample(inputBuffer, buffer, 0), + getFirstSample(inputBuffer, buffer, 1), + getFirstSample(inputBuffer, buffer, 2) + ]; + if (orientation.some((value, index) => value !== lastOrientation[index])) { + pannerNode.setOrientation(...orientation); // tslint:disable-line:deprecation + lastOrientation = orientation; + } + const positon = [ + getFirstSample(inputBuffer, buffer, 3), + getFirstSample(inputBuffer, buffer, 4), + getFirstSample(inputBuffer, buffer, 5) + ]; + if (positon.some((value, index) => value !== lastPosition[index])) { + pannerNode.setPosition(...positon); // tslint:disable-line:deprecation + lastPosition = positon; + } + }; + Object.defineProperty(orientationYGainNode.gain, 'defaultValue', { get: () => 0 }); + Object.defineProperty(orientationZGainNode.gain, 'defaultValue', { get: () => 0 }); + Object.defineProperty(positionXGainNode.gain, 'defaultValue', { get: () => 0 }); + Object.defineProperty(positionYGainNode.gain, 'defaultValue', { get: () => 0 }); + Object.defineProperty(positionZGainNode.gain, 'defaultValue', { get: () => 0 }); + const nativePannerNodeFaker = { + get bufferSize() { + return undefined; + }, + get channelCount() { + return pannerNode.channelCount; + }, + set channelCount(value) { + // Bug #125: Safari does not throw an error yet. + if (value > 2) { + throw createNotSupportedError(); + } + inputGainNode.channelCount = value; + pannerNode.channelCount = value; + }, + get channelCountMode() { + return pannerNode.channelCountMode; + }, + set channelCountMode(value) { + // Bug #126: Safari does not throw an error yet. + if (value === 'max') { + throw createNotSupportedError(); + } + inputGainNode.channelCountMode = value; + pannerNode.channelCountMode = value; + }, + get channelInterpretation() { + return pannerNode.channelInterpretation; + }, + set channelInterpretation(value) { + inputGainNode.channelInterpretation = value; + pannerNode.channelInterpretation = value; + }, + get coneInnerAngle() { + return pannerNode.coneInnerAngle; + }, + set coneInnerAngle(value) { + pannerNode.coneInnerAngle = value; + }, + get coneOuterAngle() { + return pannerNode.coneOuterAngle; + }, + set coneOuterAngle(value) { + pannerNode.coneOuterAngle = value; + }, + get coneOuterGain() { + return pannerNode.coneOuterGain; + }, + set coneOuterGain(value) { + // Bug #127: Safari does not throw an InvalidStateError yet. + if (value < 0 || value > 1) { + throw createInvalidStateError(); + } + pannerNode.coneOuterGain = value; + }, + get context() { + return pannerNode.context; + }, + get distanceModel() { + return pannerNode.distanceModel; + }, + set distanceModel(value) { + pannerNode.distanceModel = value; + }, + get inputs() { + return [inputGainNode]; + }, + get maxDistance() { + return pannerNode.maxDistance; + }, + set maxDistance(value) { + // Bug #128: Safari does not throw an error yet. + if (value < 0) { + throw new RangeError(); + } + pannerNode.maxDistance = value; + }, + get numberOfInputs() { + return pannerNode.numberOfInputs; + }, + get numberOfOutputs() { + return pannerNode.numberOfOutputs; + }, + get orientationX() { + return orientationXGainNode.gain; + }, + get orientationY() { + return orientationYGainNode.gain; + }, + get orientationZ() { + return orientationZGainNode.gain; + }, + get panningModel() { + return pannerNode.panningModel; + }, + set panningModel(value) { + pannerNode.panningModel = value; + }, + get positionX() { + return positionXGainNode.gain; + }, + get positionY() { + return positionYGainNode.gain; + }, + get positionZ() { + return positionZGainNode.gain; + }, + get refDistance() { + return pannerNode.refDistance; + }, + set refDistance(value) { + // Bug #129: Safari does not throw an error yet. + if (value < 0) { + throw new RangeError(); + } + pannerNode.refDistance = value; + }, + get rolloffFactor() { + return pannerNode.rolloffFactor; + }, + set rolloffFactor(value) { + // Bug #130: Safari does not throw an error yet. + if (value < 0) { + throw new RangeError(); + } + pannerNode.rolloffFactor = value; + }, + addEventListener(...args) { + return inputGainNode.addEventListener(args[0], args[1], args[2]); + }, + dispatchEvent(...args) { + return inputGainNode.dispatchEvent(args[0]); + }, + removeEventListener(...args) { + return inputGainNode.removeEventListener(args[0], args[1], args[2]); + } + }; + if (coneInnerAngle !== nativePannerNodeFaker.coneInnerAngle) { + nativePannerNodeFaker.coneInnerAngle = coneInnerAngle; + } + if (coneOuterAngle !== nativePannerNodeFaker.coneOuterAngle) { + nativePannerNodeFaker.coneOuterAngle = coneOuterAngle; + } + if (coneOuterGain !== nativePannerNodeFaker.coneOuterGain) { + nativePannerNodeFaker.coneOuterGain = coneOuterGain; + } + if (distanceModel !== nativePannerNodeFaker.distanceModel) { + nativePannerNodeFaker.distanceModel = distanceModel; + } + if (maxDistance !== nativePannerNodeFaker.maxDistance) { + nativePannerNodeFaker.maxDistance = maxDistance; + } + if (orientationX !== nativePannerNodeFaker.orientationX.value) { + nativePannerNodeFaker.orientationX.value = orientationX; + } + if (orientationY !== nativePannerNodeFaker.orientationY.value) { + nativePannerNodeFaker.orientationY.value = orientationY; + } + if (orientationZ !== nativePannerNodeFaker.orientationZ.value) { + nativePannerNodeFaker.orientationZ.value = orientationZ; + } + if (panningModel !== nativePannerNodeFaker.panningModel) { + nativePannerNodeFaker.panningModel = panningModel; + } + if (positionX !== nativePannerNodeFaker.positionX.value) { + nativePannerNodeFaker.positionX.value = positionX; + } + if (positionY !== nativePannerNodeFaker.positionY.value) { + nativePannerNodeFaker.positionY.value = positionY; + } + if (positionZ !== nativePannerNodeFaker.positionZ.value) { + nativePannerNodeFaker.positionZ.value = positionZ; + } + if (refDistance !== nativePannerNodeFaker.refDistance) { + nativePannerNodeFaker.refDistance = refDistance; + } + if (rolloffFactor !== nativePannerNodeFaker.rolloffFactor) { + nativePannerNodeFaker.rolloffFactor = rolloffFactor; + } + if (lastOrientation[0] !== 1 || lastOrientation[1] !== 0 || lastOrientation[2] !== 0) { + pannerNode.setOrientation(...lastOrientation); // tslint:disable-line:deprecation + } + if (lastPosition[0] !== 0 || lastPosition[1] !== 0 || lastPosition[2] !== 0) { + pannerNode.setPosition(...lastPosition); // tslint:disable-line:deprecation + } + const whenConnected = () => { + inputGainNode.connect(pannerNode); + // Bug #119: Safari does not fully support the WaveShaperNode. + connectNativeAudioNodeToNativeAudioNode(inputGainNode, waveShaperNode, 0, 0); + waveShaperNode.connect(orientationXGainNode).connect(channelMergerNode, 0, 0); + waveShaperNode.connect(orientationYGainNode).connect(channelMergerNode, 0, 1); + waveShaperNode.connect(orientationZGainNode).connect(channelMergerNode, 0, 2); + waveShaperNode.connect(positionXGainNode).connect(channelMergerNode, 0, 3); + waveShaperNode.connect(positionYGainNode).connect(channelMergerNode, 0, 4); + waveShaperNode.connect(positionZGainNode).connect(channelMergerNode, 0, 5); + channelMergerNode.connect(scriptProcessorNode).connect(nativeContext.destination); + }; + const whenDisconnected = () => { + inputGainNode.disconnect(pannerNode); + // Bug #119: Safari does not fully support the WaveShaperNode. + disconnectNativeAudioNodeFromNativeAudioNode(inputGainNode, waveShaperNode, 0, 0); + waveShaperNode.disconnect(orientationXGainNode); + orientationXGainNode.disconnect(channelMergerNode); + waveShaperNode.disconnect(orientationYGainNode); + orientationYGainNode.disconnect(channelMergerNode); + waveShaperNode.disconnect(orientationZGainNode); + orientationZGainNode.disconnect(channelMergerNode); + waveShaperNode.disconnect(positionXGainNode); + positionXGainNode.disconnect(channelMergerNode); + waveShaperNode.disconnect(positionYGainNode); + positionYGainNode.disconnect(channelMergerNode); + waveShaperNode.disconnect(positionZGainNode); + positionZGainNode.disconnect(channelMergerNode); + channelMergerNode.disconnect(scriptProcessorNode); + scriptProcessorNode.disconnect(nativeContext.destination); + }; + return monitorConnections(interceptConnections(nativePannerNodeFaker, pannerNode), whenConnected, whenDisconnected); + }; +}; + +const createNativePeriodicWaveFactory = (createIndexSizeError) => { + return (nativeContext, { disableNormalization, imag, real }) => { + // Bug #180: Safari does not allow to use ordinary arrays. + const convertedImag = imag instanceof Float32Array ? imag : new Float32Array(imag); + const convertedReal = real instanceof Float32Array ? real : new Float32Array(real); + const nativePeriodicWave = nativeContext.createPeriodicWave(convertedReal, convertedImag, { disableNormalization }); + // Bug #181: Safari does not throw an IndexSizeError so far if the given arrays have less than two values. + if (Array.from(imag).length < 2) { + throw createIndexSizeError(); + } + return nativePeriodicWave; + }; +}; + +const createNativeScriptProcessorNode = (nativeContext, bufferSize, numberOfInputChannels, numberOfOutputChannels) => { + return nativeContext.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels); // tslint:disable-line deprecation +}; + +const createNativeStereoPannerNodeFactory = (createNativeStereoPannerNodeFaker, createNotSupportedError) => { + return (nativeContext, options) => { + const channelCountMode = options.channelCountMode; + /* + * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari + * which supports it and therefore it can't be supported at all. + */ + if (channelCountMode === 'clamped-max') { + throw createNotSupportedError(); + } + // Bug #105: Safari does not support the StereoPannerNode. + if (nativeContext.createStereoPanner === undefined) { + return createNativeStereoPannerNodeFaker(nativeContext, options); + } + const nativeStereoPannerNode = nativeContext.createStereoPanner(); + assignNativeAudioNodeOptions(nativeStereoPannerNode, options); + assignNativeAudioNodeAudioParamValue(nativeStereoPannerNode, options, 'pan'); + /* + * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari + * which supports it and therefore it can't be supported at all. + */ + Object.defineProperty(nativeStereoPannerNode, 'channelCountMode', { + get: () => channelCountMode, + set: (value) => { + if (value !== channelCountMode) { + throw createNotSupportedError(); + } + } + }); + return nativeStereoPannerNode; + }; +}; + +const createNativeStereoPannerNodeFakerFactory = (createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeGainNode, createNativeWaveShaperNode, createNotSupportedError, monitorConnections) => { + // The curve has a size of 14bit plus 1 value to have an exact representation for zero. This value has been determined experimentally. + const CURVE_SIZE = 16385; + const DC_CURVE = new Float32Array([1, 1]); + const HALF_PI = Math.PI / 2; + const SINGLE_CHANNEL_OPTIONS = { channelCount: 1, channelCountMode: 'explicit', channelInterpretation: 'discrete' }; + const SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS = { ...SINGLE_CHANNEL_OPTIONS, oversample: 'none' }; + const buildInternalGraphForMono = (nativeContext, inputGainNode, panGainNode, channelMergerNode) => { + const leftWaveShaperCurve = new Float32Array(CURVE_SIZE); + const rightWaveShaperCurve = new Float32Array(CURVE_SIZE); + for (let i = 0; i < CURVE_SIZE; i += 1) { + const x = (i / (CURVE_SIZE - 1)) * HALF_PI; + leftWaveShaperCurve[i] = Math.cos(x); + rightWaveShaperCurve[i] = Math.sin(x); + } + const leftGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); + // Bug #119: Safari does not fully support the WaveShaperNode. + const leftWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: leftWaveShaperCurve })); + // Bug #119: Safari does not fully support the WaveShaperNode. + const panWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE })); + const rightGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); + // Bug #119: Safari does not fully support the WaveShaperNode. + const rightWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: rightWaveShaperCurve })); + return { + connectGraph() { + inputGainNode.connect(leftGainNode); + inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]); + inputGainNode.connect(rightGainNode); + panWaveShaperNode.connect(panGainNode); + panGainNode.connect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]); + panGainNode.connect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]); + leftWaveShaperNode.connect(leftGainNode.gain); + rightWaveShaperNode.connect(rightGainNode.gain); + leftGainNode.connect(channelMergerNode, 0, 0); + rightGainNode.connect(channelMergerNode, 0, 1); + }, + disconnectGraph() { + inputGainNode.disconnect(leftGainNode); + inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]); + inputGainNode.disconnect(rightGainNode); + panWaveShaperNode.disconnect(panGainNode); + panGainNode.disconnect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]); + panGainNode.disconnect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]); + leftWaveShaperNode.disconnect(leftGainNode.gain); + rightWaveShaperNode.disconnect(rightGainNode.gain); + leftGainNode.disconnect(channelMergerNode, 0, 0); + rightGainNode.disconnect(channelMergerNode, 0, 1); + } + }; + }; + const buildInternalGraphForStereo = (nativeContext, inputGainNode, panGainNode, channelMergerNode) => { + const leftInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE); + const leftInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE); + const rightInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE); + const rightInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE); + const centerIndex = Math.floor(CURVE_SIZE / 2); + for (let i = 0; i < CURVE_SIZE; i += 1) { + if (i > centerIndex) { + const x = ((i - centerIndex) / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI; + leftInputForLeftOutputWaveShaperCurve[i] = Math.cos(x); + leftInputForRightOutputWaveShaperCurve[i] = Math.sin(x); + rightInputForLeftOutputWaveShaperCurve[i] = 0; + rightInputForRightOutputWaveShaperCurve[i] = 1; + } + else { + const x = (i / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI; + leftInputForLeftOutputWaveShaperCurve[i] = 1; + leftInputForRightOutputWaveShaperCurve[i] = 0; + rightInputForLeftOutputWaveShaperCurve[i] = Math.cos(x); + rightInputForRightOutputWaveShaperCurve[i] = Math.sin(x); + } + } + const channelSplitterNode = createNativeChannelSplitterNode(nativeContext, { + channelCount: 2, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + numberOfOutputs: 2 + }); + const leftInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); + // Bug #119: Safari does not fully support the WaveShaperNode. + const leftInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, { + ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, + curve: leftInputForLeftOutputWaveShaperCurve + }); + const leftInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); + // Bug #119: Safari does not fully support the WaveShaperNode. + const leftInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, { + ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, + curve: leftInputForRightOutputWaveShaperCurve + }); + // Bug #119: Safari does not fully support the WaveShaperNode. + const panWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE })); + const rightInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); + // Bug #119: Safari does not fully support the WaveShaperNode. + const rightInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, { + ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, + curve: rightInputForLeftOutputWaveShaperCurve + }); + const rightInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); + // Bug #119: Safari does not fully support the WaveShaperNode. + const rightInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, { + ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, + curve: rightInputForRightOutputWaveShaperCurve + }); + return { + connectGraph() { + inputGainNode.connect(channelSplitterNode); + inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]); + channelSplitterNode.connect(leftInputForLeftOutputGainNode, 0); + channelSplitterNode.connect(leftInputForRightOutputGainNode, 0); + channelSplitterNode.connect(rightInputForLeftOutputGainNode, 1); + channelSplitterNode.connect(rightInputForRightOutputGainNode, 1); + panWaveShaperNode.connect(panGainNode); + panGainNode.connect(leftInputForLeftOutputWaveShaperNode.inputs === undefined + ? leftInputForLeftOutputWaveShaperNode + : leftInputForLeftOutputWaveShaperNode.inputs[0]); + panGainNode.connect(leftInputForRightOutputWaveShaperNode.inputs === undefined + ? leftInputForRightOutputWaveShaperNode + : leftInputForRightOutputWaveShaperNode.inputs[0]); + panGainNode.connect(rightInputForLeftOutputWaveShaperNode.inputs === undefined + ? rightInputForLeftOutputWaveShaperNode + : rightInputForLeftOutputWaveShaperNode.inputs[0]); + panGainNode.connect(rightInputForRightOutputWaveShaperNode.inputs === undefined + ? rightInputForRightOutputWaveShaperNode + : rightInputForRightOutputWaveShaperNode.inputs[0]); + leftInputForLeftOutputWaveShaperNode.connect(leftInputForLeftOutputGainNode.gain); + leftInputForRightOutputWaveShaperNode.connect(leftInputForRightOutputGainNode.gain); + rightInputForLeftOutputWaveShaperNode.connect(rightInputForLeftOutputGainNode.gain); + rightInputForRightOutputWaveShaperNode.connect(rightInputForRightOutputGainNode.gain); + leftInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0); + rightInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0); + leftInputForRightOutputGainNode.connect(channelMergerNode, 0, 1); + rightInputForRightOutputGainNode.connect(channelMergerNode, 0, 1); + }, + disconnectGraph() { + inputGainNode.disconnect(channelSplitterNode); + inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]); + channelSplitterNode.disconnect(leftInputForLeftOutputGainNode, 0); + channelSplitterNode.disconnect(leftInputForRightOutputGainNode, 0); + channelSplitterNode.disconnect(rightInputForLeftOutputGainNode, 1); + channelSplitterNode.disconnect(rightInputForRightOutputGainNode, 1); + panWaveShaperNode.disconnect(panGainNode); + panGainNode.disconnect(leftInputForLeftOutputWaveShaperNode.inputs === undefined + ? leftInputForLeftOutputWaveShaperNode + : leftInputForLeftOutputWaveShaperNode.inputs[0]); + panGainNode.disconnect(leftInputForRightOutputWaveShaperNode.inputs === undefined + ? leftInputForRightOutputWaveShaperNode + : leftInputForRightOutputWaveShaperNode.inputs[0]); + panGainNode.disconnect(rightInputForLeftOutputWaveShaperNode.inputs === undefined + ? rightInputForLeftOutputWaveShaperNode + : rightInputForLeftOutputWaveShaperNode.inputs[0]); + panGainNode.disconnect(rightInputForRightOutputWaveShaperNode.inputs === undefined + ? rightInputForRightOutputWaveShaperNode + : rightInputForRightOutputWaveShaperNode.inputs[0]); + leftInputForLeftOutputWaveShaperNode.disconnect(leftInputForLeftOutputGainNode.gain); + leftInputForRightOutputWaveShaperNode.disconnect(leftInputForRightOutputGainNode.gain); + rightInputForLeftOutputWaveShaperNode.disconnect(rightInputForLeftOutputGainNode.gain); + rightInputForRightOutputWaveShaperNode.disconnect(rightInputForRightOutputGainNode.gain); + leftInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0); + rightInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0); + leftInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1); + rightInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1); + } + }; + }; + const buildInternalGraph = (nativeContext, channelCount, inputGainNode, panGainNode, channelMergerNode) => { + if (channelCount === 1) { + return buildInternalGraphForMono(nativeContext, inputGainNode, panGainNode, channelMergerNode); + } + if (channelCount === 2) { + return buildInternalGraphForStereo(nativeContext, inputGainNode, panGainNode, channelMergerNode); + } + throw createNotSupportedError(); + }; + return (nativeContext, { channelCount, channelCountMode, pan, ...audioNodeOptions }) => { + if (channelCountMode === 'max') { + throw createNotSupportedError(); + } + const channelMergerNode = createNativeChannelMergerNode(nativeContext, { + ...audioNodeOptions, + channelCount: 1, + channelCountMode, + numberOfInputs: 2 + }); + const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, channelCount, channelCountMode, gain: 1 }); + const panGainNode = createNativeGainNode(nativeContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + gain: pan + }); + let { connectGraph, disconnectGraph } = buildInternalGraph(nativeContext, channelCount, inputGainNode, panGainNode, channelMergerNode); + Object.defineProperty(panGainNode.gain, 'defaultValue', { get: () => 0 }); + Object.defineProperty(panGainNode.gain, 'maxValue', { get: () => 1 }); + Object.defineProperty(panGainNode.gain, 'minValue', { get: () => -1 }); + const nativeStereoPannerNodeFakerFactory = { + get bufferSize() { + return undefined; + }, + get channelCount() { + return inputGainNode.channelCount; + }, + set channelCount(value) { + if (inputGainNode.channelCount !== value) { + if (isConnected) { + disconnectGraph(); + } + ({ connectGraph, disconnectGraph } = buildInternalGraph(nativeContext, value, inputGainNode, panGainNode, channelMergerNode)); + if (isConnected) { + connectGraph(); + } + } + inputGainNode.channelCount = value; + }, + get channelCountMode() { + return inputGainNode.channelCountMode; + }, + set channelCountMode(value) { + if (value === 'clamped-max' || value === 'max') { + throw createNotSupportedError(); + } + inputGainNode.channelCountMode = value; + }, + get channelInterpretation() { + return inputGainNode.channelInterpretation; + }, + set channelInterpretation(value) { + inputGainNode.channelInterpretation = value; + }, + get context() { + return inputGainNode.context; + }, + get inputs() { + return [inputGainNode]; + }, + get numberOfInputs() { + return inputGainNode.numberOfInputs; + }, + get numberOfOutputs() { + return inputGainNode.numberOfOutputs; + }, + get pan() { + return panGainNode.gain; + }, + addEventListener(...args) { + return inputGainNode.addEventListener(args[0], args[1], args[2]); + }, + dispatchEvent(...args) { + return inputGainNode.dispatchEvent(args[0]); + }, + removeEventListener(...args) { + return inputGainNode.removeEventListener(args[0], args[1], args[2]); + } + }; + let isConnected = false; + const whenConnected = () => { + connectGraph(); + isConnected = true; + }; + const whenDisconnected = () => { + disconnectGraph(); + isConnected = false; + }; + return monitorConnections(interceptConnections(nativeStereoPannerNodeFakerFactory, channelMergerNode), whenConnected, whenDisconnected); + }; +}; + +const createNativeWaveShaperNodeFactory = (createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeWaveShaperNodeFaker, isDCCurve, monitorConnections, nativeAudioContextConstructor, overwriteAccessors) => { + return (nativeContext, options) => { + const nativeWaveShaperNode = nativeContext.createWaveShaper(); + /* + * Bug #119: Safari does not correctly map the values. + * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of + * the webkitAudioContext is used as a workaround here. Testing for the automationRate property is necessary because this workaround + * isn't necessary anymore since v14.0.2 of Safari. + */ + if (nativeAudioContextConstructor !== null && + nativeAudioContextConstructor.name === 'webkitAudioContext' && + nativeContext.createGain().gain.automationRate === undefined) { + return createNativeWaveShaperNodeFaker(nativeContext, options); + } + assignNativeAudioNodeOptions(nativeWaveShaperNode, options); + const curve = options.curve === null || options.curve instanceof Float32Array ? options.curve : new Float32Array(options.curve); + // Bug #104: Chrome, Edge and Opera will throw an InvalidAccessError when the curve has less than two samples. + if (curve !== null && curve.length < 2) { + throw createInvalidStateError(); + } + // Only values of type Float32Array can be assigned to the curve property. + assignNativeAudioNodeOption(nativeWaveShaperNode, { curve }, 'curve'); + assignNativeAudioNodeOption(nativeWaveShaperNode, options, 'oversample'); + let disconnectNativeAudioBufferSourceNode = null; + let isConnected = false; + overwriteAccessors(nativeWaveShaperNode, 'curve', (get) => () => get.call(nativeWaveShaperNode), (set) => (value) => { + set.call(nativeWaveShaperNode, value); + if (isConnected) { + if (isDCCurve(value) && disconnectNativeAudioBufferSourceNode === null) { + disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, nativeWaveShaperNode); + } + else if (!isDCCurve(value) && disconnectNativeAudioBufferSourceNode !== null) { + disconnectNativeAudioBufferSourceNode(); + disconnectNativeAudioBufferSourceNode = null; + } + } + return value; + }); + const whenConnected = () => { + isConnected = true; + if (isDCCurve(nativeWaveShaperNode.curve)) { + disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, nativeWaveShaperNode); + } + }; + const whenDisconnected = () => { + isConnected = false; + if (disconnectNativeAudioBufferSourceNode !== null) { + disconnectNativeAudioBufferSourceNode(); + disconnectNativeAudioBufferSourceNode = null; + } + }; + return monitorConnections(nativeWaveShaperNode, whenConnected, whenDisconnected); + }; +}; + +const createNativeWaveShaperNodeFakerFactory = (createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeGainNode, isDCCurve, monitorConnections) => { + return (nativeContext, { curve, oversample, ...audioNodeOptions }) => { + const negativeWaveShaperNode = nativeContext.createWaveShaper(); + const positiveWaveShaperNode = nativeContext.createWaveShaper(); + assignNativeAudioNodeOptions(negativeWaveShaperNode, audioNodeOptions); + assignNativeAudioNodeOptions(positiveWaveShaperNode, audioNodeOptions); + const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 }); + const invertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 }); + const outputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 }); + const revertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 }); + let disconnectNativeAudioBufferSourceNode = null; + let isConnected = false; + let unmodifiedCurve = null; + const nativeWaveShaperNodeFaker = { + get bufferSize() { + return undefined; + }, + get channelCount() { + return negativeWaveShaperNode.channelCount; + }, + set channelCount(value) { + inputGainNode.channelCount = value; + invertGainNode.channelCount = value; + negativeWaveShaperNode.channelCount = value; + outputGainNode.channelCount = value; + positiveWaveShaperNode.channelCount = value; + revertGainNode.channelCount = value; + }, + get channelCountMode() { + return negativeWaveShaperNode.channelCountMode; + }, + set channelCountMode(value) { + inputGainNode.channelCountMode = value; + invertGainNode.channelCountMode = value; + negativeWaveShaperNode.channelCountMode = value; + outputGainNode.channelCountMode = value; + positiveWaveShaperNode.channelCountMode = value; + revertGainNode.channelCountMode = value; + }, + get channelInterpretation() { + return negativeWaveShaperNode.channelInterpretation; + }, + set channelInterpretation(value) { + inputGainNode.channelInterpretation = value; + invertGainNode.channelInterpretation = value; + negativeWaveShaperNode.channelInterpretation = value; + outputGainNode.channelInterpretation = value; + positiveWaveShaperNode.channelInterpretation = value; + revertGainNode.channelInterpretation = value; + }, + get context() { + return negativeWaveShaperNode.context; + }, + get curve() { + return unmodifiedCurve; + }, + set curve(value) { + // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples. + if (value !== null && value.length < 2) { + throw createInvalidStateError(); + } + if (value === null) { + negativeWaveShaperNode.curve = value; + positiveWaveShaperNode.curve = value; + } + else { + const curveLength = value.length; + const negativeCurve = new Float32Array(curveLength + 2 - (curveLength % 2)); + const positiveCurve = new Float32Array(curveLength + 2 - (curveLength % 2)); + negativeCurve[0] = value[0]; + positiveCurve[0] = -value[curveLength - 1]; + const length = Math.ceil((curveLength + 1) / 2); + const centerIndex = (curveLength + 1) / 2 - 1; + for (let i = 1; i < length; i += 1) { + const theoreticIndex = (i / length) * centerIndex; + const lowerIndex = Math.floor(theoreticIndex); + const upperIndex = Math.ceil(theoreticIndex); + negativeCurve[i] = + lowerIndex === upperIndex + ? value[lowerIndex] + : (1 - (theoreticIndex - lowerIndex)) * value[lowerIndex] + + (1 - (upperIndex - theoreticIndex)) * value[upperIndex]; + positiveCurve[i] = + lowerIndex === upperIndex + ? -value[curveLength - 1 - lowerIndex] + : -((1 - (theoreticIndex - lowerIndex)) * value[curveLength - 1 - lowerIndex]) - + (1 - (upperIndex - theoreticIndex)) * value[curveLength - 1 - upperIndex]; + } + negativeCurve[length] = curveLength % 2 === 1 ? value[length - 1] : (value[length - 2] + value[length - 1]) / 2; + negativeWaveShaperNode.curve = negativeCurve; + positiveWaveShaperNode.curve = positiveCurve; + } + unmodifiedCurve = value; + if (isConnected) { + if (isDCCurve(unmodifiedCurve) && disconnectNativeAudioBufferSourceNode === null) { + disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode); + } + else if (disconnectNativeAudioBufferSourceNode !== null) { + disconnectNativeAudioBufferSourceNode(); + disconnectNativeAudioBufferSourceNode = null; + } + } + }, + get inputs() { + return [inputGainNode]; + }, + get numberOfInputs() { + return negativeWaveShaperNode.numberOfInputs; + }, + get numberOfOutputs() { + return negativeWaveShaperNode.numberOfOutputs; + }, + get oversample() { + return negativeWaveShaperNode.oversample; + }, + set oversample(value) { + negativeWaveShaperNode.oversample = value; + positiveWaveShaperNode.oversample = value; + }, + addEventListener(...args) { + return inputGainNode.addEventListener(args[0], args[1], args[2]); + }, + dispatchEvent(...args) { + return inputGainNode.dispatchEvent(args[0]); + }, + removeEventListener(...args) { + return inputGainNode.removeEventListener(args[0], args[1], args[2]); + } + }; + if (curve !== null) { + // Only values of type Float32Array can be assigned to the curve property. + nativeWaveShaperNodeFaker.curve = curve instanceof Float32Array ? curve : new Float32Array(curve); + } + if (oversample !== nativeWaveShaperNodeFaker.oversample) { + nativeWaveShaperNodeFaker.oversample = oversample; + } + const whenConnected = () => { + inputGainNode.connect(negativeWaveShaperNode).connect(outputGainNode); + inputGainNode.connect(invertGainNode).connect(positiveWaveShaperNode).connect(revertGainNode).connect(outputGainNode); + isConnected = true; + if (isDCCurve(unmodifiedCurve)) { + disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode); + } + }; + const whenDisconnected = () => { + inputGainNode.disconnect(negativeWaveShaperNode); + negativeWaveShaperNode.disconnect(outputGainNode); + inputGainNode.disconnect(invertGainNode); + invertGainNode.disconnect(positiveWaveShaperNode); + positiveWaveShaperNode.disconnect(revertGainNode); + revertGainNode.disconnect(outputGainNode); + isConnected = false; + if (disconnectNativeAudioBufferSourceNode !== null) { + disconnectNativeAudioBufferSourceNode(); + disconnectNativeAudioBufferSourceNode = null; + } + }; + return monitorConnections(interceptConnections(nativeWaveShaperNodeFaker, outputGainNode), whenConnected, whenDisconnected); + }; +}; + +const createNotSupportedError = () => new DOMException('', 'NotSupportedError'); + +const DEFAULT_OPTIONS$e = { + numberOfChannels: 1 +}; +const createOfflineAudioContextConstructor = (baseAudioContextConstructor, cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, startRendering) => { + return class OfflineAudioContext extends baseAudioContextConstructor { + constructor(a, b, c) { + let options; + if (typeof a === 'number' && b !== undefined && c !== undefined) { + options = { length: b, numberOfChannels: a, sampleRate: c }; + } + else if (typeof a === 'object') { + options = a; + } + else { + throw new Error('The given parameters are not valid.'); + } + const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS$e, ...options }; + const nativeOfflineAudioContext = createNativeOfflineAudioContext(numberOfChannels, length, sampleRate); + // #21 Safari does not support promises and therefore would fire the statechange event before the promise can be resolved. + if (!cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) { + nativeOfflineAudioContext.addEventListener('statechange', (() => { + let i = 0; + const delayStateChangeEvent = (event) => { + if (this._state === 'running') { + if (i > 0) { + nativeOfflineAudioContext.removeEventListener('statechange', delayStateChangeEvent); + event.stopImmediatePropagation(); + this._waitForThePromiseToSettle(event); + } + else { + i += 1; + } + } + }; + return delayStateChangeEvent; + })()); + } + super(nativeOfflineAudioContext, numberOfChannels); + this._length = length; + this._nativeOfflineAudioContext = nativeOfflineAudioContext; + this._state = null; + } + get length() { + // Bug #17: Safari does not yet expose the length. + if (this._nativeOfflineAudioContext.length === undefined) { + return this._length; + } + return this._nativeOfflineAudioContext.length; + } + get state() { + return this._state === null ? this._nativeOfflineAudioContext.state : this._state; + } + startRendering() { + /* + * Bug #9 & #59: It is theoretically possible that startRendering() will first render a partialOfflineAudioContext. Therefore + * the state of the nativeOfflineAudioContext might no transition to running immediately. + */ + if (this._state === 'running') { + return Promise.reject(createInvalidStateError()); + } + this._state = 'running'; + return startRendering(this.destination, this._nativeOfflineAudioContext).finally(() => { + this._state = null; + deactivateAudioGraph(this); + }); + } + _waitForThePromiseToSettle(event) { + if (this._state === null) { + this._nativeOfflineAudioContext.dispatchEvent(event); + } + else { + setTimeout(() => this._waitForThePromiseToSettle(event)); + } + } + }; +}; + +const DEFAULT_OPTIONS$f = { + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + detune: 0, + frequency: 440, + periodicWave: undefined, + type: 'sine' +}; +const createOscillatorNodeConstructor = (audioNodeConstructor, createAudioParam, createNativeOscillatorNode, createOscillatorNodeRenderer, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => { + return class OscillatorNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$f, ...options }; + const nativeOscillatorNode = createNativeOscillatorNode(nativeContext, mergedOptions); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const oscillatorNodeRenderer = (isOffline ? createOscillatorNodeRenderer() : null); + const nyquist = context.sampleRate / 2; + super(context, false, nativeOscillatorNode, oscillatorNodeRenderer); + // Bug #81: Firefox & Safari do not export the correct values for maxValue and minValue. + this._detune = createAudioParam(this, isOffline, nativeOscillatorNode.detune, 153600, -153600); + // Bug #76: Safari does not export the correct values for maxValue and minValue. + this._frequency = createAudioParam(this, isOffline, nativeOscillatorNode.frequency, nyquist, -nyquist); + this._nativeOscillatorNode = nativeOscillatorNode; + this._onended = null; + this._oscillatorNodeRenderer = oscillatorNodeRenderer; + if (this._oscillatorNodeRenderer !== null && mergedOptions.periodicWave !== undefined) { + this._oscillatorNodeRenderer.periodicWave = + mergedOptions.periodicWave; + } + } + get detune() { + return this._detune; + } + get frequency() { + return this._frequency; + } + get onended() { + return this._onended; + } + set onended(value) { + const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null; + this._nativeOscillatorNode.onended = wrappedListener; + const nativeOnEnded = this._nativeOscillatorNode.onended; + this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded; + } + get type() { + return this._nativeOscillatorNode.type; + } + set type(value) { + this._nativeOscillatorNode.type = value; + if (this._oscillatorNodeRenderer !== null) { + this._oscillatorNodeRenderer.periodicWave = null; + } + } + setPeriodicWave(periodicWave) { + this._nativeOscillatorNode.setPeriodicWave(periodicWave); + if (this._oscillatorNodeRenderer !== null) { + this._oscillatorNodeRenderer.periodicWave = periodicWave; + } + } + start(when = 0) { + this._nativeOscillatorNode.start(when); + if (this._oscillatorNodeRenderer !== null) { + this._oscillatorNodeRenderer.start = when; + } + if (this.context.state !== 'closed') { + setInternalStateToActive(this); + const resetInternalStateToPassive = () => { + this._nativeOscillatorNode.removeEventListener('ended', resetInternalStateToPassive); + if (isActiveAudioNode(this)) { + setInternalStateToPassive(this); + } + }; + this._nativeOscillatorNode.addEventListener('ended', resetInternalStateToPassive); + } + } + stop(when = 0) { + this._nativeOscillatorNode.stop(when); + if (this._oscillatorNodeRenderer !== null) { + this._oscillatorNodeRenderer.stop = when; + } + } + }; +}; + +const createOscillatorNodeRendererFactory = (connectAudioParam, createNativeOscillatorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { + return () => { + const renderedNativeOscillatorNodes = new WeakMap(); + let periodicWave = null; + let start = null; + let stop = null; + const createOscillatorNode = async (proxy, nativeOfflineAudioContext) => { + let nativeOscillatorNode = getNativeAudioNode(proxy); + // If the initially used nativeOscillatorNode was not constructed on the same OfflineAudioContext it needs to be created again. + const nativeOscillatorNodeIsOwnedByContext = isOwnedByContext(nativeOscillatorNode, nativeOfflineAudioContext); + if (!nativeOscillatorNodeIsOwnedByContext) { + const options = { + channelCount: nativeOscillatorNode.channelCount, + channelCountMode: nativeOscillatorNode.channelCountMode, + channelInterpretation: nativeOscillatorNode.channelInterpretation, + detune: nativeOscillatorNode.detune.value, + frequency: nativeOscillatorNode.frequency.value, + periodicWave: periodicWave === null ? undefined : periodicWave, + type: nativeOscillatorNode.type + }; + nativeOscillatorNode = createNativeOscillatorNode(nativeOfflineAudioContext, options); + if (start !== null) { + nativeOscillatorNode.start(start); + } + if (stop !== null) { + nativeOscillatorNode.stop(stop); + } + } + renderedNativeOscillatorNodes.set(nativeOfflineAudioContext, nativeOscillatorNode); + if (!nativeOscillatorNodeIsOwnedByContext) { + await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune); + await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency); + } + else { + await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune); + await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency); + } + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeOscillatorNode); + return nativeOscillatorNode; + }; + return { + set periodicWave(value) { + periodicWave = value; + }, + set start(value) { + start = value; + }, + set stop(value) { + stop = value; + }, + render(proxy, nativeOfflineAudioContext) { + const renderedNativeOscillatorNode = renderedNativeOscillatorNodes.get(nativeOfflineAudioContext); + if (renderedNativeOscillatorNode !== undefined) { + return Promise.resolve(renderedNativeOscillatorNode); + } + return createOscillatorNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const DEFAULT_OPTIONS$g = { + channelCount: 2, + channelCountMode: 'clamped-max', + channelInterpretation: 'speakers', + coneInnerAngle: 360, + coneOuterAngle: 360, + coneOuterGain: 0, + distanceModel: 'inverse', + maxDistance: 10000, + orientationX: 1, + orientationY: 0, + orientationZ: 0, + panningModel: 'equalpower', + positionX: 0, + positionY: 0, + positionZ: 0, + refDistance: 1, + rolloffFactor: 1 +}; +const createPannerNodeConstructor = (audioNodeConstructor, createAudioParam, createNativePannerNode, createPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { + return class PannerNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$g, ...options }; + const nativePannerNode = createNativePannerNode(nativeContext, mergedOptions); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const pannerNodeRenderer = (isOffline ? createPannerNodeRenderer() : null); + super(context, false, nativePannerNode, pannerNodeRenderer); + this._nativePannerNode = nativePannerNode; + // Bug #74: Safari does not export the correct values for maxValue and minValue. + this._orientationX = createAudioParam(this, isOffline, nativePannerNode.orientationX, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); + this._orientationY = createAudioParam(this, isOffline, nativePannerNode.orientationY, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); + this._orientationZ = createAudioParam(this, isOffline, nativePannerNode.orientationZ, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); + this._positionX = createAudioParam(this, isOffline, nativePannerNode.positionX, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); + this._positionY = createAudioParam(this, isOffline, nativePannerNode.positionY, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); + this._positionZ = createAudioParam(this, isOffline, nativePannerNode.positionZ, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); + // @todo Determine a meaningful tail-time instead of just using one second. + setAudioNodeTailTime(this, 1); + } + get coneInnerAngle() { + return this._nativePannerNode.coneInnerAngle; + } + set coneInnerAngle(value) { + this._nativePannerNode.coneInnerAngle = value; + } + get coneOuterAngle() { + return this._nativePannerNode.coneOuterAngle; + } + set coneOuterAngle(value) { + this._nativePannerNode.coneOuterAngle = value; + } + get coneOuterGain() { + return this._nativePannerNode.coneOuterGain; + } + set coneOuterGain(value) { + this._nativePannerNode.coneOuterGain = value; + } + get distanceModel() { + return this._nativePannerNode.distanceModel; + } + set distanceModel(value) { + this._nativePannerNode.distanceModel = value; + } + get maxDistance() { + return this._nativePannerNode.maxDistance; + } + set maxDistance(value) { + this._nativePannerNode.maxDistance = value; + } + get orientationX() { + return this._orientationX; + } + get orientationY() { + return this._orientationY; + } + get orientationZ() { + return this._orientationZ; + } + get panningModel() { + return this._nativePannerNode.panningModel; + } + set panningModel(value) { + this._nativePannerNode.panningModel = value; + } + get positionX() { + return this._positionX; + } + get positionY() { + return this._positionY; + } + get positionZ() { + return this._positionZ; + } + get refDistance() { + return this._nativePannerNode.refDistance; + } + set refDistance(value) { + this._nativePannerNode.refDistance = value; + } + get rolloffFactor() { + return this._nativePannerNode.rolloffFactor; + } + set rolloffFactor(value) { + this._nativePannerNode.rolloffFactor = value; + } + }; +}; + +const createPannerNodeRendererFactory = (connectAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeGainNode, createNativePannerNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => { + return () => { + const renderedNativeAudioNodes = new WeakMap(); + let renderedBufferPromise = null; + const createAudioNode = async (proxy, nativeOfflineAudioContext) => { + let nativeGainNode = null; + let nativePannerNode = getNativeAudioNode(proxy); + const commonAudioNodeOptions = { + channelCount: nativePannerNode.channelCount, + channelCountMode: nativePannerNode.channelCountMode, + channelInterpretation: nativePannerNode.channelInterpretation + }; + const commonNativePannerNodeOptions = { + ...commonAudioNodeOptions, + coneInnerAngle: nativePannerNode.coneInnerAngle, + coneOuterAngle: nativePannerNode.coneOuterAngle, + coneOuterGain: nativePannerNode.coneOuterGain, + distanceModel: nativePannerNode.distanceModel, + maxDistance: nativePannerNode.maxDistance, + panningModel: nativePannerNode.panningModel, + refDistance: nativePannerNode.refDistance, + rolloffFactor: nativePannerNode.rolloffFactor + }; + // If the initially used nativePannerNode was not constructed on the same OfflineAudioContext it needs to be created again. + const nativePannerNodeIsOwnedByContext = isOwnedByContext(nativePannerNode, nativeOfflineAudioContext); + // Bug #124: Safari does not support modifying the orientation and the position with AudioParams. + if ('bufferSize' in nativePannerNode) { + nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 }); + } + else if (!nativePannerNodeIsOwnedByContext) { + const options = { + ...commonNativePannerNodeOptions, + orientationX: nativePannerNode.orientationX.value, + orientationY: nativePannerNode.orientationY.value, + orientationZ: nativePannerNode.orientationZ.value, + positionX: nativePannerNode.positionX.value, + positionY: nativePannerNode.positionY.value, + positionZ: nativePannerNode.positionZ.value + }; + nativePannerNode = createNativePannerNode(nativeOfflineAudioContext, options); + } + renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeGainNode === null ? nativePannerNode : nativeGainNode); + if (nativeGainNode !== null) { + if (renderedBufferPromise === null) { + if (nativeOfflineAudioContextConstructor === null) { + throw new Error('Missing the native OfflineAudioContext constructor.'); + } + const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(6, + // Bug #17: Safari does not yet expose the length. + proxy.context.length, nativeOfflineAudioContext.sampleRate); + const nativeChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'speakers', + numberOfInputs: 6 + }); + nativeChannelMergerNode.connect(partialOfflineAudioContext.destination); + renderedBufferPromise = (async () => { + const nativeConstantSourceNodes = await Promise.all([ + proxy.orientationX, + proxy.orientationY, + proxy.orientationZ, + proxy.positionX, + proxy.positionY, + proxy.positionZ + ].map(async (audioParam, index) => { + const nativeConstantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + offset: index === 0 ? 1 : 0 + }); + await renderAutomation(partialOfflineAudioContext, audioParam, nativeConstantSourceNode.offset); + return nativeConstantSourceNode; + })); + for (let i = 0; i < 6; i += 1) { + nativeConstantSourceNodes[i].connect(nativeChannelMergerNode, 0, i); + nativeConstantSourceNodes[i].start(0); + } + return renderNativeOfflineAudioContext(partialOfflineAudioContext); + })(); + } + const renderedBuffer = await renderedBufferPromise; + const inputGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 }); + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, inputGainNode); + const channelDatas = []; + for (let i = 0; i < renderedBuffer.numberOfChannels; i += 1) { + channelDatas.push(renderedBuffer.getChannelData(i)); + } + let lastOrientation = [channelDatas[0][0], channelDatas[1][0], channelDatas[2][0]]; + let lastPosition = [channelDatas[3][0], channelDatas[4][0], channelDatas[5][0]]; + let gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 }); + let partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, { + ...commonNativePannerNodeOptions, + orientationX: lastOrientation[0], + orientationY: lastOrientation[1], + orientationZ: lastOrientation[2], + positionX: lastPosition[0], + positionY: lastPosition[1], + positionZ: lastPosition[2] + }); + inputGainNode.connect(gateGainNode).connect(partialPannerNode.inputs[0]); + partialPannerNode.connect(nativeGainNode); + for (let i = 128; i < renderedBuffer.length; i += 128) { + const orientation = [channelDatas[0][i], channelDatas[1][i], channelDatas[2][i]]; + const positon = [channelDatas[3][i], channelDatas[4][i], channelDatas[5][i]]; + if (orientation.some((value, index) => value !== lastOrientation[index]) || + positon.some((value, index) => value !== lastPosition[index])) { + lastOrientation = orientation; + lastPosition = positon; + const currentTime = i / nativeOfflineAudioContext.sampleRate; + gateGainNode.gain.setValueAtTime(0, currentTime); + gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 0 }); + partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, { + ...commonNativePannerNodeOptions, + orientationX: lastOrientation[0], + orientationY: lastOrientation[1], + orientationZ: lastOrientation[2], + positionX: lastPosition[0], + positionY: lastPosition[1], + positionZ: lastPosition[2] + }); + gateGainNode.gain.setValueAtTime(1, currentTime); + inputGainNode.connect(gateGainNode).connect(partialPannerNode.inputs[0]); + partialPannerNode.connect(nativeGainNode); + } + } + return nativeGainNode; + } + if (!nativePannerNodeIsOwnedByContext) { + await renderAutomation(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX); + await renderAutomation(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY); + await renderAutomation(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ); + await renderAutomation(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX); + await renderAutomation(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY); + await renderAutomation(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ); + } + else { + await connectAudioParam(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX); + await connectAudioParam(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY); + await connectAudioParam(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ); + await connectAudioParam(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX); + await connectAudioParam(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY); + await connectAudioParam(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ); + } + if (isNativeAudioNodeFaker(nativePannerNode)) { + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode.inputs[0]); + } + else { + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode); + } + return nativePannerNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeGainNodeOrNativePannerNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext); + if (renderedNativeGainNodeOrNativePannerNode !== undefined) { + return Promise.resolve(renderedNativeGainNodeOrNativePannerNode); + } + return createAudioNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const DEFAULT_OPTIONS$h = { + disableNormalization: false +}; +const createPeriodicWaveConstructor = (createNativePeriodicWave, getNativeContext, periodicWaveStore, sanitizePeriodicWaveOptions) => { + return class PeriodicWave { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = sanitizePeriodicWaveOptions({ ...DEFAULT_OPTIONS$h, ...options }); + const periodicWave = createNativePeriodicWave(nativeContext, mergedOptions); + periodicWaveStore.add(periodicWave); + // This does violate all good pratices but it is used here to simplify the handling of periodic waves. + return periodicWave; + } + static [Symbol.hasInstance](instance) { + return ((instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === PeriodicWave.prototype) || + periodicWaveStore.has(instance)); + } + }; +}; + +const createRenderAutomation = (getAudioParamRenderer, renderInputsOfAudioParam) => { + return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => { + const audioParamRenderer = getAudioParamRenderer(audioParam); + audioParamRenderer.replay(nativeAudioParam); + return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam); + }; +}; + +const createRenderInputsOfAudioNode = (getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle) => { + return async (audioNode, nativeOfflineAudioContext, nativeAudioNode) => { + const audioNodeConnections = getAudioNodeConnections(audioNode); + await Promise.all(audioNodeConnections.activeInputs + .map((connections, input) => Array.from(connections).map(async ([source, output]) => { + const audioNodeRenderer = getAudioNodeRenderer(source); + const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext); + const destination = audioNode.context.destination; + if (!isPartOfACycle(source) && (audioNode !== destination || !isPartOfACycle(audioNode))) { + renderedNativeAudioNode.connect(nativeAudioNode, output, input); + } + })) + .reduce((allRenderingPromises, renderingPromises) => [...allRenderingPromises, ...renderingPromises], [])); + }; +}; + +const createRenderInputsOfAudioParam = (getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle) => { + return async (audioParam, nativeOfflineAudioContext, nativeAudioParam) => { + const audioParamConnections = getAudioParamConnections(audioParam); + await Promise.all(Array.from(audioParamConnections.activeInputs).map(async ([source, output]) => { + const audioNodeRenderer = getAudioNodeRenderer(source); + const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext); + if (!isPartOfACycle(source)) { + renderedNativeAudioNode.connect(nativeAudioParam, output); + } + })); + }; +}; + +const createRenderNativeOfflineAudioContext = (cacheTestResult, createNativeGainNode, createNativeScriptProcessorNode, testOfflineAudioContextCurrentTimeSupport) => { + return (nativeOfflineAudioContext) => { + // Bug #21: Safari does not support promises yet. + if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) { + // Bug #158: Chrome and Edge do not advance currentTime if it is not accessed while rendering the audio. + return Promise.resolve(cacheTestResult(testOfflineAudioContextCurrentTimeSupport, testOfflineAudioContextCurrentTimeSupport)).then((isOfflineAudioContextCurrentTimeSupported) => { + if (!isOfflineAudioContextCurrentTimeSupported) { + const scriptProcessorNode = createNativeScriptProcessorNode(nativeOfflineAudioContext, 512, 0, 1); + nativeOfflineAudioContext.oncomplete = () => { + scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation + scriptProcessorNode.disconnect(); + }; + scriptProcessorNode.onaudioprocess = () => nativeOfflineAudioContext.currentTime; // tslint:disable-line:deprecation + scriptProcessorNode.connect(nativeOfflineAudioContext.destination); + } + return nativeOfflineAudioContext.startRendering(); + }); + } + return new Promise((resolve) => { + // Bug #48: Safari does not render an OfflineAudioContext without any connected node. + const gainNode = createNativeGainNode(nativeOfflineAudioContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + gain: 0 + }); + nativeOfflineAudioContext.oncomplete = (event) => { + gainNode.disconnect(); + resolve(event.renderedBuffer); + }; + gainNode.connect(nativeOfflineAudioContext.destination); + nativeOfflineAudioContext.startRendering(); + }); + }; +}; + +const createSetActiveAudioWorkletNodeInputs = (activeAudioWorkletNodeInputsStore) => { + return (nativeAudioWorkletNode, activeInputs) => { + activeAudioWorkletNodeInputsStore.set(nativeAudioWorkletNode, activeInputs); + }; +}; + +const createSetAudioNodeTailTime = (audioNodeTailTimeStore) => { + return (audioNode, tailTime) => audioNodeTailTimeStore.set(audioNode, tailTime); +}; + +const createStartRendering = (audioBufferStore, cacheTestResult, getAudioNodeRenderer, getUnrenderedAudioWorkletNodes, renderNativeOfflineAudioContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => { + return (destination, nativeOfflineAudioContext) => getAudioNodeRenderer(destination) + .render(destination, nativeOfflineAudioContext) + /* + * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to the + * destination. + */ + .then(() => Promise.all(Array.from(getUnrenderedAudioWorkletNodes(nativeOfflineAudioContext)).map((audioWorkletNode) => getAudioNodeRenderer(audioWorkletNode).render(audioWorkletNode, nativeOfflineAudioContext)))) + .then(() => renderNativeOfflineAudioContext(nativeOfflineAudioContext)) + .then((audioBuffer) => { + // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). + // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value. + if (typeof audioBuffer.copyFromChannel !== 'function') { + wrapAudioBufferCopyChannelMethods(audioBuffer); + wrapAudioBufferGetChannelDataMethod(audioBuffer); + // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds. + } + else if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) { + wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer); + } + audioBufferStore.add(audioBuffer); + return audioBuffer; + }); +}; + +const DEFAULT_OPTIONS$i = { + channelCount: 2, + /* + * Bug #105: The channelCountMode should be 'clamped-max' according to the spec but is set to 'explicit' to achieve consistent + * behavior. + */ + channelCountMode: 'explicit', + channelInterpretation: 'speakers', + pan: 0 +}; +const createStereoPannerNodeConstructor = (audioNodeConstructor, createAudioParam, createNativeStereoPannerNode, createStereoPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext) => { + return class StereoPannerNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$i, ...options }; + const nativeStereoPannerNode = createNativeStereoPannerNode(nativeContext, mergedOptions); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const stereoPannerNodeRenderer = (isOffline ? createStereoPannerNodeRenderer() : null); + super(context, false, nativeStereoPannerNode, stereoPannerNodeRenderer); + this._pan = createAudioParam(this, isOffline, nativeStereoPannerNode.pan); + } + get pan() { + return this._pan; + } + }; +}; + +const createStereoPannerNodeRendererFactory = (connectAudioParam, createNativeStereoPannerNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { + return () => { + const renderedNativeStereoPannerNodes = new WeakMap(); + const createStereoPannerNode = async (proxy, nativeOfflineAudioContext) => { + let nativeStereoPannerNode = getNativeAudioNode(proxy); + /* + * If the initially used nativeStereoPannerNode was not constructed on the same OfflineAudioContext it needs to be created + * again. + */ + const nativeStereoPannerNodeIsOwnedByContext = isOwnedByContext(nativeStereoPannerNode, nativeOfflineAudioContext); + if (!nativeStereoPannerNodeIsOwnedByContext) { + const options = { + channelCount: nativeStereoPannerNode.channelCount, + channelCountMode: nativeStereoPannerNode.channelCountMode, + channelInterpretation: nativeStereoPannerNode.channelInterpretation, + pan: nativeStereoPannerNode.pan.value + }; + nativeStereoPannerNode = createNativeStereoPannerNode(nativeOfflineAudioContext, options); + } + renderedNativeStereoPannerNodes.set(nativeOfflineAudioContext, nativeStereoPannerNode); + if (!nativeStereoPannerNodeIsOwnedByContext) { + await renderAutomation(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan); + } + else { + await connectAudioParam(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan); + } + if (isNativeAudioNodeFaker(nativeStereoPannerNode)) { + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode.inputs[0]); + } + else { + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode); + } + return nativeStereoPannerNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeStereoPannerNode = renderedNativeStereoPannerNodes.get(nativeOfflineAudioContext); + if (renderedNativeStereoPannerNode !== undefined) { + return Promise.resolve(renderedNativeStereoPannerNode); + } + return createStereoPannerNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +// Bug #33: Safari exposes an AudioBuffer but it can't be used as a constructor. +const createTestAudioBufferConstructorSupport = (nativeAudioBufferConstructor) => { + return () => { + if (nativeAudioBufferConstructor === null) { + return false; + } + try { + new nativeAudioBufferConstructor({ length: 1, sampleRate: 44100 }); // tslint:disable-line:no-unused-expression + } + catch { + return false; + } + return true; + }; +}; + +/* + * Firefox up to version 67 didn't fully support the copyFromChannel() and copyToChannel() methods. Therefore testing one of those methods + * is enough to know if the other one is supported as well. + */ +const createTestAudioBufferCopyChannelMethodsSubarraySupport = (nativeOfflineAudioContextConstructor) => { + return () => { + if (nativeOfflineAudioContextConstructor === null) { + return false; + } + const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); + const nativeAudioBuffer = nativeOfflineAudioContext.createBuffer(1, 1, 44100); + // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). + if (nativeAudioBuffer.copyToChannel === undefined) { + return true; + } + const source = new Float32Array(2); + try { + nativeAudioBuffer.copyFromChannel(source, 0, 0); + } + catch { + return false; + } + return true; + }; +}; + +const createTestAudioContextCloseMethodSupport = (nativeAudioContextConstructor) => { + return () => { + if (nativeAudioContextConstructor === null) { + return false; + } + // Try to check the prototype before constructing the AudioContext. + if (nativeAudioContextConstructor.prototype !== undefined && nativeAudioContextConstructor.prototype.close !== undefined) { + return true; + } + const audioContext = new nativeAudioContextConstructor(); + const isAudioContextClosable = audioContext.close !== undefined; + try { + audioContext.close(); + } + catch { + // Ignore errors. + } + return isAudioContextClosable; + }; +}; + +/** + * Edge up to version 14, Firefox up to version 52, Safari up to version 9 and maybe other browsers + * did not refuse to decode invalid parameters with a TypeError. + */ +const createTestAudioContextDecodeAudioDataMethodTypeErrorSupport = (nativeOfflineAudioContextConstructor) => { + return () => { + if (nativeOfflineAudioContextConstructor === null) { + return Promise.resolve(false); + } + const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); + // Bug #21: Safari does not support promises yet. + return new Promise((resolve) => { + let isPending = true; + const resolvePromise = (err) => { + if (isPending) { + isPending = false; + offlineAudioContext.startRendering(); + resolve(err instanceof TypeError); + } + }; + let promise; + // Bug #26: Safari throws a synchronous error. + try { + promise = offlineAudioContext + // Bug #1: Safari requires a successCallback. + .decodeAudioData(null, () => { + // Ignore the success callback. + }, resolvePromise); + } + catch (err) { + resolvePromise(err); + } + // Bug #21: Safari does not support promises yet. + if (promise !== undefined) { + // Bug #6: Chrome, Edge, Firefox and Opera do not call the errorCallback. + promise.catch(resolvePromise); + } + }); + }; +}; + +const createTestAudioContextOptionsSupport = (nativeAudioContextConstructor) => { + return () => { + if (nativeAudioContextConstructor === null) { + return false; + } + let audioContext; + try { + audioContext = new nativeAudioContextConstructor({ latencyHint: 'balanced' }); + } + catch { + return false; + } + audioContext.close(); + return true; + }; +}; + +// Safari up to version 12.0 (but not v12.1) didn't return the destination in case it was an AudioNode. +const createTestAudioNodeConnectMethodSupport = (nativeOfflineAudioContextConstructor) => { + return () => { + if (nativeOfflineAudioContextConstructor === null) { + return false; + } + const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); + const nativeGainNode = nativeOfflineAudioContext.createGain(); + const isSupported = nativeGainNode.connect(nativeGainNode) === nativeGainNode; + nativeGainNode.disconnect(nativeGainNode); + return isSupported; + }; +}; + +/** + * Chrome version 66 and 67 did not call the process() function of an AudioWorkletProcessor if it had no outputs. AudioWorklet support was + * enabled by default in version 66. + */ +const createTestAudioWorkletProcessorNoOutputsSupport = (nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor) => { + return async () => { + // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist. + if (nativeAudioWorkletNodeConstructor === null) { + return true; + } + if (nativeOfflineAudioContextConstructor === null) { + return false; + } + const blob = new Blob([ + 'let c,p;class A extends AudioWorkletProcessor{constructor(){super();this.port.onmessage=(e)=>{p=e.data;p.onmessage=()=>{p.postMessage(c);p.close()};this.port.postMessage(0)}}process(){c=1}}registerProcessor("a",A)' + ], { + type: 'application/javascript; charset=utf-8' + }); + const messageChannel = new MessageChannel(); + // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz. + const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 44100); + const url = URL.createObjectURL(blob); + let isCallingProcess = false; + try { + await offlineAudioContext.audioWorklet.addModule(url); + const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 }); + const oscillator = offlineAudioContext.createOscillator(); + await new Promise((resolve) => { + audioWorkletNode.port.onmessage = () => resolve(); + audioWorkletNode.port.postMessage(messageChannel.port2, [messageChannel.port2]); + }); + audioWorkletNode.port.onmessage = () => (isCallingProcess = true); + oscillator.connect(audioWorkletNode); + oscillator.start(0); + await offlineAudioContext.startRendering(); + isCallingProcess = await new Promise((resolve) => { + messageChannel.port1.onmessage = ({ data }) => resolve(data === 1); + messageChannel.port1.postMessage(0); + }); + } + catch { + // Ignore errors. + } + finally { + messageChannel.port1.close(); + URL.revokeObjectURL(url); + } + return isCallingProcess; + }; +}; + +// Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument. +const createTestAudioWorkletProcessorPostMessageSupport = (nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor) => { + return async () => { + // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist. + if (nativeAudioWorkletNodeConstructor === null) { + return true; + } + if (nativeOfflineAudioContextConstructor === null) { + return false; + } + const blob = new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)'], { + type: 'application/javascript; charset=utf-8' + }); + // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz. + const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 44100); + const url = URL.createObjectURL(blob); + let isEmittingMessageEvents = false; + let isEmittingProcessorErrorEvents = false; + try { + await offlineAudioContext.audioWorklet.addModule(url); + const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 }); + const oscillator = offlineAudioContext.createOscillator(); + audioWorkletNode.port.onmessage = () => (isEmittingMessageEvents = true); + audioWorkletNode.onprocessorerror = () => (isEmittingProcessorErrorEvents = true); + oscillator.connect(audioWorkletNode); + oscillator.start(0); + await offlineAudioContext.startRendering(); + } + catch { + // Ignore errors. + } + finally { + URL.revokeObjectURL(url); + } + return isEmittingMessageEvents && !isEmittingProcessorErrorEvents; + }; +}; + +/** + * Firefox up to version 69 did not throw an error when setting a different channelCount or channelCountMode. + */ +const createTestChannelMergerNodeChannelCountSupport = (nativeOfflineAudioContextConstructor) => { + return () => { + if (nativeOfflineAudioContextConstructor === null) { + return false; + } + const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); + const nativeChannelMergerNode = offlineAudioContext.createChannelMerger(); + /** + * Bug #15: Safari does not return the default properties. It still needs to be patched. This test is supposed to test the support + * in other browsers. + */ + if (nativeChannelMergerNode.channelCountMode === 'max') { + return true; + } + try { + nativeChannelMergerNode.channelCount = 2; + } + catch { + return true; + } + return false; + }; +}; + +const createTestConstantSourceNodeAccurateSchedulingSupport = (nativeOfflineAudioContextConstructor) => { + return () => { + if (nativeOfflineAudioContextConstructor === null) { + return false; + } + const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); + // Bug #62: Safari does not support ConstantSourceNodes. + if (nativeOfflineAudioContext.createConstantSource === undefined) { + return true; + } + const nativeConstantSourceNode = nativeOfflineAudioContext.createConstantSource(); + /* + * @todo This is using bug #75 to detect bug #70. That works because both bugs were unique to + * the implementation of Firefox right now, but it could probably be done in a better way. + */ + return nativeConstantSourceNode.offset.maxValue !== Number.POSITIVE_INFINITY; + }; +}; + +// Opera up to version 57 did not allow to reassign the buffer of a ConvolverNode. +const createTestConvolverNodeBufferReassignabilitySupport = (nativeOfflineAudioContextConstructor) => { + return () => { + if (nativeOfflineAudioContextConstructor === null) { + return false; + } + const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); + const nativeConvolverNode = offlineAudioContext.createConvolver(); + nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate); + try { + nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate); + } + catch { + return false; + } + return true; + }; +}; + +// Chrome up to version v80, Edge up to version v80 and Opera up to version v67 did not allow to set the channelCount property of a ConvolverNode to 1. They also did not allow to set the channelCountMode to 'explicit'. +const createTestConvolverNodeChannelCountSupport = (nativeOfflineAudioContextConstructor) => { + return () => { + if (nativeOfflineAudioContextConstructor === null) { + return false; + } + const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); + const nativeConvolverNode = offlineAudioContext.createConvolver(); + try { + nativeConvolverNode.channelCount = 1; + } + catch { + return false; + } + return true; + }; +}; + +const createTestIsSecureContextSupport = (window) => { + return () => window !== null && window.hasOwnProperty('isSecureContext'); +}; + +// Firefox up to version 68 did not throw an error when creating a MediaStreamAudioSourceNode with a mediaStream that had no audio track. +const createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport = (nativeAudioContextConstructor) => { + return () => { + if (nativeAudioContextConstructor === null) { + return false; + } + const audioContext = new nativeAudioContextConstructor(); + try { + audioContext.createMediaStreamSource(new MediaStream()); + return false; + } + catch (err) { + return true; + } + finally { + audioContext.close(); + } + }; +}; + +const createTestOfflineAudioContextCurrentTimeSupport = (createNativeGainNode, nativeOfflineAudioContextConstructor) => { + return () => { + if (nativeOfflineAudioContextConstructor === null) { + return Promise.resolve(false); + } + const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); + // Bug #48: Safari does not render an OfflineAudioContext without any connected node. + const gainNode = createNativeGainNode(nativeOfflineAudioContext, { + channelCount: 1, + channelCountMode: 'explicit', + channelInterpretation: 'discrete', + gain: 0 + }); + // Bug #21: Safari does not support promises yet. + return new Promise((resolve) => { + nativeOfflineAudioContext.oncomplete = () => { + gainNode.disconnect(); + resolve(nativeOfflineAudioContext.currentTime !== 0); + }; + nativeOfflineAudioContext.startRendering(); + }); + }; +}; + +/** + * Firefox up to version 62 did not kick off the processing of the StereoPannerNode if the value of pan was zero. + */ +const createTestStereoPannerNodeDefaultValueSupport = (nativeOfflineAudioContextConstructor) => { + return () => { + if (nativeOfflineAudioContextConstructor === null) { + return Promise.resolve(false); + } + const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); + /* + * Bug #105: Safari does not support the StereoPannerNode. Therefore the returned value should normally be false but the faker does + * support the tested behaviour. + */ + if (nativeOfflineAudioContext.createStereoPanner === undefined) { + return Promise.resolve(true); + } + // Bug #62: Safari does not support ConstantSourceNodes. + if (nativeOfflineAudioContext.createConstantSource === undefined) { + return Promise.resolve(true); + } + const constantSourceNode = nativeOfflineAudioContext.createConstantSource(); + const stereoPanner = nativeOfflineAudioContext.createStereoPanner(); + constantSourceNode.channelCount = 1; + constantSourceNode.offset.value = 1; + stereoPanner.channelCount = 1; + constantSourceNode.start(); + constantSourceNode.connect(stereoPanner).connect(nativeOfflineAudioContext.destination); + return nativeOfflineAudioContext.startRendering().then((buffer) => buffer.getChannelData(0)[0] !== 1); + }; +}; + +const createUnknownError = () => new DOMException('', 'UnknownError'); + +const DEFAULT_OPTIONS$j = { + channelCount: 2, + channelCountMode: 'max', + channelInterpretation: 'speakers', + curve: null, + oversample: 'none' +}; +const createWaveShaperNodeConstructor = (audioNodeConstructor, createInvalidStateError, createNativeWaveShaperNode, createWaveShaperNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { + return class WaveShaperNode extends audioNodeConstructor { + constructor(context, options) { + const nativeContext = getNativeContext(context); + const mergedOptions = { ...DEFAULT_OPTIONS$j, ...options }; + const nativeWaveShaperNode = createNativeWaveShaperNode(nativeContext, mergedOptions); + const isOffline = isNativeOfflineAudioContext(nativeContext); + const waveShaperNodeRenderer = (isOffline ? createWaveShaperNodeRenderer() : null); + // @todo Add a mechanism to only switch a WaveShaperNode to active while it is connected. + super(context, true, nativeWaveShaperNode, waveShaperNodeRenderer); + this._isCurveNullified = false; + this._nativeWaveShaperNode = nativeWaveShaperNode; + // @todo Determine a meaningful tail-time instead of just using one second. + setAudioNodeTailTime(this, 1); + } + get curve() { + if (this._isCurveNullified) { + return null; + } + return this._nativeWaveShaperNode.curve; + } + set curve(value) { + // Bug #103: Safari does not allow to set the curve to null. + if (value === null) { + this._isCurveNullified = true; + this._nativeWaveShaperNode.curve = new Float32Array([0, 0]); + } + else { + // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples. + // Bug #104: Chrome, Edge and Opera will throw an InvalidAccessError when the curve has less than two samples. + if (value.length < 2) { + throw createInvalidStateError(); + } + this._isCurveNullified = false; + this._nativeWaveShaperNode.curve = value; + } + } + get oversample() { + return this._nativeWaveShaperNode.oversample; + } + set oversample(value) { + this._nativeWaveShaperNode.oversample = value; + } + }; +}; + +const createWaveShaperNodeRendererFactory = (createNativeWaveShaperNode, getNativeAudioNode, renderInputsOfAudioNode) => { + return () => { + const renderedNativeWaveShaperNodes = new WeakMap(); + const createWaveShaperNode = async (proxy, nativeOfflineAudioContext) => { + let nativeWaveShaperNode = getNativeAudioNode(proxy); + // If the initially used nativeWaveShaperNode was not constructed on the same OfflineAudioContext it needs to be created again. + const nativeWaveShaperNodeIsOwnedByContext = isOwnedByContext(nativeWaveShaperNode, nativeOfflineAudioContext); + if (!nativeWaveShaperNodeIsOwnedByContext) { + const options = { + channelCount: nativeWaveShaperNode.channelCount, + channelCountMode: nativeWaveShaperNode.channelCountMode, + channelInterpretation: nativeWaveShaperNode.channelInterpretation, + curve: nativeWaveShaperNode.curve, + oversample: nativeWaveShaperNode.oversample + }; + nativeWaveShaperNode = createNativeWaveShaperNode(nativeOfflineAudioContext, options); + } + renderedNativeWaveShaperNodes.set(nativeOfflineAudioContext, nativeWaveShaperNode); + if (isNativeAudioNodeFaker(nativeWaveShaperNode)) { + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode.inputs[0]); + } + else { + await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode); + } + return nativeWaveShaperNode; + }; + return { + render(proxy, nativeOfflineAudioContext) { + const renderedNativeWaveShaperNode = renderedNativeWaveShaperNodes.get(nativeOfflineAudioContext); + if (renderedNativeWaveShaperNode !== undefined) { + return Promise.resolve(renderedNativeWaveShaperNode); + } + return createWaveShaperNode(proxy, nativeOfflineAudioContext); + } + }; + }; +}; + +const createWindow = () => (typeof window === 'undefined' ? null : window); + +const createWrapAudioBufferCopyChannelMethods = (convertNumberToUnsignedLong, createIndexSizeError) => { + return (audioBuffer) => { + audioBuffer.copyFromChannel = (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => { + const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber); + const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber); + if (channelNumber >= audioBuffer.numberOfChannels) { + throw createIndexSizeError(); + } + const audioBufferLength = audioBuffer.length; + const channelData = audioBuffer.getChannelData(channelNumber); + const destinationLength = destination.length; + for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < destinationLength; i += 1) { + destination[i] = channelData[i + bufferOffset]; + } + }; + audioBuffer.copyToChannel = (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => { + const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber); + const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber); + if (channelNumber >= audioBuffer.numberOfChannels) { + throw createIndexSizeError(); + } + const audioBufferLength = audioBuffer.length; + const channelData = audioBuffer.getChannelData(channelNumber); + const sourceLength = source.length; + for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < sourceLength; i += 1) { + channelData[i + bufferOffset] = source[i]; + } + }; + }; +}; + +const createWrapAudioBufferCopyChannelMethodsOutOfBounds = (convertNumberToUnsignedLong) => { + return (audioBuffer) => { + audioBuffer.copyFromChannel = ((copyFromChannel) => { + return (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => { + const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber); + const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber); + if (bufferOffset < audioBuffer.length) { + return copyFromChannel.call(audioBuffer, destination, channelNumber, bufferOffset); + } + }; + })(audioBuffer.copyFromChannel); + audioBuffer.copyToChannel = ((copyToChannel) => { + return (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => { + const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber); + const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber); + if (bufferOffset < audioBuffer.length) { + return copyToChannel.call(audioBuffer, source, channelNumber, bufferOffset); + } + }; + })(audioBuffer.copyToChannel); + }; +}; + +const createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer = (overwriteAccessors) => { + return (nativeAudioBufferSourceNode, nativeContext) => { + const nullifiedBuffer = nativeContext.createBuffer(1, 1, 44100); + if (nativeAudioBufferSourceNode.buffer === null) { + nativeAudioBufferSourceNode.buffer = nullifiedBuffer; + } + overwriteAccessors(nativeAudioBufferSourceNode, 'buffer', (get) => () => { + const value = get.call(nativeAudioBufferSourceNode); + return value === nullifiedBuffer ? null : value; + }, (set) => (value) => { + return set.call(nativeAudioBufferSourceNode, value === null ? nullifiedBuffer : value); + }); + }; +}; + +const createWrapChannelMergerNode = (createInvalidStateError, monitorConnections) => { + return (nativeContext, channelMergerNode) => { + // Bug #15: Safari does not return the default properties. + channelMergerNode.channelCount = 1; + channelMergerNode.channelCountMode = 'explicit'; + // Bug #16: Safari does not throw an error when setting a different channelCount or channelCountMode. + Object.defineProperty(channelMergerNode, 'channelCount', { + get: () => 1, + set: () => { + throw createInvalidStateError(); + } + }); + Object.defineProperty(channelMergerNode, 'channelCountMode', { + get: () => 'explicit', + set: () => { + throw createInvalidStateError(); + } + }); + // Bug #20: Safari requires a connection of any kind to treat the input signal correctly. + const audioBufferSourceNode = nativeContext.createBufferSource(); + const whenConnected = () => { + const length = channelMergerNode.numberOfInputs; + for (let i = 0; i < length; i += 1) { + audioBufferSourceNode.connect(channelMergerNode, 0, i); + } + }; + const whenDisconnected = () => audioBufferSourceNode.disconnect(channelMergerNode); + monitorConnections(channelMergerNode, whenConnected, whenDisconnected); + }; +}; + +const getFirstSample = (audioBuffer, buffer, channelNumber) => { + // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). + if (audioBuffer.copyFromChannel === undefined) { + return audioBuffer.getChannelData(channelNumber)[0]; + } + audioBuffer.copyFromChannel(buffer, channelNumber); + return buffer[0]; +}; + +const isDCCurve = (curve) => { + if (curve === null) { + return false; + } + const length = curve.length; + if (length % 2 !== 0) { + return curve[Math.floor(length / 2)] !== 0; + } + return curve[length / 2 - 1] + curve[length / 2] !== 0; +}; + +const overwriteAccessors = (object, property, createGetter, createSetter) => { + let prototype = object; + while (!prototype.hasOwnProperty(property)) { + prototype = Object.getPrototypeOf(prototype); + } + const { get, set } = Object.getOwnPropertyDescriptor(prototype, property); + Object.defineProperty(object, property, { get: createGetter(get), set: createSetter(set) }); +}; + +const sanitizeAudioWorkletNodeOptions = (options) => { + return { + ...options, + outputChannelCount: options.outputChannelCount !== undefined + ? options.outputChannelCount + : options.numberOfInputs === 1 && options.numberOfOutputs === 1 + ? /* + * Bug #61: This should be the computedNumberOfChannels, but unfortunately that is almost impossible to fake. That's why + * the channelCountMode is required to be 'explicit' as long as there is not a native implementation in every browser. That + * makes sure the computedNumberOfChannels is equivilant to the channelCount which makes it much easier to compute. + */ + [options.channelCount] + : Array.from({ length: options.numberOfOutputs }, () => 1) + }; +}; + +const sanitizeChannelSplitterOptions = (options) => { + return { ...options, channelCount: options.numberOfOutputs }; +}; + +const sanitizePeriodicWaveOptions = (options) => { + const { imag, real } = options; + if (imag === undefined) { + if (real === undefined) { + return { ...options, imag: [0, 0], real: [0, 0] }; + } + return { ...options, imag: Array.from(real, () => 0), real }; + } + if (real === undefined) { + return { ...options, imag, real: Array.from(imag, () => 0) }; + } + return { ...options, imag, real }; +}; + +const setValueAtTimeUntilPossible = (audioParam, value, startTime) => { + try { + audioParam.setValueAtTime(value, startTime); + } + catch (err) { + if (err.code !== 9) { + throw err; + } + setValueAtTimeUntilPossible(audioParam, value, startTime + 1e-7); + } +}; + +const testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport = (nativeContext) => { + const nativeAudioBufferSourceNode = nativeContext.createBufferSource(); + nativeAudioBufferSourceNode.start(); + try { + nativeAudioBufferSourceNode.start(); + } + catch { + return true; + } + return false; +}; + +const testAudioBufferSourceNodeStartMethodOffsetClampingSupport = (nativeContext) => { + const nativeAudioBufferSourceNode = nativeContext.createBufferSource(); + const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100); + nativeAudioBufferSourceNode.buffer = nativeAudioBuffer; + try { + nativeAudioBufferSourceNode.start(0, 1); + } + catch { + return false; + } + return true; +}; + +const testAudioBufferSourceNodeStopMethodNullifiedBufferSupport = (nativeContext) => { + const nativeAudioBufferSourceNode = nativeContext.createBufferSource(); + nativeAudioBufferSourceNode.start(); + try { + nativeAudioBufferSourceNode.stop(); + } + catch { + return false; + } + return true; +}; + +const testAudioScheduledSourceNodeStartMethodNegativeParametersSupport = (nativeContext) => { + const nativeAudioBufferSourceNode = nativeContext.createOscillator(); + try { + nativeAudioBufferSourceNode.start(-1); + } + catch (err) { + return err instanceof RangeError; + } + return false; +}; + +const testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport = (nativeContext) => { + const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100); + const nativeAudioBufferSourceNode = nativeContext.createBufferSource(); + nativeAudioBufferSourceNode.buffer = nativeAudioBuffer; + nativeAudioBufferSourceNode.start(); + nativeAudioBufferSourceNode.stop(); + try { + nativeAudioBufferSourceNode.stop(); + return true; + } + catch { + return false; + } +}; + +const testAudioScheduledSourceNodeStopMethodNegativeParametersSupport = (nativeContext) => { + const nativeAudioBufferSourceNode = nativeContext.createOscillator(); + try { + nativeAudioBufferSourceNode.stop(-1); + } + catch (err) { + return err instanceof RangeError; + } + return false; +}; + +const testAudioWorkletNodeOptionsClonability = (audioWorkletNodeOptions) => { + const { port1, port2 } = new MessageChannel(); + try { + // This will throw an error if the audioWorkletNodeOptions are not clonable. + port1.postMessage(audioWorkletNodeOptions); + } + finally { + port1.close(); + port2.close(); + } +}; + +/* + * Bug #122: Edge up to version v18 did not allow to construct a DOMException'. It also had a couple more bugs but since this is easy to + * test it's used here as a placeholder. + * + * Bug #27: Edge up to version v18 did reject an invalid arrayBuffer passed to decodeAudioData() with a DOMException. + * + * Bug #50: Edge up to version v18 did not allow to create AudioNodes on a closed context. + * + * Bug #57: Edge up to version v18 did not throw an error when assigning the type of an OscillatorNode to 'custom'. + * + * Bug #63: Edge up to version v18 did not expose the mediaElement property of a MediaElementAudioSourceNode. + * + * Bug #64: Edge up to version v18 did not support the MediaStreamAudioDestinationNode. + * + * Bug #71: Edge up to version v18 did not allow to set the buffer of an AudioBufferSourceNode to null. + * + * Bug #93: Edge up to version v18 did set the sampleRate of an AudioContext to zero when it was closed. + * + * Bug #101: Edge up to version v18 refused to execute decodeAudioData() on a closed context. + * + * Bug #106: Edge up to version v18 did not expose the maxValue and minValue properties of the pan AudioParam of a StereoPannerNode. + * + * Bug #110: Edge up to version v18 did not expose the maxValue and minValue properties of the attack, knee, ratio, release and threshold AudioParams of a DynamicsCompressorNode. + * + * Bug #123: Edge up to version v18 did not support HRTF as the panningModel for a PannerNode. + * + * Bug #145: Edge up to version v18 did throw an IndexSizeError when an OfflineAudioContext was created with a sampleRate of zero. + * + * Bug #161: Edge up to version v18 did not expose the maxValue and minValue properties of the delayTime AudioParam of a DelayNode. + */ +const testDomExceptionConstructorSupport = () => { + try { + new DOMException(); // tslint:disable-line:no-unused-expression + } + catch { + return false; + } + return true; +}; + +// Safari at version 11 did not support transferables. +const testTransferablesSupport = () => new Promise((resolve) => { + const arrayBuffer = new ArrayBuffer(0); + const { port1, port2 } = new MessageChannel(); + port1.onmessage = ({ data }) => resolve(data !== null); + port2.postMessage(arrayBuffer, [arrayBuffer]); +}); + +const wrapAudioBufferSourceNodeStartMethodOffsetClamping = (nativeAudioBufferSourceNode) => { + nativeAudioBufferSourceNode.start = ((start) => { + return (when = 0, offset = 0, duration) => { + const buffer = nativeAudioBufferSourceNode.buffer; + // Bug #154: Safari does not clamp the offset if it is equal to or greater than the duration of the buffer. + const clampedOffset = buffer === null ? offset : Math.min(buffer.duration, offset); + // Bug #155: Safari does not handle the offset correctly if it would cause the buffer to be not be played at all. + if (buffer !== null && clampedOffset > buffer.duration - 0.5 / nativeAudioBufferSourceNode.context.sampleRate) { + start.call(nativeAudioBufferSourceNode, when, 0, 0); + } + else { + start.call(nativeAudioBufferSourceNode, when, clampedOffset, duration); + } + }; + })(nativeAudioBufferSourceNode.start); +}; + +const wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls = (nativeAudioScheduledSourceNode, nativeContext) => { + const nativeGainNode = nativeContext.createGain(); + nativeAudioScheduledSourceNode.connect(nativeGainNode); + const disconnectGainNode = ((disconnect) => { + return () => { + // @todo TypeScript cannot infer the overloaded signature with 1 argument yet. + disconnect.call(nativeAudioScheduledSourceNode, nativeGainNode); + nativeAudioScheduledSourceNode.removeEventListener('ended', disconnectGainNode); + }; + })(nativeAudioScheduledSourceNode.disconnect); + nativeAudioScheduledSourceNode.addEventListener('ended', disconnectGainNode); + interceptConnections(nativeAudioScheduledSourceNode, nativeGainNode); + nativeAudioScheduledSourceNode.stop = ((stop) => { + let isStopped = false; + return (when = 0) => { + if (isStopped) { + try { + stop.call(nativeAudioScheduledSourceNode, when); + } + catch { + nativeGainNode.gain.setValueAtTime(0, when); + } + } + else { + stop.call(nativeAudioScheduledSourceNode, when); + isStopped = true; + } + }; + })(nativeAudioScheduledSourceNode.stop); +}; + +const wrapEventListener = (target, eventListener) => { + return (event) => { + const descriptor = { value: target }; + Object.defineProperties(event, { + currentTarget: descriptor, + target: descriptor + }); + if (typeof eventListener === 'function') { + return eventListener.call(target, event); + } + return eventListener.handleEvent.call(target, event); + }; +}; + +const addActiveInputConnectionToAudioNode = createAddActiveInputConnectionToAudioNode(insertElementInSet); +const addPassiveInputConnectionToAudioNode = createAddPassiveInputConnectionToAudioNode(insertElementInSet); +const deleteActiveInputConnectionToAudioNode = createDeleteActiveInputConnectionToAudioNode(pickElementFromSet); +const audioNodeTailTimeStore = new WeakMap(); +const getAudioNodeTailTime = createGetAudioNodeTailTime(audioNodeTailTimeStore); +const cacheTestResult = createCacheTestResult(new Map(), new WeakMap()); +const window$1 = createWindow(); +const createNativeAnalyserNode = createNativeAnalyserNodeFactory(cacheTestResult, createIndexSizeError); +const getAudioNodeRenderer = createGetAudioNodeRenderer(getAudioNodeConnections); +const renderInputsOfAudioNode = createRenderInputsOfAudioNode(getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle); +const createAnalyserNodeRenderer = createAnalyserNodeRendererFactory(createNativeAnalyserNode, getNativeAudioNode, renderInputsOfAudioNode); +const getNativeContext = createGetNativeContext(CONTEXT_STORE); +const nativeOfflineAudioContextConstructor = createNativeOfflineAudioContextConstructor(window$1); +const isNativeOfflineAudioContext = createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor); +const audioParamAudioNodeStore = new WeakMap(); +const eventTargetConstructor = createEventTargetConstructor(wrapEventListener); +const nativeAudioContextConstructor = createNativeAudioContextConstructor(window$1); +const isNativeAudioContext = createIsNativeAudioContext(nativeAudioContextConstructor); +const isNativeAudioNode$1 = createIsNativeAudioNode(window$1); +const isNativeAudioParam = createIsNativeAudioParam(window$1); +const nativeAudioWorkletNodeConstructor = createNativeAudioWorkletNodeConstructor(window$1); +const audioNodeConstructor = createAudioNodeConstructor(createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE), createAddConnectionToAudioNode(addActiveInputConnectionToAudioNode, addPassiveInputConnectionToAudioNode, connectNativeAudioNodeToNativeAudioNode, deleteActiveInputConnectionToAudioNode, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getAudioNodeTailTime, getEventListenersOfAudioNode, getNativeAudioNode, insertElementInSet, isActiveAudioNode, isPartOfACycle, isPassiveAudioNode), cacheTestResult, createIncrementCycleCounterFactory(CYCLE_COUNTERS, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, isActiveAudioNode), createIndexSizeError, createInvalidAccessError, createNotSupportedError, createDecrementCycleCounter(connectNativeAudioNodeToNativeAudioNode, CYCLE_COUNTERS, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, getNativeContext, isActiveAudioNode, isNativeOfflineAudioContext), createDetectCycles(audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey), eventTargetConstructor, getNativeContext, isNativeAudioContext, isNativeAudioNode$1, isNativeAudioParam, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor); +const analyserNodeConstructor = createAnalyserNodeConstructor(audioNodeConstructor, createAnalyserNodeRenderer, createIndexSizeError, createNativeAnalyserNode, getNativeContext, isNativeOfflineAudioContext); +const audioBufferStore = new WeakSet(); +const nativeAudioBufferConstructor = createNativeAudioBufferConstructor(window$1); +const convertNumberToUnsignedLong = createConvertNumberToUnsignedLong(new Uint32Array(1)); +const wrapAudioBufferCopyChannelMethods = createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong, createIndexSizeError); +const wrapAudioBufferCopyChannelMethodsOutOfBounds = createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong); +const audioBufferConstructor = createAudioBufferConstructor(audioBufferStore, cacheTestResult, createNotSupportedError, nativeAudioBufferConstructor, nativeOfflineAudioContextConstructor, createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor), wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds); +const addSilentConnection = createAddSilentConnection(createNativeGainNode); +const renderInputsOfAudioParam = createRenderInputsOfAudioParam(getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle); +const connectAudioParam = createConnectAudioParam(renderInputsOfAudioParam); +const createNativeAudioBufferSourceNode = createNativeAudioBufferSourceNodeFactory(addSilentConnection, cacheTestResult, testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, testAudioBufferSourceNodeStartMethodOffsetClampingSupport, testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioBufferSourceNodeStartMethodOffsetClamping, createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors), wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls); +const renderAutomation = createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections), renderInputsOfAudioParam); +const createAudioBufferSourceNodeRenderer = createAudioBufferSourceNodeRendererFactory(connectAudioParam, createNativeAudioBufferSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); +const createAudioParam = createAudioParamFactory(createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE), audioParamAudioNodeStore, AUDIO_PARAM_STORE, createAudioParamRenderer, createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent, nativeAudioContextConstructor, setValueAtTimeUntilPossible); +const audioBufferSourceNodeConstructor = createAudioBufferSourceNodeConstructor(audioNodeConstructor, createAudioBufferSourceNodeRenderer, createAudioParam, createInvalidStateError, createNativeAudioBufferSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener); +const audioDestinationNodeConstructor = createAudioDestinationNodeConstructor(audioNodeConstructor, createAudioDestinationNodeRenderer, createIndexSizeError, createInvalidStateError, createNativeAudioDestinationNodeFactory(createNativeGainNode, overwriteAccessors), getNativeContext, isNativeOfflineAudioContext, renderInputsOfAudioNode); +const createBiquadFilterNodeRenderer = createBiquadFilterNodeRendererFactory(connectAudioParam, createNativeBiquadFilterNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); +const setAudioNodeTailTime = createSetAudioNodeTailTime(audioNodeTailTimeStore); +const biquadFilterNodeConstructor = createBiquadFilterNodeConstructor(audioNodeConstructor, createAudioParam, createBiquadFilterNodeRenderer, createInvalidAccessError, createNativeBiquadFilterNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); +const monitorConnections = createMonitorConnections(insertElementInSet, isNativeAudioNode$1); +const wrapChannelMergerNode = createWrapChannelMergerNode(createInvalidStateError, monitorConnections); +const createNativeChannelMergerNode = createNativeChannelMergerNodeFactory(nativeAudioContextConstructor, wrapChannelMergerNode); +const createChannelMergerNodeRenderer = createChannelMergerNodeRendererFactory(createNativeChannelMergerNode, getNativeAudioNode, renderInputsOfAudioNode); +const channelMergerNodeConstructor = createChannelMergerNodeConstructor(audioNodeConstructor, createChannelMergerNodeRenderer, createNativeChannelMergerNode, getNativeContext, isNativeOfflineAudioContext); +const createChannelSplitterNodeRenderer = createChannelSplitterNodeRendererFactory(createNativeChannelSplitterNode, getNativeAudioNode, renderInputsOfAudioNode); +const channelSplitterNodeConstructor = createChannelSplitterNodeConstructor(audioNodeConstructor, createChannelSplitterNodeRenderer, createNativeChannelSplitterNode, getNativeContext, isNativeOfflineAudioContext, sanitizeChannelSplitterOptions); +const createNativeConstantSourceNodeFaker = createNativeConstantSourceNodeFakerFactory(addSilentConnection, createNativeAudioBufferSourceNode, createNativeGainNode, monitorConnections); +const createNativeConstantSourceNode = createNativeConstantSourceNodeFactory(addSilentConnection, cacheTestResult, createNativeConstantSourceNodeFaker, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport); +const createConstantSourceNodeRenderer = createConstantSourceNodeRendererFactory(connectAudioParam, createNativeConstantSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); +const constantSourceNodeConstructor = createConstantSourceNodeConstructor(audioNodeConstructor, createAudioParam, createConstantSourceNodeRenderer, createNativeConstantSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener); +const createNativeConvolverNode = createNativeConvolverNodeFactory(createNotSupportedError, overwriteAccessors); +const createConvolverNodeRenderer = createConvolverNodeRendererFactory(createNativeConvolverNode, getNativeAudioNode, renderInputsOfAudioNode); +const convolverNodeConstructor = createConvolverNodeConstructor(audioNodeConstructor, createConvolverNodeRenderer, createNativeConvolverNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); +const createDelayNodeRenderer = createDelayNodeRendererFactory(connectAudioParam, createNativeDelayNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); +const delayNodeConstructor = createDelayNodeConstructor(audioNodeConstructor, createAudioParam, createDelayNodeRenderer, createNativeDelayNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); +const createNativeDynamicsCompressorNode = createNativeDynamicsCompressorNodeFactory(createNotSupportedError); +const createDynamicsCompressorNodeRenderer = createDynamicsCompressorNodeRendererFactory(connectAudioParam, createNativeDynamicsCompressorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); +const dynamicsCompressorNodeConstructor = createDynamicsCompressorNodeConstructor(audioNodeConstructor, createAudioParam, createDynamicsCompressorNodeRenderer, createNativeDynamicsCompressorNode, createNotSupportedError, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); +const createGainNodeRenderer = createGainNodeRendererFactory(connectAudioParam, createNativeGainNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); +const gainNodeConstructor = createGainNodeConstructor(audioNodeConstructor, createAudioParam, createGainNodeRenderer, createNativeGainNode, getNativeContext, isNativeOfflineAudioContext); +const createNativeIIRFilterNodeFaker = createNativeIIRFilterNodeFakerFactory(createInvalidAccessError, createInvalidStateError, createNativeScriptProcessorNode, createNotSupportedError); +const renderNativeOfflineAudioContext = createRenderNativeOfflineAudioContext(cacheTestResult, createNativeGainNode, createNativeScriptProcessorNode, createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode, nativeOfflineAudioContextConstructor)); +const createIIRFilterNodeRenderer = createIIRFilterNodeRendererFactory(createNativeAudioBufferSourceNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderInputsOfAudioNode, renderNativeOfflineAudioContext); +const createNativeIIRFilterNode = createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker); +const iIRFilterNodeConstructor = createIIRFilterNodeConstructor(audioNodeConstructor, createNativeIIRFilterNode, createIIRFilterNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); +const createAudioListener = createAudioListenerFactory(createAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeScriptProcessorNode, createNotSupportedError, getFirstSample, isNativeOfflineAudioContext, overwriteAccessors); +const unrenderedAudioWorkletNodeStore = new WeakMap(); +const minimalBaseAudioContextConstructor = createMinimalBaseAudioContextConstructor(audioDestinationNodeConstructor, createAudioListener, eventTargetConstructor, isNativeOfflineAudioContext, unrenderedAudioWorkletNodeStore, wrapEventListener); +const createNativeOscillatorNode = createNativeOscillatorNodeFactory(addSilentConnection, cacheTestResult, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls); +const createOscillatorNodeRenderer = createOscillatorNodeRendererFactory(connectAudioParam, createNativeOscillatorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); +const oscillatorNodeConstructor = createOscillatorNodeConstructor(audioNodeConstructor, createAudioParam, createNativeOscillatorNode, createOscillatorNodeRenderer, getNativeContext, isNativeOfflineAudioContext, wrapEventListener); +const createConnectedNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode); +const createNativeWaveShaperNodeFaker = createNativeWaveShaperNodeFakerFactory(createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeGainNode, isDCCurve, monitorConnections); +const createNativeWaveShaperNode = createNativeWaveShaperNodeFactory(createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeWaveShaperNodeFaker, isDCCurve, monitorConnections, nativeAudioContextConstructor, overwriteAccessors); +const createNativePannerNodeFaker = createNativePannerNodeFakerFactory(connectNativeAudioNodeToNativeAudioNode, createInvalidStateError, createNativeChannelMergerNode, createNativeGainNode, createNativeScriptProcessorNode, createNativeWaveShaperNode, createNotSupportedError, disconnectNativeAudioNodeFromNativeAudioNode, getFirstSample, monitorConnections); +const createNativePannerNode = createNativePannerNodeFactory(createNativePannerNodeFaker); +const createPannerNodeRenderer = createPannerNodeRendererFactory(connectAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeGainNode, createNativePannerNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext); +const pannerNodeConstructor = createPannerNodeConstructor(audioNodeConstructor, createAudioParam, createNativePannerNode, createPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); +const createNativePeriodicWave = createNativePeriodicWaveFactory(createIndexSizeError); +const periodicWaveConstructor = createPeriodicWaveConstructor(createNativePeriodicWave, getNativeContext, new WeakSet(), sanitizePeriodicWaveOptions); +const nativeStereoPannerNodeFakerFactory = createNativeStereoPannerNodeFakerFactory(createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeGainNode, createNativeWaveShaperNode, createNotSupportedError, monitorConnections); +const createNativeStereoPannerNode = createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory, createNotSupportedError); +const createStereoPannerNodeRenderer = createStereoPannerNodeRendererFactory(connectAudioParam, createNativeStereoPannerNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); +const stereoPannerNodeConstructor = createStereoPannerNodeConstructor(audioNodeConstructor, createAudioParam, createNativeStereoPannerNode, createStereoPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext); +const createWaveShaperNodeRenderer = createWaveShaperNodeRendererFactory(createNativeWaveShaperNode, getNativeAudioNode, renderInputsOfAudioNode); +const waveShaperNodeConstructor = createWaveShaperNodeConstructor(audioNodeConstructor, createInvalidStateError, createNativeWaveShaperNode, createWaveShaperNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); +const isSecureContext = createIsSecureContext(window$1); +const exposeCurrentFrameAndCurrentTime = createExposeCurrentFrameAndCurrentTime(window$1); +const backupOfflineAudioContextStore = new WeakMap(); +const getOrCreateBackupOfflineAudioContext = createGetOrCreateBackupOfflineAudioContext(backupOfflineAudioContextStore, nativeOfflineAudioContextConstructor); +// The addAudioWorkletModule() function is only available in a SecureContext. +const addAudioWorkletModule = isSecureContext + ? createAddAudioWorkletModule(cacheTestResult, createNotSupportedError, createEvaluateSource(window$1), exposeCurrentFrameAndCurrentTime, createFetchSource(createAbortError), getNativeContext, getOrCreateBackupOfflineAudioContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, new WeakMap(), new WeakMap(), createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor), + // @todo window is guaranteed to be defined because isSecureContext checks that as well. + window$1) + : undefined; +const isNativeContext = createIsNativeContext(isNativeAudioContext, isNativeOfflineAudioContext); +const decodeAudioData = createDecodeAudioData(audioBufferStore, cacheTestResult, createDataCloneError, createEncodingError, new WeakSet(), getNativeContext, isNativeContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, testPromiseSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds); +const baseAudioContextConstructor = createBaseAudioContextConstructor(addAudioWorkletModule, analyserNodeConstructor, audioBufferConstructor, audioBufferSourceNodeConstructor, biquadFilterNodeConstructor, channelMergerNodeConstructor, channelSplitterNodeConstructor, constantSourceNodeConstructor, convolverNodeConstructor, decodeAudioData, delayNodeConstructor, dynamicsCompressorNodeConstructor, gainNodeConstructor, iIRFilterNodeConstructor, minimalBaseAudioContextConstructor, oscillatorNodeConstructor, pannerNodeConstructor, periodicWaveConstructor, stereoPannerNodeConstructor, waveShaperNodeConstructor); +const mediaElementAudioSourceNodeConstructor = createMediaElementAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaElementAudioSourceNode, getNativeContext, isNativeOfflineAudioContext); +const mediaStreamAudioDestinationNodeConstructor = createMediaStreamAudioDestinationNodeConstructor(audioNodeConstructor, createNativeMediaStreamAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext); +const mediaStreamAudioSourceNodeConstructor = createMediaStreamAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamAudioSourceNode, getNativeContext, isNativeOfflineAudioContext); +const createNativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNodeFactory(createInvalidStateError, isNativeOfflineAudioContext); +const mediaStreamTrackAudioSourceNodeConstructor = createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext); +const audioContextConstructor = createAudioContextConstructor(baseAudioContextConstructor, createInvalidStateError, createNotSupportedError, createUnknownError, mediaElementAudioSourceNodeConstructor, mediaStreamAudioDestinationNodeConstructor, mediaStreamAudioSourceNodeConstructor, mediaStreamTrackAudioSourceNodeConstructor, nativeAudioContextConstructor); +const getUnrenderedAudioWorkletNodes = createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore); +const addUnrenderedAudioWorkletNode = createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes); +const connectMultipleOutputs = createConnectMultipleOutputs(createIndexSizeError); +const deleteUnrenderedAudioWorkletNode = createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes); +const disconnectMultipleOutputs = createDisconnectMultipleOutputs(createIndexSizeError); +const activeAudioWorkletNodeInputsStore = new WeakMap(); +const getActiveAudioWorkletNodeInputs = createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore, getValueForKey); +const createNativeAudioWorkletNodeFaker = createNativeAudioWorkletNodeFakerFactory(connectMultipleOutputs, createIndexSizeError, createInvalidStateError, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, createNativeScriptProcessorNode, createNotSupportedError, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getActiveAudioWorkletNodeInputs, monitorConnections); +const createNativeAudioWorkletNode = createNativeAudioWorkletNodeFactory(createInvalidStateError, createNativeAudioWorkletNodeFaker, createNativeGainNode, createNotSupportedError, monitorConnections); +const createAudioWorkletNodeRenderer = createAudioWorkletNodeRendererFactory(connectAudioParam, connectMultipleOutputs, createNativeAudioBufferSourceNode, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, deleteUnrenderedAudioWorkletNode, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getNativeAudioNode, nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext); +const getBackupOfflineAudioContext = createGetBackupOfflineAudioContext(backupOfflineAudioContextStore); +const setActiveAudioWorkletNodeInputs = createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore); +// The AudioWorkletNode constructor is only available in a SecureContext. +const audioWorkletNodeConstructor = isSecureContext + ? createAudioWorkletNodeConstructor(addUnrenderedAudioWorkletNode, audioNodeConstructor, createAudioParam, createAudioWorkletNodeRenderer, createNativeAudioWorkletNode, getAudioNodeConnections, getBackupOfflineAudioContext, getNativeContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, sanitizeAudioWorkletNodeOptions, setActiveAudioWorkletNodeInputs, testAudioWorkletNodeOptionsClonability, wrapEventListener) + : undefined; +const createNativeOfflineAudioContext = createCreateNativeOfflineAudioContext(createNotSupportedError, nativeOfflineAudioContextConstructor); +const startRendering = createStartRendering(audioBufferStore, cacheTestResult, getAudioNodeRenderer, getUnrenderedAudioWorkletNodes, renderNativeOfflineAudioContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds); +const offlineAudioContextConstructor = createOfflineAudioContextConstructor(baseAudioContextConstructor, cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, startRendering); +const isAnyAudioContext = createIsAnyAudioContext(CONTEXT_STORE, isNativeAudioContext); +const isAnyAudioNode = createIsAnyAudioNode(AUDIO_NODE_STORE, isNativeAudioNode$1); +const isAnyAudioParam = createIsAnyAudioParam(AUDIO_PARAM_STORE, isNativeAudioParam); +const isAnyOfflineAudioContext = createIsAnyOfflineAudioContext(CONTEXT_STORE, isNativeOfflineAudioContext); +const isSupported = () => createIsSupportedPromise(cacheTestResult, createTestAudioBufferCopyChannelMethodsSubarraySupport(nativeOfflineAudioContextConstructor), createTestAudioContextCloseMethodSupport(nativeAudioContextConstructor), createTestAudioContextDecodeAudioDataMethodTypeErrorSupport(nativeOfflineAudioContextConstructor), createTestAudioContextOptionsSupport(nativeAudioContextConstructor), createTestAudioNodeConnectMethodSupport(nativeOfflineAudioContextConstructor), createTestAudioWorkletProcessorNoOutputsSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor), createTestChannelMergerNodeChannelCountSupport(nativeOfflineAudioContextConstructor), createTestConstantSourceNodeAccurateSchedulingSupport(nativeOfflineAudioContextConstructor), createTestConvolverNodeBufferReassignabilitySupport(nativeOfflineAudioContextConstructor), createTestConvolverNodeChannelCountSupport(nativeOfflineAudioContextConstructor), testDomExceptionConstructorSupport, createTestIsSecureContextSupport(window$1), createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport(nativeAudioContextConstructor), createTestStereoPannerNodeDefaultValueSupport(nativeOfflineAudioContextConstructor), testTransferablesSupport); + +/** + * Assert that the statement is true, otherwise invoke the error. + * @param statement + * @param error The message which is passed into an Error + */ +function assert(statement, error) { + if (!statement) { + throw new Error(error); + } +} +/** + * Make sure that the given value is within the range + */ +function assertRange(value, gte, lte = Infinity) { + if (!(gte <= value && value <= lte)) { + throw new RangeError(`Value must be within [${gte}, ${lte}], got: ${value}`); + } +} +/** + * Make sure that the given value is within the range + */ +function assertContextRunning(context) { + // add a warning if the context is not started + if (!context.isOffline && context.state !== "running") { + warn("The AudioContext is \"suspended\". Invoke Tone.start() from a user action to start the audio."); + } +} +/** + * The default logger is the console + */ +let defaultLogger = console; +/** + * Set the logging interface + */ +function setLogger(logger) { + defaultLogger = logger; +} +/** + * Log anything + */ +function log(...args) { + defaultLogger.log(...args); +} +/** + * Warn anything + */ +function warn(...args) { + defaultLogger.warn(...args); +} + +var Debug = /*#__PURE__*/Object.freeze({ + __proto__: null, + assert: assert, + assertRange: assertRange, + assertContextRunning: assertContextRunning, + setLogger: setLogger, + log: log, + warn: warn +}); + +/** + * Test if the arg is undefined + */ +function isUndef(arg) { + return typeof arg === "undefined"; +} +/** + * Test if the arg is not undefined + */ +function isDefined(arg) { + return !isUndef(arg); +} +/** + * Test if the arg is a function + */ +function isFunction(arg) { + return typeof arg === "function"; +} +/** + * Test if the argument is a number. + */ +function isNumber(arg) { + return (typeof arg === "number"); +} +/** + * Test if the given argument is an object literal (i.e. `{}`); + */ +function isObject(arg) { + return (Object.prototype.toString.call(arg) === "[object Object]" && arg.constructor === Object); +} +/** + * Test if the argument is a boolean. + */ +function isBoolean(arg) { + return (typeof arg === "boolean"); +} +/** + * Test if the argument is an Array + */ +function isArray(arg) { + return (Array.isArray(arg)); +} +/** + * Test if the argument is a string. + */ +function isString(arg) { + return (typeof arg === "string"); +} +/** + * Test if the argument is in the form of a note in scientific pitch notation. + * e.g. "C4" + */ +function isNote(arg) { + return isString(arg) && /^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(arg); +} + +/** + * Create a new AudioContext + */ +function createAudioContext(options) { + return new audioContextConstructor(options); +} +/** + * Create a new OfflineAudioContext + */ +function createOfflineAudioContext(channels, length, sampleRate) { + return new offlineAudioContextConstructor(channels, length, sampleRate); +} +/** + * A reference to the window object + * @hidden + */ +const theWindow = typeof self === "object" ? self : null; +/** + * If the browser has a window object which has an AudioContext + * @hidden + */ +const hasAudioContext = theWindow && + (theWindow.hasOwnProperty("AudioContext") || theWindow.hasOwnProperty("webkitAudioContext")); +function createAudioWorkletNode(context, name, options) { + assert(isDefined(audioWorkletNodeConstructor), "This node only works in a secure context (https or localhost)"); + // @ts-ignore + return new audioWorkletNodeConstructor(context, name, options); +} + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +/** + * A class which provides a reliable callback using either + * a Web Worker, or if that isn't supported, falls back to setTimeout. + */ +class Ticker { + constructor(callback, type, updateInterval) { + this._callback = callback; + this._type = type; + this._updateInterval = updateInterval; + // create the clock source for the first time + this._createClock(); + } + /** + * Generate a web worker + */ + _createWorker() { + const blob = new Blob([ + /* javascript */ ` + // the initial timeout time + let timeoutTime = ${(this._updateInterval * 1000).toFixed(1)}; + // onmessage callback + self.onmessage = function(msg){ + timeoutTime = parseInt(msg.data); + }; + // the tick function which posts a message + // and schedules a new tick + function tick(){ + setTimeout(tick, timeoutTime); + self.postMessage('tick'); + } + // call tick initially + tick(); + ` + ], { type: "text/javascript" }); + const blobUrl = URL.createObjectURL(blob); + const worker = new Worker(blobUrl); + worker.onmessage = this._callback.bind(this); + this._worker = worker; + } + /** + * Create a timeout loop + */ + _createTimeout() { + this._timeout = setTimeout(() => { + this._createTimeout(); + this._callback(); + }, this._updateInterval * 1000); + } + /** + * Create the clock source. + */ + _createClock() { + if (this._type === "worker") { + try { + this._createWorker(); + } + catch (e) { + // workers not supported, fallback to timeout + this._type = "timeout"; + this._createClock(); + } + } + else if (this._type === "timeout") { + this._createTimeout(); + } + } + /** + * Clean up the current clock source + */ + _disposeClock() { + if (this._timeout) { + clearTimeout(this._timeout); + this._timeout = 0; + } + if (this._worker) { + this._worker.terminate(); + this._worker.onmessage = null; + } + } + /** + * The rate in seconds the ticker will update + */ + get updateInterval() { + return this._updateInterval; + } + set updateInterval(interval) { + this._updateInterval = Math.max(interval, 128 / 44100); + if (this._type === "worker") { + this._worker.postMessage(Math.max(interval * 1000, 1)); + } + } + /** + * The type of the ticker, either a worker or a timeout + */ + get type() { + return this._type; + } + set type(type) { + this._disposeClock(); + this._type = type; + this._createClock(); + } + /** + * Clean up + */ + dispose() { + this._disposeClock(); + } +} + +/** + * Test if the given value is an instanceof AudioParam + */ +function isAudioParam(arg) { + return isAnyAudioParam(arg); +} +/** + * Test if the given value is an instanceof AudioNode + */ +function isAudioNode$1(arg) { + return isAnyAudioNode(arg); +} +/** + * Test if the arg is instanceof an OfflineAudioContext + */ +function isOfflineAudioContext(arg) { + return isAnyOfflineAudioContext(arg); +} +/** + * Test if the arg is an instanceof AudioContext + */ +function isAudioContext(arg) { + return isAnyAudioContext(arg); +} +/** + * Test if the arg is instanceof an AudioBuffer + */ +function isAudioBuffer(arg) { + return arg instanceof AudioBuffer; +} + +/** + * Some objects should not be merged + */ +function noCopy(key, arg) { + return key === "value" || isAudioParam(arg) || isAudioNode$1(arg) || isAudioBuffer(arg); +} +function deepMerge(target, ...sources) { + if (!sources.length) { + return target; + } + const source = sources.shift(); + if (isObject(target) && isObject(source)) { + for (const key in source) { + if (noCopy(key, source[key])) { + target[key] = source[key]; + } + else if (isObject(source[key])) { + if (!target[key]) { + Object.assign(target, { [key]: {} }); + } + deepMerge(target[key], source[key]); + } + else { + Object.assign(target, { [key]: source[key] }); + } + } + } + // @ts-ignore + return deepMerge(target, ...sources); +} +/** + * Returns true if the two arrays have the same value for each of the elements + */ +function deepEquals(arrayA, arrayB) { + return arrayA.length === arrayB.length && arrayA.every((element, index) => arrayB[index] === element); +} +/** + * Convert an args array into an object. + */ +function optionsFromArguments(defaults, argsArray, keys = [], objKey) { + const opts = {}; + const args = Array.from(argsArray); + // if the first argument is an object and has an object key + if (isObject(args[0]) && objKey && !Reflect.has(args[0], objKey)) { + // if it's not part of the defaults + const partOfDefaults = Object.keys(args[0]).some(key => Reflect.has(defaults, key)); + if (!partOfDefaults) { + // merge that key + deepMerge(opts, { [objKey]: args[0] }); + // remove the obj key from the keys + keys.splice(keys.indexOf(objKey), 1); + // shift the first argument off + args.shift(); + } + } + if (args.length === 1 && isObject(args[0])) { + deepMerge(opts, args[0]); + } + else { + for (let i = 0; i < keys.length; i++) { + if (isDefined(args[i])) { + opts[keys[i]] = args[i]; + } + } + } + return deepMerge(defaults, opts); +} +/** + * Return this instances default values by calling Constructor.getDefaults() + */ +function getDefaultsFromInstance(instance) { + return instance.constructor.getDefaults(); +} +/** + * Returns the fallback if the given object is undefined. + * Take an array of arguments and return a formatted options object. + */ +function defaultArg(given, fallback) { + if (isUndef(given)) { + return fallback; + } + else { + return given; + } +} +/** + * Remove all of the properties belonging to omit from obj. + */ +function omitFromObject(obj, omit) { + omit.forEach(prop => { + if (Reflect.has(obj, prop)) { + delete obj[prop]; + } + }); + return obj; +} + +/** + * Tone.js + * @author Yotam Mann + * @license http://opensource.org/licenses/MIT MIT License + * @copyright 2014-2019 Yotam Mann + */ +/** + * @class Tone is the base class of all other classes. + * @category Core + * @constructor + */ +class Tone { + constructor() { + //------------------------------------- + // DEBUGGING + //------------------------------------- + /** + * Set this debug flag to log all events that happen in this class. + */ + this.debug = false; + //------------------------------------- + // DISPOSING + //------------------------------------- + /** + * Indicates if the instance was disposed + */ + this._wasDisposed = false; + } + /** + * Returns all of the default options belonging to the class. + */ + static getDefaults() { + return {}; + } + /** + * Prints the outputs to the console log for debugging purposes. + * Prints the contents only if either the object has a property + * called `debug` set to true, or a variable called TONE_DEBUG_CLASS + * is set to the name of the class. + * @example + * const osc = new Tone.Oscillator(); + * // prints all logs originating from this oscillator + * osc.debug = true; + * // calls to start/stop will print in the console + * osc.start(); + */ + log(...args) { + // if the object is either set to debug = true + // or if there is a string on the Tone.global.with the class name + if (this.debug || (theWindow && this.toString() === theWindow.TONE_DEBUG_CLASS)) { + log(this, ...args); + } + } + /** + * disconnect and dispose. + */ + dispose() { + this._wasDisposed = true; + return this; + } + /** + * Indicates if the instance was disposed. 'Disposing' an + * instance means that all of the Web Audio nodes that were + * created for the instance are disconnected and freed for garbage collection. + */ + get disposed() { + return this._wasDisposed; + } + /** + * Convert the class to a string + * @example + * const osc = new Tone.Oscillator(); + * console.log(osc.toString()); + */ + toString() { + return this.name; + } +} +/** + * The version number semver + */ +Tone.version = version; + +/** + * The threshold for correctness for operators. Less than one sample even + * at very high sampling rates (e.g. `1e-6 < 1 / 192000`). + */ +const EPSILON = 1e-6; +/** + * Test if A is greater than B + */ +function GT(a, b) { + return a > b + EPSILON; +} +/** + * Test if A is greater than or equal to B + */ +function GTE(a, b) { + return GT(a, b) || EQ(a, b); +} +/** + * Test if A is less than B + */ +function LT(a, b) { + return a + EPSILON < b; +} +/** + * Test if A is less than B + */ +function EQ(a, b) { + return Math.abs(a - b) < EPSILON; +} +/** + * Clamp the value within the given range + */ +function clamp(value, min, max) { + return Math.max(Math.min(value, max), min); +} + +/** + * A Timeline class for scheduling and maintaining state + * along a timeline. All events must have a "time" property. + * Internally, events are stored in time order for fast + * retrieval. + */ +class Timeline extends Tone { + constructor() { + super(); + this.name = "Timeline"; + /** + * The array of scheduled timeline events + */ + this._timeline = []; + const options = optionsFromArguments(Timeline.getDefaults(), arguments, ["memory"]); + this.memory = options.memory; + this.increasing = options.increasing; + } + static getDefaults() { + return { + memory: Infinity, + increasing: false, + }; + } + /** + * The number of items in the timeline. + */ + get length() { + return this._timeline.length; + } + /** + * Insert an event object onto the timeline. Events must have a "time" attribute. + * @param event The event object to insert into the timeline. + */ + add(event) { + // the event needs to have a time attribute + assert(Reflect.has(event, "time"), "Timeline: events must have a time attribute"); + event.time = event.time.valueOf(); + if (this.increasing && this.length) { + const lastValue = this._timeline[this.length - 1]; + assert(GTE(event.time, lastValue.time), "The time must be greater than or equal to the last scheduled time"); + this._timeline.push(event); + } + else { + const index = this._search(event.time); + this._timeline.splice(index + 1, 0, event); + } + // if the length is more than the memory, remove the previous ones + if (this.length > this.memory) { + const diff = this.length - this.memory; + this._timeline.splice(0, diff); + } + return this; + } + /** + * Remove an event from the timeline. + * @param {Object} event The event object to remove from the list. + * @returns {Timeline} this + */ + remove(event) { + const index = this._timeline.indexOf(event); + if (index !== -1) { + this._timeline.splice(index, 1); + } + return this; + } + /** + * Get the nearest event whose time is less than or equal to the given time. + * @param time The time to query. + */ + get(time, param = "time") { + const index = this._search(time, param); + if (index !== -1) { + return this._timeline[index]; + } + else { + return null; + } + } + /** + * Return the first event in the timeline without removing it + * @returns {Object} The first event object + */ + peek() { + return this._timeline[0]; + } + /** + * Return the first event in the timeline and remove it + */ + shift() { + return this._timeline.shift(); + } + /** + * Get the event which is scheduled after the given time. + * @param time The time to query. + */ + getAfter(time, param = "time") { + const index = this._search(time, param); + if (index + 1 < this._timeline.length) { + return this._timeline[index + 1]; + } + else { + return null; + } + } + /** + * Get the event before the event at the given time. + * @param time The time to query. + */ + getBefore(time) { + const len = this._timeline.length; + // if it's after the last item, return the last item + if (len > 0 && this._timeline[len - 1].time < time) { + return this._timeline[len - 1]; + } + const index = this._search(time); + if (index - 1 >= 0) { + return this._timeline[index - 1]; + } + else { + return null; + } + } + /** + * Cancel events at and after the given time + * @param after The time to query. + */ + cancel(after) { + if (this._timeline.length > 1) { + let index = this._search(after); + if (index >= 0) { + if (EQ(this._timeline[index].time, after)) { + // get the first item with that time + for (let i = index; i >= 0; i--) { + if (EQ(this._timeline[i].time, after)) { + index = i; + } + else { + break; + } + } + this._timeline = this._timeline.slice(0, index); + } + else { + this._timeline = this._timeline.slice(0, index + 1); + } + } + else { + this._timeline = []; + } + } + else if (this._timeline.length === 1) { + // the first item's time + if (GTE(this._timeline[0].time, after)) { + this._timeline = []; + } + } + return this; + } + /** + * Cancel events before or equal to the given time. + * @param time The time to cancel before. + */ + cancelBefore(time) { + const index = this._search(time); + if (index >= 0) { + this._timeline = this._timeline.slice(index + 1); + } + return this; + } + /** + * Returns the previous event if there is one. null otherwise + * @param event The event to find the previous one of + * @return The event right before the given event + */ + previousEvent(event) { + const index = this._timeline.indexOf(event); + if (index > 0) { + return this._timeline[index - 1]; + } + else { + return null; + } + } + /** + * Does a binary search on the timeline array and returns the + * nearest event index whose time is after or equal to the given time. + * If a time is searched before the first index in the timeline, -1 is returned. + * If the time is after the end, the index of the last item is returned. + */ + _search(time, param = "time") { + if (this._timeline.length === 0) { + return -1; + } + let beginning = 0; + const len = this._timeline.length; + let end = len; + if (len > 0 && this._timeline[len - 1][param] <= time) { + return len - 1; + } + while (beginning < end) { + // calculate the midpoint for roughly equal partition + let midPoint = Math.floor(beginning + (end - beginning) / 2); + const event = this._timeline[midPoint]; + const nextEvent = this._timeline[midPoint + 1]; + if (EQ(event[param], time)) { + // choose the last one that has the same time + for (let i = midPoint; i < this._timeline.length; i++) { + const testEvent = this._timeline[i]; + if (EQ(testEvent[param], time)) { + midPoint = i; + } + else { + break; + } + } + return midPoint; + } + else if (LT(event[param], time) && GT(nextEvent[param], time)) { + return midPoint; + } + else if (GT(event[param], time)) { + // search lower + end = midPoint; + } + else { + // search upper + beginning = midPoint + 1; + } + } + return -1; + } + /** + * Internal iterator. Applies extra safety checks for + * removing items from the array. + */ + _iterate(callback, lowerBound = 0, upperBound = this._timeline.length - 1) { + this._timeline.slice(lowerBound, upperBound + 1).forEach(callback); + } + /** + * Iterate over everything in the array + * @param callback The callback to invoke with every item + */ + forEach(callback) { + this._iterate(callback); + return this; + } + /** + * Iterate over everything in the array at or before the given time. + * @param time The time to check if items are before + * @param callback The callback to invoke with every item + */ + forEachBefore(time, callback) { + // iterate over the items in reverse so that removing an item doesn't break things + const upperBound = this._search(time); + if (upperBound !== -1) { + this._iterate(callback, 0, upperBound); + } + return this; + } + /** + * Iterate over everything in the array after the given time. + * @param time The time to check if items are before + * @param callback The callback to invoke with every item + */ + forEachAfter(time, callback) { + // iterate over the items in reverse so that removing an item doesn't break things + const lowerBound = this._search(time); + this._iterate(callback, lowerBound + 1); + return this; + } + /** + * Iterate over everything in the array between the startTime and endTime. + * The timerange is inclusive of the startTime, but exclusive of the endTime. + * range = [startTime, endTime). + * @param startTime The time to check if items are before + * @param endTime The end of the test interval. + * @param callback The callback to invoke with every item + */ + forEachBetween(startTime, endTime, callback) { + let lowerBound = this._search(startTime); + let upperBound = this._search(endTime); + if (lowerBound !== -1 && upperBound !== -1) { + if (this._timeline[lowerBound].time !== startTime) { + lowerBound += 1; + } + // exclusive of the end time + if (this._timeline[upperBound].time === endTime) { + upperBound -= 1; + } + this._iterate(callback, lowerBound, upperBound); + } + else if (lowerBound === -1) { + this._iterate(callback, 0, upperBound); + } + return this; + } + /** + * Iterate over everything in the array at or after the given time. Similar to + * forEachAfter, but includes the item(s) at the given time. + * @param time The time to check if items are before + * @param callback The callback to invoke with every item + */ + forEachFrom(time, callback) { + // iterate over the items in reverse so that removing an item doesn't break things + let lowerBound = this._search(time); + // work backwards until the event time is less than time + while (lowerBound >= 0 && this._timeline[lowerBound].time >= time) { + lowerBound--; + } + this._iterate(callback, lowerBound + 1); + return this; + } + /** + * Iterate over everything in the array at the given time + * @param time The time to check if items are before + * @param callback The callback to invoke with every item + */ + forEachAtTime(time, callback) { + // iterate over the items in reverse so that removing an item doesn't break things + const upperBound = this._search(time); + if (upperBound !== -1 && EQ(this._timeline[upperBound].time, time)) { + let lowerBound = upperBound; + for (let i = upperBound; i >= 0; i--) { + if (EQ(this._timeline[i].time, time)) { + lowerBound = i; + } + else { + break; + } + } + this._iterate(event => { + callback(event); + }, lowerBound, upperBound); + } + return this; + } + /** + * Clean up. + */ + dispose() { + super.dispose(); + this._timeline = []; + return this; + } +} + +//------------------------------------- +// INITIALIZING NEW CONTEXT +//------------------------------------- +/** + * Array of callbacks to invoke when a new context is created + */ +const notifyNewContext = []; +/** + * Used internally to setup a new Context + */ +function onContextInit(cb) { + notifyNewContext.push(cb); +} +/** + * Invoke any classes which need to also be initialized when a new context is created. + */ +function initializeContext(ctx) { + // add any additional modules + notifyNewContext.forEach(cb => cb(ctx)); +} +/** + * Array of callbacks to invoke when a new context is created + */ +const notifyCloseContext = []; +/** + * Used internally to tear down a Context + */ +function onContextClose(cb) { + notifyCloseContext.push(cb); +} +function closeContext(ctx) { + // add any additional modules + notifyCloseContext.forEach(cb => cb(ctx)); +} + +/** + * Emitter gives classes which extend it + * the ability to listen for and emit events. + * Inspiration and reference from Jerome Etienne's [MicroEvent](https://github.com/jeromeetienne/microevent.js). + * MIT (c) 2011 Jerome Etienne. + * @category Core + */ +class Emitter extends Tone { + constructor() { + super(...arguments); + this.name = "Emitter"; + } + /** + * Bind a callback to a specific event. + * @param event The name of the event to listen for. + * @param callback The callback to invoke when the event is emitted + */ + on(event, callback) { + // split the event + const events = event.split(/\W+/); + events.forEach(eventName => { + if (isUndef(this._events)) { + this._events = {}; + } + if (!this._events.hasOwnProperty(eventName)) { + this._events[eventName] = []; + } + this._events[eventName].push(callback); + }); + return this; + } + /** + * Bind a callback which is only invoked once + * @param event The name of the event to listen for. + * @param callback The callback to invoke when the event is emitted + */ + once(event, callback) { + const boundCallback = (...args) => { + // invoke the callback + callback(...args); + // remove the event + this.off(event, boundCallback); + }; + this.on(event, boundCallback); + return this; + } + /** + * Remove the event listener. + * @param event The event to stop listening to. + * @param callback The callback which was bound to the event with Emitter.on. + * If no callback is given, all callbacks events are removed. + */ + off(event, callback) { + const events = event.split(/\W+/); + events.forEach(eventName => { + if (isUndef(this._events)) { + this._events = {}; + } + if (this._events.hasOwnProperty(event)) { + if (isUndef(callback)) { + this._events[event] = []; + } + else { + const eventList = this._events[event]; + for (let i = eventList.length - 1; i >= 0; i--) { + if (eventList[i] === callback) { + eventList.splice(i, 1); + } + } + } + } + }); + return this; + } + /** + * Invoke all of the callbacks bound to the event + * with any arguments passed in. + * @param event The name of the event. + * @param args The arguments to pass to the functions listening. + */ + emit(event, ...args) { + if (this._events) { + if (this._events.hasOwnProperty(event)) { + const eventList = this._events[event].slice(0); + for (let i = 0, len = eventList.length; i < len; i++) { + eventList[i].apply(this, args); + } + } + } + return this; + } + /** + * Add Emitter functions (on/off/emit) to the object + */ + static mixin(constr) { + // instance._events = {}; + ["on", "once", "off", "emit"].forEach(name => { + const property = Object.getOwnPropertyDescriptor(Emitter.prototype, name); + Object.defineProperty(constr.prototype, name, property); + }); + } + /** + * Clean up + */ + dispose() { + super.dispose(); + this._events = undefined; + return this; + } +} + +class BaseContext extends Emitter { + constructor() { + super(...arguments); + this.isOffline = false; + } + /* + * This is a placeholder so that JSON.stringify does not throw an error + * This matches what JSON.stringify(audioContext) returns on a native + * audioContext instance. + */ + toJSON() { + return {}; + } +} + +/** + * Wrapper around the native AudioContext. + * @category Core + */ +class Context extends BaseContext { + constructor() { + super(); + this.name = "Context"; + /** + * An object containing all of the constants AudioBufferSourceNodes + */ + this._constants = new Map(); + /** + * All of the setTimeout events. + */ + this._timeouts = new Timeline(); + /** + * The timeout id counter + */ + this._timeoutIds = 0; + /** + * Private indicator if the context has been initialized + */ + this._initialized = false; + /** + * Indicates if the context is an OfflineAudioContext or an AudioContext + */ + this.isOffline = false; + //-------------------------------------------- + // AUDIO WORKLET + //-------------------------------------------- + /** + * Maps a module name to promise of the addModule method + */ + this._workletModules = new Map(); + const options = optionsFromArguments(Context.getDefaults(), arguments, [ + "context", + ]); + if (options.context) { + this._context = options.context; + } + else { + this._context = createAudioContext({ + latencyHint: options.latencyHint, + }); + } + this._ticker = new Ticker(this.emit.bind(this, "tick"), options.clockSource, options.updateInterval); + this.on("tick", this._timeoutLoop.bind(this)); + // fwd events from the context + this._context.onstatechange = () => { + this.emit("statechange", this.state); + }; + this._setLatencyHint(options.latencyHint); + this.lookAhead = options.lookAhead; + } + static getDefaults() { + return { + clockSource: "worker", + latencyHint: "interactive", + lookAhead: 0.1, + updateInterval: 0.05, + }; + } + /** + * Finish setting up the context. **You usually do not need to do this manually.** + */ + initialize() { + if (!this._initialized) { + // add any additional modules + initializeContext(this); + this._initialized = true; + } + return this; + } + //--------------------------- + // BASE AUDIO CONTEXT METHODS + //--------------------------- + createAnalyser() { + return this._context.createAnalyser(); + } + createOscillator() { + return this._context.createOscillator(); + } + createBufferSource() { + return this._context.createBufferSource(); + } + createBiquadFilter() { + return this._context.createBiquadFilter(); + } + createBuffer(numberOfChannels, length, sampleRate) { + return this._context.createBuffer(numberOfChannels, length, sampleRate); + } + createChannelMerger(numberOfInputs) { + return this._context.createChannelMerger(numberOfInputs); + } + createChannelSplitter(numberOfOutputs) { + return this._context.createChannelSplitter(numberOfOutputs); + } + createConstantSource() { + return this._context.createConstantSource(); + } + createConvolver() { + return this._context.createConvolver(); + } + createDelay(maxDelayTime) { + return this._context.createDelay(maxDelayTime); + } + createDynamicsCompressor() { + return this._context.createDynamicsCompressor(); + } + createGain() { + return this._context.createGain(); + } + createIIRFilter(feedForward, feedback) { + // @ts-ignore + return this._context.createIIRFilter(feedForward, feedback); + } + createPanner() { + return this._context.createPanner(); + } + createPeriodicWave(real, imag, constraints) { + return this._context.createPeriodicWave(real, imag, constraints); + } + createStereoPanner() { + return this._context.createStereoPanner(); + } + createWaveShaper() { + return this._context.createWaveShaper(); + } + createMediaStreamSource(stream) { + assert(isAudioContext(this._context), "Not available if OfflineAudioContext"); + const context = this._context; + return context.createMediaStreamSource(stream); + } + createMediaElementSource(element) { + assert(isAudioContext(this._context), "Not available if OfflineAudioContext"); + const context = this._context; + return context.createMediaElementSource(element); + } + createMediaStreamDestination() { + assert(isAudioContext(this._context), "Not available if OfflineAudioContext"); + const context = this._context; + return context.createMediaStreamDestination(); + } + decodeAudioData(audioData) { + return this._context.decodeAudioData(audioData); + } + /** + * The current time in seconds of the AudioContext. + */ + get currentTime() { + return this._context.currentTime; + } + /** + * The current time in seconds of the AudioContext. + */ + get state() { + return this._context.state; + } + /** + * The current time in seconds of the AudioContext. + */ + get sampleRate() { + return this._context.sampleRate; + } + /** + * The listener + */ + get listener() { + this.initialize(); + return this._listener; + } + set listener(l) { + assert(!this._initialized, "The listener cannot be set after initialization."); + this._listener = l; + } + /** + * There is only one Transport per Context. It is created on initialization. + */ + get transport() { + this.initialize(); + return this._transport; + } + set transport(t) { + assert(!this._initialized, "The transport cannot be set after initialization."); + this._transport = t; + } + /** + * This is the Draw object for the context which is useful for synchronizing the draw frame with the Tone.js clock. + */ + get draw() { + this.initialize(); + return this._draw; + } + set draw(d) { + assert(!this._initialized, "Draw cannot be set after initialization."); + this._draw = d; + } + /** + * A reference to the Context's destination node. + */ + get destination() { + this.initialize(); + return this._destination; + } + set destination(d) { + assert(!this._initialized, "The destination cannot be set after initialization."); + this._destination = d; + } + /** + * Create an audio worklet node from a name and options. The module + * must first be loaded using [[addAudioWorkletModule]]. + */ + createAudioWorkletNode(name, options) { + return createAudioWorkletNode(this.rawContext, name, options); + } + /** + * Add an AudioWorkletProcessor module + * @param url The url of the module + * @param name The name of the module + */ + addAudioWorkletModule(url, name) { + return __awaiter(this, void 0, void 0, function* () { + assert(isDefined(this.rawContext.audioWorklet), "AudioWorkletNode is only available in a secure context (https or localhost)"); + if (!this._workletModules.has(name)) { + this._workletModules.set(name, this.rawContext.audioWorklet.addModule(url)); + } + yield this._workletModules.get(name); + }); + } + /** + * Returns a promise which resolves when all of the worklets have been loaded on this context + */ + workletsAreReady() { + return __awaiter(this, void 0, void 0, function* () { + const promises = []; + this._workletModules.forEach((promise) => promises.push(promise)); + yield Promise.all(promises); + }); + } + //--------------------------- + // TICKER + //--------------------------- + /** + * How often the interval callback is invoked. + * This number corresponds to how responsive the scheduling + * can be. context.updateInterval + context.lookAhead gives you the + * total latency between scheduling an event and hearing it. + */ + get updateInterval() { + return this._ticker.updateInterval; + } + set updateInterval(interval) { + this._ticker.updateInterval = interval; + } + /** + * What the source of the clock is, either "worker" (default), + * "timeout", or "offline" (none). + */ + get clockSource() { + return this._ticker.type; + } + set clockSource(type) { + this._ticker.type = type; + } + /** + * The type of playback, which affects tradeoffs between audio + * output latency and responsiveness. + * In addition to setting the value in seconds, the latencyHint also + * accepts the strings "interactive" (prioritizes low latency), + * "playback" (prioritizes sustained playback), "balanced" (balances + * latency and performance). + * @example + * // prioritize sustained playback + * const context = new Tone.Context({ latencyHint: "playback" }); + * // set this context as the global Context + * Tone.setContext(context); + * // the global context is gettable with Tone.getContext() + * console.log(Tone.getContext().latencyHint); + */ + get latencyHint() { + return this._latencyHint; + } + /** + * Update the lookAhead and updateInterval based on the latencyHint + */ + _setLatencyHint(hint) { + let lookAheadValue = 0; + this._latencyHint = hint; + if (isString(hint)) { + switch (hint) { + case "interactive": + lookAheadValue = 0.1; + break; + case "playback": + lookAheadValue = 0.5; + break; + case "balanced": + lookAheadValue = 0.25; + break; + } + } + this.lookAhead = lookAheadValue; + this.updateInterval = lookAheadValue / 2; + } + /** + * The unwrapped AudioContext or OfflineAudioContext + */ + get rawContext() { + return this._context; + } + /** + * The current audio context time plus a short [[lookAhead]]. + */ + now() { + return this._context.currentTime + this.lookAhead; + } + /** + * The current audio context time without the [[lookAhead]]. + * In most cases it is better to use [[now]] instead of [[immediate]] since + * with [[now]] the [[lookAhead]] is applied equally to _all_ components including internal components, + * to making sure that everything is scheduled in sync. Mixing [[now]] and [[immediate]] + * can cause some timing issues. If no lookAhead is desired, you can set the [[lookAhead]] to `0`. + */ + immediate() { + return this._context.currentTime; + } + /** + * Starts the audio context from a suspended state. This is required + * to initially start the AudioContext. See [[Tone.start]] + */ + resume() { + if (isAudioContext(this._context)) { + return this._context.resume(); + } + else { + return Promise.resolve(); + } + } + /** + * Close the context. Once closed, the context can no longer be used and + * any AudioNodes created from the context will be silent. + */ + close() { + return __awaiter(this, void 0, void 0, function* () { + if (isAudioContext(this._context)) { + yield this._context.close(); + } + if (this._initialized) { + closeContext(this); + } + }); + } + /** + * **Internal** Generate a looped buffer at some constant value. + */ + getConstant(val) { + if (this._constants.has(val)) { + return this._constants.get(val); + } + else { + const buffer = this._context.createBuffer(1, 128, this._context.sampleRate); + const arr = buffer.getChannelData(0); + for (let i = 0; i < arr.length; i++) { + arr[i] = val; + } + const constant = this._context.createBufferSource(); + constant.channelCount = 1; + constant.channelCountMode = "explicit"; + constant.buffer = buffer; + constant.loop = true; + constant.start(0); + this._constants.set(val, constant); + return constant; + } + } + /** + * Clean up. Also closes the audio context. + */ + dispose() { + super.dispose(); + this._ticker.dispose(); + this._timeouts.dispose(); + Object.keys(this._constants).map((val) => this._constants[val].disconnect()); + return this; + } + //--------------------------- + // TIMEOUTS + //--------------------------- + /** + * The private loop which keeps track of the context scheduled timeouts + * Is invoked from the clock source + */ + _timeoutLoop() { + const now = this.now(); + let firstEvent = this._timeouts.peek(); + while (this._timeouts.length && firstEvent && firstEvent.time <= now) { + // invoke the callback + firstEvent.callback(); + // shift the first event off + this._timeouts.shift(); + // get the next one + firstEvent = this._timeouts.peek(); + } + } + /** + * A setTimeout which is guaranteed by the clock source. + * Also runs in the offline context. + * @param fn The callback to invoke + * @param timeout The timeout in seconds + * @returns ID to use when invoking Context.clearTimeout + */ + setTimeout(fn, timeout) { + this._timeoutIds++; + const now = this.now(); + this._timeouts.add({ + callback: fn, + id: this._timeoutIds, + time: now + timeout, + }); + return this._timeoutIds; + } + /** + * Clears a previously scheduled timeout with Tone.context.setTimeout + * @param id The ID returned from setTimeout + */ + clearTimeout(id) { + this._timeouts.forEach((event) => { + if (event.id === id) { + this._timeouts.remove(event); + } + }); + return this; + } + /** + * Clear the function scheduled by [[setInterval]] + */ + clearInterval(id) { + return this.clearTimeout(id); + } + /** + * Adds a repeating event to the context's callback clock + */ + setInterval(fn, interval) { + const id = ++this._timeoutIds; + const intervalFn = () => { + const now = this.now(); + this._timeouts.add({ + callback: () => { + // invoke the callback + fn(); + // invoke the event to repeat it + intervalFn(); + }, + id, + time: now + interval, + }); + }; + // kick it off + intervalFn(); + return id; + } +} + +class DummyContext extends BaseContext { + constructor() { + super(...arguments); + this.lookAhead = 0; + this.latencyHint = 0; + this.isOffline = false; + } + //--------------------------- + // BASE AUDIO CONTEXT METHODS + //--------------------------- + createAnalyser() { + return {}; + } + createOscillator() { + return {}; + } + createBufferSource() { + return {}; + } + createBiquadFilter() { + return {}; + } + createBuffer(_numberOfChannels, _length, _sampleRate) { + return {}; + } + createChannelMerger(_numberOfInputs) { + return {}; + } + createChannelSplitter(_numberOfOutputs) { + return {}; + } + createConstantSource() { + return {}; + } + createConvolver() { + return {}; + } + createDelay(_maxDelayTime) { + return {}; + } + createDynamicsCompressor() { + return {}; + } + createGain() { + return {}; + } + createIIRFilter(_feedForward, _feedback) { + return {}; + } + createPanner() { + return {}; + } + createPeriodicWave(_real, _imag, _constraints) { + return {}; + } + createStereoPanner() { + return {}; + } + createWaveShaper() { + return {}; + } + createMediaStreamSource(_stream) { + return {}; + } + createMediaElementSource(_element) { + return {}; + } + createMediaStreamDestination() { + return {}; + } + decodeAudioData(_audioData) { + return Promise.resolve({}); + } + //--------------------------- + // TONE AUDIO CONTEXT METHODS + //--------------------------- + createAudioWorkletNode(_name, _options) { + return {}; + } + get rawContext() { + return {}; + } + addAudioWorkletModule(_url, _name) { + return __awaiter(this, void 0, void 0, function* () { + return Promise.resolve(); + }); + } + resume() { + return Promise.resolve(); + } + setTimeout(_fn, _timeout) { + return 0; + } + clearTimeout(_id) { + return this; + } + setInterval(_fn, _interval) { + return 0; + } + clearInterval(_id) { + return this; + } + getConstant(_val) { + return {}; + } + get currentTime() { + return 0; + } + get state() { + return {}; + } + get sampleRate() { + return 0; + } + get listener() { + return {}; + } + get transport() { + return {}; + } + get draw() { + return {}; + } + set draw(_d) { } + get destination() { + return {}; + } + set destination(_d) { } + now() { + return 0; + } + immediate() { + return 0; + } +} + +/** + * Make the property not writable using `defineProperty`. Internal use only. + */ +function readOnly(target, property) { + if (isArray(property)) { + property.forEach(str => readOnly(target, str)); + } + else { + Object.defineProperty(target, property, { + enumerable: true, + writable: false, + }); + } +} +/** + * Make an attribute writeable. Internal use only. + */ +function writable(target, property) { + if (isArray(property)) { + property.forEach(str => writable(target, str)); + } + else { + Object.defineProperty(target, property, { + writable: true, + }); + } +} +const noOp = () => { + // no operation here! +}; + +/** + * AudioBuffer loading and storage. ToneAudioBuffer is used internally by all + * classes that make requests for audio files such as Tone.Player, + * Tone.Sampler and Tone.Convolver. + * @example + * const buffer = new Tone.ToneAudioBuffer("https://tonejs.github.io/audio/casio/A1.mp3", () => { + * console.log("loaded"); + * }); + * @category Core + */ +class ToneAudioBuffer extends Tone { + constructor() { + super(); + this.name = "ToneAudioBuffer"; + /** + * Callback when the buffer is loaded. + */ + this.onload = noOp; + const options = optionsFromArguments(ToneAudioBuffer.getDefaults(), arguments, ["url", "onload", "onerror"]); + this.reverse = options.reverse; + this.onload = options.onload; + if (options.url && isAudioBuffer(options.url) || options.url instanceof ToneAudioBuffer) { + this.set(options.url); + } + else if (isString(options.url)) { + // initiate the download + this.load(options.url).catch(options.onerror); + } + } + static getDefaults() { + return { + onerror: noOp, + onload: noOp, + reverse: false, + }; + } + /** + * The sample rate of the AudioBuffer + */ + get sampleRate() { + if (this._buffer) { + return this._buffer.sampleRate; + } + else { + return getContext().sampleRate; + } + } + /** + * Pass in an AudioBuffer or ToneAudioBuffer to set the value of this buffer. + */ + set(buffer) { + if (buffer instanceof ToneAudioBuffer) { + // if it's loaded, set it + if (buffer.loaded) { + this._buffer = buffer.get(); + } + else { + // otherwise when it's loaded, invoke it's callback + buffer.onload = () => { + this.set(buffer); + this.onload(this); + }; + } + } + else { + this._buffer = buffer; + } + // reverse it initially + if (this._reversed) { + this._reverse(); + } + return this; + } + /** + * The audio buffer stored in the object. + */ + get() { + return this._buffer; + } + /** + * Makes an fetch request for the selected url then decodes the file as an audio buffer. + * Invokes the callback once the audio buffer loads. + * @param url The url of the buffer to load. filetype support depends on the browser. + * @returns A Promise which resolves with this ToneAudioBuffer + */ + load(url) { + return __awaiter(this, void 0, void 0, function* () { + const doneLoading = ToneAudioBuffer.load(url).then(audioBuffer => { + this.set(audioBuffer); + // invoke the onload method + this.onload(this); + }); + ToneAudioBuffer.downloads.push(doneLoading); + try { + yield doneLoading; + } + finally { + // remove the downloaded file + const index = ToneAudioBuffer.downloads.indexOf(doneLoading); + ToneAudioBuffer.downloads.splice(index, 1); + } + return this; + }); + } + /** + * clean up + */ + dispose() { + super.dispose(); + this._buffer = undefined; + return this; + } + /** + * Set the audio buffer from the array. + * To create a multichannel AudioBuffer, pass in a multidimensional array. + * @param array The array to fill the audio buffer + */ + fromArray(array) { + const isMultidimensional = isArray(array) && array[0].length > 0; + const channels = isMultidimensional ? array.length : 1; + const len = isMultidimensional ? array[0].length : array.length; + const context = getContext(); + const buffer = context.createBuffer(channels, len, context.sampleRate); + const multiChannelArray = !isMultidimensional && channels === 1 ? + [array] : array; + for (let c = 0; c < channels; c++) { + buffer.copyToChannel(multiChannelArray[c], c); + } + this._buffer = buffer; + return this; + } + /** + * Sums multiple channels into 1 channel + * @param chanNum Optionally only copy a single channel from the array. + */ + toMono(chanNum) { + if (isNumber(chanNum)) { + this.fromArray(this.toArray(chanNum)); + } + else { + let outputArray = new Float32Array(this.length); + const numChannels = this.numberOfChannels; + for (let channel = 0; channel < numChannels; channel++) { + const channelArray = this.toArray(channel); + for (let i = 0; i < channelArray.length; i++) { + outputArray[i] += channelArray[i]; + } + } + // divide by the number of channels + outputArray = outputArray.map(sample => sample / numChannels); + this.fromArray(outputArray); + } + return this; + } + /** + * Get the buffer as an array. Single channel buffers will return a 1-dimensional + * Float32Array, and multichannel buffers will return multidimensional arrays. + * @param channel Optionally only copy a single channel from the array. + */ + toArray(channel) { + if (isNumber(channel)) { + return this.getChannelData(channel); + } + else if (this.numberOfChannels === 1) { + return this.toArray(0); + } + else { + const ret = []; + for (let c = 0; c < this.numberOfChannels; c++) { + ret[c] = this.getChannelData(c); + } + return ret; + } + } + /** + * Returns the Float32Array representing the PCM audio data for the specific channel. + * @param channel The channel number to return + * @return The audio as a TypedArray + */ + getChannelData(channel) { + if (this._buffer) { + return this._buffer.getChannelData(channel); + } + else { + return new Float32Array(0); + } + } + /** + * Cut a subsection of the array and return a buffer of the + * subsection. Does not modify the original buffer + * @param start The time to start the slice + * @param end The end time to slice. If none is given will default to the end of the buffer + */ + slice(start, end = this.duration) { + const startSamples = Math.floor(start * this.sampleRate); + const endSamples = Math.floor(end * this.sampleRate); + assert(startSamples < endSamples, "The start time must be less than the end time"); + const length = endSamples - startSamples; + const retBuffer = getContext().createBuffer(this.numberOfChannels, length, this.sampleRate); + for (let channel = 0; channel < this.numberOfChannels; channel++) { + retBuffer.copyToChannel(this.getChannelData(channel).subarray(startSamples, endSamples), channel); + } + return new ToneAudioBuffer(retBuffer); + } + /** + * Reverse the buffer. + */ + _reverse() { + if (this.loaded) { + for (let i = 0; i < this.numberOfChannels; i++) { + this.getChannelData(i).reverse(); + } + } + return this; + } + /** + * If the buffer is loaded or not + */ + get loaded() { + return this.length > 0; + } + /** + * The duration of the buffer in seconds. + */ + get duration() { + if (this._buffer) { + return this._buffer.duration; + } + else { + return 0; + } + } + /** + * The length of the buffer in samples + */ + get length() { + if (this._buffer) { + return this._buffer.length; + } + else { + return 0; + } + } + /** + * The number of discrete audio channels. Returns 0 if no buffer is loaded. + */ + get numberOfChannels() { + if (this._buffer) { + return this._buffer.numberOfChannels; + } + else { + return 0; + } + } + /** + * Reverse the buffer. + */ + get reverse() { + return this._reversed; + } + set reverse(rev) { + if (this._reversed !== rev) { + this._reversed = rev; + this._reverse(); + } + } + /** + * Create a ToneAudioBuffer from the array. To create a multichannel AudioBuffer, + * pass in a multidimensional array. + * @param array The array to fill the audio buffer + * @return A ToneAudioBuffer created from the array + */ + static fromArray(array) { + return (new ToneAudioBuffer()).fromArray(array); + } + /** + * Creates a ToneAudioBuffer from a URL, returns a promise which resolves to a ToneAudioBuffer + * @param url The url to load. + * @return A promise which resolves to a ToneAudioBuffer + */ + static fromUrl(url) { + return __awaiter(this, void 0, void 0, function* () { + const buffer = new ToneAudioBuffer(); + return yield buffer.load(url); + }); + } + /** + * Loads a url using fetch and returns the AudioBuffer. + */ + static load(url) { + return __awaiter(this, void 0, void 0, function* () { + // test if the url contains multiple extensions + const matches = url.match(/\[([^\]\[]+\|.+)\]$/); + if (matches) { + const extensions = matches[1].split("|"); + let extension = extensions[0]; + for (const ext of extensions) { + if (ToneAudioBuffer.supportsType(ext)) { + extension = ext; + break; + } + } + url = url.replace(matches[0], extension); + } + // make sure there is a slash between the baseUrl and the url + const baseUrl = ToneAudioBuffer.baseUrl === "" || ToneAudioBuffer.baseUrl.endsWith("/") ? ToneAudioBuffer.baseUrl : ToneAudioBuffer.baseUrl + "/"; + const response = yield fetch(baseUrl + url); + if (!response.ok) { + throw new Error(`could not load url: ${url}`); + } + const arrayBuffer = yield response.arrayBuffer(); + const audioBuffer = yield getContext().decodeAudioData(arrayBuffer); + return audioBuffer; + }); + } + /** + * Checks a url's extension to see if the current browser can play that file type. + * @param url The url/extension to test + * @return If the file extension can be played + * @static + * @example + * Tone.ToneAudioBuffer.supportsType("wav"); // returns true + * Tone.ToneAudioBuffer.supportsType("path/to/file.wav"); // returns true + */ + static supportsType(url) { + const extensions = url.split("."); + const extension = extensions[extensions.length - 1]; + const response = document.createElement("audio").canPlayType("audio/" + extension); + return response !== ""; + } + /** + * Returns a Promise which resolves when all of the buffers have loaded + */ + static loaded() { + return __awaiter(this, void 0, void 0, function* () { + // this makes sure that the function is always async + yield Promise.resolve(); + while (ToneAudioBuffer.downloads.length) { + yield ToneAudioBuffer.downloads[0]; + } + }); + } +} +//------------------------------------- +// STATIC METHODS +//------------------------------------- +/** + * A path which is prefixed before every url. + */ +ToneAudioBuffer.baseUrl = ""; +/** + * All of the downloads + */ +ToneAudioBuffer.downloads = []; + +/** + * Wrapper around the OfflineAudioContext + * @category Core + * @example + * // generate a single channel, 0.5 second buffer + * const context = new Tone.OfflineContext(1, 0.5, 44100); + * const osc = new Tone.Oscillator({ context }); + * context.render().then(buffer => { + * console.log(buffer.numberOfChannels, buffer.duration); + * }); + */ +class OfflineContext extends Context { + constructor() { + super({ + clockSource: "offline", + context: isOfflineAudioContext(arguments[0]) ? + arguments[0] : createOfflineAudioContext(arguments[0], arguments[1] * arguments[2], arguments[2]), + lookAhead: 0, + updateInterval: isOfflineAudioContext(arguments[0]) ? + 128 / arguments[0].sampleRate : 128 / arguments[2], + }); + this.name = "OfflineContext"; + /** + * An artificial clock source + */ + this._currentTime = 0; + this.isOffline = true; + this._duration = isOfflineAudioContext(arguments[0]) ? + arguments[0].length / arguments[0].sampleRate : arguments[1]; + } + /** + * Override the now method to point to the internal clock time + */ + now() { + return this._currentTime; + } + /** + * Same as this.now() + */ + get currentTime() { + return this._currentTime; + } + /** + * Render just the clock portion of the audio context. + */ + _renderClock(asynchronous) { + return __awaiter(this, void 0, void 0, function* () { + let index = 0; + while (this._duration - this._currentTime >= 0) { + // invoke all the callbacks on that time + this.emit("tick"); + // increment the clock in block-sized chunks + this._currentTime += 128 / this.sampleRate; + // yield once a second of audio + index++; + const yieldEvery = Math.floor(this.sampleRate / 128); + if (asynchronous && index % yieldEvery === 0) { + yield new Promise(done => setTimeout(done, 1)); + } + } + }); + } + /** + * Render the output of the OfflineContext + * @param asynchronous If the clock should be rendered asynchronously, which will not block the main thread, but be slightly slower. + */ + render(asynchronous = true) { + return __awaiter(this, void 0, void 0, function* () { + yield this.workletsAreReady(); + yield this._renderClock(asynchronous); + const buffer = yield this._context.startRendering(); + return new ToneAudioBuffer(buffer); + }); + } + /** + * Close the context + */ + close() { + return Promise.resolve(); + } +} + +/** + * This dummy context is used to avoid throwing immediate errors when importing in Node.js + */ +const dummyContext = new DummyContext(); +/** + * The global audio context which is getable and assignable through + * getContext and setContext + */ +let globalContext = dummyContext; +/** + * Returns the default system-wide [[Context]] + * @category Core + */ +function getContext() { + if (globalContext === dummyContext && hasAudioContext) { + setContext(new Context()); + } + return globalContext; +} +/** + * Set the default audio context + * @category Core + */ +function setContext(context) { + if (isAudioContext(context)) { + globalContext = new Context(context); + } + else if (isOfflineAudioContext(context)) { + globalContext = new OfflineContext(context); + } + else { + globalContext = context; + } +} +/** + * Most browsers will not play _any_ audio until a user + * clicks something (like a play button). Invoke this method + * on a click or keypress event handler to start the audio context. + * More about the Autoplay policy + * [here](https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio) + * @example + * document.querySelector("button").addEventListener("click", async () => { + * await Tone.start(); + * console.log("context started"); + * }); + * @category Core + */ +function start() { + return globalContext.resume(); +} +/** + * Log Tone.js + version in the console. + */ +if (theWindow && !theWindow.TONE_SILENCE_LOGGING) { + let prefix = "v"; + const printString = ` * Tone.js ${prefix}${version} * `; + // eslint-disable-next-line no-console + console.log(`%c${printString}`, "background: #000; color: #fff"); +} + +/** + * Equal power gain scale. Good for cross-fading. + * @param percent (0-1) + */ +/** + * Convert decibels into gain. + */ +function dbToGain(db) { + return Math.pow(10, db / 20); +} +/** + * Convert gain to decibels. + */ +function gainToDb(gain) { + return 20 * (Math.log(gain) / Math.LN10); +} +/** + * Convert an interval (in semitones) to a frequency ratio. + * @param interval the number of semitones above the base note + * @example + * Tone.intervalToFrequencyRatio(0); // 1 + * Tone.intervalToFrequencyRatio(12); // 2 + * Tone.intervalToFrequencyRatio(-12); // 0.5 + */ +function intervalToFrequencyRatio(interval) { + return Math.pow(2, (interval / 12)); +} +/** + * The Global [concert tuning pitch](https://en.wikipedia.org/wiki/Concert_pitch) which is used + * to generate all the other pitch values from notes. A4's values in Hertz. + */ +let A4 = 440; +function getA4() { + return A4; +} +function setA4(freq) { + A4 = freq; +} +/** + * Convert a frequency value to a MIDI note. + * @param frequency The value to frequency value to convert. + * @example + * Tone.ftom(440); // returns 69 + */ +function ftom(frequency) { + return Math.round(ftomf(frequency)); +} +/** + * Convert a frequency to a floating point midi value + */ +function ftomf(frequency) { + return 69 + 12 * Math.log2(frequency / A4); +} +/** + * Convert a MIDI note to frequency value. + * @param midi The midi number to convert. + * @return The corresponding frequency value + * @example + * Tone.mtof(69); // 440 + */ +function mtof(midi) { + return A4 * Math.pow(2, (midi - 69) / 12); +} + +/** + * TimeBase is a flexible encoding of time which can be evaluated to and from a string. + */ +class TimeBaseClass extends Tone { + /** + * @param context The context associated with the time value. Used to compute + * Transport and context-relative timing. + * @param value The time value as a number, string or object + * @param units Unit values + */ + constructor(context, value, units) { + super(); + /** + * The default units + */ + this.defaultUnits = "s"; + this._val = value; + this._units = units; + this.context = context; + this._expressions = this._getExpressions(); + } + /** + * All of the time encoding expressions + */ + _getExpressions() { + return { + hz: { + method: (value) => { + return this._frequencyToUnits(parseFloat(value)); + }, + regexp: /^(\d+(?:\.\d+)?)hz$/i, + }, + i: { + method: (value) => { + return this._ticksToUnits(parseInt(value, 10)); + }, + regexp: /^(\d+)i$/i, + }, + m: { + method: (value) => { + return this._beatsToUnits(parseInt(value, 10) * this._getTimeSignature()); + }, + regexp: /^(\d+)m$/i, + }, + n: { + method: (value, dot) => { + const numericValue = parseInt(value, 10); + const scalar = dot === "." ? 1.5 : 1; + if (numericValue === 1) { + return this._beatsToUnits(this._getTimeSignature()) * scalar; + } + else { + return this._beatsToUnits(4 / numericValue) * scalar; + } + }, + regexp: /^(\d+)n(\.?)$/i, + }, + number: { + method: (value) => { + return this._expressions[this.defaultUnits].method.call(this, value); + }, + regexp: /^(\d+(?:\.\d+)?)$/, + }, + s: { + method: (value) => { + return this._secondsToUnits(parseFloat(value)); + }, + regexp: /^(\d+(?:\.\d+)?)s$/, + }, + samples: { + method: (value) => { + return parseInt(value, 10) / this.context.sampleRate; + }, + regexp: /^(\d+)samples$/, + }, + t: { + method: (value) => { + const numericValue = parseInt(value, 10); + return this._beatsToUnits(8 / (Math.floor(numericValue) * 3)); + }, + regexp: /^(\d+)t$/i, + }, + tr: { + method: (m, q, s) => { + let total = 0; + if (m && m !== "0") { + total += this._beatsToUnits(this._getTimeSignature() * parseFloat(m)); + } + if (q && q !== "0") { + total += this._beatsToUnits(parseFloat(q)); + } + if (s && s !== "0") { + total += this._beatsToUnits(parseFloat(s) / 4); + } + return total; + }, + regexp: /^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/, + }, + }; + } + //------------------------------------- + // VALUE OF + //------------------------------------- + /** + * Evaluate the time value. Returns the time in seconds. + */ + valueOf() { + if (this._val instanceof TimeBaseClass) { + this.fromType(this._val); + } + if (isUndef(this._val)) { + return this._noArg(); + } + else if (isString(this._val) && isUndef(this._units)) { + for (const units in this._expressions) { + if (this._expressions[units].regexp.test(this._val.trim())) { + this._units = units; + break; + } + } + } + else if (isObject(this._val)) { + let total = 0; + for (const typeName in this._val) { + if (isDefined(this._val[typeName])) { + const quantity = this._val[typeName]; + // @ts-ignore + const time = (new this.constructor(this.context, typeName)).valueOf() * quantity; + total += time; + } + } + return total; + } + if (isDefined(this._units)) { + const expr = this._expressions[this._units]; + const matching = this._val.toString().trim().match(expr.regexp); + if (matching) { + return expr.method.apply(this, matching.slice(1)); + } + else { + return expr.method.call(this, this._val); + } + } + else if (isString(this._val)) { + return parseFloat(this._val); + } + else { + return this._val; + } + } + //------------------------------------- + // UNIT CONVERSIONS + //------------------------------------- + /** + * Returns the value of a frequency in the current units + */ + _frequencyToUnits(freq) { + return 1 / freq; + } + /** + * Return the value of the beats in the current units + */ + _beatsToUnits(beats) { + return (60 / this._getBpm()) * beats; + } + /** + * Returns the value of a second in the current units + */ + _secondsToUnits(seconds) { + return seconds; + } + /** + * Returns the value of a tick in the current time units + */ + _ticksToUnits(ticks) { + return (ticks * (this._beatsToUnits(1)) / this._getPPQ()); + } + /** + * With no arguments, return 'now' + */ + _noArg() { + return this._now(); + } + //------------------------------------- + // TEMPO CONVERSIONS + //------------------------------------- + /** + * Return the bpm + */ + _getBpm() { + return this.context.transport.bpm.value; + } + /** + * Return the timeSignature + */ + _getTimeSignature() { + return this.context.transport.timeSignature; + } + /** + * Return the PPQ or 192 if Transport is not available + */ + _getPPQ() { + return this.context.transport.PPQ; + } + //------------------------------------- + // CONVERSION INTERFACE + //------------------------------------- + /** + * Coerce a time type into this units type. + * @param type Any time type units + */ + fromType(type) { + this._units = undefined; + switch (this.defaultUnits) { + case "s": + this._val = type.toSeconds(); + break; + case "i": + this._val = type.toTicks(); + break; + case "hz": + this._val = type.toFrequency(); + break; + case "midi": + this._val = type.toMidi(); + break; + } + return this; + } + /** + * Return the value in hertz + */ + toFrequency() { + return 1 / this.toSeconds(); + } + /** + * Return the time in samples + */ + toSamples() { + return this.toSeconds() * this.context.sampleRate; + } + /** + * Return the time in milliseconds. + */ + toMilliseconds() { + return this.toSeconds() * 1000; + } +} + +/** + * TimeClass is a primitive type for encoding and decoding Time values. + * TimeClass can be passed into the parameter of any method which takes time as an argument. + * @param val The time value. + * @param units The units of the value. + * @example + * const time = Tone.Time("4n"); // a quarter note + * @category Unit + */ +class TimeClass extends TimeBaseClass { + constructor() { + super(...arguments); + this.name = "TimeClass"; + } + _getExpressions() { + return Object.assign(super._getExpressions(), { + now: { + method: (capture) => { + return this._now() + new this.constructor(this.context, capture).valueOf(); + }, + regexp: /^\+(.+)/, + }, + quantize: { + method: (capture) => { + const quantTo = new TimeClass(this.context, capture).valueOf(); + return this._secondsToUnits(this.context.transport.nextSubdivision(quantTo)); + }, + regexp: /^@(.+)/, + }, + }); + } + /** + * Quantize the time by the given subdivision. Optionally add a + * percentage which will move the time value towards the ideal + * quantized value by that percentage. + * @param subdiv The subdivision to quantize to + * @param percent Move the time value towards the quantized value by a percentage. + * @example + * Tone.Time(21).quantize(2); // returns 22 + * Tone.Time(0.6).quantize("4n", 0.5); // returns 0.55 + */ + quantize(subdiv, percent = 1) { + const subdivision = new this.constructor(this.context, subdiv).valueOf(); + const value = this.valueOf(); + const multiple = Math.round(value / subdivision); + const ideal = multiple * subdivision; + const diff = ideal - value; + return value + diff * percent; + } + //------------------------------------- + // CONVERSIONS + //------------------------------------- + /** + * Convert a Time to Notation. The notation values are will be the + * closest representation between 1m to 128th note. + * @return {Notation} + * @example + * // if the Transport is at 120bpm: + * Tone.Time(2).toNotation(); // returns "1m" + */ + toNotation() { + const time = this.toSeconds(); + const testNotations = ["1m"]; + for (let power = 1; power < 9; power++) { + const subdiv = Math.pow(2, power); + testNotations.push(subdiv + "n."); + testNotations.push(subdiv + "n"); + testNotations.push(subdiv + "t"); + } + testNotations.push("0"); + // find the closets notation representation + let closest = testNotations[0]; + let closestSeconds = new TimeClass(this.context, testNotations[0]).toSeconds(); + testNotations.forEach(notation => { + const notationSeconds = new TimeClass(this.context, notation).toSeconds(); + if (Math.abs(notationSeconds - time) < Math.abs(closestSeconds - time)) { + closest = notation; + closestSeconds = notationSeconds; + } + }); + return closest; + } + /** + * Return the time encoded as Bars:Beats:Sixteenths. + */ + toBarsBeatsSixteenths() { + const quarterTime = this._beatsToUnits(1); + let quarters = this.valueOf() / quarterTime; + quarters = parseFloat(quarters.toFixed(4)); + const measures = Math.floor(quarters / this._getTimeSignature()); + let sixteenths = (quarters % 1) * 4; + quarters = Math.floor(quarters) % this._getTimeSignature(); + const sixteenthString = sixteenths.toString(); + if (sixteenthString.length > 3) { + // the additional parseFloat removes insignificant trailing zeroes + sixteenths = parseFloat(parseFloat(sixteenthString).toFixed(3)); + } + const progress = [measures, quarters, sixteenths]; + return progress.join(":"); + } + /** + * Return the time in ticks. + */ + toTicks() { + const quarterTime = this._beatsToUnits(1); + const quarters = this.valueOf() / quarterTime; + return Math.round(quarters * this._getPPQ()); + } + /** + * Return the time in seconds. + */ + toSeconds() { + return this.valueOf(); + } + /** + * Return the value as a midi note. + */ + toMidi() { + return ftom(this.toFrequency()); + } + _now() { + return this.context.now(); + } +} +/** + * Create a TimeClass from a time string or number. The time is computed against the + * global Tone.Context. To use a specific context, use [[TimeClass]] + * @param value A value which represents time + * @param units The value's units if they can't be inferred by the value. + * @category Unit + * @example + * const time = Tone.Time("4n").toSeconds(); + * console.log(time); + * @example + * const note = Tone.Time(1).toNotation(); + * console.log(note); + * @example + * const freq = Tone.Time(0.5).toFrequency(); + * console.log(freq); + */ +function Time(value, units) { + return new TimeClass(getContext(), value, units); +} + +/** + * Frequency is a primitive type for encoding Frequency values. + * Eventually all time values are evaluated to hertz using the `valueOf` method. + * @example + * Tone.Frequency("C3"); // 261 + * Tone.Frequency(38, "midi"); + * Tone.Frequency("C3").transpose(4); + * @category Unit + */ +class FrequencyClass extends TimeClass { + constructor() { + super(...arguments); + this.name = "Frequency"; + this.defaultUnits = "hz"; + } + /** + * The [concert tuning pitch](https://en.wikipedia.org/wiki/Concert_pitch) which is used + * to generate all the other pitch values from notes. A4's values in Hertz. + */ + static get A4() { + return getA4(); + } + static set A4(freq) { + setA4(freq); + } + //------------------------------------- + // AUGMENT BASE EXPRESSIONS + //------------------------------------- + _getExpressions() { + return Object.assign({}, super._getExpressions(), { + midi: { + regexp: /^(\d+(?:\.\d+)?midi)/, + method(value) { + if (this.defaultUnits === "midi") { + return value; + } + else { + return FrequencyClass.mtof(value); + } + }, + }, + note: { + regexp: /^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i, + method(pitch, octave) { + const index = noteToScaleIndex[pitch.toLowerCase()]; + const noteNumber = index + (parseInt(octave, 10) + 1) * 12; + if (this.defaultUnits === "midi") { + return noteNumber; + } + else { + return FrequencyClass.mtof(noteNumber); + } + }, + }, + tr: { + regexp: /^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/, + method(m, q, s) { + let total = 1; + if (m && m !== "0") { + total *= this._beatsToUnits(this._getTimeSignature() * parseFloat(m)); + } + if (q && q !== "0") { + total *= this._beatsToUnits(parseFloat(q)); + } + if (s && s !== "0") { + total *= this._beatsToUnits(parseFloat(s) / 4); + } + return total; + }, + }, + }); + } + //------------------------------------- + // EXPRESSIONS + //------------------------------------- + /** + * Transposes the frequency by the given number of semitones. + * @return A new transposed frequency + * @example + * Tone.Frequency("A4").transpose(3); // "C5" + */ + transpose(interval) { + return new FrequencyClass(this.context, this.valueOf() * intervalToFrequencyRatio(interval)); + } + /** + * Takes an array of semitone intervals and returns + * an array of frequencies transposed by those intervals. + * @return Returns an array of Frequencies + * @example + * Tone.Frequency("A4").harmonize([0, 3, 7]); // ["A4", "C5", "E5"] + */ + harmonize(intervals) { + return intervals.map(interval => { + return this.transpose(interval); + }); + } + //------------------------------------- + // UNIT CONVERSIONS + //------------------------------------- + /** + * Return the value of the frequency as a MIDI note + * @example + * Tone.Frequency("C4").toMidi(); // 60 + */ + toMidi() { + return ftom(this.valueOf()); + } + /** + * Return the value of the frequency in Scientific Pitch Notation + * @example + * Tone.Frequency(69, "midi").toNote(); // "A4" + */ + toNote() { + const freq = this.toFrequency(); + const log = Math.log2(freq / FrequencyClass.A4); + let noteNumber = Math.round(12 * log) + 57; + const octave = Math.floor(noteNumber / 12); + if (octave < 0) { + noteNumber += -12 * octave; + } + const noteName = scaleIndexToNote[noteNumber % 12]; + return noteName + octave.toString(); + } + /** + * Return the duration of one cycle in seconds. + */ + toSeconds() { + return 1 / super.toSeconds(); + } + /** + * Return the duration of one cycle in ticks + */ + toTicks() { + const quarterTime = this._beatsToUnits(1); + const quarters = this.valueOf() / quarterTime; + return Math.floor(quarters * this._getPPQ()); + } + //------------------------------------- + // UNIT CONVERSIONS HELPERS + //------------------------------------- + /** + * With no arguments, return 0 + */ + _noArg() { + return 0; + } + /** + * Returns the value of a frequency in the current units + */ + _frequencyToUnits(freq) { + return freq; + } + /** + * Returns the value of a tick in the current time units + */ + _ticksToUnits(ticks) { + return 1 / ((ticks * 60) / (this._getBpm() * this._getPPQ())); + } + /** + * Return the value of the beats in the current units + */ + _beatsToUnits(beats) { + return 1 / super._beatsToUnits(beats); + } + /** + * Returns the value of a second in the current units + */ + _secondsToUnits(seconds) { + return 1 / seconds; + } + /** + * Convert a MIDI note to frequency value. + * @param midi The midi number to convert. + * @return The corresponding frequency value + */ + static mtof(midi) { + return mtof(midi); + } + /** + * Convert a frequency value to a MIDI note. + * @param frequency The value to frequency value to convert. + */ + static ftom(frequency) { + return ftom(frequency); + } +} +//------------------------------------- +// FREQUENCY CONVERSIONS +//------------------------------------- +/** + * Note to scale index. + * @hidden + */ +const noteToScaleIndex = { + cbb: -2, cb: -1, c: 0, "c#": 1, cx: 2, + dbb: 0, db: 1, d: 2, "d#": 3, dx: 4, + ebb: 2, eb: 3, e: 4, "e#": 5, ex: 6, + fbb: 3, fb: 4, f: 5, "f#": 6, fx: 7, + gbb: 5, gb: 6, g: 7, "g#": 8, gx: 9, + abb: 7, ab: 8, a: 9, "a#": 10, ax: 11, + bbb: 9, bb: 10, b: 11, "b#": 12, bx: 13, +}; +/** + * scale index to note (sharps) + * @hidden + */ +const scaleIndexToNote = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]; +/** + * Convert a value into a FrequencyClass object. + * @category Unit + * @example + * const midi = Tone.Frequency("C3").toMidi(); + * console.log(midi); + * @example + * const hertz = Tone.Frequency(38, "midi").toFrequency(); + * console.log(hertz); + */ +function Frequency(value, units) { + return new FrequencyClass(getContext(), value, units); +} + +/** + * TransportTime is a the time along the Transport's + * timeline. It is similar to Tone.Time, but instead of evaluating + * against the AudioContext's clock, it is evaluated against + * the Transport's position. See [TransportTime wiki](https://github.com/Tonejs/Tone.js/wiki/TransportTime). + * @category Unit + */ +class TransportTimeClass extends TimeClass { + constructor() { + super(...arguments); + this.name = "TransportTime"; + } + /** + * Return the current time in whichever context is relevant + */ + _now() { + return this.context.transport.seconds; + } +} +/** + * TransportTime is a the time along the Transport's + * timeline. It is similar to [[Time]], but instead of evaluating + * against the AudioContext's clock, it is evaluated against + * the Transport's position. See [TransportTime wiki](https://github.com/Tonejs/Tone.js/wiki/TransportTime). + * @category Unit + */ +function TransportTime(value, units) { + return new TransportTimeClass(getContext(), value, units); +} + +/** + * The Base class for all nodes that have an AudioContext. + */ +class ToneWithContext extends Tone { + constructor() { + super(); + const options = optionsFromArguments(ToneWithContext.getDefaults(), arguments, ["context"]); + if (this.defaultContext) { + this.context = this.defaultContext; + } + else { + this.context = options.context; + } + } + static getDefaults() { + return { + context: getContext(), + }; + } + /** + * Return the current time of the Context clock plus the lookAhead. + * @example + * setInterval(() => { + * console.log(Tone.now()); + * }, 100); + */ + now() { + return this.context.currentTime + this.context.lookAhead; + } + /** + * Return the current time of the Context clock without any lookAhead. + * @example + * setInterval(() => { + * console.log(Tone.immediate()); + * }, 100); + */ + immediate() { + return this.context.currentTime; + } + /** + * The duration in seconds of one sample. + * @example + * console.log(Tone.Transport.sampleTime); + */ + get sampleTime() { + return 1 / this.context.sampleRate; + } + /** + * The number of seconds of 1 processing block (128 samples) + * @example + * console.log(Tone.Destination.blockTime); + */ + get blockTime() { + return 128 / this.context.sampleRate; + } + /** + * Convert the incoming time to seconds. + * This is calculated against the current [[Tone.Transport]] bpm + * @example + * const gain = new Tone.Gain(); + * setInterval(() => console.log(gain.toSeconds("4n")), 100); + * // ramp the tempo to 60 bpm over 30 seconds + * Tone.getTransport().bpm.rampTo(60, 30); + */ + toSeconds(time) { + return new TimeClass(this.context, time).toSeconds(); + } + /** + * Convert the input to a frequency number + * @example + * const gain = new Tone.Gain(); + * console.log(gain.toFrequency("4n")); + */ + toFrequency(freq) { + return new FrequencyClass(this.context, freq).toFrequency(); + } + /** + * Convert the input time into ticks + * @example + * const gain = new Tone.Gain(); + * console.log(gain.toTicks("4n")); + */ + toTicks(time) { + return new TransportTimeClass(this.context, time).toTicks(); + } + //------------------------------------- + // GET/SET + //------------------------------------- + /** + * Get a subset of the properties which are in the partial props + */ + _getPartialProperties(props) { + const options = this.get(); + // remove attributes from the prop that are not in the partial + Object.keys(options).forEach(name => { + if (isUndef(props[name])) { + delete options[name]; + } + }); + return options; + } + /** + * Get the object's attributes. + * @example + * const osc = new Tone.Oscillator(); + * console.log(osc.get()); + */ + get() { + const defaults = getDefaultsFromInstance(this); + Object.keys(defaults).forEach(attribute => { + if (Reflect.has(this, attribute)) { + const member = this[attribute]; + if (isDefined(member) && isDefined(member.value) && isDefined(member.setValueAtTime)) { + defaults[attribute] = member.value; + } + else if (member instanceof ToneWithContext) { + defaults[attribute] = member._getPartialProperties(defaults[attribute]); + // otherwise make sure it's a serializable type + } + else if (isArray(member) || isNumber(member) || isString(member) || isBoolean(member)) { + defaults[attribute] = member; + } + else { + // remove all undefined and unserializable attributes + delete defaults[attribute]; + } + } + }); + return defaults; + } + /** + * Set multiple properties at once with an object. + * @example + * const filter = new Tone.Filter().toDestination(); + * // set values using an object + * filter.set({ + * frequency: "C6", + * type: "highpass" + * }); + * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/Analogsynth_octaves_highmid.mp3").connect(filter); + * player.autostart = true; + */ + set(props) { + Object.keys(props).forEach(attribute => { + if (Reflect.has(this, attribute) && isDefined(this[attribute])) { + if (this[attribute] && isDefined(this[attribute].value) && isDefined(this[attribute].setValueAtTime)) { + // small optimization + if (this[attribute].value !== props[attribute]) { + this[attribute].value = props[attribute]; + } + } + else if (this[attribute] instanceof ToneWithContext) { + this[attribute].set(props[attribute]); + } + else { + this[attribute] = props[attribute]; + } + } + }); + return this; + } +} + +/** + * A Timeline State. Provides the methods: `setStateAtTime("state", time)` and `getValueAtTime(time)` + * @param initial The initial state of the StateTimeline. Defaults to `undefined` + */ +class StateTimeline extends Timeline { + constructor(initial = "stopped") { + super(); + this.name = "StateTimeline"; + this._initial = initial; + this.setStateAtTime(this._initial, 0); + } + /** + * Returns the scheduled state scheduled before or at + * the given time. + * @param time The time to query. + * @return The name of the state input in setStateAtTime. + */ + getValueAtTime(time) { + const event = this.get(time); + if (event !== null) { + return event.state; + } + else { + return this._initial; + } + } + /** + * Add a state to the timeline. + * @param state The name of the state to set. + * @param time The time to query. + * @param options Any additional options that are needed in the timeline. + */ + setStateAtTime(state, time, options) { + assertRange(time, 0); + this.add(Object.assign({}, options, { + state, + time, + })); + return this; + } + /** + * Return the event before the time with the given state + * @param state The state to look for + * @param time When to check before + * @return The event with the given state before the time + */ + getLastState(state, time) { + // time = this.toSeconds(time); + const index = this._search(time); + for (let i = index; i >= 0; i--) { + const event = this._timeline[i]; + if (event.state === state) { + return event; + } + } + } + /** + * Return the event after the time with the given state + * @param state The state to look for + * @param time When to check from + * @return The event with the given state after the time + */ + getNextState(state, time) { + // time = this.toSeconds(time); + const index = this._search(time); + if (index !== -1) { + for (let i = index; i < this._timeline.length; i++) { + const event = this._timeline[i]; + if (event.state === state) { + return event; + } + } + } + } +} + +/** + * Param wraps the native Web Audio's AudioParam to provide + * additional unit conversion functionality. It also + * serves as a base-class for classes which have a single, + * automatable parameter. + * @category Core + */ +class Param extends ToneWithContext { + constructor() { + super(optionsFromArguments(Param.getDefaults(), arguments, ["param", "units", "convert"])); + this.name = "Param"; + this.overridden = false; + /** + * The minimum output value + */ + this._minOutput = 1e-7; + const options = optionsFromArguments(Param.getDefaults(), arguments, ["param", "units", "convert"]); + assert(isDefined(options.param) && + (isAudioParam(options.param) || options.param instanceof Param), "param must be an AudioParam"); + while (!isAudioParam(options.param)) { + options.param = options.param._param; + } + this._swappable = isDefined(options.swappable) ? options.swappable : false; + if (this._swappable) { + this.input = this.context.createGain(); + // initialize + this._param = options.param; + this.input.connect(this._param); + } + else { + this._param = this.input = options.param; + } + this._events = new Timeline(1000); + this._initialValue = this._param.defaultValue; + this.units = options.units; + this.convert = options.convert; + this._minValue = options.minValue; + this._maxValue = options.maxValue; + // if the value is defined, set it immediately + if (isDefined(options.value) && options.value !== this._toType(this._initialValue)) { + this.setValueAtTime(options.value, 0); + } + } + static getDefaults() { + return Object.assign(ToneWithContext.getDefaults(), { + convert: true, + units: "number", + }); + } + get value() { + const now = this.now(); + return this.getValueAtTime(now); + } + set value(value) { + this.cancelScheduledValues(this.now()); + this.setValueAtTime(value, this.now()); + } + get minValue() { + // if it's not the default minValue, return it + if (isDefined(this._minValue)) { + return this._minValue; + } + else if (this.units === "time" || this.units === "frequency" || + this.units === "normalRange" || this.units === "positive" || + this.units === "transportTime" || this.units === "ticks" || + this.units === "bpm" || this.units === "hertz" || this.units === "samples") { + return 0; + } + else if (this.units === "audioRange") { + return -1; + } + else if (this.units === "decibels") { + return -Infinity; + } + else { + return this._param.minValue; + } + } + get maxValue() { + if (isDefined(this._maxValue)) { + return this._maxValue; + } + else if (this.units === "normalRange" || + this.units === "audioRange") { + return 1; + } + else { + return this._param.maxValue; + } + } + /** + * Type guard based on the unit name + */ + _is(arg, type) { + return this.units === type; + } + /** + * Make sure the value is always in the defined range + */ + _assertRange(value) { + if (isDefined(this.maxValue) && isDefined(this.minValue)) { + assertRange(value, this._fromType(this.minValue), this._fromType(this.maxValue)); + } + return value; + } + /** + * Convert the given value from the type specified by Param.units + * into the destination value (such as Gain or Frequency). + */ + _fromType(val) { + if (this.convert && !this.overridden) { + if (this._is(val, "time")) { + return this.toSeconds(val); + } + else if (this._is(val, "decibels")) { + return dbToGain(val); + } + else if (this._is(val, "frequency")) { + return this.toFrequency(val); + } + else { + return val; + } + } + else if (this.overridden) { + // if it's overridden, should only schedule 0s + return 0; + } + else { + return val; + } + } + /** + * Convert the parameters value into the units specified by Param.units. + */ + _toType(val) { + if (this.convert && this.units === "decibels") { + return gainToDb(val); + } + else { + return val; + } + } + //------------------------------------- + // ABSTRACT PARAM INTERFACE + // all docs are generated from ParamInterface.ts + //------------------------------------- + setValueAtTime(value, time) { + const computedTime = this.toSeconds(time); + const numericValue = this._fromType(value); + assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to setValueAtTime: ${JSON.stringify(value)}, ${JSON.stringify(time)}`); + this._assertRange(numericValue); + this.log(this.units, "setValueAtTime", value, computedTime); + this._events.add({ + time: computedTime, + type: "setValueAtTime", + value: numericValue, + }); + this._param.setValueAtTime(numericValue, computedTime); + return this; + } + getValueAtTime(time) { + const computedTime = Math.max(this.toSeconds(time), 0); + const after = this._events.getAfter(computedTime); + const before = this._events.get(computedTime); + let value = this._initialValue; + // if it was set by + if (before === null) { + value = this._initialValue; + } + else if (before.type === "setTargetAtTime" && (after === null || after.type === "setValueAtTime")) { + const previous = this._events.getBefore(before.time); + let previousVal; + if (previous === null) { + previousVal = this._initialValue; + } + else { + previousVal = previous.value; + } + if (before.type === "setTargetAtTime") { + value = this._exponentialApproach(before.time, previousVal, before.value, before.constant, computedTime); + } + } + else if (after === null) { + value = before.value; + } + else if (after.type === "linearRampToValueAtTime" || after.type === "exponentialRampToValueAtTime") { + let beforeValue = before.value; + if (before.type === "setTargetAtTime") { + const previous = this._events.getBefore(before.time); + if (previous === null) { + beforeValue = this._initialValue; + } + else { + beforeValue = previous.value; + } + } + if (after.type === "linearRampToValueAtTime") { + value = this._linearInterpolate(before.time, beforeValue, after.time, after.value, computedTime); + } + else { + value = this._exponentialInterpolate(before.time, beforeValue, after.time, after.value, computedTime); + } + } + else { + value = before.value; + } + return this._toType(value); + } + setRampPoint(time) { + time = this.toSeconds(time); + let currentVal = this.getValueAtTime(time); + this.cancelAndHoldAtTime(time); + if (this._fromType(currentVal) === 0) { + currentVal = this._toType(this._minOutput); + } + this.setValueAtTime(currentVal, time); + return this; + } + linearRampToValueAtTime(value, endTime) { + const numericValue = this._fromType(value); + const computedTime = this.toSeconds(endTime); + assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to linearRampToValueAtTime: ${JSON.stringify(value)}, ${JSON.stringify(endTime)}`); + this._assertRange(numericValue); + this._events.add({ + time: computedTime, + type: "linearRampToValueAtTime", + value: numericValue, + }); + this.log(this.units, "linearRampToValueAtTime", value, computedTime); + this._param.linearRampToValueAtTime(numericValue, computedTime); + return this; + } + exponentialRampToValueAtTime(value, endTime) { + let numericValue = this._fromType(value); + // the value can't be 0 + numericValue = EQ(numericValue, 0) ? this._minOutput : numericValue; + this._assertRange(numericValue); + const computedTime = this.toSeconds(endTime); + assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to exponentialRampToValueAtTime: ${JSON.stringify(value)}, ${JSON.stringify(endTime)}`); + // store the event + this._events.add({ + time: computedTime, + type: "exponentialRampToValueAtTime", + value: numericValue, + }); + this.log(this.units, "exponentialRampToValueAtTime", value, computedTime); + this._param.exponentialRampToValueAtTime(numericValue, computedTime); + return this; + } + exponentialRampTo(value, rampTime, startTime) { + startTime = this.toSeconds(startTime); + this.setRampPoint(startTime); + this.exponentialRampToValueAtTime(value, startTime + this.toSeconds(rampTime)); + return this; + } + linearRampTo(value, rampTime, startTime) { + startTime = this.toSeconds(startTime); + this.setRampPoint(startTime); + this.linearRampToValueAtTime(value, startTime + this.toSeconds(rampTime)); + return this; + } + targetRampTo(value, rampTime, startTime) { + startTime = this.toSeconds(startTime); + this.setRampPoint(startTime); + this.exponentialApproachValueAtTime(value, startTime, rampTime); + return this; + } + exponentialApproachValueAtTime(value, time, rampTime) { + time = this.toSeconds(time); + rampTime = this.toSeconds(rampTime); + const timeConstant = Math.log(rampTime + 1) / Math.log(200); + this.setTargetAtTime(value, time, timeConstant); + // at 90% start a linear ramp to the final value + this.cancelAndHoldAtTime(time + rampTime * 0.9); + this.linearRampToValueAtTime(value, time + rampTime); + return this; + } + setTargetAtTime(value, startTime, timeConstant) { + const numericValue = this._fromType(value); + // The value will never be able to approach without timeConstant > 0. + assert(isFinite(timeConstant) && timeConstant > 0, "timeConstant must be a number greater than 0"); + const computedTime = this.toSeconds(startTime); + this._assertRange(numericValue); + assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to setTargetAtTime: ${JSON.stringify(value)}, ${JSON.stringify(startTime)}`); + this._events.add({ + constant: timeConstant, + time: computedTime, + type: "setTargetAtTime", + value: numericValue, + }); + this.log(this.units, "setTargetAtTime", value, computedTime, timeConstant); + this._param.setTargetAtTime(numericValue, computedTime, timeConstant); + return this; + } + setValueCurveAtTime(values, startTime, duration, scaling = 1) { + duration = this.toSeconds(duration); + startTime = this.toSeconds(startTime); + const startingValue = this._fromType(values[0]) * scaling; + this.setValueAtTime(this._toType(startingValue), startTime); + const segTime = duration / (values.length - 1); + for (let i = 1; i < values.length; i++) { + const numericValue = this._fromType(values[i]) * scaling; + this.linearRampToValueAtTime(this._toType(numericValue), startTime + i * segTime); + } + return this; + } + cancelScheduledValues(time) { + const computedTime = this.toSeconds(time); + assert(isFinite(computedTime), `Invalid argument to cancelScheduledValues: ${JSON.stringify(time)}`); + this._events.cancel(computedTime); + this._param.cancelScheduledValues(computedTime); + this.log(this.units, "cancelScheduledValues", computedTime); + return this; + } + cancelAndHoldAtTime(time) { + const computedTime = this.toSeconds(time); + const valueAtTime = this._fromType(this.getValueAtTime(computedTime)); + // remove the schedule events + assert(isFinite(computedTime), `Invalid argument to cancelAndHoldAtTime: ${JSON.stringify(time)}`); + this.log(this.units, "cancelAndHoldAtTime", computedTime, "value=" + valueAtTime); + // if there is an event at the given computedTime + // and that even is not a "set" + const before = this._events.get(computedTime); + const after = this._events.getAfter(computedTime); + if (before && EQ(before.time, computedTime)) { + // remove everything after + if (after) { + this._param.cancelScheduledValues(after.time); + this._events.cancel(after.time); + } + else { + this._param.cancelAndHoldAtTime(computedTime); + this._events.cancel(computedTime + this.sampleTime); + } + } + else if (after) { + this._param.cancelScheduledValues(after.time); + // cancel the next event(s) + this._events.cancel(after.time); + if (after.type === "linearRampToValueAtTime") { + this.linearRampToValueAtTime(this._toType(valueAtTime), computedTime); + } + else if (after.type === "exponentialRampToValueAtTime") { + this.exponentialRampToValueAtTime(this._toType(valueAtTime), computedTime); + } + } + // set the value at the given time + this._events.add({ + time: computedTime, + type: "setValueAtTime", + value: valueAtTime, + }); + this._param.setValueAtTime(valueAtTime, computedTime); + return this; + } + rampTo(value, rampTime = 0.1, startTime) { + if (this.units === "frequency" || this.units === "bpm" || this.units === "decibels") { + this.exponentialRampTo(value, rampTime, startTime); + } + else { + this.linearRampTo(value, rampTime, startTime); + } + return this; + } + /** + * Apply all of the previously scheduled events to the passed in Param or AudioParam. + * The applied values will start at the context's current time and schedule + * all of the events which are scheduled on this Param onto the passed in param. + */ + apply(param) { + const now = this.context.currentTime; + // set the param's value at the current time and schedule everything else + param.setValueAtTime(this.getValueAtTime(now), now); + // if the previous event was a curve, then set the rest of it + const previousEvent = this._events.get(now); + if (previousEvent && previousEvent.type === "setTargetAtTime") { + // approx it until the next event with linear ramps + const nextEvent = this._events.getAfter(previousEvent.time); + // or for 2 seconds if there is no event + const endTime = nextEvent ? nextEvent.time : now + 2; + const subdivisions = (endTime - now) / 10; + for (let i = now; i < endTime; i += subdivisions) { + param.linearRampToValueAtTime(this.getValueAtTime(i), i); + } + } + this._events.forEachAfter(this.context.currentTime, event => { + if (event.type === "cancelScheduledValues") { + param.cancelScheduledValues(event.time); + } + else if (event.type === "setTargetAtTime") { + param.setTargetAtTime(event.value, event.time, event.constant); + } + else { + param[event.type](event.value, event.time); + } + }); + return this; + } + /** + * Replace the Param's internal AudioParam. Will apply scheduled curves + * onto the parameter and replace the connections. + */ + setParam(param) { + assert(this._swappable, "The Param must be assigned as 'swappable' in the constructor"); + const input = this.input; + input.disconnect(this._param); + this.apply(param); + this._param = param; + input.connect(this._param); + return this; + } + dispose() { + super.dispose(); + this._events.dispose(); + return this; + } + get defaultValue() { + return this._toType(this._param.defaultValue); + } + //------------------------------------- + // AUTOMATION CURVE CALCULATIONS + // MIT License, copyright (c) 2014 Jordan Santell + //------------------------------------- + // Calculates the the value along the curve produced by setTargetAtTime + _exponentialApproach(t0, v0, v1, timeConstant, t) { + return v1 + (v0 - v1) * Math.exp(-(t - t0) / timeConstant); + } + // Calculates the the value along the curve produced by linearRampToValueAtTime + _linearInterpolate(t0, v0, t1, v1, t) { + return v0 + (v1 - v0) * ((t - t0) / (t1 - t0)); + } + // Calculates the the value along the curve produced by exponentialRampToValueAtTime + _exponentialInterpolate(t0, v0, t1, v1, t) { + return v0 * Math.pow(v1 / v0, (t - t0) / (t1 - t0)); + } +} + +/** + * ToneAudioNode is the base class for classes which process audio. + */ +class ToneAudioNode extends ToneWithContext { + constructor() { + super(...arguments); + /** + * The name of the class + */ + this.name = "ToneAudioNode"; + /** + * List all of the node that must be set to match the ChannelProperties + */ + this._internalChannels = []; + } + /** + * The number of inputs feeding into the AudioNode. + * For source nodes, this will be 0. + * @example + * const node = new Tone.Gain(); + * console.log(node.numberOfInputs); + */ + get numberOfInputs() { + if (isDefined(this.input)) { + if (isAudioParam(this.input) || this.input instanceof Param) { + return 1; + } + else { + return this.input.numberOfInputs; + } + } + else { + return 0; + } + } + /** + * The number of outputs of the AudioNode. + * @example + * const node = new Tone.Gain(); + * console.log(node.numberOfOutputs); + */ + get numberOfOutputs() { + if (isDefined(this.output)) { + return this.output.numberOfOutputs; + } + else { + return 0; + } + } + //------------------------------------- + // AUDIO PROPERTIES + //------------------------------------- + /** + * Used to decide which nodes to get/set properties on + */ + _isAudioNode(node) { + return isDefined(node) && (node instanceof ToneAudioNode || isAudioNode$1(node)); + } + /** + * Get all of the audio nodes (either internal or input/output) which together + * make up how the class node responds to channel input/output + */ + _getInternalNodes() { + const nodeList = this._internalChannels.slice(0); + if (this._isAudioNode(this.input)) { + nodeList.push(this.input); + } + if (this._isAudioNode(this.output)) { + if (this.input !== this.output) { + nodeList.push(this.output); + } + } + return nodeList; + } + /** + * Set the audio options for this node such as channelInterpretation + * channelCount, etc. + * @param options + */ + _setChannelProperties(options) { + const nodeList = this._getInternalNodes(); + nodeList.forEach(node => { + node.channelCount = options.channelCount; + node.channelCountMode = options.channelCountMode; + node.channelInterpretation = options.channelInterpretation; + }); + } + /** + * Get the current audio options for this node such as channelInterpretation + * channelCount, etc. + */ + _getChannelProperties() { + const nodeList = this._getInternalNodes(); + assert(nodeList.length > 0, "ToneAudioNode does not have any internal nodes"); + // use the first node to get properties + // they should all be the same + const node = nodeList[0]; + return { + channelCount: node.channelCount, + channelCountMode: node.channelCountMode, + channelInterpretation: node.channelInterpretation, + }; + } + /** + * channelCount is the number of channels used when up-mixing and down-mixing + * connections to any inputs to the node. The default value is 2 except for + * specific nodes where its value is specially determined. + */ + get channelCount() { + return this._getChannelProperties().channelCount; + } + set channelCount(channelCount) { + const props = this._getChannelProperties(); + // merge it with the other properties + this._setChannelProperties(Object.assign(props, { channelCount })); + } + /** + * channelCountMode determines how channels will be counted when up-mixing and + * down-mixing connections to any inputs to the node. + * The default value is "max". This attribute has no effect for nodes with no inputs. + * * "max" - computedNumberOfChannels is the maximum of the number of channels of all connections to an input. In this mode channelCount is ignored. + * * "clamped-max" - computedNumberOfChannels is determined as for "max" and then clamped to a maximum value of the given channelCount. + * * "explicit" - computedNumberOfChannels is the exact value as specified by the channelCount. + */ + get channelCountMode() { + return this._getChannelProperties().channelCountMode; + } + set channelCountMode(channelCountMode) { + const props = this._getChannelProperties(); + // merge it with the other properties + this._setChannelProperties(Object.assign(props, { channelCountMode })); + } + /** + * channelInterpretation determines how individual channels will be treated + * when up-mixing and down-mixing connections to any inputs to the node. + * The default value is "speakers". + */ + get channelInterpretation() { + return this._getChannelProperties().channelInterpretation; + } + set channelInterpretation(channelInterpretation) { + const props = this._getChannelProperties(); + // merge it with the other properties + this._setChannelProperties(Object.assign(props, { channelInterpretation })); + } + //------------------------------------- + // CONNECTIONS + //------------------------------------- + /** + * connect the output of a ToneAudioNode to an AudioParam, AudioNode, or ToneAudioNode + * @param destination The output to connect to + * @param outputNum The output to connect from + * @param inputNum The input to connect to + */ + connect(destination, outputNum = 0, inputNum = 0) { + connect(this, destination, outputNum, inputNum); + return this; + } + /** + * Connect the output to the context's destination node. + * @example + * const osc = new Tone.Oscillator("C2").start(); + * osc.toDestination(); + */ + toDestination() { + this.connect(this.context.destination); + return this; + } + /** + * Connect the output to the context's destination node. + * See [[toDestination]] + * @deprecated + */ + toMaster() { + warn("toMaster() has been renamed toDestination()"); + return this.toDestination(); + } + /** + * disconnect the output + */ + disconnect(destination, outputNum = 0, inputNum = 0) { + disconnect(this, destination, outputNum, inputNum); + return this; + } + /** + * Connect the output of this node to the rest of the nodes in series. + * @example + * const player = new Tone.Player("https://tonejs.github.io/audio/drum-samples/handdrum-loop.mp3"); + * player.autostart = true; + * const filter = new Tone.AutoFilter(4).start(); + * const distortion = new Tone.Distortion(0.5); + * // connect the player to the filter, distortion and then to the master output + * player.chain(filter, distortion, Tone.Destination); + */ + chain(...nodes) { + connectSeries(this, ...nodes); + return this; + } + /** + * connect the output of this node to the rest of the nodes in parallel. + * @example + * const player = new Tone.Player("https://tonejs.github.io/audio/drum-samples/conga-rhythm.mp3"); + * player.autostart = true; + * const pitchShift = new Tone.PitchShift(4).toDestination(); + * const filter = new Tone.Filter("G5").toDestination(); + * // connect a node to the pitch shift and filter in parallel + * player.fan(pitchShift, filter); + */ + fan(...nodes) { + nodes.forEach(node => this.connect(node)); + return this; + } + /** + * Dispose and disconnect + */ + dispose() { + super.dispose(); + if (isDefined(this.input)) { + if (this.input instanceof ToneAudioNode) { + this.input.dispose(); + } + else if (isAudioNode$1(this.input)) { + this.input.disconnect(); + } + } + if (isDefined(this.output)) { + if (this.output instanceof ToneAudioNode) { + this.output.dispose(); + } + else if (isAudioNode$1(this.output)) { + this.output.disconnect(); + } + } + this._internalChannels = []; + return this; + } +} +//------------------------------------- +// CONNECTIONS +//------------------------------------- +/** + * connect together all of the arguments in series + * @param nodes + */ +function connectSeries(...nodes) { + const first = nodes.shift(); + nodes.reduce((prev, current) => { + if (prev instanceof ToneAudioNode) { + prev.connect(current); + } + else if (isAudioNode$1(prev)) { + connect(prev, current); + } + return current; + }, first); +} +/** + * Connect two nodes together so that signal flows from the + * first node to the second. Optionally specify the input and output channels. + * @param srcNode The source node + * @param dstNode The destination node + * @param outputNumber The output channel of the srcNode + * @param inputNumber The input channel of the dstNode + */ +function connect(srcNode, dstNode, outputNumber = 0, inputNumber = 0) { + assert(isDefined(srcNode), "Cannot connect from undefined node"); + assert(isDefined(dstNode), "Cannot connect to undefined node"); + if (dstNode instanceof ToneAudioNode || isAudioNode$1(dstNode)) { + assert(dstNode.numberOfInputs > 0, "Cannot connect to node with no inputs"); + } + assert(srcNode.numberOfOutputs > 0, "Cannot connect from node with no outputs"); + // resolve the input of the dstNode + while ((dstNode instanceof ToneAudioNode || dstNode instanceof Param)) { + if (isDefined(dstNode.input)) { + dstNode = dstNode.input; + } + } + while (srcNode instanceof ToneAudioNode) { + if (isDefined(srcNode.output)) { + srcNode = srcNode.output; + } + } + // make the connection + if (isAudioParam(dstNode)) { + srcNode.connect(dstNode, outputNumber); + } + else { + srcNode.connect(dstNode, outputNumber, inputNumber); + } +} +/** + * Disconnect a node from all nodes or optionally include a destination node and input/output channels. + * @param srcNode The source node + * @param dstNode The destination node + * @param outputNumber The output channel of the srcNode + * @param inputNumber The input channel of the dstNode + */ +function disconnect(srcNode, dstNode, outputNumber = 0, inputNumber = 0) { + // resolve the destination node + if (isDefined(dstNode)) { + while (dstNode instanceof ToneAudioNode) { + dstNode = dstNode.input; + } + } + // resolve the src node + while (!(isAudioNode$1(srcNode))) { + if (isDefined(srcNode.output)) { + srcNode = srcNode.output; + } + } + if (isAudioParam(dstNode)) { + srcNode.disconnect(dstNode, outputNumber); + } + else if (isAudioNode$1(dstNode)) { + srcNode.disconnect(dstNode, outputNumber, inputNumber); + } + else { + srcNode.disconnect(); + } +} + +/** + * A thin wrapper around the Native Web Audio GainNode. + * The GainNode is a basic building block of the Web Audio + * API and is useful for routing audio and adjusting gains. + * @category Core + * @example + * return Tone.Offline(() => { + * const gainNode = new Tone.Gain(0).toDestination(); + * const osc = new Tone.Oscillator(30).connect(gainNode).start(); + * gainNode.gain.rampTo(1, 0.1); + * gainNode.gain.rampTo(0, 0.4, 0.2); + * }, 0.7, 1); + */ +class Gain extends ToneAudioNode { + constructor() { + super(optionsFromArguments(Gain.getDefaults(), arguments, ["gain", "units"])); + this.name = "Gain"; + /** + * The wrapped GainNode. + */ + this._gainNode = this.context.createGain(); + // input = output + this.input = this._gainNode; + this.output = this._gainNode; + const options = optionsFromArguments(Gain.getDefaults(), arguments, ["gain", "units"]); + this.gain = new Param({ + context: this.context, + convert: options.convert, + param: this._gainNode.gain, + units: options.units, + value: options.gain, + minValue: options.minValue, + maxValue: options.maxValue, + }); + readOnly(this, "gain"); + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + convert: true, + gain: 1, + units: "gain", + }); + } + /** + * Clean up. + */ + dispose() { + super.dispose(); + this._gainNode.disconnect(); + this.gain.dispose(); + return this; + } +} + +/** + * Base class for fire-and-forget nodes + */ +class OneShotSource extends ToneAudioNode { + constructor(options) { + super(options); + /** + * The callback to invoke after the + * source is done playing. + */ + this.onended = noOp; + /** + * The start time + */ + this._startTime = -1; + /** + * The stop time + */ + this._stopTime = -1; + /** + * The id of the timeout + */ + this._timeout = -1; + /** + * The public output node + */ + this.output = new Gain({ + context: this.context, + gain: 0, + }); + /** + * The output gain node. + */ + this._gainNode = this.output; + /** + * Get the playback state at the given time + */ + this.getStateAtTime = function (time) { + const computedTime = this.toSeconds(time); + if (this._startTime !== -1 && + computedTime >= this._startTime && + (this._stopTime === -1 || computedTime <= this._stopTime)) { + return "started"; + } + else { + return "stopped"; + } + }; + this._fadeIn = options.fadeIn; + this._fadeOut = options.fadeOut; + this._curve = options.curve; + this.onended = options.onended; + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + curve: "linear", + fadeIn: 0, + fadeOut: 0, + onended: noOp, + }); + } + /** + * Start the source at the given time + * @param time When to start the source + */ + _startGain(time, gain = 1) { + assert(this._startTime === -1, "Source cannot be started more than once"); + // apply a fade in envelope + const fadeInTime = this.toSeconds(this._fadeIn); + // record the start time + this._startTime = time + fadeInTime; + this._startTime = Math.max(this._startTime, this.context.currentTime); + // schedule the envelope + if (fadeInTime > 0) { + this._gainNode.gain.setValueAtTime(0, time); + if (this._curve === "linear") { + this._gainNode.gain.linearRampToValueAtTime(gain, time + fadeInTime); + } + else { + this._gainNode.gain.exponentialApproachValueAtTime(gain, time, fadeInTime); + } + } + else { + this._gainNode.gain.setValueAtTime(gain, time); + } + return this; + } + /** + * Stop the source node at the given time. + * @param time When to stop the source + */ + stop(time) { + this.log("stop", time); + this._stopGain(this.toSeconds(time)); + return this; + } + /** + * Stop the source at the given time + * @param time When to stop the source + */ + _stopGain(time) { + assert(this._startTime !== -1, "'start' must be called before 'stop'"); + // cancel the previous stop + this.cancelStop(); + // the fadeOut time + const fadeOutTime = this.toSeconds(this._fadeOut); + // schedule the stop callback + this._stopTime = this.toSeconds(time) + fadeOutTime; + this._stopTime = Math.max(this._stopTime, this.context.currentTime); + if (fadeOutTime > 0) { + // start the fade out curve at the given time + if (this._curve === "linear") { + this._gainNode.gain.linearRampTo(0, fadeOutTime, time); + } + else { + this._gainNode.gain.targetRampTo(0, fadeOutTime, time); + } + } + else { + // stop any ongoing ramps, and set the value to 0 + this._gainNode.gain.cancelAndHoldAtTime(time); + this._gainNode.gain.setValueAtTime(0, time); + } + this.context.clearTimeout(this._timeout); + this._timeout = this.context.setTimeout(() => { + // allow additional time for the exponential curve to fully decay + const additionalTail = this._curve === "exponential" ? fadeOutTime * 2 : 0; + this._stopSource(this.now() + additionalTail); + this._onended(); + }, this._stopTime - this.context.currentTime); + return this; + } + /** + * Invoke the onended callback + */ + _onended() { + if (this.onended !== noOp) { + this.onended(this); + // overwrite onended to make sure it only is called once + this.onended = noOp; + // dispose when it's ended to free up for garbage collection only in the online context + if (!this.context.isOffline) { + const disposeCallback = () => this.dispose(); + // @ts-ignore + if (typeof window.requestIdleCallback !== "undefined") { + // @ts-ignore + window.requestIdleCallback(disposeCallback); + } + else { + setTimeout(disposeCallback, 1000); + } + } + } + } + /** + * Get the playback state at the current time + */ + get state() { + return this.getStateAtTime(this.now()); + } + /** + * Cancel a scheduled stop event + */ + cancelStop() { + this.log("cancelStop"); + assert(this._startTime !== -1, "Source is not started"); + // cancel the stop envelope + this._gainNode.gain.cancelScheduledValues(this._startTime + this.sampleTime); + this.context.clearTimeout(this._timeout); + this._stopTime = -1; + return this; + } + dispose() { + super.dispose(); + this._gainNode.disconnect(); + return this; + } +} + +/** + * Wrapper around the native fire-and-forget ConstantSource. + * Adds the ability to reschedule the stop method. + * @category Signal + */ +class ToneConstantSource extends OneShotSource { + constructor() { + super(optionsFromArguments(ToneConstantSource.getDefaults(), arguments, ["offset"])); + this.name = "ToneConstantSource"; + /** + * The signal generator + */ + this._source = this.context.createConstantSource(); + const options = optionsFromArguments(ToneConstantSource.getDefaults(), arguments, ["offset"]); + connect(this._source, this._gainNode); + this.offset = new Param({ + context: this.context, + convert: options.convert, + param: this._source.offset, + units: options.units, + value: options.offset, + minValue: options.minValue, + maxValue: options.maxValue, + }); + } + static getDefaults() { + return Object.assign(OneShotSource.getDefaults(), { + convert: true, + offset: 1, + units: "number", + }); + } + /** + * Start the source node at the given time + * @param time When to start the source + */ + start(time) { + const computedTime = this.toSeconds(time); + this.log("start", computedTime); + this._startGain(computedTime); + this._source.start(computedTime); + return this; + } + _stopSource(time) { + this._source.stop(time); + } + dispose() { + super.dispose(); + if (this.state === "started") { + this.stop(); + } + this._source.disconnect(); + this.offset.dispose(); + return this; + } +} + +/** + * A signal is an audio-rate value. Tone.Signal is a core component of the library. + * Unlike a number, Signals can be scheduled with sample-level accuracy. Tone.Signal + * has all of the methods available to native Web Audio + * [AudioParam](http://webaudio.github.io/web-audio-api/#the-audioparam-interface) + * as well as additional conveniences. Read more about working with signals + * [here](https://github.com/Tonejs/Tone.js/wiki/Signals). + * + * @example + * const osc = new Tone.Oscillator().toDestination().start(); + * // a scheduleable signal which can be connected to control an AudioParam or another Signal + * const signal = new Tone.Signal({ + * value: "C4", + * units: "frequency" + * }).connect(osc.frequency); + * // the scheduled ramp controls the connected signal + * signal.rampTo("C2", 4, "+0.5"); + * @category Signal + */ +class Signal extends ToneAudioNode { + constructor() { + super(optionsFromArguments(Signal.getDefaults(), arguments, ["value", "units"])); + this.name = "Signal"; + /** + * Indicates if the value should be overridden on connection. + */ + this.override = true; + const options = optionsFromArguments(Signal.getDefaults(), arguments, ["value", "units"]); + this.output = this._constantSource = new ToneConstantSource({ + context: this.context, + convert: options.convert, + offset: options.value, + units: options.units, + minValue: options.minValue, + maxValue: options.maxValue, + }); + this._constantSource.start(0); + this.input = this._param = this._constantSource.offset; + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + convert: true, + units: "number", + value: 0, + }); + } + connect(destination, outputNum = 0, inputNum = 0) { + // start it only when connected to something + connectSignal(this, destination, outputNum, inputNum); + return this; + } + dispose() { + super.dispose(); + this._param.dispose(); + this._constantSource.dispose(); + return this; + } + //------------------------------------- + // ABSTRACT PARAM INTERFACE + // just a proxy for the ConstantSourceNode's offset AudioParam + // all docs are generated from AbstractParam.ts + //------------------------------------- + setValueAtTime(value, time) { + this._param.setValueAtTime(value, time); + return this; + } + getValueAtTime(time) { + return this._param.getValueAtTime(time); + } + setRampPoint(time) { + this._param.setRampPoint(time); + return this; + } + linearRampToValueAtTime(value, time) { + this._param.linearRampToValueAtTime(value, time); + return this; + } + exponentialRampToValueAtTime(value, time) { + this._param.exponentialRampToValueAtTime(value, time); + return this; + } + exponentialRampTo(value, rampTime, startTime) { + this._param.exponentialRampTo(value, rampTime, startTime); + return this; + } + linearRampTo(value, rampTime, startTime) { + this._param.linearRampTo(value, rampTime, startTime); + return this; + } + targetRampTo(value, rampTime, startTime) { + this._param.targetRampTo(value, rampTime, startTime); + return this; + } + exponentialApproachValueAtTime(value, time, rampTime) { + this._param.exponentialApproachValueAtTime(value, time, rampTime); + return this; + } + setTargetAtTime(value, startTime, timeConstant) { + this._param.setTargetAtTime(value, startTime, timeConstant); + return this; + } + setValueCurveAtTime(values, startTime, duration, scaling) { + this._param.setValueCurveAtTime(values, startTime, duration, scaling); + return this; + } + cancelScheduledValues(time) { + this._param.cancelScheduledValues(time); + return this; + } + cancelAndHoldAtTime(time) { + this._param.cancelAndHoldAtTime(time); + return this; + } + rampTo(value, rampTime, startTime) { + this._param.rampTo(value, rampTime, startTime); + return this; + } + get value() { + return this._param.value; + } + set value(value) { + this._param.value = value; + } + get convert() { + return this._param.convert; + } + set convert(convert) { + this._param.convert = convert; + } + get units() { + return this._param.units; + } + get overridden() { + return this._param.overridden; + } + set overridden(overridden) { + this._param.overridden = overridden; + } + get maxValue() { + return this._param.maxValue; + } + get minValue() { + return this._param.minValue; + } + /** + * See [[Param.apply]]. + */ + apply(param) { + this._param.apply(param); + return this; + } +} +/** + * When connecting from a signal, it's necessary to zero out the node destination + * node if that node is also a signal. If the destination is not 0, then the values + * will be summed. This method insures that the output of the destination signal will + * be the same as the source signal, making the destination signal a pass through node. + * @param signal The output signal to connect from + * @param destination the destination to connect to + * @param outputNum the optional output number + * @param inputNum the input number + */ +function connectSignal(signal, destination, outputNum, inputNum) { + if (destination instanceof Param || isAudioParam(destination) || + (destination instanceof Signal && destination.override)) { + // cancel changes + destination.cancelScheduledValues(0); + // reset the value + destination.setValueAtTime(0, 0); + // mark the value as overridden + if (destination instanceof Signal) { + destination.overridden = true; + } + } + connect(signal, destination, outputNum, inputNum); +} + +/** + * A Param class just for computing ticks. Similar to the [[Param]] class, + * but offers conversion to BPM values as well as ability to compute tick + * duration and elapsed ticks + */ +class TickParam extends Param { + constructor() { + super(optionsFromArguments(TickParam.getDefaults(), arguments, ["value"])); + this.name = "TickParam"; + /** + * The timeline which tracks all of the automations. + */ + this._events = new Timeline(Infinity); + /** + * The internal holder for the multiplier value + */ + this._multiplier = 1; + const options = optionsFromArguments(TickParam.getDefaults(), arguments, ["value"]); + // set the multiplier + this._multiplier = options.multiplier; + // clear the ticks from the beginning + this._events.cancel(0); + // set an initial event + this._events.add({ + ticks: 0, + time: 0, + type: "setValueAtTime", + value: this._fromType(options.value), + }); + this.setValueAtTime(options.value, 0); + } + static getDefaults() { + return Object.assign(Param.getDefaults(), { + multiplier: 1, + units: "hertz", + value: 1, + }); + } + setTargetAtTime(value, time, constant) { + // approximate it with multiple linear ramps + time = this.toSeconds(time); + this.setRampPoint(time); + const computedValue = this._fromType(value); + // start from previously scheduled value + const prevEvent = this._events.get(time); + const segments = Math.round(Math.max(1 / constant, 1)); + for (let i = 0; i <= segments; i++) { + const segTime = constant * i + time; + const rampVal = this._exponentialApproach(prevEvent.time, prevEvent.value, computedValue, constant, segTime); + this.linearRampToValueAtTime(this._toType(rampVal), segTime); + } + return this; + } + setValueAtTime(value, time) { + const computedTime = this.toSeconds(time); + super.setValueAtTime(value, time); + const event = this._events.get(computedTime); + const previousEvent = this._events.previousEvent(event); + const ticksUntilTime = this._getTicksUntilEvent(previousEvent, computedTime); + event.ticks = Math.max(ticksUntilTime, 0); + return this; + } + linearRampToValueAtTime(value, time) { + const computedTime = this.toSeconds(time); + super.linearRampToValueAtTime(value, time); + const event = this._events.get(computedTime); + const previousEvent = this._events.previousEvent(event); + const ticksUntilTime = this._getTicksUntilEvent(previousEvent, computedTime); + event.ticks = Math.max(ticksUntilTime, 0); + return this; + } + exponentialRampToValueAtTime(value, time) { + // aproximate it with multiple linear ramps + time = this.toSeconds(time); + const computedVal = this._fromType(value); + // start from previously scheduled value + const prevEvent = this._events.get(time); + // approx 10 segments per second + const segments = Math.round(Math.max((time - prevEvent.time) * 10, 1)); + const segmentDur = ((time - prevEvent.time) / segments); + for (let i = 0; i <= segments; i++) { + const segTime = segmentDur * i + prevEvent.time; + const rampVal = this._exponentialInterpolate(prevEvent.time, prevEvent.value, time, computedVal, segTime); + this.linearRampToValueAtTime(this._toType(rampVal), segTime); + } + return this; + } + /** + * Returns the tick value at the time. Takes into account + * any automation curves scheduled on the signal. + * @param event The time to get the tick count at + * @return The number of ticks which have elapsed at the time given any automations. + */ + _getTicksUntilEvent(event, time) { + if (event === null) { + event = { + ticks: 0, + time: 0, + type: "setValueAtTime", + value: 0, + }; + } + else if (isUndef(event.ticks)) { + const previousEvent = this._events.previousEvent(event); + event.ticks = this._getTicksUntilEvent(previousEvent, event.time); + } + const val0 = this._fromType(this.getValueAtTime(event.time)); + let val1 = this._fromType(this.getValueAtTime(time)); + // if it's right on the line, take the previous value + const onTheLineEvent = this._events.get(time); + if (onTheLineEvent && onTheLineEvent.time === time && onTheLineEvent.type === "setValueAtTime") { + val1 = this._fromType(this.getValueAtTime(time - this.sampleTime)); + } + return 0.5 * (time - event.time) * (val0 + val1) + event.ticks; + } + /** + * Returns the tick value at the time. Takes into account + * any automation curves scheduled on the signal. + * @param time The time to get the tick count at + * @return The number of ticks which have elapsed at the time given any automations. + */ + getTicksAtTime(time) { + const computedTime = this.toSeconds(time); + const event = this._events.get(computedTime); + return Math.max(this._getTicksUntilEvent(event, computedTime), 0); + } + /** + * Return the elapsed time of the number of ticks from the given time + * @param ticks The number of ticks to calculate + * @param time The time to get the next tick from + * @return The duration of the number of ticks from the given time in seconds + */ + getDurationOfTicks(ticks, time) { + const computedTime = this.toSeconds(time); + const currentTick = this.getTicksAtTime(time); + return this.getTimeOfTick(currentTick + ticks) - computedTime; + } + /** + * Given a tick, returns the time that tick occurs at. + * @return The time that the tick occurs. + */ + getTimeOfTick(tick) { + const before = this._events.get(tick, "ticks"); + const after = this._events.getAfter(tick, "ticks"); + if (before && before.ticks === tick) { + return before.time; + } + else if (before && after && + after.type === "linearRampToValueAtTime" && + before.value !== after.value) { + const val0 = this._fromType(this.getValueAtTime(before.time)); + const val1 = this._fromType(this.getValueAtTime(after.time)); + const delta = (val1 - val0) / (after.time - before.time); + const k = Math.sqrt(Math.pow(val0, 2) - 2 * delta * (before.ticks - tick)); + const sol1 = (-val0 + k) / delta; + const sol2 = (-val0 - k) / delta; + return (sol1 > 0 ? sol1 : sol2) + before.time; + } + else if (before) { + if (before.value === 0) { + return Infinity; + } + else { + return before.time + (tick - before.ticks) / before.value; + } + } + else { + return tick / this._initialValue; + } + } + /** + * Convert some number of ticks their the duration in seconds accounting + * for any automation curves starting at the given time. + * @param ticks The number of ticks to convert to seconds. + * @param when When along the automation timeline to convert the ticks. + * @return The duration in seconds of the ticks. + */ + ticksToTime(ticks, when) { + return this.getDurationOfTicks(ticks, when); + } + /** + * The inverse of [[ticksToTime]]. Convert a duration in + * seconds to the corresponding number of ticks accounting for any + * automation curves starting at the given time. + * @param duration The time interval to convert to ticks. + * @param when When along the automation timeline to convert the ticks. + * @return The duration in ticks. + */ + timeToTicks(duration, when) { + const computedTime = this.toSeconds(when); + const computedDuration = this.toSeconds(duration); + const startTicks = this.getTicksAtTime(computedTime); + const endTicks = this.getTicksAtTime(computedTime + computedDuration); + return endTicks - startTicks; + } + /** + * Convert from the type when the unit value is BPM + */ + _fromType(val) { + if (this.units === "bpm" && this.multiplier) { + return 1 / (60 / val / this.multiplier); + } + else { + return super._fromType(val); + } + } + /** + * Special case of type conversion where the units === "bpm" + */ + _toType(val) { + if (this.units === "bpm" && this.multiplier) { + return (val / this.multiplier) * 60; + } + else { + return super._toType(val); + } + } + /** + * A multiplier on the bpm value. Useful for setting a PPQ relative to the base frequency value. + */ + get multiplier() { + return this._multiplier; + } + set multiplier(m) { + // get and reset the current value with the new multiplier + // might be necessary to clear all the previous values + const currentVal = this.value; + this._multiplier = m; + this.cancelScheduledValues(0); + this.setValueAtTime(currentVal, 0); + } +} + +/** + * TickSignal extends Tone.Signal, but adds the capability + * to calculate the number of elapsed ticks. exponential and target curves + * are approximated with multiple linear ramps. + * + * Thank you Bruno Dias, H. Sofia Pinto, and David M. Matos, + * for your [WAC paper](https://smartech.gatech.edu/bitstream/handle/1853/54588/WAC2016-49.pdf) + * describing integrating timing functions for tempo calculations. + */ +class TickSignal extends Signal { + constructor() { + super(optionsFromArguments(TickSignal.getDefaults(), arguments, ["value"])); + this.name = "TickSignal"; + const options = optionsFromArguments(TickSignal.getDefaults(), arguments, ["value"]); + this.input = this._param = new TickParam({ + context: this.context, + convert: options.convert, + multiplier: options.multiplier, + param: this._constantSource.offset, + units: options.units, + value: options.value, + }); + } + static getDefaults() { + return Object.assign(Signal.getDefaults(), { + multiplier: 1, + units: "hertz", + value: 1, + }); + } + ticksToTime(ticks, when) { + return this._param.ticksToTime(ticks, when); + } + timeToTicks(duration, when) { + return this._param.timeToTicks(duration, when); + } + getTimeOfTick(tick) { + return this._param.getTimeOfTick(tick); + } + getDurationOfTicks(ticks, time) { + return this._param.getDurationOfTicks(ticks, time); + } + getTicksAtTime(time) { + return this._param.getTicksAtTime(time); + } + /** + * A multiplier on the bpm value. Useful for setting a PPQ relative to the base frequency value. + */ + get multiplier() { + return this._param.multiplier; + } + set multiplier(m) { + this._param.multiplier = m; + } + dispose() { + super.dispose(); + this._param.dispose(); + return this; + } +} + +/** + * Uses [TickSignal](TickSignal) to track elapsed ticks with complex automation curves. + */ +class TickSource extends ToneWithContext { + constructor() { + super(optionsFromArguments(TickSource.getDefaults(), arguments, ["frequency"])); + this.name = "TickSource"; + /** + * The state timeline + */ + this._state = new StateTimeline(); + /** + * The offset values of the ticks + */ + this._tickOffset = new Timeline(); + const options = optionsFromArguments(TickSource.getDefaults(), arguments, ["frequency"]); + this.frequency = new TickSignal({ + context: this.context, + units: options.units, + value: options.frequency, + }); + readOnly(this, "frequency"); + // set the initial state + this._state.setStateAtTime("stopped", 0); + // add the first event + this.setTicksAtTime(0, 0); + } + static getDefaults() { + return Object.assign({ + frequency: 1, + units: "hertz", + }, ToneWithContext.getDefaults()); + } + /** + * Returns the playback state of the source, either "started", "stopped" or "paused". + */ + get state() { + return this.getStateAtTime(this.now()); + } + /** + * Start the clock at the given time. Optionally pass in an offset + * of where to start the tick counter from. + * @param time The time the clock should start + * @param offset The number of ticks to start the source at + */ + start(time, offset) { + const computedTime = this.toSeconds(time); + if (this._state.getValueAtTime(computedTime) !== "started") { + this._state.setStateAtTime("started", computedTime); + if (isDefined(offset)) { + this.setTicksAtTime(offset, computedTime); + } + } + return this; + } + /** + * Stop the clock. Stopping the clock resets the tick counter to 0. + * @param time The time when the clock should stop. + */ + stop(time) { + const computedTime = this.toSeconds(time); + // cancel the previous stop + if (this._state.getValueAtTime(computedTime) === "stopped") { + const event = this._state.get(computedTime); + if (event && event.time > 0) { + this._tickOffset.cancel(event.time); + this._state.cancel(event.time); + } + } + this._state.cancel(computedTime); + this._state.setStateAtTime("stopped", computedTime); + this.setTicksAtTime(0, computedTime); + return this; + } + /** + * Pause the clock. Pausing does not reset the tick counter. + * @param time The time when the clock should stop. + */ + pause(time) { + const computedTime = this.toSeconds(time); + if (this._state.getValueAtTime(computedTime) === "started") { + this._state.setStateAtTime("paused", computedTime); + } + return this; + } + /** + * Cancel start/stop/pause and setTickAtTime events scheduled after the given time. + * @param time When to clear the events after + */ + cancel(time) { + time = this.toSeconds(time); + this._state.cancel(time); + this._tickOffset.cancel(time); + return this; + } + /** + * Get the elapsed ticks at the given time + * @param time When to get the tick value + * @return The number of ticks + */ + getTicksAtTime(time) { + const computedTime = this.toSeconds(time); + const stopEvent = this._state.getLastState("stopped", computedTime); + // this event allows forEachBetween to iterate until the current time + const tmpEvent = { state: "paused", time: computedTime }; + this._state.add(tmpEvent); + // keep track of the previous offset event + let lastState = stopEvent; + let elapsedTicks = 0; + // iterate through all the events since the last stop + this._state.forEachBetween(stopEvent.time, computedTime + this.sampleTime, e => { + let periodStartTime = lastState.time; + // if there is an offset event in this period use that + const offsetEvent = this._tickOffset.get(e.time); + if (offsetEvent && offsetEvent.time >= lastState.time) { + elapsedTicks = offsetEvent.ticks; + periodStartTime = offsetEvent.time; + } + if (lastState.state === "started" && e.state !== "started") { + elapsedTicks += this.frequency.getTicksAtTime(e.time) - this.frequency.getTicksAtTime(periodStartTime); + } + lastState = e; + }); + // remove the temporary event + this._state.remove(tmpEvent); + // return the ticks + return elapsedTicks; + } + /** + * The number of times the callback was invoked. Starts counting at 0 + * and increments after the callback was invoked. Returns -1 when stopped. + */ + get ticks() { + return this.getTicksAtTime(this.now()); + } + set ticks(t) { + this.setTicksAtTime(t, this.now()); + } + /** + * The time since ticks=0 that the TickSource has been running. Accounts + * for tempo curves + */ + get seconds() { + return this.getSecondsAtTime(this.now()); + } + set seconds(s) { + const now = this.now(); + const ticks = this.frequency.timeToTicks(s, now); + this.setTicksAtTime(ticks, now); + } + /** + * Return the elapsed seconds at the given time. + * @param time When to get the elapsed seconds + * @return The number of elapsed seconds + */ + getSecondsAtTime(time) { + time = this.toSeconds(time); + const stopEvent = this._state.getLastState("stopped", time); + // this event allows forEachBetween to iterate until the current time + const tmpEvent = { state: "paused", time }; + this._state.add(tmpEvent); + // keep track of the previous offset event + let lastState = stopEvent; + let elapsedSeconds = 0; + // iterate through all the events since the last stop + this._state.forEachBetween(stopEvent.time, time + this.sampleTime, e => { + let periodStartTime = lastState.time; + // if there is an offset event in this period use that + const offsetEvent = this._tickOffset.get(e.time); + if (offsetEvent && offsetEvent.time >= lastState.time) { + elapsedSeconds = offsetEvent.seconds; + periodStartTime = offsetEvent.time; + } + if (lastState.state === "started" && e.state !== "started") { + elapsedSeconds += e.time - periodStartTime; + } + lastState = e; + }); + // remove the temporary event + this._state.remove(tmpEvent); + // return the ticks + return elapsedSeconds; + } + /** + * Set the clock's ticks at the given time. + * @param ticks The tick value to set + * @param time When to set the tick value + */ + setTicksAtTime(ticks, time) { + time = this.toSeconds(time); + this._tickOffset.cancel(time); + this._tickOffset.add({ + seconds: this.frequency.getDurationOfTicks(ticks, time), + ticks, + time, + }); + return this; + } + /** + * Returns the scheduled state at the given time. + * @param time The time to query. + */ + getStateAtTime(time) { + time = this.toSeconds(time); + return this._state.getValueAtTime(time); + } + /** + * Get the time of the given tick. The second argument + * is when to test before. Since ticks can be set (with setTicksAtTime) + * there may be multiple times for a given tick value. + * @param tick The tick number. + * @param before When to measure the tick value from. + * @return The time of the tick + */ + getTimeOfTick(tick, before = this.now()) { + const offset = this._tickOffset.get(before); + const event = this._state.get(before); + const startTime = Math.max(offset.time, event.time); + const absoluteTicks = this.frequency.getTicksAtTime(startTime) + tick - offset.ticks; + return this.frequency.getTimeOfTick(absoluteTicks); + } + /** + * Invoke the callback event at all scheduled ticks between the + * start time and the end time + * @param startTime The beginning of the search range + * @param endTime The end of the search range + * @param callback The callback to invoke with each tick + */ + forEachTickBetween(startTime, endTime, callback) { + // only iterate through the sections where it is "started" + let lastStateEvent = this._state.get(startTime); + this._state.forEachBetween(startTime, endTime, event => { + if (lastStateEvent && lastStateEvent.state === "started" && event.state !== "started") { + this.forEachTickBetween(Math.max(lastStateEvent.time, startTime), event.time - this.sampleTime, callback); + } + lastStateEvent = event; + }); + let error = null; + if (lastStateEvent && lastStateEvent.state === "started") { + const maxStartTime = Math.max(lastStateEvent.time, startTime); + // figure out the difference between the frequency ticks and the + const startTicks = this.frequency.getTicksAtTime(maxStartTime); + const ticksAtStart = this.frequency.getTicksAtTime(lastStateEvent.time); + const diff = startTicks - ticksAtStart; + let offset = Math.ceil(diff) - diff; + // guard against floating point issues + offset = EQ(offset, 1) ? 0 : offset; + let nextTickTime = this.frequency.getTimeOfTick(startTicks + offset); + while (nextTickTime < endTime) { + try { + callback(nextTickTime, Math.round(this.getTicksAtTime(nextTickTime))); + } + catch (e) { + error = e; + break; + } + nextTickTime += this.frequency.getDurationOfTicks(1, nextTickTime); + } + } + if (error) { + throw error; + } + return this; + } + /** + * Clean up + */ + dispose() { + super.dispose(); + this._state.dispose(); + this._tickOffset.dispose(); + this.frequency.dispose(); + return this; + } +} + +/** + * A sample accurate clock which provides a callback at the given rate. + * While the callback is not sample-accurate (it is still susceptible to + * loose JS timing), the time passed in as the argument to the callback + * is precise. For most applications, it is better to use Tone.Transport + * instead of the Clock by itself since you can synchronize multiple callbacks. + * @example + * // the callback will be invoked approximately once a second + * // and will print the time exactly once a second apart. + * const clock = new Tone.Clock(time => { + * console.log(time); + * }, 1); + * clock.start(); + * @category Core + */ +class Clock extends ToneWithContext { + constructor() { + super(optionsFromArguments(Clock.getDefaults(), arguments, ["callback", "frequency"])); + this.name = "Clock"; + /** + * The callback function to invoke at the scheduled tick. + */ + this.callback = noOp; + /** + * The last time the loop callback was invoked + */ + this._lastUpdate = 0; + /** + * Keep track of the playback state + */ + this._state = new StateTimeline("stopped"); + /** + * Context bound reference to the _loop method + * This is necessary to remove the event in the end. + */ + this._boundLoop = this._loop.bind(this); + const options = optionsFromArguments(Clock.getDefaults(), arguments, ["callback", "frequency"]); + this.callback = options.callback; + this._tickSource = new TickSource({ + context: this.context, + frequency: options.frequency, + units: options.units, + }); + this._lastUpdate = 0; + this.frequency = this._tickSource.frequency; + readOnly(this, "frequency"); + // add an initial state + this._state.setStateAtTime("stopped", 0); + // bind a callback to the worker thread + this.context.on("tick", this._boundLoop); + } + static getDefaults() { + return Object.assign(ToneWithContext.getDefaults(), { + callback: noOp, + frequency: 1, + units: "hertz", + }); + } + /** + * Returns the playback state of the source, either "started", "stopped" or "paused". + */ + get state() { + return this._state.getValueAtTime(this.now()); + } + /** + * Start the clock at the given time. Optionally pass in an offset + * of where to start the tick counter from. + * @param time The time the clock should start + * @param offset Where the tick counter starts counting from. + */ + start(time, offset) { + // make sure the context is running + assertContextRunning(this.context); + // start the loop + const computedTime = this.toSeconds(time); + this.log("start", computedTime); + if (this._state.getValueAtTime(computedTime) !== "started") { + this._state.setStateAtTime("started", computedTime); + this._tickSource.start(computedTime, offset); + if (computedTime < this._lastUpdate) { + this.emit("start", computedTime, offset); + } + } + return this; + } + /** + * Stop the clock. Stopping the clock resets the tick counter to 0. + * @param time The time when the clock should stop. + * @example + * const clock = new Tone.Clock(time => { + * console.log(time); + * }, 1); + * clock.start(); + * // stop the clock after 10 seconds + * clock.stop("+10"); + */ + stop(time) { + const computedTime = this.toSeconds(time); + this.log("stop", computedTime); + this._state.cancel(computedTime); + this._state.setStateAtTime("stopped", computedTime); + this._tickSource.stop(computedTime); + if (computedTime < this._lastUpdate) { + this.emit("stop", computedTime); + } + return this; + } + /** + * Pause the clock. Pausing does not reset the tick counter. + * @param time The time when the clock should stop. + */ + pause(time) { + const computedTime = this.toSeconds(time); + if (this._state.getValueAtTime(computedTime) === "started") { + this._state.setStateAtTime("paused", computedTime); + this._tickSource.pause(computedTime); + if (computedTime < this._lastUpdate) { + this.emit("pause", computedTime); + } + } + return this; + } + /** + * The number of times the callback was invoked. Starts counting at 0 + * and increments after the callback was invoked. + */ + get ticks() { + return Math.ceil(this.getTicksAtTime(this.now())); + } + set ticks(t) { + this._tickSource.ticks = t; + } + /** + * The time since ticks=0 that the Clock has been running. Accounts for tempo curves + */ + get seconds() { + return this._tickSource.seconds; + } + set seconds(s) { + this._tickSource.seconds = s; + } + /** + * Return the elapsed seconds at the given time. + * @param time When to get the elapsed seconds + * @return The number of elapsed seconds + */ + getSecondsAtTime(time) { + return this._tickSource.getSecondsAtTime(time); + } + /** + * Set the clock's ticks at the given time. + * @param ticks The tick value to set + * @param time When to set the tick value + */ + setTicksAtTime(ticks, time) { + this._tickSource.setTicksAtTime(ticks, time); + return this; + } + /** + * Get the time of the given tick. The second argument + * is when to test before. Since ticks can be set (with setTicksAtTime) + * there may be multiple times for a given tick value. + * @param tick The tick number. + * @param before When to measure the tick value from. + * @return The time of the tick + */ + getTimeOfTick(tick, before = this.now()) { + return this._tickSource.getTimeOfTick(tick, before); + } + /** + * Get the clock's ticks at the given time. + * @param time When to get the tick value + * @return The tick value at the given time. + */ + getTicksAtTime(time) { + return this._tickSource.getTicksAtTime(time); + } + /** + * Get the time of the next tick + * @param offset The tick number. + */ + nextTickTime(offset, when) { + const computedTime = this.toSeconds(when); + const currentTick = this.getTicksAtTime(computedTime); + return this._tickSource.getTimeOfTick(currentTick + offset, computedTime); + } + /** + * The scheduling loop. + */ + _loop() { + const startTime = this._lastUpdate; + const endTime = this.now(); + this._lastUpdate = endTime; + this.log("loop", startTime, endTime); + if (startTime !== endTime) { + // the state change events + this._state.forEachBetween(startTime, endTime, e => { + switch (e.state) { + case "started": + const offset = this._tickSource.getTicksAtTime(e.time); + this.emit("start", e.time, offset); + break; + case "stopped": + if (e.time !== 0) { + this.emit("stop", e.time); + } + break; + case "paused": + this.emit("pause", e.time); + break; + } + }); + // the tick callbacks + this._tickSource.forEachTickBetween(startTime, endTime, (time, ticks) => { + this.callback(time, ticks); + }); + } + } + /** + * Returns the scheduled state at the given time. + * @param time The time to query. + * @return The name of the state input in setStateAtTime. + * @example + * const clock = new Tone.Clock(); + * clock.start("+0.1"); + * clock.getStateAtTime("+0.1"); // returns "started" + */ + getStateAtTime(time) { + const computedTime = this.toSeconds(time); + return this._state.getValueAtTime(computedTime); + } + /** + * Clean up + */ + dispose() { + super.dispose(); + this.context.off("tick", this._boundLoop); + this._tickSource.dispose(); + this._state.dispose(); + return this; + } +} +Emitter.mixin(Clock); + +/** + * A data structure for holding multiple buffers in a Map-like datastructure. + * + * @example + * const pianoSamples = new Tone.ToneAudioBuffers({ + * A1: "https://tonejs.github.io/audio/casio/A1.mp3", + * A2: "https://tonejs.github.io/audio/casio/A2.mp3", + * }, () => { + * const player = new Tone.Player().toDestination(); + * // play one of the samples when they all load + * player.buffer = pianoSamples.get("A2"); + * player.start(); + * }); + * @example + * // To pass in additional parameters in the second parameter + * const buffers = new Tone.ToneAudioBuffers({ + * urls: { + * A1: "A1.mp3", + * A2: "A2.mp3", + * }, + * onload: () => console.log("loaded"), + * baseUrl: "https://tonejs.github.io/audio/casio/" + * }); + * @category Core + */ +class ToneAudioBuffers extends Tone { + constructor() { + super(); + this.name = "ToneAudioBuffers"; + /** + * All of the buffers + */ + this._buffers = new Map(); + /** + * Keep track of the number of loaded buffers + */ + this._loadingCount = 0; + const options = optionsFromArguments(ToneAudioBuffers.getDefaults(), arguments, ["urls", "onload", "baseUrl"], "urls"); + this.baseUrl = options.baseUrl; + // add each one + Object.keys(options.urls).forEach(name => { + this._loadingCount++; + const url = options.urls[name]; + this.add(name, url, this._bufferLoaded.bind(this, options.onload), options.onerror); + }); + } + static getDefaults() { + return { + baseUrl: "", + onerror: noOp, + onload: noOp, + urls: {}, + }; + } + /** + * True if the buffers object has a buffer by that name. + * @param name The key or index of the buffer. + */ + has(name) { + return this._buffers.has(name.toString()); + } + /** + * Get a buffer by name. If an array was loaded, + * then use the array index. + * @param name The key or index of the buffer. + */ + get(name) { + assert(this.has(name), `ToneAudioBuffers has no buffer named: ${name}`); + return this._buffers.get(name.toString()); + } + /** + * A buffer was loaded. decrement the counter. + */ + _bufferLoaded(callback) { + this._loadingCount--; + if (this._loadingCount === 0 && callback) { + callback(); + } + } + /** + * If the buffers are loaded or not + */ + get loaded() { + return Array.from(this._buffers).every(([_, buffer]) => buffer.loaded); + } + /** + * Add a buffer by name and url to the Buffers + * @param name A unique name to give the buffer + * @param url Either the url of the bufer, or a buffer which will be added with the given name. + * @param callback The callback to invoke when the url is loaded. + * @param onerror Invoked if the buffer can't be loaded + */ + add(name, url, callback = noOp, onerror = noOp) { + if (isString(url)) { + this._buffers.set(name.toString(), new ToneAudioBuffer(this.baseUrl + url, callback, onerror)); + } + else { + this._buffers.set(name.toString(), new ToneAudioBuffer(url, callback, onerror)); + } + return this; + } + dispose() { + super.dispose(); + this._buffers.forEach(buffer => buffer.dispose()); + this._buffers.clear(); + return this; + } +} + +/** + * Midi is a primitive type for encoding Time values. + * Midi can be constructed with or without the `new` keyword. Midi can be passed + * into the parameter of any method which takes time as an argument. + * @category Unit + */ +class MidiClass extends FrequencyClass { + constructor() { + super(...arguments); + this.name = "MidiClass"; + this.defaultUnits = "midi"; + } + /** + * Returns the value of a frequency in the current units + */ + _frequencyToUnits(freq) { + return ftom(super._frequencyToUnits(freq)); + } + /** + * Returns the value of a tick in the current time units + */ + _ticksToUnits(ticks) { + return ftom(super._ticksToUnits(ticks)); + } + /** + * Return the value of the beats in the current units + */ + _beatsToUnits(beats) { + return ftom(super._beatsToUnits(beats)); + } + /** + * Returns the value of a second in the current units + */ + _secondsToUnits(seconds) { + return ftom(super._secondsToUnits(seconds)); + } + /** + * Return the value of the frequency as a MIDI note + * @example + * Tone.Midi(60).toMidi(); // 60 + */ + toMidi() { + return this.valueOf(); + } + /** + * Return the value of the frequency as a MIDI note + * @example + * Tone.Midi(60).toFrequency(); // 261.6255653005986 + */ + toFrequency() { + return mtof(this.toMidi()); + } + /** + * Transposes the frequency by the given number of semitones. + * @return A new transposed MidiClass + * @example + * Tone.Midi("A4").transpose(3); // "C5" + */ + transpose(interval) { + return new MidiClass(this.context, this.toMidi() + interval); + } +} +/** + * Convert a value into a FrequencyClass object. + * @category Unit + */ +function Midi(value, units) { + return new MidiClass(getContext(), value, units); +} + +/** + * Ticks is a primitive type for encoding Time values. + * Ticks can be constructed with or without the `new` keyword. Ticks can be passed + * into the parameter of any method which takes time as an argument. + * @example + * const t = Tone.Ticks("4n"); // a quarter note as ticks + * @category Unit + */ +class TicksClass extends TransportTimeClass { + constructor() { + super(...arguments); + this.name = "Ticks"; + this.defaultUnits = "i"; + } + /** + * Get the current time in the given units + */ + _now() { + return this.context.transport.ticks; + } + /** + * Return the value of the beats in the current units + */ + _beatsToUnits(beats) { + return this._getPPQ() * beats; + } + /** + * Returns the value of a second in the current units + */ + _secondsToUnits(seconds) { + return Math.floor(seconds / (60 / this._getBpm()) * this._getPPQ()); + } + /** + * Returns the value of a tick in the current time units + */ + _ticksToUnits(ticks) { + return ticks; + } + /** + * Return the time in ticks + */ + toTicks() { + return this.valueOf(); + } + /** + * Return the time in seconds + */ + toSeconds() { + return (this.valueOf() / this._getPPQ()) * (60 / this._getBpm()); + } +} +/** + * Convert a time representation to ticks + * @category Unit + */ +function Ticks(value, units) { + return new TicksClass(getContext(), value, units); +} + +/** + * Draw is useful for synchronizing visuals and audio events. + * Callbacks from Tone.Transport or any of the Tone.Event classes + * always happen _before_ the scheduled time and are not synchronized + * to the animation frame so they are not good for triggering tightly + * synchronized visuals and sound. Draw makes it easy to schedule + * callbacks using the AudioContext time and uses requestAnimationFrame. + * @example + * Tone.Transport.schedule((time) => { + * // use the time argument to schedule a callback with Draw + * Tone.Draw.schedule(() => { + * // do drawing or DOM manipulation here + * console.log(time); + * }, time); + * }, "+0.5"); + * Tone.Transport.start(); + * @category Core + */ +class Draw extends ToneWithContext { + constructor() { + super(...arguments); + this.name = "Draw"; + /** + * The duration after which events are not invoked. + */ + this.expiration = 0.25; + /** + * The amount of time before the scheduled time + * that the callback can be invoked. Default is + * half the time of an animation frame (0.008 seconds). + */ + this.anticipation = 0.008; + /** + * All of the events. + */ + this._events = new Timeline(); + /** + * The draw loop + */ + this._boundDrawLoop = this._drawLoop.bind(this); + /** + * The animation frame id + */ + this._animationFrame = -1; + } + /** + * Schedule a function at the given time to be invoked + * on the nearest animation frame. + * @param callback Callback is invoked at the given time. + * @param time The time relative to the AudioContext time to invoke the callback. + * @example + * Tone.Transport.scheduleRepeat(time => { + * Tone.Draw.schedule(() => console.log(time), time); + * }, 1); + * Tone.Transport.start(); + */ + schedule(callback, time) { + this._events.add({ + callback, + time: this.toSeconds(time), + }); + // start the draw loop on the first event + if (this._events.length === 1) { + this._animationFrame = requestAnimationFrame(this._boundDrawLoop); + } + return this; + } + /** + * Cancel events scheduled after the given time + * @param after Time after which scheduled events will be removed from the scheduling timeline. + */ + cancel(after) { + this._events.cancel(this.toSeconds(after)); + return this; + } + /** + * The draw loop + */ + _drawLoop() { + const now = this.context.currentTime; + while (this._events.length && this._events.peek().time - this.anticipation <= now) { + const event = this._events.shift(); + if (event && now - event.time <= this.expiration) { + event.callback(); + } + } + if (this._events.length > 0) { + this._animationFrame = requestAnimationFrame(this._boundDrawLoop); + } + } + dispose() { + super.dispose(); + this._events.dispose(); + cancelAnimationFrame(this._animationFrame); + return this; + } +} +//------------------------------------- +// INITIALIZATION +//------------------------------------- +onContextInit(context => { + context.draw = new Draw({ context }); +}); +onContextClose(context => { + context.draw.dispose(); +}); + +/** + * Similar to Tone.Timeline, but all events represent + * intervals with both "time" and "duration" times. The + * events are placed in a tree structure optimized + * for querying an intersection point with the timeline + * events. Internally uses an [Interval Tree](https://en.wikipedia.org/wiki/Interval_tree) + * to represent the data. + */ +class IntervalTimeline extends Tone { + constructor() { + super(...arguments); + this.name = "IntervalTimeline"; + /** + * The root node of the inteval tree + */ + this._root = null; + /** + * Keep track of the length of the timeline. + */ + this._length = 0; + } + /** + * The event to add to the timeline. All events must + * have a time and duration value + * @param event The event to add to the timeline + */ + add(event) { + assert(isDefined(event.time), "Events must have a time property"); + assert(isDefined(event.duration), "Events must have a duration parameter"); + event.time = event.time.valueOf(); + let node = new IntervalNode(event.time, event.time + event.duration, event); + if (this._root === null) { + this._root = node; + } + else { + this._root.insert(node); + } + this._length++; + // Restructure tree to be balanced + while (node !== null) { + node.updateHeight(); + node.updateMax(); + this._rebalance(node); + node = node.parent; + } + return this; + } + /** + * Remove an event from the timeline. + * @param event The event to remove from the timeline + */ + remove(event) { + if (this._root !== null) { + const results = []; + this._root.search(event.time, results); + for (const node of results) { + if (node.event === event) { + this._removeNode(node); + this._length--; + break; + } + } + } + return this; + } + /** + * The number of items in the timeline. + * @readOnly + */ + get length() { + return this._length; + } + /** + * Remove events whose time time is after the given time + * @param after The time to query. + */ + cancel(after) { + this.forEachFrom(after, event => this.remove(event)); + return this; + } + /** + * Set the root node as the given node + */ + _setRoot(node) { + this._root = node; + if (this._root !== null) { + this._root.parent = null; + } + } + /** + * Replace the references to the node in the node's parent + * with the replacement node. + */ + _replaceNodeInParent(node, replacement) { + if (node.parent !== null) { + if (node.isLeftChild()) { + node.parent.left = replacement; + } + else { + node.parent.right = replacement; + } + this._rebalance(node.parent); + } + else { + this._setRoot(replacement); + } + } + /** + * Remove the node from the tree and replace it with + * a successor which follows the schema. + */ + _removeNode(node) { + if (node.left === null && node.right === null) { + this._replaceNodeInParent(node, null); + } + else if (node.right === null) { + this._replaceNodeInParent(node, node.left); + } + else if (node.left === null) { + this._replaceNodeInParent(node, node.right); + } + else { + const balance = node.getBalance(); + let replacement; + let temp = null; + if (balance > 0) { + if (node.left.right === null) { + replacement = node.left; + replacement.right = node.right; + temp = replacement; + } + else { + replacement = node.left.right; + while (replacement.right !== null) { + replacement = replacement.right; + } + if (replacement.parent) { + replacement.parent.right = replacement.left; + temp = replacement.parent; + replacement.left = node.left; + replacement.right = node.right; + } + } + } + else if (node.right.left === null) { + replacement = node.right; + replacement.left = node.left; + temp = replacement; + } + else { + replacement = node.right.left; + while (replacement.left !== null) { + replacement = replacement.left; + } + if (replacement.parent) { + replacement.parent.left = replacement.right; + temp = replacement.parent; + replacement.left = node.left; + replacement.right = node.right; + } + } + if (node.parent !== null) { + if (node.isLeftChild()) { + node.parent.left = replacement; + } + else { + node.parent.right = replacement; + } + } + else { + this._setRoot(replacement); + } + if (temp) { + this._rebalance(temp); + } + } + node.dispose(); + } + /** + * Rotate the tree to the left + */ + _rotateLeft(node) { + const parent = node.parent; + const isLeftChild = node.isLeftChild(); + // Make node.right the new root of this sub tree (instead of node) + const pivotNode = node.right; + if (pivotNode) { + node.right = pivotNode.left; + pivotNode.left = node; + } + if (parent !== null) { + if (isLeftChild) { + parent.left = pivotNode; + } + else { + parent.right = pivotNode; + } + } + else { + this._setRoot(pivotNode); + } + } + /** + * Rotate the tree to the right + */ + _rotateRight(node) { + const parent = node.parent; + const isLeftChild = node.isLeftChild(); + // Make node.left the new root of this sub tree (instead of node) + const pivotNode = node.left; + if (pivotNode) { + node.left = pivotNode.right; + pivotNode.right = node; + } + if (parent !== null) { + if (isLeftChild) { + parent.left = pivotNode; + } + else { + parent.right = pivotNode; + } + } + else { + this._setRoot(pivotNode); + } + } + /** + * Balance the BST + */ + _rebalance(node) { + const balance = node.getBalance(); + if (balance > 1 && node.left) { + if (node.left.getBalance() < 0) { + this._rotateLeft(node.left); + } + else { + this._rotateRight(node); + } + } + else if (balance < -1 && node.right) { + if (node.right.getBalance() > 0) { + this._rotateRight(node.right); + } + else { + this._rotateLeft(node); + } + } + } + /** + * Get an event whose time and duration span the give time. Will + * return the match whose "time" value is closest to the given time. + * @return The event which spans the desired time + */ + get(time) { + if (this._root !== null) { + const results = []; + this._root.search(time, results); + if (results.length > 0) { + let max = results[0]; + for (let i = 1; i < results.length; i++) { + if (results[i].low > max.low) { + max = results[i]; + } + } + return max.event; + } + } + return null; + } + /** + * Iterate over everything in the timeline. + * @param callback The callback to invoke with every item + */ + forEach(callback) { + if (this._root !== null) { + const allNodes = []; + this._root.traverse(node => allNodes.push(node)); + allNodes.forEach(node => { + if (node.event) { + callback(node.event); + } + }); + } + return this; + } + /** + * Iterate over everything in the array in which the given time + * overlaps with the time and duration time of the event. + * @param time The time to check if items are overlapping + * @param callback The callback to invoke with every item + */ + forEachAtTime(time, callback) { + if (this._root !== null) { + const results = []; + this._root.search(time, results); + results.forEach(node => { + if (node.event) { + callback(node.event); + } + }); + } + return this; + } + /** + * Iterate over everything in the array in which the time is greater + * than or equal to the given time. + * @param time The time to check if items are before + * @param callback The callback to invoke with every item + */ + forEachFrom(time, callback) { + if (this._root !== null) { + const results = []; + this._root.searchAfter(time, results); + results.forEach(node => { + if (node.event) { + callback(node.event); + } + }); + } + return this; + } + /** + * Clean up + */ + dispose() { + super.dispose(); + if (this._root !== null) { + this._root.traverse(node => node.dispose()); + } + this._root = null; + return this; + } +} +//------------------------------------- +// INTERVAL NODE HELPER +//------------------------------------- +/** + * Represents a node in the binary search tree, with the addition + * of a "high" value which keeps track of the highest value of + * its children. + * References: + * https://brooknovak.wordpress.com/2013/12/07/augmented-interval-tree-in-c/ + * http://www.mif.vu.lt/~valdas/ALGORITMAI/LITERATURA/Cormen/Cormen.pdf + * @param low + * @param high + */ +class IntervalNode { + constructor(low, high, event) { + // the nodes to the left + this._left = null; + // the nodes to the right + this._right = null; + // the parent node + this.parent = null; + // the number of child nodes + this.height = 0; + this.event = event; + // the low value + this.low = low; + // the high value + this.high = high; + // the high value for this and all child nodes + this.max = this.high; + } + /** + * Insert a node into the correct spot in the tree + */ + insert(node) { + if (node.low <= this.low) { + if (this.left === null) { + this.left = node; + } + else { + this.left.insert(node); + } + } + else if (this.right === null) { + this.right = node; + } + else { + this.right.insert(node); + } + } + /** + * Search the tree for nodes which overlap + * with the given point + * @param point The point to query + * @param results The array to put the results + */ + search(point, results) { + // If p is to the right of the rightmost point of any interval + // in this node and all children, there won't be any matches. + if (point > this.max) { + return; + } + // Search left children + if (this.left !== null) { + this.left.search(point, results); + } + // Check this node + if (this.low <= point && this.high > point) { + results.push(this); + } + // If p is to the left of the time of this interval, + // then it can't be in any child to the right. + if (this.low > point) { + return; + } + // Search right children + if (this.right !== null) { + this.right.search(point, results); + } + } + /** + * Search the tree for nodes which are less + * than the given point + * @param point The point to query + * @param results The array to put the results + */ + searchAfter(point, results) { + // Check this node + if (this.low >= point) { + results.push(this); + if (this.left !== null) { + this.left.searchAfter(point, results); + } + } + // search the right side + if (this.right !== null) { + this.right.searchAfter(point, results); + } + } + /** + * Invoke the callback on this element and both it's branches + * @param {Function} callback + */ + traverse(callback) { + callback(this); + if (this.left !== null) { + this.left.traverse(callback); + } + if (this.right !== null) { + this.right.traverse(callback); + } + } + /** + * Update the height of the node + */ + updateHeight() { + if (this.left !== null && this.right !== null) { + this.height = Math.max(this.left.height, this.right.height) + 1; + } + else if (this.right !== null) { + this.height = this.right.height + 1; + } + else if (this.left !== null) { + this.height = this.left.height + 1; + } + else { + this.height = 0; + } + } + /** + * Update the height of the node + */ + updateMax() { + this.max = this.high; + if (this.left !== null) { + this.max = Math.max(this.max, this.left.max); + } + if (this.right !== null) { + this.max = Math.max(this.max, this.right.max); + } + } + /** + * The balance is how the leafs are distributed on the node + * @return Negative numbers are balanced to the right + */ + getBalance() { + let balance = 0; + if (this.left !== null && this.right !== null) { + balance = this.left.height - this.right.height; + } + else if (this.left !== null) { + balance = this.left.height + 1; + } + else if (this.right !== null) { + balance = -(this.right.height + 1); + } + return balance; + } + /** + * @returns true if this node is the left child of its parent + */ + isLeftChild() { + return this.parent !== null && this.parent.left === this; + } + /** + * get/set the left node + */ + get left() { + return this._left; + } + set left(node) { + this._left = node; + if (node !== null) { + node.parent = this; + } + this.updateHeight(); + this.updateMax(); + } + /** + * get/set the right node + */ + get right() { + return this._right; + } + set right(node) { + this._right = node; + if (node !== null) { + node.parent = this; + } + this.updateHeight(); + this.updateMax(); + } + /** + * null out references. + */ + dispose() { + this.parent = null; + this._left = null; + this._right = null; + this.event = null; + } +} + +/** + * Volume is a simple volume node, useful for creating a volume fader. + * + * @example + * const vol = new Tone.Volume(-12).toDestination(); + * const osc = new Tone.Oscillator().connect(vol).start(); + * @category Component + */ +class Volume extends ToneAudioNode { + constructor() { + super(optionsFromArguments(Volume.getDefaults(), arguments, ["volume"])); + this.name = "Volume"; + const options = optionsFromArguments(Volume.getDefaults(), arguments, ["volume"]); + this.input = this.output = new Gain({ + context: this.context, + gain: options.volume, + units: "decibels", + }); + this.volume = this.output.gain; + readOnly(this, "volume"); + this._unmutedVolume = options.volume; + // set the mute initially + this.mute = options.mute; + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + mute: false, + volume: 0, + }); + } + /** + * Mute the output. + * @example + * const vol = new Tone.Volume(-12).toDestination(); + * const osc = new Tone.Oscillator().connect(vol).start(); + * // mute the output + * vol.mute = true; + */ + get mute() { + return this.volume.value === -Infinity; + } + set mute(mute) { + if (!this.mute && mute) { + this._unmutedVolume = this.volume.value; + // maybe it should ramp here? + this.volume.value = -Infinity; + } + else if (this.mute && !mute) { + this.volume.value = this._unmutedVolume; + } + } + /** + * clean up + */ + dispose() { + super.dispose(); + this.input.dispose(); + this.volume.dispose(); + return this; + } +} + +/** + * A single master output which is connected to the + * AudioDestinationNode (aka your speakers). + * It provides useful conveniences such as the ability + * to set the volume and mute the entire application. + * It also gives you the ability to apply master effects to your application. + * + * @example + * const oscillator = new Tone.Oscillator().start(); + * // the audio will go from the oscillator to the speakers + * oscillator.connect(Tone.getDestination()); + * // a convenience for connecting to the master output is also provided: + * oscillator.toDestination(); + * @category Core + */ +class Destination extends ToneAudioNode { + constructor() { + super(optionsFromArguments(Destination.getDefaults(), arguments)); + this.name = "Destination"; + this.input = new Volume({ context: this.context }); + this.output = new Gain({ context: this.context }); + /** + * The volume of the master output in decibels. -Infinity is silent, and 0 is no change. + * @example + * const osc = new Tone.Oscillator().toDestination(); + * osc.start(); + * // ramp the volume down to silent over 10 seconds + * Tone.getDestination().volume.rampTo(-Infinity, 10); + */ + this.volume = this.input.volume; + const options = optionsFromArguments(Destination.getDefaults(), arguments); + connectSeries(this.input, this.output, this.context.rawContext.destination); + this.mute = options.mute; + this._internalChannels = [this.input, this.context.rawContext.destination, this.output]; + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + mute: false, + volume: 0, + }); + } + /** + * Mute the output. + * @example + * const oscillator = new Tone.Oscillator().start().toDestination(); + * setTimeout(() => { + * // mute the output + * Tone.Destination.mute = true; + * }, 1000); + */ + get mute() { + return this.input.mute; + } + set mute(mute) { + this.input.mute = mute; + } + /** + * Add a master effects chain. NOTE: this will disconnect any nodes which were previously + * chained in the master effects chain. + * @param args All arguments will be connected in a row and the Master will be routed through it. + * @example + * // route all audio through a filter and compressor + * const lowpass = new Tone.Filter(800, "lowpass"); + * const compressor = new Tone.Compressor(-18); + * Tone.Destination.chain(lowpass, compressor); + */ + chain(...args) { + this.input.disconnect(); + args.unshift(this.input); + args.push(this.output); + connectSeries(...args); + return this; + } + /** + * The maximum number of channels the system can output + * @example + * console.log(Tone.Destination.maxChannelCount); + */ + get maxChannelCount() { + return this.context.rawContext.destination.maxChannelCount; + } + /** + * Clean up + */ + dispose() { + super.dispose(); + this.volume.dispose(); + return this; + } +} +//------------------------------------- +// INITIALIZATION +//------------------------------------- +onContextInit(context => { + context.destination = new Destination({ context }); +}); +onContextClose(context => { + context.destination.dispose(); +}); + +/** + * Represents a single value which is gettable and settable in a timed way + */ +class TimelineValue extends Tone { + /** + * @param initialValue The value to return if there is no scheduled values + */ + constructor(initialValue) { + super(); + this.name = "TimelineValue"; + /** + * The timeline which stores the values + */ + this._timeline = new Timeline({ memory: 10 }); + this._initialValue = initialValue; + } + /** + * Set the value at the given time + */ + set(value, time) { + this._timeline.add({ + value, time + }); + return this; + } + /** + * Get the value at the given time + */ + get(time) { + const event = this._timeline.get(time); + if (event) { + return event.value; + } + else { + return this._initialValue; + } + } +} + +/** + * TransportEvent is an internal class used by [[Transport]] + * to schedule events. Do no invoke this class directly, it is + * handled from within Tone.Transport. + */ +class TransportEvent { + /** + * @param transport The transport object which the event belongs to + */ + constructor(transport, opts) { + /** + * The unique id of the event + */ + this.id = TransportEvent._eventId++; + const options = Object.assign(TransportEvent.getDefaults(), opts); + this.transport = transport; + this.callback = options.callback; + this._once = options.once; + this.time = options.time; + } + static getDefaults() { + return { + callback: noOp, + once: false, + time: 0, + }; + } + /** + * Invoke the event callback. + * @param time The AudioContext time in seconds of the event + */ + invoke(time) { + if (this.callback) { + this.callback(time); + if (this._once) { + this.transport.clear(this.id); + } + } + } + /** + * Clean up + */ + dispose() { + this.callback = undefined; + return this; + } +} +/** + * Current ID counter + */ +TransportEvent._eventId = 0; + +/** + * TransportRepeatEvent is an internal class used by Tone.Transport + * to schedule repeat events. This class should not be instantiated directly. + */ +class TransportRepeatEvent extends TransportEvent { + /** + * @param transport The transport object which the event belongs to + */ + constructor(transport, opts) { + super(transport, opts); + /** + * The ID of the current timeline event + */ + this._currentId = -1; + /** + * The ID of the next timeline event + */ + this._nextId = -1; + /** + * The time of the next event + */ + this._nextTick = this.time; + /** + * a reference to the bound start method + */ + this._boundRestart = this._restart.bind(this); + const options = Object.assign(TransportRepeatEvent.getDefaults(), opts); + this.duration = new TicksClass(transport.context, options.duration).valueOf(); + this._interval = new TicksClass(transport.context, options.interval).valueOf(); + this._nextTick = options.time; + this.transport.on("start", this._boundRestart); + this.transport.on("loopStart", this._boundRestart); + this.context = this.transport.context; + this._restart(); + } + static getDefaults() { + return Object.assign({}, TransportEvent.getDefaults(), { + duration: Infinity, + interval: 1, + once: false, + }); + } + /** + * Invoke the callback. Returns the tick time which + * the next event should be scheduled at. + * @param time The AudioContext time in seconds of the event + */ + invoke(time) { + // create more events if necessary + this._createEvents(time); + // call the super class + super.invoke(time); + } + /** + * Push more events onto the timeline to keep up with the position of the timeline + */ + _createEvents(time) { + // schedule the next event + const ticks = this.transport.getTicksAtTime(time); + if (ticks >= this.time && ticks >= this._nextTick && this._nextTick + this._interval < this.time + this.duration) { + this._nextTick += this._interval; + this._currentId = this._nextId; + this._nextId = this.transport.scheduleOnce(this.invoke.bind(this), new TicksClass(this.context, this._nextTick).toSeconds()); + } + } + /** + * Push more events onto the timeline to keep up with the position of the timeline + */ + _restart(time) { + this.transport.clear(this._currentId); + this.transport.clear(this._nextId); + this._nextTick = this.time; + const ticks = this.transport.getTicksAtTime(time); + if (ticks > this.time) { + this._nextTick = this.time + Math.ceil((ticks - this.time) / this._interval) * this._interval; + } + this._currentId = this.transport.scheduleOnce(this.invoke.bind(this), new TicksClass(this.context, this._nextTick).toSeconds()); + this._nextTick += this._interval; + this._nextId = this.transport.scheduleOnce(this.invoke.bind(this), new TicksClass(this.context, this._nextTick).toSeconds()); + } + /** + * Clean up + */ + dispose() { + super.dispose(); + this.transport.clear(this._currentId); + this.transport.clear(this._nextId); + this.transport.off("start", this._boundRestart); + this.transport.off("loopStart", this._boundRestart); + return this; + } +} + +/** + * Transport for timing musical events. + * Supports tempo curves and time changes. Unlike browser-based timing (setInterval, requestAnimationFrame) + * Transport timing events pass in the exact time of the scheduled event + * in the argument of the callback function. Pass that time value to the object + * you're scheduling.

+ * A single transport is created for you when the library is initialized. + *

+ * The transport emits the events: "start", "stop", "pause", and "loop" which are + * called with the time of that event as the argument. + * + * @example + * const osc = new Tone.Oscillator().toDestination(); + * // repeated event every 8th note + * Tone.Transport.scheduleRepeat((time) => { + * // use the callback time to schedule events + * osc.start(time).stop(time + 0.1); + * }, "8n"); + * // transport must be started before it starts invoking events + * Tone.Transport.start(); + * @category Core + */ +class Transport extends ToneWithContext { + constructor() { + super(optionsFromArguments(Transport.getDefaults(), arguments)); + this.name = "Transport"; + //------------------------------------- + // LOOPING + //------------------------------------- + /** + * If the transport loops or not. + */ + this._loop = new TimelineValue(false); + /** + * The loop start position in ticks + */ + this._loopStart = 0; + /** + * The loop end position in ticks + */ + this._loopEnd = 0; + //------------------------------------- + // TIMELINE EVENTS + //------------------------------------- + /** + * All the events in an object to keep track by ID + */ + this._scheduledEvents = {}; + /** + * The scheduled events. + */ + this._timeline = new Timeline(); + /** + * Repeated events + */ + this._repeatedEvents = new IntervalTimeline(); + /** + * All of the synced Signals + */ + this._syncedSignals = []; + /** + * The swing amount + */ + this._swingAmount = 0; + const options = optionsFromArguments(Transport.getDefaults(), arguments); + // CLOCK/TEMPO + this._ppq = options.ppq; + this._clock = new Clock({ + callback: this._processTick.bind(this), + context: this.context, + frequency: 0, + units: "bpm", + }); + this._bindClockEvents(); + this.bpm = this._clock.frequency; + this._clock.frequency.multiplier = options.ppq; + this.bpm.setValueAtTime(options.bpm, 0); + readOnly(this, "bpm"); + this._timeSignature = options.timeSignature; + // SWING + this._swingTicks = options.ppq / 2; // 8n + } + static getDefaults() { + return Object.assign(ToneWithContext.getDefaults(), { + bpm: 120, + loopEnd: "4m", + loopStart: 0, + ppq: 192, + swing: 0, + swingSubdivision: "8n", + timeSignature: 4, + }); + } + //------------------------------------- + // TICKS + //------------------------------------- + /** + * called on every tick + * @param tickTime clock relative tick time + */ + _processTick(tickTime, ticks) { + // do the loop test + if (this._loop.get(tickTime)) { + if (ticks >= this._loopEnd) { + this.emit("loopEnd", tickTime); + this._clock.setTicksAtTime(this._loopStart, tickTime); + ticks = this._loopStart; + this.emit("loopStart", tickTime, this._clock.getSecondsAtTime(tickTime)); + this.emit("loop", tickTime); + } + } + // handle swing + if (this._swingAmount > 0 && + ticks % this._ppq !== 0 && // not on a downbeat + ticks % (this._swingTicks * 2) !== 0) { + // add some swing + const progress = (ticks % (this._swingTicks * 2)) / (this._swingTicks * 2); + const amount = Math.sin((progress) * Math.PI) * this._swingAmount; + tickTime += new TicksClass(this.context, this._swingTicks * 2 / 3).toSeconds() * amount; + } + // invoke the timeline events scheduled on this tick + this._timeline.forEachAtTime(ticks, event => event.invoke(tickTime)); + } + //------------------------------------- + // SCHEDULABLE EVENTS + //------------------------------------- + /** + * Schedule an event along the timeline. + * @param callback The callback to be invoked at the time. + * @param time The time to invoke the callback at. + * @return The id of the event which can be used for canceling the event. + * @example + * // schedule an event on the 16th measure + * Tone.Transport.schedule((time) => { + * // invoked on measure 16 + * console.log("measure 16!"); + * }, "16:0:0"); + */ + schedule(callback, time) { + const event = new TransportEvent(this, { + callback, + time: new TransportTimeClass(this.context, time).toTicks(), + }); + return this._addEvent(event, this._timeline); + } + /** + * Schedule a repeated event along the timeline. The event will fire + * at the `interval` starting at the `startTime` and for the specified + * `duration`. + * @param callback The callback to invoke. + * @param interval The duration between successive callbacks. Must be a positive number. + * @param startTime When along the timeline the events should start being invoked. + * @param duration How long the event should repeat. + * @return The ID of the scheduled event. Use this to cancel the event. + * @example + * const osc = new Tone.Oscillator().toDestination().start(); + * // a callback invoked every eighth note after the first measure + * Tone.Transport.scheduleRepeat((time) => { + * osc.start(time).stop(time + 0.1); + * }, "8n", "1m"); + */ + scheduleRepeat(callback, interval, startTime, duration = Infinity) { + const event = new TransportRepeatEvent(this, { + callback, + duration: new TimeClass(this.context, duration).toTicks(), + interval: new TimeClass(this.context, interval).toTicks(), + time: new TransportTimeClass(this.context, startTime).toTicks(), + }); + // kick it off if the Transport is started + // @ts-ignore + return this._addEvent(event, this._repeatedEvents); + } + /** + * Schedule an event that will be removed after it is invoked. + * @param callback The callback to invoke once. + * @param time The time the callback should be invoked. + * @returns The ID of the scheduled event. + */ + scheduleOnce(callback, time) { + const event = new TransportEvent(this, { + callback, + once: true, + time: new TransportTimeClass(this.context, time).toTicks(), + }); + return this._addEvent(event, this._timeline); + } + /** + * Clear the passed in event id from the timeline + * @param eventId The id of the event. + */ + clear(eventId) { + if (this._scheduledEvents.hasOwnProperty(eventId)) { + const item = this._scheduledEvents[eventId.toString()]; + item.timeline.remove(item.event); + item.event.dispose(); + delete this._scheduledEvents[eventId.toString()]; + } + return this; + } + /** + * Add an event to the correct timeline. Keep track of the + * timeline it was added to. + * @returns the event id which was just added + */ + _addEvent(event, timeline) { + this._scheduledEvents[event.id.toString()] = { + event, + timeline, + }; + timeline.add(event); + return event.id; + } + /** + * Remove scheduled events from the timeline after + * the given time. Repeated events will be removed + * if their startTime is after the given time + * @param after Clear all events after this time. + */ + cancel(after = 0) { + const computedAfter = this.toTicks(after); + this._timeline.forEachFrom(computedAfter, event => this.clear(event.id)); + this._repeatedEvents.forEachFrom(computedAfter, event => this.clear(event.id)); + return this; + } + //------------------------------------- + // START/STOP/PAUSE + //------------------------------------- + /** + * Bind start/stop/pause events from the clock and emit them. + */ + _bindClockEvents() { + this._clock.on("start", (time, offset) => { + offset = new TicksClass(this.context, offset).toSeconds(); + this.emit("start", time, offset); + }); + this._clock.on("stop", (time) => { + this.emit("stop", time); + }); + this._clock.on("pause", (time) => { + this.emit("pause", time); + }); + } + /** + * Returns the playback state of the source, either "started", "stopped", or "paused" + */ + get state() { + return this._clock.getStateAtTime(this.now()); + } + /** + * Start the transport and all sources synced to the transport. + * @param time The time when the transport should start. + * @param offset The timeline offset to start the transport. + * @example + * // start the transport in one second starting at beginning of the 5th measure. + * Tone.Transport.start("+1", "4:0:0"); + */ + start(time, offset) { + let offsetTicks; + if (isDefined(offset)) { + offsetTicks = this.toTicks(offset); + } + // start the clock + this._clock.start(time, offsetTicks); + return this; + } + /** + * Stop the transport and all sources synced to the transport. + * @param time The time when the transport should stop. + * @example + * Tone.Transport.stop(); + */ + stop(time) { + this._clock.stop(time); + return this; + } + /** + * Pause the transport and all sources synced to the transport. + */ + pause(time) { + this._clock.pause(time); + return this; + } + /** + * Toggle the current state of the transport. If it is + * started, it will stop it, otherwise it will start the Transport. + * @param time The time of the event + */ + toggle(time) { + time = this.toSeconds(time); + if (this._clock.getStateAtTime(time) !== "started") { + this.start(time); + } + else { + this.stop(time); + } + return this; + } + //------------------------------------- + // SETTERS/GETTERS + //------------------------------------- + /** + * The time signature as just the numerator over 4. + * For example 4/4 would be just 4 and 6/8 would be 3. + * @example + * // common time + * Tone.Transport.timeSignature = 4; + * // 7/8 + * Tone.Transport.timeSignature = [7, 8]; + * // this will be reduced to a single number + * Tone.Transport.timeSignature; // returns 3.5 + */ + get timeSignature() { + return this._timeSignature; + } + set timeSignature(timeSig) { + if (isArray(timeSig)) { + timeSig = (timeSig[0] / timeSig[1]) * 4; + } + this._timeSignature = timeSig; + } + /** + * When the Transport.loop = true, this is the starting position of the loop. + */ + get loopStart() { + return new TimeClass(this.context, this._loopStart, "i").toSeconds(); + } + set loopStart(startPosition) { + this._loopStart = this.toTicks(startPosition); + } + /** + * When the Transport.loop = true, this is the ending position of the loop. + */ + get loopEnd() { + return new TimeClass(this.context, this._loopEnd, "i").toSeconds(); + } + set loopEnd(endPosition) { + this._loopEnd = this.toTicks(endPosition); + } + /** + * If the transport loops or not. + */ + get loop() { + return this._loop.get(this.now()); + } + set loop(loop) { + this._loop.set(loop, this.now()); + } + /** + * Set the loop start and stop at the same time. + * @example + * // loop over the first measure + * Tone.Transport.setLoopPoints(0, "1m"); + * Tone.Transport.loop = true; + */ + setLoopPoints(startPosition, endPosition) { + this.loopStart = startPosition; + this.loopEnd = endPosition; + return this; + } + /** + * The swing value. Between 0-1 where 1 equal to the note + half the subdivision. + */ + get swing() { + return this._swingAmount; + } + set swing(amount) { + // scale the values to a normal range + this._swingAmount = amount; + } + /** + * Set the subdivision which the swing will be applied to. + * The default value is an 8th note. Value must be less + * than a quarter note. + */ + get swingSubdivision() { + return new TicksClass(this.context, this._swingTicks).toNotation(); + } + set swingSubdivision(subdivision) { + this._swingTicks = this.toTicks(subdivision); + } + /** + * The Transport's position in Bars:Beats:Sixteenths. + * Setting the value will jump to that position right away. + */ + get position() { + const now = this.now(); + const ticks = this._clock.getTicksAtTime(now); + return new TicksClass(this.context, ticks).toBarsBeatsSixteenths(); + } + set position(progress) { + const ticks = this.toTicks(progress); + this.ticks = ticks; + } + /** + * The Transport's position in seconds + * Setting the value will jump to that position right away. + */ + get seconds() { + return this._clock.seconds; + } + set seconds(s) { + const now = this.now(); + const ticks = this._clock.frequency.timeToTicks(s, now); + this.ticks = ticks; + } + /** + * The Transport's loop position as a normalized value. Always + * returns 0 if the transport if loop is not true. + */ + get progress() { + if (this.loop) { + const now = this.now(); + const ticks = this._clock.getTicksAtTime(now); + return (ticks - this._loopStart) / (this._loopEnd - this._loopStart); + } + else { + return 0; + } + } + /** + * The transports current tick position. + */ + get ticks() { + return this._clock.ticks; + } + set ticks(t) { + if (this._clock.ticks !== t) { + const now = this.now(); + // stop everything synced to the transport + if (this.state === "started") { + const ticks = this._clock.getTicksAtTime(now); + // schedule to start on the next tick, #573 + const remainingTick = this._clock.frequency.getDurationOfTicks(Math.ceil(ticks) - ticks, now); + const time = now + remainingTick; + this.emit("stop", time); + this._clock.setTicksAtTime(t, time); + // restart it with the new time + this.emit("start", time, this._clock.getSecondsAtTime(time)); + } + else { + this._clock.setTicksAtTime(t, now); + } + } + } + /** + * Get the clock's ticks at the given time. + * @param time When to get the tick value + * @return The tick value at the given time. + */ + getTicksAtTime(time) { + return Math.round(this._clock.getTicksAtTime(time)); + } + /** + * Return the elapsed seconds at the given time. + * @param time When to get the elapsed seconds + * @return The number of elapsed seconds + */ + getSecondsAtTime(time) { + return this._clock.getSecondsAtTime(time); + } + /** + * Pulses Per Quarter note. This is the smallest resolution + * the Transport timing supports. This should be set once + * on initialization and not set again. Changing this value + * after other objects have been created can cause problems. + */ + get PPQ() { + return this._clock.frequency.multiplier; + } + set PPQ(ppq) { + this._clock.frequency.multiplier = ppq; + } + //------------------------------------- + // SYNCING + //------------------------------------- + /** + * Returns the time aligned to the next subdivision + * of the Transport. If the Transport is not started, + * it will return 0. + * Note: this will not work precisely during tempo ramps. + * @param subdivision The subdivision to quantize to + * @return The context time of the next subdivision. + * @example + * // the transport must be started, otherwise returns 0 + * Tone.Transport.start(); + * Tone.Transport.nextSubdivision("4n"); + */ + nextSubdivision(subdivision) { + subdivision = this.toTicks(subdivision); + if (this.state !== "started") { + // if the transport's not started, return 0 + return 0; + } + else { + const now = this.now(); + // the remainder of the current ticks and the subdivision + const transportPos = this.getTicksAtTime(now); + const remainingTicks = subdivision - transportPos % subdivision; + return this._clock.nextTickTime(remainingTicks, now); + } + } + /** + * Attaches the signal to the tempo control signal so that + * any changes in the tempo will change the signal in the same + * ratio. + * + * @param signal + * @param ratio Optionally pass in the ratio between the two signals. + * Otherwise it will be computed based on their current values. + */ + syncSignal(signal, ratio) { + if (!ratio) { + // get the sync ratio + const now = this.now(); + if (signal.getValueAtTime(now) !== 0) { + const bpm = this.bpm.getValueAtTime(now); + const computedFreq = 1 / (60 / bpm / this.PPQ); + ratio = signal.getValueAtTime(now) / computedFreq; + } + else { + ratio = 0; + } + } + const ratioSignal = new Gain(ratio); + // @ts-ignore + this.bpm.connect(ratioSignal); + // @ts-ignore + ratioSignal.connect(signal._param); + this._syncedSignals.push({ + initial: signal.value, + ratio: ratioSignal, + signal, + }); + signal.value = 0; + return this; + } + /** + * Unsyncs a previously synced signal from the transport's control. + * See Transport.syncSignal. + */ + unsyncSignal(signal) { + for (let i = this._syncedSignals.length - 1; i >= 0; i--) { + const syncedSignal = this._syncedSignals[i]; + if (syncedSignal.signal === signal) { + syncedSignal.ratio.dispose(); + syncedSignal.signal.value = syncedSignal.initial; + this._syncedSignals.splice(i, 1); + } + } + return this; + } + /** + * Clean up. + */ + dispose() { + super.dispose(); + this._clock.dispose(); + writable(this, "bpm"); + this._timeline.dispose(); + this._repeatedEvents.dispose(); + return this; + } +} +Emitter.mixin(Transport); +//------------------------------------- +// INITIALIZATION +//------------------------------------- +onContextInit(context => { + context.transport = new Transport({ context }); +}); +onContextClose(context => { + context.transport.dispose(); +}); + +/** + * Base class for sources. + * start/stop of this.context.transport. + * + * ``` + * // Multiple state change events can be chained together, + * // but must be set in the correct order and with ascending times + * // OK + * state.start().stop("+0.2"); + * // OK + * state.start().stop("+0.2").start("+0.4").stop("+0.7") + * // BAD + * state.stop("+0.2").start(); + * // BAD + * state.start("+0.3").stop("+0.2"); + * ``` + */ +class Source extends ToneAudioNode { + constructor(options) { + super(options); + /** + * Sources have no inputs + */ + this.input = undefined; + /** + * Keep track of the scheduled state. + */ + this._state = new StateTimeline("stopped"); + /** + * The synced `start` callback function from the transport + */ + this._synced = false; + /** + * Keep track of all of the scheduled event ids + */ + this._scheduled = []; + /** + * Placeholder functions for syncing/unsyncing to transport + */ + this._syncedStart = noOp; + this._syncedStop = noOp; + this._state.memory = 100; + this._state.increasing = true; + this._volume = this.output = new Volume({ + context: this.context, + mute: options.mute, + volume: options.volume, + }); + this.volume = this._volume.volume; + readOnly(this, "volume"); + this.onstop = options.onstop; + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + mute: false, + onstop: noOp, + volume: 0, + }); + } + /** + * Returns the playback state of the source, either "started" or "stopped". + * @example + * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/ahntone_c3.mp3", () => { + * player.start(); + * console.log(player.state); + * }).toDestination(); + */ + get state() { + if (this._synced) { + if (this.context.transport.state === "started") { + return this._state.getValueAtTime(this.context.transport.seconds); + } + else { + return "stopped"; + } + } + else { + return this._state.getValueAtTime(this.now()); + } + } + /** + * Mute the output. + * @example + * const osc = new Tone.Oscillator().toDestination().start(); + * // mute the output + * osc.mute = true; + */ + get mute() { + return this._volume.mute; + } + set mute(mute) { + this._volume.mute = mute; + } + /** + * Ensure that the scheduled time is not before the current time. + * Should only be used when scheduled unsynced. + */ + _clampToCurrentTime(time) { + if (this._synced) { + return time; + } + else { + return Math.max(time, this.context.currentTime); + } + } + /** + * Start the source at the specified time. If no time is given, + * start the source now. + * @param time When the source should be started. + * @example + * const source = new Tone.Oscillator().toDestination(); + * source.start("+0.5"); // starts the source 0.5 seconds from now + */ + start(time, offset, duration) { + let computedTime = isUndef(time) && this._synced ? this.context.transport.seconds : this.toSeconds(time); + computedTime = this._clampToCurrentTime(computedTime); + // if it's started, stop it and restart it + if (!this._synced && this._state.getValueAtTime(computedTime) === "started") { + // time should be strictly greater than the previous start time + assert(GT(computedTime, this._state.get(computedTime).time), "Start time must be strictly greater than previous start time"); + this._state.cancel(computedTime); + this._state.setStateAtTime("started", computedTime); + this.log("restart", computedTime); + this.restart(computedTime, offset, duration); + } + else { + this.log("start", computedTime); + this._state.setStateAtTime("started", computedTime); + if (this._synced) { + // add the offset time to the event + const event = this._state.get(computedTime); + if (event) { + event.offset = this.toSeconds(defaultArg(offset, 0)); + event.duration = duration ? this.toSeconds(duration) : undefined; + } + const sched = this.context.transport.schedule(t => { + this._start(t, offset, duration); + }, computedTime); + this._scheduled.push(sched); + // if the transport is already started + // and the time is greater than where the transport is + if (this.context.transport.state === "started" && + this.context.transport.getSecondsAtTime(this.immediate()) > computedTime) { + this._syncedStart(this.now(), this.context.transport.seconds); + } + } + else { + assertContextRunning(this.context); + this._start(computedTime, offset, duration); + } + } + return this; + } + /** + * Stop the source at the specified time. If no time is given, + * stop the source now. + * @param time When the source should be stopped. + * @example + * const source = new Tone.Oscillator().toDestination(); + * source.start(); + * source.stop("+0.5"); // stops the source 0.5 seconds from now + */ + stop(time) { + let computedTime = isUndef(time) && this._synced ? this.context.transport.seconds : this.toSeconds(time); + computedTime = this._clampToCurrentTime(computedTime); + if (this._state.getValueAtTime(computedTime) === "started" || isDefined(this._state.getNextState("started", computedTime))) { + this.log("stop", computedTime); + if (!this._synced) { + this._stop(computedTime); + } + else { + const sched = this.context.transport.schedule(this._stop.bind(this), computedTime); + this._scheduled.push(sched); + } + this._state.cancel(computedTime); + this._state.setStateAtTime("stopped", computedTime); + } + return this; + } + /** + * Restart the source. + */ + restart(time, offset, duration) { + time = this.toSeconds(time); + if (this._state.getValueAtTime(time) === "started") { + this._state.cancel(time); + this._restart(time, offset, duration); + } + return this; + } + /** + * Sync the source to the Transport so that all subsequent + * calls to `start` and `stop` are synced to the TransportTime + * instead of the AudioContext time. + * + * @example + * const osc = new Tone.Oscillator().toDestination(); + * // sync the source so that it plays between 0 and 0.3 on the Transport's timeline + * osc.sync().start(0).stop(0.3); + * // start the transport. + * Tone.Transport.start(); + * // set it to loop once a second + * Tone.Transport.loop = true; + * Tone.Transport.loopEnd = 1; + */ + sync() { + if (!this._synced) { + this._synced = true; + this._syncedStart = (time, offset) => { + if (offset > 0) { + // get the playback state at that time + const stateEvent = this._state.get(offset); + // listen for start events which may occur in the middle of the sync'ed time + if (stateEvent && stateEvent.state === "started" && stateEvent.time !== offset) { + // get the offset + const startOffset = offset - this.toSeconds(stateEvent.time); + let duration; + if (stateEvent.duration) { + duration = this.toSeconds(stateEvent.duration) - startOffset; + } + this._start(time, this.toSeconds(stateEvent.offset) + startOffset, duration); + } + } + }; + this._syncedStop = time => { + const seconds = this.context.transport.getSecondsAtTime(Math.max(time - this.sampleTime, 0)); + if (this._state.getValueAtTime(seconds) === "started") { + this._stop(time); + } + }; + this.context.transport.on("start", this._syncedStart); + this.context.transport.on("loopStart", this._syncedStart); + this.context.transport.on("stop", this._syncedStop); + this.context.transport.on("pause", this._syncedStop); + this.context.transport.on("loopEnd", this._syncedStop); + } + return this; + } + /** + * Unsync the source to the Transport. See Source.sync + */ + unsync() { + if (this._synced) { + this.context.transport.off("stop", this._syncedStop); + this.context.transport.off("pause", this._syncedStop); + this.context.transport.off("loopEnd", this._syncedStop); + this.context.transport.off("start", this._syncedStart); + this.context.transport.off("loopStart", this._syncedStart); + } + this._synced = false; + // clear all of the scheduled ids + this._scheduled.forEach(id => this.context.transport.clear(id)); + this._scheduled = []; + this._state.cancel(0); + // stop it also + this._stop(0); + return this; + } + /** + * Clean up. + */ + dispose() { + super.dispose(); + this.onstop = noOp; + this.unsync(); + this._volume.dispose(); + this._state.dispose(); + return this; + } +} + +/** + * Wrapper around the native BufferSourceNode. + * @category Source + */ +class ToneBufferSource extends OneShotSource { + constructor() { + super(optionsFromArguments(ToneBufferSource.getDefaults(), arguments, ["url", "onload"])); + this.name = "ToneBufferSource"; + /** + * The oscillator + */ + this._source = this.context.createBufferSource(); + this._internalChannels = [this._source]; + /** + * indicators if the source has started/stopped + */ + this._sourceStarted = false; + this._sourceStopped = false; + const options = optionsFromArguments(ToneBufferSource.getDefaults(), arguments, ["url", "onload"]); + connect(this._source, this._gainNode); + this._source.onended = () => this._stopSource(); + /** + * The playbackRate of the buffer + */ + this.playbackRate = new Param({ + context: this.context, + param: this._source.playbackRate, + units: "positive", + value: options.playbackRate, + }); + // set some values initially + this.loop = options.loop; + this.loopStart = options.loopStart; + this.loopEnd = options.loopEnd; + this._buffer = new ToneAudioBuffer(options.url, options.onload, options.onerror); + this._internalChannels.push(this._source); + } + static getDefaults() { + return Object.assign(OneShotSource.getDefaults(), { + url: new ToneAudioBuffer(), + loop: false, + loopEnd: 0, + loopStart: 0, + onload: noOp, + onerror: noOp, + playbackRate: 1, + }); + } + /** + * The fadeIn time of the amplitude envelope. + */ + get fadeIn() { + return this._fadeIn; + } + set fadeIn(t) { + this._fadeIn = t; + } + /** + * The fadeOut time of the amplitude envelope. + */ + get fadeOut() { + return this._fadeOut; + } + set fadeOut(t) { + this._fadeOut = t; + } + /** + * The curve applied to the fades, either "linear" or "exponential" + */ + get curve() { + return this._curve; + } + set curve(t) { + this._curve = t; + } + /** + * Start the buffer + * @param time When the player should start. + * @param offset The offset from the beginning of the sample to start at. + * @param duration How long the sample should play. If no duration is given, it will default to the full length of the sample (minus any offset) + * @param gain The gain to play the buffer back at. + */ + start(time, offset, duration, gain = 1) { + assert(this.buffer.loaded, "buffer is either not set or not loaded"); + const computedTime = this.toSeconds(time); + // apply the gain envelope + this._startGain(computedTime, gain); + // if it's a loop the default offset is the loopstart point + if (this.loop) { + offset = defaultArg(offset, this.loopStart); + } + else { + // otherwise the default offset is 0 + offset = defaultArg(offset, 0); + } + // make sure the offset is not less than 0 + let computedOffset = Math.max(this.toSeconds(offset), 0); + // start the buffer source + if (this.loop) { + // modify the offset if it's greater than the loop time + const loopEnd = this.toSeconds(this.loopEnd) || this.buffer.duration; + const loopStart = this.toSeconds(this.loopStart); + const loopDuration = loopEnd - loopStart; + // move the offset back + if (GTE(computedOffset, loopEnd)) { + computedOffset = ((computedOffset - loopStart) % loopDuration) + loopStart; + } + // when the offset is very close to the duration, set it to 0 + if (EQ(computedOffset, this.buffer.duration)) { + computedOffset = 0; + } + } + // this.buffer.loaded would have return false if the AudioBuffer was undefined + this._source.buffer = this.buffer.get(); + this._source.loopEnd = this.toSeconds(this.loopEnd) || this.buffer.duration; + if (LT(computedOffset, this.buffer.duration)) { + this._sourceStarted = true; + this._source.start(computedTime, computedOffset); + } + // if a duration is given, schedule a stop + if (isDefined(duration)) { + let computedDur = this.toSeconds(duration); + // make sure it's never negative + computedDur = Math.max(computedDur, 0); + this.stop(computedTime + computedDur); + } + return this; + } + _stopSource(time) { + if (!this._sourceStopped && this._sourceStarted) { + this._sourceStopped = true; + this._source.stop(this.toSeconds(time)); + this._onended(); + } + } + /** + * If loop is true, the loop will start at this position. + */ + get loopStart() { + return this._source.loopStart; + } + set loopStart(loopStart) { + this._source.loopStart = this.toSeconds(loopStart); + } + /** + * If loop is true, the loop will end at this position. + */ + get loopEnd() { + return this._source.loopEnd; + } + set loopEnd(loopEnd) { + this._source.loopEnd = this.toSeconds(loopEnd); + } + /** + * The audio buffer belonging to the player. + */ + get buffer() { + return this._buffer; + } + set buffer(buffer) { + this._buffer.set(buffer); + } + /** + * If the buffer should loop once it's over. + */ + get loop() { + return this._source.loop; + } + set loop(loop) { + this._source.loop = loop; + if (this._sourceStarted) { + this.cancelStop(); + } + } + /** + * Clean up. + */ + dispose() { + super.dispose(); + this._source.onended = null; + this._source.disconnect(); + this._buffer.dispose(); + this.playbackRate.dispose(); + return this; + } +} + +/** + * Render a segment of the oscillator to an offline context and return the results as an array + */ +function generateWaveform(instance, length) { + return __awaiter(this, void 0, void 0, function* () { + const duration = length / instance.context.sampleRate; + const context = new OfflineContext(1, duration, instance.context.sampleRate); + const clone = new instance.constructor(Object.assign(instance.get(), { + // should do 2 iterations + frequency: 2 / duration, + // zero out the detune + detune: 0, + context + })).toDestination(); + clone.start(0); + const buffer = yield context.render(); + return buffer.getChannelData(0); + }); +} + +/** + * Wrapper around the native fire-and-forget OscillatorNode. + * Adds the ability to reschedule the stop method. + * ***[[Oscillator]] is better for most use-cases*** + * @category Source + */ +class ToneOscillatorNode extends OneShotSource { + constructor() { + super(optionsFromArguments(ToneOscillatorNode.getDefaults(), arguments, ["frequency", "type"])); + this.name = "ToneOscillatorNode"; + /** + * The oscillator + */ + this._oscillator = this.context.createOscillator(); + this._internalChannels = [this._oscillator]; + const options = optionsFromArguments(ToneOscillatorNode.getDefaults(), arguments, ["frequency", "type"]); + connect(this._oscillator, this._gainNode); + this.type = options.type; + this.frequency = new Param({ + context: this.context, + param: this._oscillator.frequency, + units: "frequency", + value: options.frequency, + }); + this.detune = new Param({ + context: this.context, + param: this._oscillator.detune, + units: "cents", + value: options.detune, + }); + readOnly(this, ["frequency", "detune"]); + } + static getDefaults() { + return Object.assign(OneShotSource.getDefaults(), { + detune: 0, + frequency: 440, + type: "sine", + }); + } + /** + * Start the oscillator node at the given time + * @param time When to start the oscillator + */ + start(time) { + const computedTime = this.toSeconds(time); + this.log("start", computedTime); + this._startGain(computedTime); + this._oscillator.start(computedTime); + return this; + } + _stopSource(time) { + this._oscillator.stop(time); + } + /** + * Sets an arbitrary custom periodic waveform given a PeriodicWave. + * @param periodicWave PeriodicWave should be created with context.createPeriodicWave + */ + setPeriodicWave(periodicWave) { + this._oscillator.setPeriodicWave(periodicWave); + return this; + } + /** + * The oscillator type. Either 'sine', 'sawtooth', 'square', or 'triangle' + */ + get type() { + return this._oscillator.type; + } + set type(type) { + this._oscillator.type = type; + } + /** + * Clean up. + */ + dispose() { + super.dispose(); + if (this.state === "started") { + this.stop(); + } + this._oscillator.disconnect(); + this.frequency.dispose(); + this.detune.dispose(); + return this; + } +} + +/** + * Oscillator supports a number of features including + * phase rotation, multiple oscillator types (see Oscillator.type), + * and Transport syncing (see Oscillator.syncFrequency). + * + * @example + * // make and start a 440hz sine tone + * const osc = new Tone.Oscillator(440, "sine").toDestination().start(); + * @category Source + */ +class Oscillator extends Source { + constructor() { + super(optionsFromArguments(Oscillator.getDefaults(), arguments, ["frequency", "type"])); + this.name = "Oscillator"; + /** + * the main oscillator + */ + this._oscillator = null; + const options = optionsFromArguments(Oscillator.getDefaults(), arguments, ["frequency", "type"]); + this.frequency = new Signal({ + context: this.context, + units: "frequency", + value: options.frequency, + }); + readOnly(this, "frequency"); + this.detune = new Signal({ + context: this.context, + units: "cents", + value: options.detune, + }); + readOnly(this, "detune"); + this._partials = options.partials; + this._partialCount = options.partialCount; + this._type = options.type; + if (options.partialCount && options.type !== "custom") { + this._type = this.baseType + options.partialCount.toString(); + } + this.phase = options.phase; + } + static getDefaults() { + return Object.assign(Source.getDefaults(), { + detune: 0, + frequency: 440, + partialCount: 0, + partials: [], + phase: 0, + type: "sine", + }); + } + /** + * start the oscillator + */ + _start(time) { + const computedTime = this.toSeconds(time); + // new oscillator with previous values + const oscillator = new ToneOscillatorNode({ + context: this.context, + onended: () => this.onstop(this), + }); + this._oscillator = oscillator; + if (this._wave) { + this._oscillator.setPeriodicWave(this._wave); + } + else { + this._oscillator.type = this._type; + } + // connect the control signal to the oscillator frequency & detune + this._oscillator.connect(this.output); + this.frequency.connect(this._oscillator.frequency); + this.detune.connect(this._oscillator.detune); + // start the oscillator + this._oscillator.start(computedTime); + } + /** + * stop the oscillator + */ + _stop(time) { + const computedTime = this.toSeconds(time); + if (this._oscillator) { + this._oscillator.stop(computedTime); + } + } + /** + * Restart the oscillator. Does not stop the oscillator, but instead + * just cancels any scheduled 'stop' from being invoked. + */ + _restart(time) { + const computedTime = this.toSeconds(time); + this.log("restart", computedTime); + if (this._oscillator) { + this._oscillator.cancelStop(); + } + this._state.cancel(computedTime); + return this; + } + /** + * Sync the signal to the Transport's bpm. Any changes to the transports bpm, + * will also affect the oscillators frequency. + * @example + * const osc = new Tone.Oscillator().toDestination().start(); + * osc.frequency.value = 440; + * // the ratio between the bpm and the frequency will be maintained + * osc.syncFrequency(); + * // double the tempo + * Tone.Transport.bpm.value *= 2; + * // the frequency of the oscillator is doubled to 880 + */ + syncFrequency() { + this.context.transport.syncSignal(this.frequency); + return this; + } + /** + * Unsync the oscillator's frequency from the Transport. + * See Oscillator.syncFrequency + */ + unsyncFrequency() { + this.context.transport.unsyncSignal(this.frequency); + return this; + } + /** + * Get a cached periodic wave. Avoids having to recompute + * the oscillator values when they have already been computed + * with the same values. + */ + _getCachedPeriodicWave() { + if (this._type === "custom") { + const oscProps = Oscillator._periodicWaveCache.find(description => { + return description.phase === this._phase && + deepEquals(description.partials, this._partials); + }); + return oscProps; + } + else { + const oscProps = Oscillator._periodicWaveCache.find(description => { + return description.type === this._type && + description.phase === this._phase; + }); + this._partialCount = oscProps ? oscProps.partialCount : this._partialCount; + return oscProps; + } + } + get type() { + return this._type; + } + set type(type) { + this._type = type; + const isBasicType = ["sine", "square", "sawtooth", "triangle"].indexOf(type) !== -1; + if (this._phase === 0 && isBasicType) { + this._wave = undefined; + this._partialCount = 0; + // just go with the basic approach + if (this._oscillator !== null) { + // already tested that it's a basic type + this._oscillator.type = type; + } + } + else { + // first check if the value is cached + const cache = this._getCachedPeriodicWave(); + if (isDefined(cache)) { + const { partials, wave } = cache; + this._wave = wave; + this._partials = partials; + if (this._oscillator !== null) { + this._oscillator.setPeriodicWave(this._wave); + } + } + else { + const [real, imag] = this._getRealImaginary(type, this._phase); + const periodicWave = this.context.createPeriodicWave(real, imag); + this._wave = periodicWave; + if (this._oscillator !== null) { + this._oscillator.setPeriodicWave(this._wave); + } + // set the cache + Oscillator._periodicWaveCache.push({ + imag, + partialCount: this._partialCount, + partials: this._partials, + phase: this._phase, + real, + type: this._type, + wave: this._wave, + }); + if (Oscillator._periodicWaveCache.length > 100) { + Oscillator._periodicWaveCache.shift(); + } + } + } + } + get baseType() { + return this._type.replace(this.partialCount.toString(), ""); + } + set baseType(baseType) { + if (this.partialCount && this._type !== "custom" && baseType !== "custom") { + this.type = baseType + this.partialCount; + } + else { + this.type = baseType; + } + } + get partialCount() { + return this._partialCount; + } + set partialCount(p) { + assertRange(p, 0); + let type = this._type; + const partial = /^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type); + if (partial) { + type = partial[1]; + } + if (this._type !== "custom") { + if (p === 0) { + this.type = type; + } + else { + this.type = type + p.toString(); + } + } + else { + // extend or shorten the partials array + const fullPartials = new Float32Array(p); + // copy over the partials array + this._partials.forEach((v, i) => fullPartials[i] = v); + this._partials = Array.from(fullPartials); + this.type = this._type; + } + } + /** + * Returns the real and imaginary components based + * on the oscillator type. + * @returns [real: Float32Array, imaginary: Float32Array] + */ + _getRealImaginary(type, phase) { + const fftSize = 4096; + let periodicWaveSize = fftSize / 2; + const real = new Float32Array(periodicWaveSize); + const imag = new Float32Array(periodicWaveSize); + let partialCount = 1; + if (type === "custom") { + partialCount = this._partials.length + 1; + this._partialCount = this._partials.length; + periodicWaveSize = partialCount; + // if the partial count is 0, don't bother doing any computation + if (this._partials.length === 0) { + return [real, imag]; + } + } + else { + const partial = /^(sine|triangle|square|sawtooth)(\d+)$/.exec(type); + if (partial) { + partialCount = parseInt(partial[2], 10) + 1; + this._partialCount = parseInt(partial[2], 10); + type = partial[1]; + partialCount = Math.max(partialCount, 2); + periodicWaveSize = partialCount; + } + else { + this._partialCount = 0; + } + this._partials = []; + } + for (let n = 1; n < periodicWaveSize; ++n) { + const piFactor = 2 / (n * Math.PI); + let b; + switch (type) { + case "sine": + b = (n <= partialCount) ? 1 : 0; + this._partials[n - 1] = b; + break; + case "square": + b = (n & 1) ? 2 * piFactor : 0; + this._partials[n - 1] = b; + break; + case "sawtooth": + b = piFactor * ((n & 1) ? 1 : -1); + this._partials[n - 1] = b; + break; + case "triangle": + if (n & 1) { + b = 2 * (piFactor * piFactor) * ((((n - 1) >> 1) & 1) ? -1 : 1); + } + else { + b = 0; + } + this._partials[n - 1] = b; + break; + case "custom": + b = this._partials[n - 1]; + break; + default: + throw new TypeError("Oscillator: invalid type: " + type); + } + if (b !== 0) { + real[n] = -b * Math.sin(phase * n); + imag[n] = b * Math.cos(phase * n); + } + else { + real[n] = 0; + imag[n] = 0; + } + } + return [real, imag]; + } + /** + * Compute the inverse FFT for a given phase. + */ + _inverseFFT(real, imag, phase) { + let sum = 0; + const len = real.length; + for (let i = 0; i < len; i++) { + sum += real[i] * Math.cos(i * phase) + imag[i] * Math.sin(i * phase); + } + return sum; + } + /** + * Returns the initial value of the oscillator when stopped. + * E.g. a "sine" oscillator with phase = 90 would return an initial value of -1. + */ + getInitialValue() { + const [real, imag] = this._getRealImaginary(this._type, 0); + let maxValue = 0; + const twoPi = Math.PI * 2; + const testPositions = 32; + // check for peaks in 16 places + for (let i = 0; i < testPositions; i++) { + maxValue = Math.max(this._inverseFFT(real, imag, (i / testPositions) * twoPi), maxValue); + } + return clamp(-this._inverseFFT(real, imag, this._phase) / maxValue, -1, 1); + } + get partials() { + return this._partials.slice(0, this.partialCount); + } + set partials(partials) { + this._partials = partials; + this._partialCount = this._partials.length; + if (partials.length) { + this.type = "custom"; + } + } + get phase() { + return this._phase * (180 / Math.PI); + } + set phase(phase) { + this._phase = phase * Math.PI / 180; + // reset the type + this.type = this._type; + } + asArray(length = 1024) { + return __awaiter(this, void 0, void 0, function* () { + return generateWaveform(this, length); + }); + } + dispose() { + super.dispose(); + if (this._oscillator !== null) { + this._oscillator.dispose(); + } + this._wave = undefined; + this.frequency.dispose(); + this.detune.dispose(); + return this; + } +} +/** + * Cache the periodic waves to avoid having to redo computations + */ +Oscillator._periodicWaveCache = []; + +/** + * A signal operator has an input and output and modifies the signal. + */ +class SignalOperator extends ToneAudioNode { + constructor() { + super(Object.assign(optionsFromArguments(SignalOperator.getDefaults(), arguments, ["context"]))); + } + connect(destination, outputNum = 0, inputNum = 0) { + connectSignal(this, destination, outputNum, inputNum); + return this; + } +} + +/** + * Wraps the native Web Audio API + * [WaveShaperNode](http://webaudio.github.io/web-audio-api/#the-waveshapernode-interface). + * + * @example + * const osc = new Tone.Oscillator().toDestination().start(); + * // multiply the output of the signal by 2 using the waveshaper's function + * const timesTwo = new Tone.WaveShaper((val) => val * 2, 2048).connect(osc.frequency); + * const signal = new Tone.Signal(440).connect(timesTwo); + * @category Signal + */ +class WaveShaper extends SignalOperator { + constructor() { + super(Object.assign(optionsFromArguments(WaveShaper.getDefaults(), arguments, ["mapping", "length"]))); + this.name = "WaveShaper"; + /** + * the waveshaper node + */ + this._shaper = this.context.createWaveShaper(); + /** + * The input to the waveshaper node. + */ + this.input = this._shaper; + /** + * The output from the waveshaper node + */ + this.output = this._shaper; + const options = optionsFromArguments(WaveShaper.getDefaults(), arguments, ["mapping", "length"]); + if (isArray(options.mapping) || options.mapping instanceof Float32Array) { + this.curve = Float32Array.from(options.mapping); + } + else if (isFunction(options.mapping)) { + this.setMap(options.mapping, options.length); + } + } + static getDefaults() { + return Object.assign(Signal.getDefaults(), { + length: 1024, + }); + } + /** + * Uses a mapping function to set the value of the curve. + * @param mapping The function used to define the values. + * The mapping function take two arguments: + * the first is the value at the current position + * which goes from -1 to 1 over the number of elements + * in the curve array. The second argument is the array position. + * @example + * const shaper = new Tone.WaveShaper(); + * // map the input signal from [-1, 1] to [0, 10] + * shaper.setMap((val, index) => (val + 1) * 5); + */ + setMap(mapping, length = 1024) { + const array = new Float32Array(length); + for (let i = 0, len = length; i < len; i++) { + const normalized = (i / (len - 1)) * 2 - 1; + array[i] = mapping(normalized, i); + } + this.curve = array; + return this; + } + /** + * The array to set as the waveshaper curve. For linear curves + * array length does not make much difference, but for complex curves + * longer arrays will provide smoother interpolation. + */ + get curve() { + return this._shaper.curve; + } + set curve(mapping) { + this._shaper.curve = mapping; + } + /** + * Specifies what type of oversampling (if any) should be used when + * applying the shaping curve. Can either be "none", "2x" or "4x". + */ + get oversample() { + return this._shaper.oversample; + } + set oversample(oversampling) { + const isOverSampleType = ["none", "2x", "4x"].some(str => str.includes(oversampling)); + assert(isOverSampleType, "oversampling must be either 'none', '2x', or '4x'"); + this._shaper.oversample = oversampling; + } + /** + * Clean up. + */ + dispose() { + super.dispose(); + this._shaper.disconnect(); + return this; + } +} + +/** + * AudioToGain converts an input in AudioRange [-1,1] to NormalRange [0,1]. + * See [[GainToAudio]]. + * @category Signal + */ +class AudioToGain extends SignalOperator { + constructor() { + super(...arguments); + this.name = "AudioToGain"; + /** + * The node which converts the audio ranges + */ + this._norm = new WaveShaper({ + context: this.context, + mapping: x => (x + 1) / 2, + }); + /** + * The AudioRange input [-1, 1] + */ + this.input = this._norm; + /** + * The GainRange output [0, 1] + */ + this.output = this._norm; + } + /** + * clean up + */ + dispose() { + super.dispose(); + this._norm.dispose(); + return this; + } +} + +/** + * Multiply two incoming signals. Or, if a number is given in the constructor, + * multiplies the incoming signal by that value. + * + * @example + * // multiply two signals + * const mult = new Tone.Multiply(); + * const sigA = new Tone.Signal(3); + * const sigB = new Tone.Signal(4); + * sigA.connect(mult); + * sigB.connect(mult.factor); + * // output of mult is 12. + * @example + * // multiply a signal and a number + * const mult = new Tone.Multiply(10); + * const sig = new Tone.Signal(2).connect(mult); + * // the output of mult is 20. + * @category Signal + */ +class Multiply extends Signal { + constructor() { + super(Object.assign(optionsFromArguments(Multiply.getDefaults(), arguments, ["value"]))); + this.name = "Multiply"; + /** + * Indicates if the value should be overridden on connection + */ + this.override = false; + const options = optionsFromArguments(Multiply.getDefaults(), arguments, ["value"]); + this._mult = this.input = this.output = new Gain({ + context: this.context, + minValue: options.minValue, + maxValue: options.maxValue, + }); + this.factor = this._param = this._mult.gain; + this.factor.setValueAtTime(options.value, 0); + } + static getDefaults() { + return Object.assign(Signal.getDefaults(), { + value: 0, + }); + } + dispose() { + super.dispose(); + this._mult.dispose(); + return this; + } +} + +/** + * An amplitude modulated oscillator node. It is implemented with + * two oscillators, one which modulators the other's amplitude + * through a gain node. + * ``` + * +-------------+ +----------+ + * | Carrier Osc +>------> GainNode | + * +-------------+ | +--->Output + * +---> gain | + * +---------------+ | +----------+ + * | Modulator Osc +>---+ + * +---------------+ + * ``` + * @example + * return Tone.Offline(() => { + * const amOsc = new Tone.AMOscillator(30, "sine", "square").toDestination().start(); + * }, 0.2, 1); + * @category Source + */ +class AMOscillator extends Source { + constructor() { + super(optionsFromArguments(AMOscillator.getDefaults(), arguments, ["frequency", "type", "modulationType"])); + this.name = "AMOscillator"; + /** + * convert the -1,1 output to 0,1 + */ + this._modulationScale = new AudioToGain({ context: this.context }); + /** + * the node where the modulation happens + */ + this._modulationNode = new Gain({ + context: this.context, + }); + const options = optionsFromArguments(AMOscillator.getDefaults(), arguments, ["frequency", "type", "modulationType"]); + this._carrier = new Oscillator({ + context: this.context, + detune: options.detune, + frequency: options.frequency, + onstop: () => this.onstop(this), + phase: options.phase, + type: options.type, + }); + this.frequency = this._carrier.frequency, + this.detune = this._carrier.detune; + this._modulator = new Oscillator({ + context: this.context, + phase: options.phase, + type: options.modulationType, + }); + this.harmonicity = new Multiply({ + context: this.context, + units: "positive", + value: options.harmonicity, + }); + // connections + this.frequency.chain(this.harmonicity, this._modulator.frequency); + this._modulator.chain(this._modulationScale, this._modulationNode.gain); + this._carrier.chain(this._modulationNode, this.output); + readOnly(this, ["frequency", "detune", "harmonicity"]); + } + static getDefaults() { + return Object.assign(Oscillator.getDefaults(), { + harmonicity: 1, + modulationType: "square", + }); + } + /** + * start the oscillator + */ + _start(time) { + this._modulator.start(time); + this._carrier.start(time); + } + /** + * stop the oscillator + */ + _stop(time) { + this._modulator.stop(time); + this._carrier.stop(time); + } + _restart(time) { + this._modulator.restart(time); + this._carrier.restart(time); + } + /** + * The type of the carrier oscillator + */ + get type() { + return this._carrier.type; + } + set type(type) { + this._carrier.type = type; + } + get baseType() { + return this._carrier.baseType; + } + set baseType(baseType) { + this._carrier.baseType = baseType; + } + get partialCount() { + return this._carrier.partialCount; + } + set partialCount(partialCount) { + this._carrier.partialCount = partialCount; + } + /** + * The type of the modulator oscillator + */ + get modulationType() { + return this._modulator.type; + } + set modulationType(type) { + this._modulator.type = type; + } + get phase() { + return this._carrier.phase; + } + set phase(phase) { + this._carrier.phase = phase; + this._modulator.phase = phase; + } + get partials() { + return this._carrier.partials; + } + set partials(partials) { + this._carrier.partials = partials; + } + asArray(length = 1024) { + return __awaiter(this, void 0, void 0, function* () { + return generateWaveform(this, length); + }); + } + /** + * Clean up. + */ + dispose() { + super.dispose(); + this.frequency.dispose(); + this.detune.dispose(); + this.harmonicity.dispose(); + this._carrier.dispose(); + this._modulator.dispose(); + this._modulationNode.dispose(); + this._modulationScale.dispose(); + return this; + } +} + +/** + * FMOscillator implements a frequency modulation synthesis + * ``` + * +-------------+ + * +---------------+ +-------------+ | Carrier Osc | + * | Modulator Osc +>-------> GainNode | | +--->Output + * +---------------+ | +>----> frequency | + * +--> gain | +-------------+ + * | +-------------+ + * +-----------------+ | + * | modulationIndex +>--+ + * +-----------------+ + * ``` + * + * @example + * return Tone.Offline(() => { + * const fmOsc = new Tone.FMOscillator({ + * frequency: 200, + * type: "square", + * modulationType: "triangle", + * harmonicity: 0.2, + * modulationIndex: 3 + * }).toDestination().start(); + * }, 0.1, 1); + * @category Source + */ +class FMOscillator extends Source { + constructor() { + super(optionsFromArguments(FMOscillator.getDefaults(), arguments, ["frequency", "type", "modulationType"])); + this.name = "FMOscillator"; + /** + * the node where the modulation happens + */ + this._modulationNode = new Gain({ + context: this.context, + gain: 0, + }); + const options = optionsFromArguments(FMOscillator.getDefaults(), arguments, ["frequency", "type", "modulationType"]); + this._carrier = new Oscillator({ + context: this.context, + detune: options.detune, + frequency: 0, + onstop: () => this.onstop(this), + phase: options.phase, + type: options.type, + }); + this.detune = this._carrier.detune; + this.frequency = new Signal({ + context: this.context, + units: "frequency", + value: options.frequency, + }); + this._modulator = new Oscillator({ + context: this.context, + phase: options.phase, + type: options.modulationType, + }); + this.harmonicity = new Multiply({ + context: this.context, + units: "positive", + value: options.harmonicity, + }); + this.modulationIndex = new Multiply({ + context: this.context, + units: "positive", + value: options.modulationIndex, + }); + // connections + this.frequency.connect(this._carrier.frequency); + this.frequency.chain(this.harmonicity, this._modulator.frequency); + this.frequency.chain(this.modulationIndex, this._modulationNode); + this._modulator.connect(this._modulationNode.gain); + this._modulationNode.connect(this._carrier.frequency); + this._carrier.connect(this.output); + this.detune.connect(this._modulator.detune); + readOnly(this, ["modulationIndex", "frequency", "detune", "harmonicity"]); + } + static getDefaults() { + return Object.assign(Oscillator.getDefaults(), { + harmonicity: 1, + modulationIndex: 2, + modulationType: "square", + }); + } + /** + * start the oscillator + */ + _start(time) { + this._modulator.start(time); + this._carrier.start(time); + } + /** + * stop the oscillator + */ + _stop(time) { + this._modulator.stop(time); + this._carrier.stop(time); + } + _restart(time) { + this._modulator.restart(time); + this._carrier.restart(time); + return this; + } + get type() { + return this._carrier.type; + } + set type(type) { + this._carrier.type = type; + } + get baseType() { + return this._carrier.baseType; + } + set baseType(baseType) { + this._carrier.baseType = baseType; + } + get partialCount() { + return this._carrier.partialCount; + } + set partialCount(partialCount) { + this._carrier.partialCount = partialCount; + } + /** + * The type of the modulator oscillator + */ + get modulationType() { + return this._modulator.type; + } + set modulationType(type) { + this._modulator.type = type; + } + get phase() { + return this._carrier.phase; + } + set phase(phase) { + this._carrier.phase = phase; + this._modulator.phase = phase; + } + get partials() { + return this._carrier.partials; + } + set partials(partials) { + this._carrier.partials = partials; + } + asArray(length = 1024) { + return __awaiter(this, void 0, void 0, function* () { + return generateWaveform(this, length); + }); + } + /** + * Clean up. + */ + dispose() { + super.dispose(); + this.frequency.dispose(); + this.harmonicity.dispose(); + this._carrier.dispose(); + this._modulator.dispose(); + this._modulationNode.dispose(); + this.modulationIndex.dispose(); + return this; + } +} + +/** + * PulseOscillator is an oscillator with control over pulse width, + * also known as the duty cycle. At 50% duty cycle (width = 0) the wave is + * a square wave. + * [Read more](https://wigglewave.wordpress.com/2014/08/16/pulse-waveforms-and-harmonics/). + * ``` + * width = -0.25 width = 0.0 width = 0.25 + * + * +-----+ +-------+ + +-------+ +-+ + * | | | | | | | + * | | | | | | | + * +-+ +-------+ + +-------+ +-----+ + * + * + * width = -0.5 width = 0.5 + * + * +---+ +-------+ +---+ + * | | | | + * | | | | + * +---+ +-------+ +---+ + * + * + * width = -0.75 width = 0.75 + * + * +-+ +-------+ +-----+ + * | | | | + * | | | | + * +-----+ +-------+ +-+ + * ``` + * @example + * return Tone.Offline(() => { + * const pulse = new Tone.PulseOscillator(50, 0.4).toDestination().start(); + * }, 0.1, 1); + * @category Source + */ +class PulseOscillator extends Source { + constructor() { + super(optionsFromArguments(PulseOscillator.getDefaults(), arguments, ["frequency", "width"])); + this.name = "PulseOscillator"; + /** + * gate the width amount + */ + this._widthGate = new Gain({ + context: this.context, + gain: 0, + }); + /** + * Threshold the signal to turn it into a square + */ + this._thresh = new WaveShaper({ + context: this.context, + mapping: val => val <= 0 ? -1 : 1, + }); + const options = optionsFromArguments(PulseOscillator.getDefaults(), arguments, ["frequency", "width"]); + this.width = new Signal({ + context: this.context, + units: "audioRange", + value: options.width, + }); + this._triangle = new Oscillator({ + context: this.context, + detune: options.detune, + frequency: options.frequency, + onstop: () => this.onstop(this), + phase: options.phase, + type: "triangle", + }); + this.frequency = this._triangle.frequency; + this.detune = this._triangle.detune; + // connections + this._triangle.chain(this._thresh, this.output); + this.width.chain(this._widthGate, this._thresh); + readOnly(this, ["width", "frequency", "detune"]); + } + static getDefaults() { + return Object.assign(Source.getDefaults(), { + detune: 0, + frequency: 440, + phase: 0, + type: "pulse", + width: 0.2, + }); + } + /** + * start the oscillator + */ + _start(time) { + time = this.toSeconds(time); + this._triangle.start(time); + this._widthGate.gain.setValueAtTime(1, time); + } + /** + * stop the oscillator + */ + _stop(time) { + time = this.toSeconds(time); + this._triangle.stop(time); + // the width is still connected to the output. + // that needs to be stopped also + this._widthGate.gain.cancelScheduledValues(time); + this._widthGate.gain.setValueAtTime(0, time); + } + _restart(time) { + this._triangle.restart(time); + this._widthGate.gain.cancelScheduledValues(time); + this._widthGate.gain.setValueAtTime(1, time); + } + /** + * The phase of the oscillator in degrees. + */ + get phase() { + return this._triangle.phase; + } + set phase(phase) { + this._triangle.phase = phase; + } + /** + * The type of the oscillator. Always returns "pulse". + */ + get type() { + return "pulse"; + } + /** + * The baseType of the oscillator. Always returns "pulse". + */ + get baseType() { + return "pulse"; + } + /** + * The partials of the waveform. Cannot set partials for this waveform type + */ + get partials() { + return []; + } + /** + * No partials for this waveform type. + */ + get partialCount() { + return 0; + } + /** + * *Internal use* The carrier oscillator type is fed through the + * waveshaper node to create the pulse. Using different carrier oscillators + * changes oscillator's behavior. + */ + set carrierType(type) { + this._triangle.type = type; + } + asArray(length = 1024) { + return __awaiter(this, void 0, void 0, function* () { + return generateWaveform(this, length); + }); + } + /** + * Clean up method. + */ + dispose() { + super.dispose(); + this._triangle.dispose(); + this.width.dispose(); + this._widthGate.dispose(); + this._thresh.dispose(); + return this; + } +} + +/** + * FatOscillator is an array of oscillators with detune spread between the oscillators + * @example + * const fatOsc = new Tone.FatOscillator("Ab3", "sawtooth", 40).toDestination().start(); + * @category Source + */ +class FatOscillator extends Source { + constructor() { + super(optionsFromArguments(FatOscillator.getDefaults(), arguments, ["frequency", "type", "spread"])); + this.name = "FatOscillator"; + /** + * The array of oscillators + */ + this._oscillators = []; + const options = optionsFromArguments(FatOscillator.getDefaults(), arguments, ["frequency", "type", "spread"]); + this.frequency = new Signal({ + context: this.context, + units: "frequency", + value: options.frequency, + }); + this.detune = new Signal({ + context: this.context, + units: "cents", + value: options.detune, + }); + this._spread = options.spread; + this._type = options.type; + this._phase = options.phase; + this._partials = options.partials; + this._partialCount = options.partialCount; + // set the count initially + this.count = options.count; + readOnly(this, ["frequency", "detune"]); + } + static getDefaults() { + return Object.assign(Oscillator.getDefaults(), { + count: 3, + spread: 20, + type: "sawtooth", + }); + } + /** + * start the oscillator + */ + _start(time) { + time = this.toSeconds(time); + this._forEach(osc => osc.start(time)); + } + /** + * stop the oscillator + */ + _stop(time) { + time = this.toSeconds(time); + this._forEach(osc => osc.stop(time)); + } + _restart(time) { + this._forEach(osc => osc.restart(time)); + } + /** + * Iterate over all of the oscillators + */ + _forEach(iterator) { + for (let i = 0; i < this._oscillators.length; i++) { + iterator(this._oscillators[i], i); + } + } + /** + * The type of the oscillator + */ + get type() { + return this._type; + } + set type(type) { + this._type = type; + this._forEach(osc => osc.type = type); + } + /** + * The detune spread between the oscillators. If "count" is + * set to 3 oscillators and the "spread" is set to 40, + * the three oscillators would be detuned like this: [-20, 0, 20] + * for a total detune spread of 40 cents. + * @example + * const fatOsc = new Tone.FatOscillator().toDestination().start(); + * fatOsc.spread = 70; + */ + get spread() { + return this._spread; + } + set spread(spread) { + this._spread = spread; + if (this._oscillators.length > 1) { + const start = -spread / 2; + const step = spread / (this._oscillators.length - 1); + this._forEach((osc, i) => osc.detune.value = start + step * i); + } + } + /** + * The number of detuned oscillators. Must be an integer greater than 1. + * @example + * const fatOsc = new Tone.FatOscillator("C#3", "sawtooth").toDestination().start(); + * // use 4 sawtooth oscillators + * fatOsc.count = 4; + */ + get count() { + return this._oscillators.length; + } + set count(count) { + assertRange(count, 1); + if (this._oscillators.length !== count) { + // dispose the previous oscillators + this._forEach(osc => osc.dispose()); + this._oscillators = []; + for (let i = 0; i < count; i++) { + const osc = new Oscillator({ + context: this.context, + volume: -6 - count * 1.1, + type: this._type, + phase: this._phase + (i / count) * 360, + partialCount: this._partialCount, + onstop: i === 0 ? () => this.onstop(this) : noOp, + }); + if (this.type === "custom") { + osc.partials = this._partials; + } + this.frequency.connect(osc.frequency); + this.detune.connect(osc.detune); + osc.detune.overridden = false; + osc.connect(this.output); + this._oscillators[i] = osc; + } + // set the spread + this.spread = this._spread; + if (this.state === "started") { + this._forEach(osc => osc.start()); + } + } + } + get phase() { + return this._phase; + } + set phase(phase) { + this._phase = phase; + this._forEach((osc, i) => osc.phase = this._phase + (i / this.count) * 360); + } + get baseType() { + return this._oscillators[0].baseType; + } + set baseType(baseType) { + this._forEach(osc => osc.baseType = baseType); + this._type = this._oscillators[0].type; + } + get partials() { + return this._oscillators[0].partials; + } + set partials(partials) { + this._partials = partials; + this._partialCount = this._partials.length; + if (partials.length) { + this._type = "custom"; + this._forEach(osc => osc.partials = partials); + } + } + get partialCount() { + return this._oscillators[0].partialCount; + } + set partialCount(partialCount) { + this._partialCount = partialCount; + this._forEach(osc => osc.partialCount = partialCount); + this._type = this._oscillators[0].type; + } + asArray(length = 1024) { + return __awaiter(this, void 0, void 0, function* () { + return generateWaveform(this, length); + }); + } + /** + * Clean up. + */ + dispose() { + super.dispose(); + this.frequency.dispose(); + this.detune.dispose(); + this._forEach(osc => osc.dispose()); + return this; + } +} + +/** + * PWMOscillator modulates the width of a Tone.PulseOscillator + * at the modulationFrequency. This has the effect of continuously + * changing the timbre of the oscillator by altering the harmonics + * generated. + * @example + * return Tone.Offline(() => { + * const pwm = new Tone.PWMOscillator(60, 0.3).toDestination().start(); + * }, 0.1, 1); + * @category Source + */ +class PWMOscillator extends Source { + constructor() { + super(optionsFromArguments(PWMOscillator.getDefaults(), arguments, ["frequency", "modulationFrequency"])); + this.name = "PWMOscillator"; + this.sourceType = "pwm"; + /** + * Scale the oscillator so it doesn't go silent + * at the extreme values. + */ + this._scale = new Multiply({ + context: this.context, + value: 2, + }); + const options = optionsFromArguments(PWMOscillator.getDefaults(), arguments, ["frequency", "modulationFrequency"]); + this._pulse = new PulseOscillator({ + context: this.context, + frequency: options.modulationFrequency, + }); + // change the pulse oscillator type + this._pulse.carrierType = "sine"; + this.modulationFrequency = this._pulse.frequency; + this._modulator = new Oscillator({ + context: this.context, + detune: options.detune, + frequency: options.frequency, + onstop: () => this.onstop(this), + phase: options.phase, + }); + this.frequency = this._modulator.frequency; + this.detune = this._modulator.detune; + // connections + this._modulator.chain(this._scale, this._pulse.width); + this._pulse.connect(this.output); + readOnly(this, ["modulationFrequency", "frequency", "detune"]); + } + static getDefaults() { + return Object.assign(Source.getDefaults(), { + detune: 0, + frequency: 440, + modulationFrequency: 0.4, + phase: 0, + type: "pwm", + }); + } + /** + * start the oscillator + */ + _start(time) { + time = this.toSeconds(time); + this._modulator.start(time); + this._pulse.start(time); + } + /** + * stop the oscillator + */ + _stop(time) { + time = this.toSeconds(time); + this._modulator.stop(time); + this._pulse.stop(time); + } + /** + * restart the oscillator + */ + _restart(time) { + this._modulator.restart(time); + this._pulse.restart(time); + } + /** + * The type of the oscillator. Always returns "pwm". + */ + get type() { + return "pwm"; + } + /** + * The baseType of the oscillator. Always returns "pwm". + */ + get baseType() { + return "pwm"; + } + /** + * The partials of the waveform. Cannot set partials for this waveform type + */ + get partials() { + return []; + } + /** + * No partials for this waveform type. + */ + get partialCount() { + return 0; + } + /** + * The phase of the oscillator in degrees. + */ + get phase() { + return this._modulator.phase; + } + set phase(phase) { + this._modulator.phase = phase; + } + asArray(length = 1024) { + return __awaiter(this, void 0, void 0, function* () { + return generateWaveform(this, length); + }); + } + /** + * Clean up. + */ + dispose() { + super.dispose(); + this._pulse.dispose(); + this._scale.dispose(); + this._modulator.dispose(); + return this; + } +} + +const OmniOscillatorSourceMap = { + am: AMOscillator, + fat: FatOscillator, + fm: FMOscillator, + oscillator: Oscillator, + pulse: PulseOscillator, + pwm: PWMOscillator, +}; +/** + * OmniOscillator aggregates all of the oscillator types into one. + * @example + * return Tone.Offline(() => { + * const omniOsc = new Tone.OmniOscillator("C#4", "pwm").toDestination().start(); + * }, 0.1, 1); + * @category Source + */ +class OmniOscillator extends Source { + constructor() { + super(optionsFromArguments(OmniOscillator.getDefaults(), arguments, ["frequency", "type"])); + this.name = "OmniOscillator"; + const options = optionsFromArguments(OmniOscillator.getDefaults(), arguments, ["frequency", "type"]); + this.frequency = new Signal({ + context: this.context, + units: "frequency", + value: options.frequency, + }); + this.detune = new Signal({ + context: this.context, + units: "cents", + value: options.detune, + }); + readOnly(this, ["frequency", "detune"]); + // set the options + this.set(options); + } + static getDefaults() { + return Object.assign(Oscillator.getDefaults(), FMOscillator.getDefaults(), AMOscillator.getDefaults(), FatOscillator.getDefaults(), PulseOscillator.getDefaults(), PWMOscillator.getDefaults()); + } + /** + * start the oscillator + */ + _start(time) { + this._oscillator.start(time); + } + /** + * start the oscillator + */ + _stop(time) { + this._oscillator.stop(time); + } + _restart(time) { + this._oscillator.restart(time); + return this; + } + /** + * The type of the oscillator. Can be any of the basic types: sine, square, triangle, sawtooth. Or + * prefix the basic types with "fm", "am", or "fat" to use the FMOscillator, AMOscillator or FatOscillator + * types. The oscillator could also be set to "pwm" or "pulse". All of the parameters of the + * oscillator's class are accessible when the oscillator is set to that type, but throws an error + * when it's not. + * @example + * const omniOsc = new Tone.OmniOscillator().toDestination().start(); + * omniOsc.type = "pwm"; + * // modulationFrequency is parameter which is available + * // only when the type is "pwm". + * omniOsc.modulationFrequency.value = 0.5; + */ + get type() { + let prefix = ""; + if (["am", "fm", "fat"].some(p => this._sourceType === p)) { + prefix = this._sourceType; + } + return prefix + this._oscillator.type; + } + set type(type) { + if (type.substr(0, 2) === "fm") { + this._createNewOscillator("fm"); + this._oscillator = this._oscillator; + this._oscillator.type = type.substr(2); + } + else if (type.substr(0, 2) === "am") { + this._createNewOscillator("am"); + this._oscillator = this._oscillator; + this._oscillator.type = type.substr(2); + } + else if (type.substr(0, 3) === "fat") { + this._createNewOscillator("fat"); + this._oscillator = this._oscillator; + this._oscillator.type = type.substr(3); + } + else if (type === "pwm") { + this._createNewOscillator("pwm"); + this._oscillator = this._oscillator; + } + else if (type === "pulse") { + this._createNewOscillator("pulse"); + } + else { + this._createNewOscillator("oscillator"); + this._oscillator = this._oscillator; + this._oscillator.type = type; + } + } + /** + * The value is an empty array when the type is not "custom". + * This is not available on "pwm" and "pulse" oscillator types. + * See [[Oscillator.partials]] + */ + get partials() { + return this._oscillator.partials; + } + set partials(partials) { + if (!this._getOscType(this._oscillator, "pulse") && !this._getOscType(this._oscillator, "pwm")) { + this._oscillator.partials = partials; + } + } + get partialCount() { + return this._oscillator.partialCount; + } + set partialCount(partialCount) { + if (!this._getOscType(this._oscillator, "pulse") && !this._getOscType(this._oscillator, "pwm")) { + this._oscillator.partialCount = partialCount; + } + } + set(props) { + // make sure the type is set first + if (Reflect.has(props, "type") && props.type) { + this.type = props.type; + } + // then set the rest + super.set(props); + return this; + } + /** + * connect the oscillator to the frequency and detune signals + */ + _createNewOscillator(oscType) { + if (oscType !== this._sourceType) { + this._sourceType = oscType; + const OscConstructor = OmniOscillatorSourceMap[oscType]; + // short delay to avoid clicks on the change + const now = this.now(); + if (this._oscillator) { + const oldOsc = this._oscillator; + oldOsc.stop(now); + // dispose the old one + this.context.setTimeout(() => oldOsc.dispose(), this.blockTime); + } + this._oscillator = new OscConstructor({ + context: this.context, + }); + this.frequency.connect(this._oscillator.frequency); + this.detune.connect(this._oscillator.detune); + this._oscillator.connect(this.output); + this._oscillator.onstop = () => this.onstop(this); + if (this.state === "started") { + this._oscillator.start(now); + } + } + } + get phase() { + return this._oscillator.phase; + } + set phase(phase) { + this._oscillator.phase = phase; + } + /** + * The source type of the oscillator. + * @example + * const omniOsc = new Tone.OmniOscillator(440, "fmsquare"); + * console.log(omniOsc.sourceType); // 'fm' + */ + get sourceType() { + return this._sourceType; + } + set sourceType(sType) { + // the basetype defaults to sine + let baseType = "sine"; + if (this._oscillator.type !== "pwm" && this._oscillator.type !== "pulse") { + baseType = this._oscillator.type; + } + // set the type + if (sType === "fm") { + this.type = "fm" + baseType; + } + else if (sType === "am") { + this.type = "am" + baseType; + } + else if (sType === "fat") { + this.type = "fat" + baseType; + } + else if (sType === "oscillator") { + this.type = baseType; + } + else if (sType === "pulse") { + this.type = "pulse"; + } + else if (sType === "pwm") { + this.type = "pwm"; + } + } + _getOscType(osc, sourceType) { + return osc instanceof OmniOscillatorSourceMap[sourceType]; + } + /** + * The base type of the oscillator. See [[Oscillator.baseType]] + * @example + * const omniOsc = new Tone.OmniOscillator(440, "fmsquare4"); + * console.log(omniOsc.sourceType, omniOsc.baseType, omniOsc.partialCount); + */ + get baseType() { + return this._oscillator.baseType; + } + set baseType(baseType) { + if (!this._getOscType(this._oscillator, "pulse") && + !this._getOscType(this._oscillator, "pwm") && + baseType !== "pulse" && baseType !== "pwm") { + this._oscillator.baseType = baseType; + } + } + /** + * The width of the oscillator when sourceType === "pulse". + * See [[PWMOscillator.width]] + */ + get width() { + if (this._getOscType(this._oscillator, "pulse")) { + return this._oscillator.width; + } + else { + return undefined; + } + } + /** + * The number of detuned oscillators when sourceType === "fat". + * See [[FatOscillator.count]] + */ + get count() { + if (this._getOscType(this._oscillator, "fat")) { + return this._oscillator.count; + } + else { + return undefined; + } + } + set count(count) { + if (this._getOscType(this._oscillator, "fat") && isNumber(count)) { + this._oscillator.count = count; + } + } + /** + * The detune spread between the oscillators when sourceType === "fat". + * See [[FatOscillator.count]] + */ + get spread() { + if (this._getOscType(this._oscillator, "fat")) { + return this._oscillator.spread; + } + else { + return undefined; + } + } + set spread(spread) { + if (this._getOscType(this._oscillator, "fat") && isNumber(spread)) { + this._oscillator.spread = spread; + } + } + /** + * The type of the modulator oscillator. Only if the oscillator is set to "am" or "fm" types. + * See [[AMOscillator]] or [[FMOscillator]] + */ + get modulationType() { + if (this._getOscType(this._oscillator, "fm") || this._getOscType(this._oscillator, "am")) { + return this._oscillator.modulationType; + } + else { + return undefined; + } + } + set modulationType(mType) { + if ((this._getOscType(this._oscillator, "fm") || this._getOscType(this._oscillator, "am")) && isString(mType)) { + this._oscillator.modulationType = mType; + } + } + /** + * The modulation index when the sourceType === "fm" + * See [[FMOscillator]]. + */ + get modulationIndex() { + if (this._getOscType(this._oscillator, "fm")) { + return this._oscillator.modulationIndex; + } + else { + return undefined; + } + } + /** + * Harmonicity is the frequency ratio between the carrier and the modulator oscillators. + * See [[AMOscillator]] or [[FMOscillator]] + */ + get harmonicity() { + if (this._getOscType(this._oscillator, "fm") || this._getOscType(this._oscillator, "am")) { + return this._oscillator.harmonicity; + } + else { + return undefined; + } + } + /** + * The modulationFrequency Signal of the oscillator when sourceType === "pwm" + * see [[PWMOscillator]] + * @min 0.1 + * @max 5 + */ + get modulationFrequency() { + if (this._getOscType(this._oscillator, "pwm")) { + return this._oscillator.modulationFrequency; + } + else { + return undefined; + } + } + asArray(length = 1024) { + return __awaiter(this, void 0, void 0, function* () { + return generateWaveform(this, length); + }); + } + dispose() { + super.dispose(); + this.detune.dispose(); + this.frequency.dispose(); + this._oscillator.dispose(); + return this; + } +} + +/** + * Assert that the number is in the given range. + */ +function range(min, max = Infinity) { + const valueMap = new WeakMap(); + return function (target, propertyKey) { + Reflect.defineProperty(target, propertyKey, { + configurable: true, + enumerable: true, + get: function () { + return valueMap.get(this); + }, + set: function (newValue) { + assertRange(newValue, min, max); + valueMap.set(this, newValue); + } + }); + }; +} +/** + * Convert the time to seconds and assert that the time is in between the two + * values when being set. + */ +function timeRange(min, max = Infinity) { + const valueMap = new WeakMap(); + return function (target, propertyKey) { + Reflect.defineProperty(target, propertyKey, { + configurable: true, + enumerable: true, + get: function () { + return valueMap.get(this); + }, + set: function (newValue) { + assertRange(this.toSeconds(newValue), min, max); + valueMap.set(this, newValue); + } + }); + }; +} + +/** + * Player is an audio file player with start, loop, and stop functions. + * @example + * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/gong_1.mp3").toDestination(); + * // play as soon as the buffer is loaded + * player.autostart = true; + * @category Source + */ +class Player extends Source { + constructor() { + super(optionsFromArguments(Player.getDefaults(), arguments, ["url", "onload"])); + this.name = "Player"; + /** + * All of the active buffer source nodes + */ + this._activeSources = new Set(); + const options = optionsFromArguments(Player.getDefaults(), arguments, ["url", "onload"]); + this._buffer = new ToneAudioBuffer({ + onload: this._onload.bind(this, options.onload), + onerror: options.onerror, + reverse: options.reverse, + url: options.url, + }); + this.autostart = options.autostart; + this._loop = options.loop; + this._loopStart = options.loopStart; + this._loopEnd = options.loopEnd; + this._playbackRate = options.playbackRate; + this.fadeIn = options.fadeIn; + this.fadeOut = options.fadeOut; + } + static getDefaults() { + return Object.assign(Source.getDefaults(), { + autostart: false, + fadeIn: 0, + fadeOut: 0, + loop: false, + loopEnd: 0, + loopStart: 0, + onload: noOp, + onerror: noOp, + playbackRate: 1, + reverse: false, + }); + } + /** + * Load the audio file as an audio buffer. + * Decodes the audio asynchronously and invokes + * the callback once the audio buffer loads. + * Note: this does not need to be called if a url + * was passed in to the constructor. Only use this + * if you want to manually load a new url. + * @param url The url of the buffer to load. Filetype support depends on the browser. + */ + load(url) { + return __awaiter(this, void 0, void 0, function* () { + yield this._buffer.load(url); + this._onload(); + return this; + }); + } + /** + * Internal callback when the buffer is loaded. + */ + _onload(callback = noOp) { + callback(); + if (this.autostart) { + this.start(); + } + } + /** + * Internal callback when the buffer is done playing. + */ + _onSourceEnd(source) { + // invoke the onstop function + this.onstop(this); + // delete the source from the active sources + this._activeSources.delete(source); + if (this._activeSources.size === 0 && !this._synced && + this._state.getValueAtTime(this.now()) === "started") { + // remove the 'implicitEnd' event and replace with an explicit end + this._state.cancel(this.now()); + this._state.setStateAtTime("stopped", this.now()); + } + } + /** + * Play the buffer at the given startTime. Optionally add an offset + * and/or duration which will play the buffer from a position + * within the buffer for the given duration. + * + * @param time When the player should start. + * @param offset The offset from the beginning of the sample to start at. + * @param duration How long the sample should play. If no duration is given, it will default to the full length of the sample (minus any offset) + */ + start(time, offset, duration) { + super.start(time, offset, duration); + return this; + } + /** + * Internal start method + */ + _start(startTime, offset, duration) { + // if it's a loop the default offset is the loopStart point + if (this._loop) { + offset = defaultArg(offset, this._loopStart); + } + else { + // otherwise the default offset is 0 + offset = defaultArg(offset, 0); + } + // compute the values in seconds + const computedOffset = this.toSeconds(offset); + // compute the duration which is either the passed in duration of the buffer.duration - offset + const origDuration = duration; + duration = defaultArg(duration, Math.max(this._buffer.duration - computedOffset, 0)); + let computedDuration = this.toSeconds(duration); + // scale it by the playback rate + computedDuration = computedDuration / this._playbackRate; + // get the start time + startTime = this.toSeconds(startTime); + // make the source + const source = new ToneBufferSource({ + url: this._buffer, + context: this.context, + fadeIn: this.fadeIn, + fadeOut: this.fadeOut, + loop: this._loop, + loopEnd: this._loopEnd, + loopStart: this._loopStart, + onended: this._onSourceEnd.bind(this), + playbackRate: this._playbackRate, + }).connect(this.output); + // set the looping properties + if (!this._loop && !this._synced) { + // cancel the previous stop + this._state.cancel(startTime + computedDuration); + // if it's not looping, set the state change at the end of the sample + this._state.setStateAtTime("stopped", startTime + computedDuration, { + implicitEnd: true, + }); + } + // add it to the array of active sources + this._activeSources.add(source); + // start it + if (this._loop && isUndef(origDuration)) { + source.start(startTime, computedOffset); + } + else { + // subtract the fade out time + source.start(startTime, computedOffset, computedDuration - this.toSeconds(this.fadeOut)); + } + } + /** + * Stop playback. + */ + _stop(time) { + const computedTime = this.toSeconds(time); + this._activeSources.forEach(source => source.stop(computedTime)); + } + /** + * Stop and then restart the player from the beginning (or offset) + * @param time When the player should start. + * @param offset The offset from the beginning of the sample to start at. + * @param duration How long the sample should play. If no duration is given, + * it will default to the full length of the sample (minus any offset) + */ + restart(time, offset, duration) { + super.restart(time, offset, duration); + return this; + } + _restart(time, offset, duration) { + this._stop(time); + this._start(time, offset, duration); + } + /** + * Seek to a specific time in the player's buffer. If the + * source is no longer playing at that time, it will stop. + * @param offset The time to seek to. + * @param when The time for the seek event to occur. + * @example + * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/gurgling_theremin_1.mp3", () => { + * player.start(); + * // seek to the offset in 1 second from now + * player.seek(0.4, "+1"); + * }).toDestination(); + */ + seek(offset, when) { + const computedTime = this.toSeconds(when); + if (this._state.getValueAtTime(computedTime) === "started") { + const computedOffset = this.toSeconds(offset); + // if it's currently playing, stop it + this._stop(computedTime); + // restart it at the given time + this._start(computedTime, computedOffset); + } + return this; + } + /** + * Set the loop start and end. Will only loop if loop is set to true. + * @param loopStart The loop start time + * @param loopEnd The loop end time + * @example + * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/malevoices_aa2_F3.mp3").toDestination(); + * // loop between the given points + * player.setLoopPoints(0.2, 0.3); + * player.loop = true; + * player.autostart = true; + */ + setLoopPoints(loopStart, loopEnd) { + this.loopStart = loopStart; + this.loopEnd = loopEnd; + return this; + } + /** + * If loop is true, the loop will start at this position. + */ + get loopStart() { + return this._loopStart; + } + set loopStart(loopStart) { + this._loopStart = loopStart; + if (this.buffer.loaded) { + assertRange(this.toSeconds(loopStart), 0, this.buffer.duration); + } + // get the current source + this._activeSources.forEach(source => { + source.loopStart = loopStart; + }); + } + /** + * If loop is true, the loop will end at this position. + */ + get loopEnd() { + return this._loopEnd; + } + set loopEnd(loopEnd) { + this._loopEnd = loopEnd; + if (this.buffer.loaded) { + assertRange(this.toSeconds(loopEnd), 0, this.buffer.duration); + } + // get the current source + this._activeSources.forEach(source => { + source.loopEnd = loopEnd; + }); + } + /** + * The audio buffer belonging to the player. + */ + get buffer() { + return this._buffer; + } + set buffer(buffer) { + this._buffer.set(buffer); + } + /** + * If the buffer should loop once it's over. + * @example + * const player = new Tone.Player("https://tonejs.github.io/audio/drum-samples/breakbeat.mp3").toDestination(); + * player.loop = true; + * player.autostart = true; + */ + get loop() { + return this._loop; + } + set loop(loop) { + // if no change, do nothing + if (this._loop === loop) { + return; + } + this._loop = loop; + // set the loop of all of the sources + this._activeSources.forEach(source => { + source.loop = loop; + }); + if (loop) { + // remove the next stopEvent + const stopEvent = this._state.getNextState("stopped", this.now()); + if (stopEvent) { + this._state.cancel(stopEvent.time); + } + } + } + /** + * Normal speed is 1. The pitch will change with the playback rate. + * @example + * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/femalevoices_aa2_A5.mp3").toDestination(); + * // play at 1/4 speed + * player.playbackRate = 0.25; + * // play as soon as the buffer is loaded + * player.autostart = true; + */ + get playbackRate() { + return this._playbackRate; + } + set playbackRate(rate) { + this._playbackRate = rate; + const now = this.now(); + // cancel the stop event since it's at a different time now + const stopEvent = this._state.getNextState("stopped", now); + if (stopEvent && stopEvent.implicitEnd) { + this._state.cancel(stopEvent.time); + this._activeSources.forEach(source => source.cancelStop()); + } + // set all the sources + this._activeSources.forEach(source => { + source.playbackRate.setValueAtTime(rate, now); + }); + } + /** + * If the buffer should be reversed + * @example + * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/chime_1.mp3").toDestination(); + * player.autostart = true; + * player.reverse = true; + */ + get reverse() { + return this._buffer.reverse; + } + set reverse(rev) { + this._buffer.reverse = rev; + } + /** + * If the buffer is loaded + */ + get loaded() { + return this._buffer.loaded; + } + dispose() { + super.dispose(); + // disconnect all of the players + this._activeSources.forEach(source => source.dispose()); + this._activeSources.clear(); + this._buffer.dispose(); + return this; + } +} +__decorate([ + timeRange(0) +], Player.prototype, "fadeIn", void 0); +__decorate([ + timeRange(0) +], Player.prototype, "fadeOut", void 0); + +/** + * Envelope is an [ADSR](https://en.wikipedia.org/wiki/Synthesizer#ADSR_envelope) + * envelope generator. Envelope outputs a signal which + * can be connected to an AudioParam or Tone.Signal. + * ``` + * /\ + * / \ + * / \ + * / \ + * / \___________ + * / \ + * / \ + * / \ + * / \ + * ``` + * @example + * return Tone.Offline(() => { + * const env = new Tone.Envelope({ + * attack: 0.1, + * decay: 0.2, + * sustain: 0.5, + * release: 0.8, + * }).toDestination(); + * env.triggerAttackRelease(0.5); + * }, 1.5, 1); + * @category Component + */ +class Envelope extends ToneAudioNode { + constructor() { + super(optionsFromArguments(Envelope.getDefaults(), arguments, ["attack", "decay", "sustain", "release"])); + this.name = "Envelope"; + /** + * the signal which is output. + */ + this._sig = new Signal({ + context: this.context, + value: 0, + }); + /** + * The output signal of the envelope + */ + this.output = this._sig; + /** + * Envelope has no input + */ + this.input = undefined; + const options = optionsFromArguments(Envelope.getDefaults(), arguments, ["attack", "decay", "sustain", "release"]); + this.attack = options.attack; + this.decay = options.decay; + this.sustain = options.sustain; + this.release = options.release; + this.attackCurve = options.attackCurve; + this.releaseCurve = options.releaseCurve; + this.decayCurve = options.decayCurve; + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + attack: 0.01, + attackCurve: "linear", + decay: 0.1, + decayCurve: "exponential", + release: 1, + releaseCurve: "exponential", + sustain: 0.5, + }); + } + /** + * Read the current value of the envelope. Useful for + * synchronizing visual output to the envelope. + */ + get value() { + return this.getValueAtTime(this.now()); + } + /** + * Get the curve + * @param curve + * @param direction In/Out + * @return The curve name + */ + _getCurve(curve, direction) { + if (isString(curve)) { + return curve; + } + else { + // look up the name in the curves array + let curveName; + for (curveName in EnvelopeCurves) { + if (EnvelopeCurves[curveName][direction] === curve) { + return curveName; + } + } + // return the custom curve + return curve; + } + } + /** + * Assign a the curve to the given name using the direction + * @param name + * @param direction In/Out + * @param curve + */ + _setCurve(name, direction, curve) { + // check if it's a valid type + if (isString(curve) && Reflect.has(EnvelopeCurves, curve)) { + const curveDef = EnvelopeCurves[curve]; + if (isObject(curveDef)) { + if (name !== "_decayCurve") { + this[name] = curveDef[direction]; + } + } + else { + this[name] = curveDef; + } + } + else if (isArray(curve) && name !== "_decayCurve") { + this[name] = curve; + } + else { + throw new Error("Envelope: invalid curve: " + curve); + } + } + /** + * The shape of the attack. + * Can be any of these strings: + * * "linear" + * * "exponential" + * * "sine" + * * "cosine" + * * "bounce" + * * "ripple" + * * "step" + * + * Can also be an array which describes the curve. Values + * in the array are evenly subdivided and linearly + * interpolated over the duration of the attack. + * @example + * return Tone.Offline(() => { + * const env = new Tone.Envelope(0.4).toDestination(); + * env.attackCurve = "linear"; + * env.triggerAttack(); + * }, 1, 1); + */ + get attackCurve() { + return this._getCurve(this._attackCurve, "In"); + } + set attackCurve(curve) { + this._setCurve("_attackCurve", "In", curve); + } + /** + * The shape of the release. See the attack curve types. + * @example + * return Tone.Offline(() => { + * const env = new Tone.Envelope({ + * release: 0.8 + * }).toDestination(); + * env.triggerAttack(); + * // release curve could also be defined by an array + * env.releaseCurve = [1, 0.3, 0.4, 0.2, 0.7, 0]; + * env.triggerRelease(0.2); + * }, 1, 1); + */ + get releaseCurve() { + return this._getCurve(this._releaseCurve, "Out"); + } + set releaseCurve(curve) { + this._setCurve("_releaseCurve", "Out", curve); + } + /** + * The shape of the decay either "linear" or "exponential" + * @example + * return Tone.Offline(() => { + * const env = new Tone.Envelope({ + * sustain: 0.1, + * decay: 0.5 + * }).toDestination(); + * env.decayCurve = "linear"; + * env.triggerAttack(); + * }, 1, 1); + */ + get decayCurve() { + return this._decayCurve; + } + set decayCurve(curve) { + assert(["linear", "exponential"].some(c => c === curve), `Invalid envelope curve: ${curve}`); + this._decayCurve = curve; + } + /** + * Trigger the attack/decay portion of the ADSR envelope. + * @param time When the attack should start. + * @param velocity The velocity of the envelope scales the vales. + * number between 0-1 + * @example + * const env = new Tone.AmplitudeEnvelope().toDestination(); + * const osc = new Tone.Oscillator().connect(env).start(); + * // trigger the attack 0.5 seconds from now with a velocity of 0.2 + * env.triggerAttack("+0.5", 0.2); + */ + triggerAttack(time, velocity = 1) { + this.log("triggerAttack", time, velocity); + time = this.toSeconds(time); + const originalAttack = this.toSeconds(this.attack); + let attack = originalAttack; + const decay = this.toSeconds(this.decay); + // check if it's not a complete attack + const currentValue = this.getValueAtTime(time); + if (currentValue > 0) { + // subtract the current value from the attack time + const attackRate = 1 / attack; + const remainingDistance = 1 - currentValue; + // the attack is now the remaining time + attack = remainingDistance / attackRate; + } + // attack + if (attack < this.sampleTime) { + this._sig.cancelScheduledValues(time); + // case where the attack time is 0 should set instantly + this._sig.setValueAtTime(velocity, time); + } + else if (this._attackCurve === "linear") { + this._sig.linearRampTo(velocity, attack, time); + } + else if (this._attackCurve === "exponential") { + this._sig.targetRampTo(velocity, attack, time); + } + else { + this._sig.cancelAndHoldAtTime(time); + let curve = this._attackCurve; + // find the starting position in the curve + for (let i = 1; i < curve.length; i++) { + // the starting index is between the two values + if (curve[i - 1] <= currentValue && currentValue <= curve[i]) { + curve = this._attackCurve.slice(i); + // the first index is the current value + curve[0] = currentValue; + break; + } + } + this._sig.setValueCurveAtTime(curve, time, attack, velocity); + } + // decay + if (decay && this.sustain < 1) { + const decayValue = velocity * this.sustain; + const decayStart = time + attack; + this.log("decay", decayStart); + if (this._decayCurve === "linear") { + this._sig.linearRampToValueAtTime(decayValue, decay + decayStart); + } + else { + this._sig.exponentialApproachValueAtTime(decayValue, decayStart, decay); + } + } + return this; + } + /** + * Triggers the release of the envelope. + * @param time When the release portion of the envelope should start. + * @example + * const env = new Tone.AmplitudeEnvelope().toDestination(); + * const osc = new Tone.Oscillator({ + * type: "sawtooth" + * }).connect(env).start(); + * env.triggerAttack(); + * // trigger the release half a second after the attack + * env.triggerRelease("+0.5"); + */ + triggerRelease(time) { + this.log("triggerRelease", time); + time = this.toSeconds(time); + const currentValue = this.getValueAtTime(time); + if (currentValue > 0) { + const release = this.toSeconds(this.release); + if (release < this.sampleTime) { + this._sig.setValueAtTime(0, time); + } + else if (this._releaseCurve === "linear") { + this._sig.linearRampTo(0, release, time); + } + else if (this._releaseCurve === "exponential") { + this._sig.targetRampTo(0, release, time); + } + else { + assert(isArray(this._releaseCurve), "releaseCurve must be either 'linear', 'exponential' or an array"); + this._sig.cancelAndHoldAtTime(time); + this._sig.setValueCurveAtTime(this._releaseCurve, time, release, currentValue); + } + } + return this; + } + /** + * Get the scheduled value at the given time. This will + * return the unconverted (raw) value. + * @example + * const env = new Tone.Envelope(0.5, 1, 0.4, 2); + * env.triggerAttackRelease(2); + * setInterval(() => console.log(env.getValueAtTime(Tone.now())), 100); + */ + getValueAtTime(time) { + return this._sig.getValueAtTime(time); + } + /** + * triggerAttackRelease is shorthand for triggerAttack, then waiting + * some duration, then triggerRelease. + * @param duration The duration of the sustain. + * @param time When the attack should be triggered. + * @param velocity The velocity of the envelope. + * @example + * const env = new Tone.AmplitudeEnvelope().toDestination(); + * const osc = new Tone.Oscillator().connect(env).start(); + * // trigger the release 0.5 seconds after the attack + * env.triggerAttackRelease(0.5); + */ + triggerAttackRelease(duration, time, velocity = 1) { + time = this.toSeconds(time); + this.triggerAttack(time, velocity); + this.triggerRelease(time + this.toSeconds(duration)); + return this; + } + /** + * Cancels all scheduled envelope changes after the given time. + */ + cancel(after) { + this._sig.cancelScheduledValues(this.toSeconds(after)); + return this; + } + /** + * Connect the envelope to a destination node. + */ + connect(destination, outputNumber = 0, inputNumber = 0) { + connectSignal(this, destination, outputNumber, inputNumber); + return this; + } + /** + * Render the envelope curve to an array of the given length. + * Good for visualizing the envelope curve. Rescales the duration of the + * envelope to fit the length. + */ + asArray(length = 1024) { + return __awaiter(this, void 0, void 0, function* () { + const duration = length / this.context.sampleRate; + const context = new OfflineContext(1, duration, this.context.sampleRate); + // normalize the ADSR for the given duration with 20% sustain time + const attackPortion = this.toSeconds(this.attack) + this.toSeconds(this.decay); + const envelopeDuration = attackPortion + this.toSeconds(this.release); + const sustainTime = envelopeDuration * 0.1; + const totalDuration = envelopeDuration + sustainTime; + // @ts-ignore + const clone = new this.constructor(Object.assign(this.get(), { + attack: duration * this.toSeconds(this.attack) / totalDuration, + decay: duration * this.toSeconds(this.decay) / totalDuration, + release: duration * this.toSeconds(this.release) / totalDuration, + context + })); + clone._sig.toDestination(); + clone.triggerAttackRelease(duration * (attackPortion + sustainTime) / totalDuration, 0); + const buffer = yield context.render(); + return buffer.getChannelData(0); + }); + } + dispose() { + super.dispose(); + this._sig.dispose(); + return this; + } +} +__decorate([ + timeRange(0) +], Envelope.prototype, "attack", void 0); +__decorate([ + timeRange(0) +], Envelope.prototype, "decay", void 0); +__decorate([ + range(0, 1) +], Envelope.prototype, "sustain", void 0); +__decorate([ + timeRange(0) +], Envelope.prototype, "release", void 0); +/** + * Generate some complex envelope curves. + */ +const EnvelopeCurves = (() => { + const curveLen = 128; + let i; + let k; + // cosine curve + const cosineCurve = []; + for (i = 0; i < curveLen; i++) { + cosineCurve[i] = Math.sin((i / (curveLen - 1)) * (Math.PI / 2)); + } + // ripple curve + const rippleCurve = []; + const rippleCurveFreq = 6.4; + for (i = 0; i < curveLen - 1; i++) { + k = (i / (curveLen - 1)); + const sineWave = Math.sin(k * (Math.PI * 2) * rippleCurveFreq - Math.PI / 2) + 1; + rippleCurve[i] = sineWave / 10 + k * 0.83; + } + rippleCurve[curveLen - 1] = 1; + // stairs curve + const stairsCurve = []; + const steps = 5; + for (i = 0; i < curveLen; i++) { + stairsCurve[i] = Math.ceil((i / (curveLen - 1)) * steps) / steps; + } + // in-out easing curve + const sineCurve = []; + for (i = 0; i < curveLen; i++) { + k = i / (curveLen - 1); + sineCurve[i] = 0.5 * (1 - Math.cos(Math.PI * k)); + } + // a bounce curve + const bounceCurve = []; + for (i = 0; i < curveLen; i++) { + k = i / (curveLen - 1); + const freq = Math.pow(k, 3) * 4 + 0.2; + const val = Math.cos(freq * Math.PI * 2 * k); + bounceCurve[i] = Math.abs(val * (1 - k)); + } + /** + * Invert a value curve to make it work for the release + */ + function invertCurve(curve) { + const out = new Array(curve.length); + for (let j = 0; j < curve.length; j++) { + out[j] = 1 - curve[j]; + } + return out; + } + /** + * reverse the curve + */ + function reverseCurve(curve) { + return curve.slice(0).reverse(); + } + /** + * attack and release curve arrays + */ + return { + bounce: { + In: invertCurve(bounceCurve), + Out: bounceCurve, + }, + cosine: { + In: cosineCurve, + Out: reverseCurve(cosineCurve), + }, + exponential: "exponential", + linear: "linear", + ripple: { + In: rippleCurve, + Out: invertCurve(rippleCurve), + }, + sine: { + In: sineCurve, + Out: invertCurve(sineCurve), + }, + step: { + In: stairsCurve, + Out: invertCurve(stairsCurve), + }, + }; +})(); + +/** + * Base-class for all instruments + */ +class Instrument extends ToneAudioNode { + constructor() { + super(optionsFromArguments(Instrument.getDefaults(), arguments)); + /** + * Keep track of all events scheduled to the transport + * when the instrument is 'synced' + */ + this._scheduledEvents = []; + /** + * If the instrument is currently synced + */ + this._synced = false; + this._original_triggerAttack = this.triggerAttack; + this._original_triggerRelease = this.triggerRelease; + const options = optionsFromArguments(Instrument.getDefaults(), arguments); + this._volume = this.output = new Volume({ + context: this.context, + volume: options.volume, + }); + this.volume = this._volume.volume; + readOnly(this, "volume"); + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + volume: 0, + }); + } + /** + * Sync the instrument to the Transport. All subsequent calls of + * [[triggerAttack]] and [[triggerRelease]] will be scheduled along the transport. + * @example + * const fmSynth = new Tone.FMSynth().toDestination(); + * fmSynth.volume.value = -6; + * fmSynth.sync(); + * // schedule 3 notes when the transport first starts + * fmSynth.triggerAttackRelease("C4", "8n", 0); + * fmSynth.triggerAttackRelease("E4", "8n", "8n"); + * fmSynth.triggerAttackRelease("G4", "8n", "4n"); + * // start the transport to hear the notes + * Tone.Transport.start(); + */ + sync() { + if (this._syncState()) { + this._syncMethod("triggerAttack", 1); + this._syncMethod("triggerRelease", 0); + } + return this; + } + /** + * set _sync + */ + _syncState() { + let changed = false; + if (!this._synced) { + this._synced = true; + changed = true; + } + return changed; + } + /** + * Wrap the given method so that it can be synchronized + * @param method Which method to wrap and sync + * @param timePosition What position the time argument appears in + */ + _syncMethod(method, timePosition) { + const originalMethod = this["_original_" + method] = this[method]; + this[method] = (...args) => { + const time = args[timePosition]; + const id = this.context.transport.schedule((t) => { + args[timePosition] = t; + originalMethod.apply(this, args); + }, time); + this._scheduledEvents.push(id); + }; + } + /** + * Unsync the instrument from the Transport + */ + unsync() { + this._scheduledEvents.forEach(id => this.context.transport.clear(id)); + this._scheduledEvents = []; + if (this._synced) { + this._synced = false; + this.triggerAttack = this._original_triggerAttack; + this.triggerRelease = this._original_triggerRelease; + } + return this; + } + /** + * Trigger the attack and then the release after the duration. + * @param note The note to trigger. + * @param duration How long the note should be held for before + * triggering the release. This value must be greater than 0. + * @param time When the note should be triggered. + * @param velocity The velocity the note should be triggered at. + * @example + * const synth = new Tone.Synth().toDestination(); + * // trigger "C4" for the duration of an 8th note + * synth.triggerAttackRelease("C4", "8n"); + */ + triggerAttackRelease(note, duration, time, velocity) { + const computedTime = this.toSeconds(time); + const computedDuration = this.toSeconds(duration); + this.triggerAttack(note, computedTime, velocity); + this.triggerRelease(computedTime + computedDuration); + return this; + } + /** + * clean up + * @returns {Instrument} this + */ + dispose() { + super.dispose(); + this._volume.dispose(); + this.unsync(); + this._scheduledEvents = []; + return this; + } +} + +/** + * Abstract base class for other monophonic instruments to extend. + */ +class Monophonic extends Instrument { + constructor() { + super(optionsFromArguments(Monophonic.getDefaults(), arguments)); + const options = optionsFromArguments(Monophonic.getDefaults(), arguments); + this.portamento = options.portamento; + this.onsilence = options.onsilence; + } + static getDefaults() { + return Object.assign(Instrument.getDefaults(), { + detune: 0, + onsilence: noOp, + portamento: 0, + }); + } + /** + * Trigger the attack of the note optionally with a given velocity. + * @param note The note to trigger. + * @param time When the note should start. + * @param velocity The velocity scaler determines how "loud" the note will be triggered. + * @example + * const synth = new Tone.Synth().toDestination(); + * // trigger the note a half second from now at half velocity + * synth.triggerAttack("C4", "+0.5", 0.5); + */ + triggerAttack(note, time, velocity = 1) { + this.log("triggerAttack", note, time, velocity); + const seconds = this.toSeconds(time); + this._triggerEnvelopeAttack(seconds, velocity); + this.setNote(note, seconds); + return this; + } + /** + * Trigger the release portion of the envelope + * @param time If no time is given, the release happens immediatly + * @example + * const synth = new Tone.Synth().toDestination(); + * synth.triggerAttack("C4"); + * // trigger the release a second from now + * synth.triggerRelease("+1"); + */ + triggerRelease(time) { + this.log("triggerRelease", time); + const seconds = this.toSeconds(time); + this._triggerEnvelopeRelease(seconds); + return this; + } + /** + * Set the note at the given time. If no time is given, the note + * will set immediately. + * @param note The note to change to. + * @param time The time when the note should be set. + * @example + * const synth = new Tone.Synth().toDestination(); + * synth.triggerAttack("C4"); + * // change to F#6 in one quarter note from now. + * synth.setNote("F#6", "+4n"); + */ + setNote(note, time) { + const computedTime = this.toSeconds(time); + const computedFrequency = note instanceof FrequencyClass ? note.toFrequency() : note; + if (this.portamento > 0 && this.getLevelAtTime(computedTime) > 0.05) { + const portTime = this.toSeconds(this.portamento); + this.frequency.exponentialRampTo(computedFrequency, portTime, computedTime); + } + else { + this.frequency.setValueAtTime(computedFrequency, computedTime); + } + return this; + } +} +__decorate([ + timeRange(0) +], Monophonic.prototype, "portamento", void 0); + +/** + * AmplitudeEnvelope is a Tone.Envelope connected to a gain node. + * Unlike Tone.Envelope, which outputs the envelope's value, AmplitudeEnvelope accepts + * an audio signal as the input and will apply the envelope to the amplitude + * of the signal. + * Read more about ADSR Envelopes on [Wikipedia](https://en.wikipedia.org/wiki/Synthesizer#ADSR_envelope). + * + * @example + * return Tone.Offline(() => { + * const ampEnv = new Tone.AmplitudeEnvelope({ + * attack: 0.1, + * decay: 0.2, + * sustain: 1.0, + * release: 0.8 + * }).toDestination(); + * // create an oscillator and connect it + * const osc = new Tone.Oscillator().connect(ampEnv).start(); + * // trigger the envelopes attack and release "8t" apart + * ampEnv.triggerAttackRelease("8t"); + * }, 1.5, 1); + * @category Component + */ +class AmplitudeEnvelope extends Envelope { + constructor() { + super(optionsFromArguments(AmplitudeEnvelope.getDefaults(), arguments, ["attack", "decay", "sustain", "release"])); + this.name = "AmplitudeEnvelope"; + this._gainNode = new Gain({ + context: this.context, + gain: 0, + }); + this.output = this._gainNode; + this.input = this._gainNode; + this._sig.connect(this._gainNode.gain); + this.output = this._gainNode; + this.input = this._gainNode; + } + /** + * Clean up + */ + dispose() { + super.dispose(); + this._gainNode.dispose(); + return this; + } +} + +/** + * Synth is composed simply of a [[OmniOscillator]] routed through an [[AmplitudeEnvelope]]. + * ``` + * +----------------+ +-------------------+ + * | OmniOscillator +>--> AmplitudeEnvelope +>--> Output + * +----------------+ +-------------------+ + * ``` + * @example + * const synth = new Tone.Synth().toDestination(); + * synth.triggerAttackRelease("C4", "8n"); + * @category Instrument + */ +class Synth extends Monophonic { + constructor() { + super(optionsFromArguments(Synth.getDefaults(), arguments)); + this.name = "Synth"; + const options = optionsFromArguments(Synth.getDefaults(), arguments); + this.oscillator = new OmniOscillator(Object.assign({ + context: this.context, + detune: options.detune, + onstop: () => this.onsilence(this), + }, options.oscillator)); + this.frequency = this.oscillator.frequency; + this.detune = this.oscillator.detune; + this.envelope = new AmplitudeEnvelope(Object.assign({ + context: this.context, + }, options.envelope)); + // connect the oscillators to the output + this.oscillator.chain(this.envelope, this.output); + readOnly(this, ["oscillator", "frequency", "detune", "envelope"]); + } + static getDefaults() { + return Object.assign(Monophonic.getDefaults(), { + envelope: Object.assign(omitFromObject(Envelope.getDefaults(), Object.keys(ToneAudioNode.getDefaults())), { + attack: 0.005, + decay: 0.1, + release: 1, + sustain: 0.3, + }), + oscillator: Object.assign(omitFromObject(OmniOscillator.getDefaults(), [...Object.keys(Source.getDefaults()), "frequency", "detune"]), { + type: "triangle", + }), + }); + } + /** + * start the attack portion of the envelope + * @param time the time the attack should start + * @param velocity the velocity of the note (0-1) + */ + _triggerEnvelopeAttack(time, velocity) { + // the envelopes + this.envelope.triggerAttack(time, velocity); + this.oscillator.start(time); + // if there is no release portion, stop the oscillator + if (this.envelope.sustain === 0) { + const computedAttack = this.toSeconds(this.envelope.attack); + const computedDecay = this.toSeconds(this.envelope.decay); + this.oscillator.stop(time + computedAttack + computedDecay); + } + } + /** + * start the release portion of the envelope + * @param time the time the release should start + */ + _triggerEnvelopeRelease(time) { + this.envelope.triggerRelease(time); + this.oscillator.stop(time + this.toSeconds(this.envelope.release)); + } + getLevelAtTime(time) { + time = this.toSeconds(time); + return this.envelope.getValueAtTime(time); + } + /** + * clean up + */ + dispose() { + super.dispose(); + this.oscillator.dispose(); + this.envelope.dispose(); + return this; + } +} + +/** + * MembraneSynth makes kick and tom sounds using a single oscillator + * with an amplitude envelope and frequency ramp. A Tone.OmniOscillator + * is routed through a Tone.AmplitudeEnvelope to the output. The drum + * quality of the sound comes from the frequency envelope applied + * during MembraneSynth.triggerAttack(note). The frequency envelope + * starts at note * .octaves and ramps to note + * over the duration of .pitchDecay. + * @example + * const synth = new Tone.MembraneSynth().toDestination(); + * synth.triggerAttackRelease("C2", "8n"); + * @category Instrument + */ +class MembraneSynth extends Synth { + constructor() { + super(optionsFromArguments(MembraneSynth.getDefaults(), arguments)); + this.name = "MembraneSynth"; + /** + * Portamento is ignored in this synth. use pitch decay instead. + */ + this.portamento = 0; + const options = optionsFromArguments(MembraneSynth.getDefaults(), arguments); + this.pitchDecay = options.pitchDecay; + this.octaves = options.octaves; + readOnly(this, ["oscillator", "envelope"]); + } + static getDefaults() { + return deepMerge(Monophonic.getDefaults(), Synth.getDefaults(), { + envelope: { + attack: 0.001, + attackCurve: "exponential", + decay: 0.4, + release: 1.4, + sustain: 0.01, + }, + octaves: 10, + oscillator: { + type: "sine", + }, + pitchDecay: 0.05, + }); + } + setNote(note, time) { + const seconds = this.toSeconds(time); + const hertz = this.toFrequency(note instanceof FrequencyClass ? note.toFrequency() : note); + const maxNote = hertz * this.octaves; + this.oscillator.frequency.setValueAtTime(maxNote, seconds); + this.oscillator.frequency.exponentialRampToValueAtTime(hertz, seconds + this.toSeconds(this.pitchDecay)); + return this; + } + dispose() { + super.dispose(); + return this; + } +} +__decorate([ + range(0) +], MembraneSynth.prototype, "octaves", void 0); +__decorate([ + timeRange(0) +], MembraneSynth.prototype, "pitchDecay", void 0); + +/** + * All of the classes or functions which are loaded into the AudioWorkletGlobalScope + */ +const workletContext = new Set(); +/** + * Add a class to the AudioWorkletGlobalScope + */ +function addToWorklet(classOrFunction) { + workletContext.add(classOrFunction); +} +/** + * Register a processor in the AudioWorkletGlobalScope with the given name + */ +function registerProcessor(name, classDesc) { + const processor = /* javascript */ `registerProcessor("${name}", ${classDesc})`; + workletContext.add(processor); +} +/** + * Get all of the modules which have been registered to the AudioWorkletGlobalScope + */ +function getWorkletGlobalScope() { + return Array.from(workletContext).join("\n"); +} + +const toneAudioWorkletProcessor = /* javascript */ ` + /** + * The base AudioWorkletProcessor for use in Tone.js. Works with the [[ToneAudioWorklet]]. + */ + class ToneAudioWorkletProcessor extends AudioWorkletProcessor { + + constructor(options) { + + super(options); + /** + * If the processor was disposed or not. Keep alive until it's disposed. + */ + this.disposed = false; + /** + * The number of samples in the processing block + */ + this.blockSize = 128; + /** + * the sample rate + */ + this.sampleRate = sampleRate; + + this.port.onmessage = (event) => { + // when it receives a dispose + if (event.data === "dispose") { + this.disposed = true; + } + }; + } + } +`; +addToWorklet(toneAudioWorkletProcessor); + +const singleIOProcess = /* javascript */ ` + /** + * Abstract class for a single input/output processor. + * has a 'generate' function which processes one sample at a time + */ + class SingleIOProcessor extends ToneAudioWorkletProcessor { + + constructor(options) { + super(Object.assign(options, { + numberOfInputs: 1, + numberOfOutputs: 1 + })); + /** + * Holds the name of the parameter and a single value of that + * parameter at the current sample + * @type { [name: string]: number } + */ + this.params = {} + } + + /** + * Generate an output sample from the input sample and parameters + * @abstract + * @param input number + * @param channel number + * @param parameters { [name: string]: number } + * @returns number + */ + generate(){} + + /** + * Update the private params object with the + * values of the parameters at the given index + * @param parameters { [name: string]: Float32Array }, + * @param index number + */ + updateParams(parameters, index) { + for (const paramName in parameters) { + const param = parameters[paramName]; + if (param.length > 1) { + this.params[paramName] = parameters[paramName][index]; + } else { + this.params[paramName] = parameters[paramName][0]; + } + } + } + + /** + * Process a single frame of the audio + * @param inputs Float32Array[][] + * @param outputs Float32Array[][] + */ + process(inputs, outputs, parameters) { + const input = inputs[0]; + const output = outputs[0]; + // get the parameter values + const channelCount = Math.max(input && input.length || 0, output.length); + for (let sample = 0; sample < this.blockSize; sample++) { + this.updateParams(parameters, sample); + for (let channel = 0; channel < channelCount; channel++) { + const inputSample = input && input.length ? input[channel][sample] : 0; + output[channel][sample] = this.generate(inputSample, channel, this.params); + } + } + return !this.disposed; + } + }; +`; +addToWorklet(singleIOProcess); + +const delayLine = /* javascript */ ` + /** + * A multichannel buffer for use within an AudioWorkletProcessor as a delay line + */ + class DelayLine { + + constructor(size, channels) { + this.buffer = []; + this.writeHead = [] + this.size = size; + + // create the empty channels + for (let i = 0; i < channels; i++) { + this.buffer[i] = new Float32Array(this.size); + this.writeHead[i] = 0; + } + } + + /** + * Push a value onto the end + * @param channel number + * @param value number + */ + push(channel, value) { + this.writeHead[channel] += 1; + if (this.writeHead[channel] > this.size) { + this.writeHead[channel] = 0; + } + this.buffer[channel][this.writeHead[channel]] = value; + } + + /** + * Get the recorded value of the channel given the delay + * @param channel number + * @param delay number delay samples + */ + get(channel, delay) { + let readHead = this.writeHead[channel] - Math.floor(delay); + if (readHead < 0) { + readHead += this.size; + } + return this.buffer[channel][readHead]; + } + } +`; +addToWorklet(delayLine); + +const workletName = "feedback-comb-filter"; +const feedbackCombFilter = /* javascript */ ` + class FeedbackCombFilterWorklet extends SingleIOProcessor { + + constructor(options) { + super(options); + this.delayLine = new DelayLine(this.sampleRate, options.channelCount || 2); + } + + static get parameterDescriptors() { + return [{ + name: "delayTime", + defaultValue: 0.1, + minValue: 0, + maxValue: 1, + automationRate: "k-rate" + }, { + name: "feedback", + defaultValue: 0.5, + minValue: 0, + maxValue: 0.9999, + automationRate: "k-rate" + }]; + } + + generate(input, channel, parameters) { + const delayedSample = this.delayLine.get(channel, parameters.delayTime * this.sampleRate); + this.delayLine.push(channel, input + delayedSample * parameters.feedback); + return delayedSample; + } + } +`; +registerProcessor(workletName, feedbackCombFilter); + +/** + * Pass in an object which maps the note's pitch or midi value to the url, + * then you can trigger the attack and release of that note like other instruments. + * By automatically repitching the samples, it is possible to play pitches which + * were not explicitly included which can save loading time. + * + * For sample or buffer playback where repitching is not necessary, + * use [[Player]]. + * @example + * const sampler = new Tone.Sampler({ + * urls: { + * A1: "A1.mp3", + * A2: "A2.mp3", + * }, + * baseUrl: "https://tonejs.github.io/audio/casio/", + * onload: () => { + * sampler.triggerAttackRelease(["C1", "E1", "G1", "B1"], 0.5); + * } + * }).toDestination(); + * @category Instrument + */ +class Sampler extends Instrument { + constructor() { + super(optionsFromArguments(Sampler.getDefaults(), arguments, ["urls", "onload", "baseUrl"], "urls")); + this.name = "Sampler"; + /** + * The object of all currently playing BufferSources + */ + this._activeSources = new Map(); + const options = optionsFromArguments(Sampler.getDefaults(), arguments, ["urls", "onload", "baseUrl"], "urls"); + const urlMap = {}; + Object.keys(options.urls).forEach((note) => { + const noteNumber = parseInt(note, 10); + assert(isNote(note) + || (isNumber(noteNumber) && isFinite(noteNumber)), `url key is neither a note or midi pitch: ${note}`); + if (isNote(note)) { + // convert the note name to MIDI + const mid = new FrequencyClass(this.context, note).toMidi(); + urlMap[mid] = options.urls[note]; + } + else if (isNumber(noteNumber) && isFinite(noteNumber)) { + // otherwise if it's numbers assume it's midi + urlMap[noteNumber] = options.urls[noteNumber]; + } + }); + this._buffers = new ToneAudioBuffers({ + urls: urlMap, + onload: options.onload, + baseUrl: options.baseUrl, + onerror: options.onerror, + }); + this.attack = options.attack; + this.release = options.release; + this.curve = options.curve; + // invoke the callback if it's already loaded + if (this._buffers.loaded) { + // invoke onload deferred + Promise.resolve().then(options.onload); + } + } + static getDefaults() { + return Object.assign(Instrument.getDefaults(), { + attack: 0, + baseUrl: "", + curve: "exponential", + onload: noOp, + onerror: noOp, + release: 0.1, + urls: {}, + }); + } + /** + * Returns the difference in steps between the given midi note at the closets sample. + */ + _findClosest(midi) { + // searches within 8 octaves of the given midi note + const MAX_INTERVAL = 96; + let interval = 0; + while (interval < MAX_INTERVAL) { + // check above and below + if (this._buffers.has(midi + interval)) { + return -interval; + } + else if (this._buffers.has(midi - interval)) { + return interval; + } + interval++; + } + throw new Error(`No available buffers for note: ${midi}`); + } + /** + * @param notes The note to play, or an array of notes. + * @param time When to play the note + * @param velocity The velocity to play the sample back. + */ + triggerAttack(notes, time, velocity = 1) { + this.log("triggerAttack", notes, time, velocity); + if (!Array.isArray(notes)) { + notes = [notes]; + } + notes.forEach(note => { + const midiFloat = ftomf(new FrequencyClass(this.context, note).toFrequency()); + const midi = Math.round(midiFloat); + const remainder = midiFloat - midi; + // find the closest note pitch + const difference = this._findClosest(midi); + const closestNote = midi - difference; + const buffer = this._buffers.get(closestNote); + const playbackRate = intervalToFrequencyRatio(difference + remainder); + // play that note + const source = new ToneBufferSource({ + url: buffer, + context: this.context, + curve: this.curve, + fadeIn: this.attack, + fadeOut: this.release, + playbackRate, + }).connect(this.output); + source.start(time, 0, buffer.duration / playbackRate, velocity); + // add it to the active sources + if (!isArray(this._activeSources.get(midi))) { + this._activeSources.set(midi, []); + } + this._activeSources.get(midi).push(source); + // remove it when it's done + source.onended = () => { + if (this._activeSources && this._activeSources.has(midi)) { + const sources = this._activeSources.get(midi); + const index = sources.indexOf(source); + if (index !== -1) { + sources.splice(index, 1); + } + } + }; + }); + return this; + } + /** + * @param notes The note to release, or an array of notes. + * @param time When to release the note. + */ + triggerRelease(notes, time) { + this.log("triggerRelease", notes, time); + if (!Array.isArray(notes)) { + notes = [notes]; + } + notes.forEach(note => { + const midi = new FrequencyClass(this.context, note).toMidi(); + // find the note + if (this._activeSources.has(midi) && this._activeSources.get(midi).length) { + const sources = this._activeSources.get(midi); + time = this.toSeconds(time); + sources.forEach(source => { + source.stop(time); + }); + this._activeSources.set(midi, []); + } + }); + return this; + } + /** + * Release all currently active notes. + * @param time When to release the notes. + */ + releaseAll(time) { + const computedTime = this.toSeconds(time); + this._activeSources.forEach(sources => { + while (sources.length) { + const source = sources.shift(); + source.stop(computedTime); + } + }); + return this; + } + sync() { + if (this._syncState()) { + this._syncMethod("triggerAttack", 1); + this._syncMethod("triggerRelease", 1); + } + return this; + } + /** + * Invoke the attack phase, then after the duration, invoke the release. + * @param notes The note to play and release, or an array of notes. + * @param duration The time the note should be held + * @param time When to start the attack + * @param velocity The velocity of the attack + */ + triggerAttackRelease(notes, duration, time, velocity = 1) { + const computedTime = this.toSeconds(time); + this.triggerAttack(notes, computedTime, velocity); + if (isArray(duration)) { + assert(isArray(notes), "notes must be an array when duration is array"); + notes.forEach((note, index) => { + const d = duration[Math.min(index, duration.length - 1)]; + this.triggerRelease(note, computedTime + this.toSeconds(d)); + }); + } + else { + this.triggerRelease(notes, computedTime + this.toSeconds(duration)); + } + return this; + } + /** + * Add a note to the sampler. + * @param note The buffer's pitch. + * @param url Either the url of the buffer, or a buffer which will be added with the given name. + * @param callback The callback to invoke when the url is loaded. + */ + add(note, url, callback) { + assert(isNote(note) || isFinite(note), `note must be a pitch or midi: ${note}`); + if (isNote(note)) { + // convert the note name to MIDI + const mid = new FrequencyClass(this.context, note).toMidi(); + this._buffers.add(mid, url, callback); + } + else { + // otherwise if it's numbers assume it's midi + this._buffers.add(note, url, callback); + } + return this; + } + /** + * If the buffers are loaded or not + */ + get loaded() { + return this._buffers.loaded; + } + /** + * Clean up + */ + dispose() { + super.dispose(); + this._buffers.dispose(); + this._activeSources.forEach(sources => { + sources.forEach(source => source.dispose()); + }); + this._activeSources.clear(); + return this; + } +} +__decorate([ + timeRange(0) +], Sampler.prototype, "attack", void 0); +__decorate([ + timeRange(0) +], Sampler.prototype, "release", void 0); + +/** + * Panner is an equal power Left/Right Panner. It is a wrapper around the StereoPannerNode. + * @example + * return Tone.Offline(() => { + * // move the input signal from right to left + * const panner = new Tone.Panner(1).toDestination(); + * panner.pan.rampTo(-1, 0.5); + * const osc = new Tone.Oscillator(100).connect(panner).start(); + * }, 0.5, 2); + * @category Component + */ +class Panner extends ToneAudioNode { + constructor() { + super(Object.assign(optionsFromArguments(Panner.getDefaults(), arguments, ["pan"]))); + this.name = "Panner"; + /** + * the panner node + */ + this._panner = this.context.createStereoPanner(); + this.input = this._panner; + this.output = this._panner; + const options = optionsFromArguments(Panner.getDefaults(), arguments, ["pan"]); + this.pan = new Param({ + context: this.context, + param: this._panner.pan, + value: options.pan, + minValue: -1, + maxValue: 1, + }); + // this is necessary for standardized-audio-context + // doesn't make any difference for the native AudioContext + // https://github.com/chrisguttandin/standardized-audio-context/issues/647 + this._panner.channelCount = options.channelCount; + this._panner.channelCountMode = "explicit"; + // initial value + readOnly(this, "pan"); + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + pan: 0, + channelCount: 1, + }); + } + dispose() { + super.dispose(); + this._panner.disconnect(); + this.pan.dispose(); + return this; + } +} + +const workletName$1 = "bit-crusher"; +const bitCrusherWorklet = /* javascript */ ` + class BitCrusherWorklet extends SingleIOProcessor { + + static get parameterDescriptors() { + return [{ + name: "bits", + defaultValue: 12, + minValue: 1, + maxValue: 16, + automationRate: 'k-rate' + }]; + } + + generate(input, _channel, parameters) { + const step = Math.pow(0.5, parameters.bits - 1); + const val = step * Math.floor(input / step + 0.5); + return val; + } + } +`; +registerProcessor(workletName$1, bitCrusherWorklet); + +/** + * Solo lets you isolate a specific audio stream. When an instance is set to `solo=true`, + * it will mute all other instances of Solo. + * @example + * const soloA = new Tone.Solo().toDestination(); + * const oscA = new Tone.Oscillator("C4", "sawtooth").connect(soloA); + * const soloB = new Tone.Solo().toDestination(); + * const oscB = new Tone.Oscillator("E4", "square").connect(soloB); + * soloA.solo = true; + * // no audio will pass through soloB + * @category Component + */ +class Solo extends ToneAudioNode { + constructor() { + super(optionsFromArguments(Solo.getDefaults(), arguments, ["solo"])); + this.name = "Solo"; + const options = optionsFromArguments(Solo.getDefaults(), arguments, ["solo"]); + this.input = this.output = new Gain({ + context: this.context, + }); + if (!Solo._allSolos.has(this.context)) { + Solo._allSolos.set(this.context, new Set()); + } + Solo._allSolos.get(this.context).add(this); + // set initially + this.solo = options.solo; + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + solo: false, + }); + } + /** + * Isolates this instance and mutes all other instances of Solo. + * Only one instance can be soloed at a time. A soloed + * instance will report `solo=false` when another instance is soloed. + */ + get solo() { + return this._isSoloed(); + } + set solo(solo) { + if (solo) { + this._addSolo(); + } + else { + this._removeSolo(); + } + Solo._allSolos.get(this.context).forEach(instance => instance._updateSolo()); + } + /** + * If the current instance is muted, i.e. another instance is soloed + */ + get muted() { + return this.input.gain.value === 0; + } + /** + * Add this to the soloed array + */ + _addSolo() { + if (!Solo._soloed.has(this.context)) { + Solo._soloed.set(this.context, new Set()); + } + Solo._soloed.get(this.context).add(this); + } + /** + * Remove this from the soloed array + */ + _removeSolo() { + if (Solo._soloed.has(this.context)) { + Solo._soloed.get(this.context).delete(this); + } + } + /** + * Is this on the soloed array + */ + _isSoloed() { + return Solo._soloed.has(this.context) && Solo._soloed.get(this.context).has(this); + } + /** + * Returns true if no one is soloed + */ + _noSolos() { + // either does not have any soloed added + return !Solo._soloed.has(this.context) || + // or has a solo set but doesn't include any items + (Solo._soloed.has(this.context) && Solo._soloed.get(this.context).size === 0); + } + /** + * Solo the current instance and unsolo all other instances. + */ + _updateSolo() { + if (this._isSoloed()) { + this.input.gain.value = 1; + } + else if (this._noSolos()) { + // no one is soloed + this.input.gain.value = 1; + } + else { + this.input.gain.value = 0; + } + } + dispose() { + super.dispose(); + Solo._allSolos.get(this.context).delete(this); + this._removeSolo(); + return this; + } +} +/** + * Hold all of the solo'ed tracks belonging to a specific context + */ +Solo._allSolos = new Map(); +/** + * Hold the currently solo'ed instance(s) + */ +Solo._soloed = new Map(); + +/** + * PanVol is a Tone.Panner and Tone.Volume in one. + * @example + * // pan the incoming signal left and drop the volume + * const panVol = new Tone.PanVol(-0.25, -12).toDestination(); + * const osc = new Tone.Oscillator().connect(panVol).start(); + * @category Component + */ +class PanVol extends ToneAudioNode { + constructor() { + super(optionsFromArguments(PanVol.getDefaults(), arguments, ["pan", "volume"])); + this.name = "PanVol"; + const options = optionsFromArguments(PanVol.getDefaults(), arguments, ["pan", "volume"]); + this._panner = this.input = new Panner({ + context: this.context, + pan: options.pan, + channelCount: options.channelCount, + }); + this.pan = this._panner.pan; + this._volume = this.output = new Volume({ + context: this.context, + volume: options.volume, + }); + this.volume = this._volume.volume; + // connections + this._panner.connect(this._volume); + this.mute = options.mute; + readOnly(this, ["pan", "volume"]); + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + mute: false, + pan: 0, + volume: 0, + channelCount: 1, + }); + } + /** + * Mute/unmute the volume + */ + get mute() { + return this._volume.mute; + } + set mute(mute) { + this._volume.mute = mute; + } + dispose() { + super.dispose(); + this._panner.dispose(); + this.pan.dispose(); + this._volume.dispose(); + this.volume.dispose(); + return this; + } +} + +/** + * Channel provides a channel strip interface with volume, pan, solo and mute controls. + * See [[PanVol]] and [[Solo]] + * @example + * // pan the incoming signal left and drop the volume 12db + * const channel = new Tone.Channel(-0.25, -12); + * @category Component + */ +class Channel extends ToneAudioNode { + constructor() { + super(optionsFromArguments(Channel.getDefaults(), arguments, ["volume", "pan"])); + this.name = "Channel"; + const options = optionsFromArguments(Channel.getDefaults(), arguments, ["volume", "pan"]); + this._solo = this.input = new Solo({ + solo: options.solo, + context: this.context, + }); + this._panVol = this.output = new PanVol({ + context: this.context, + pan: options.pan, + volume: options.volume, + mute: options.mute, + channelCount: options.channelCount + }); + this.pan = this._panVol.pan; + this.volume = this._panVol.volume; + this._solo.connect(this._panVol); + readOnly(this, ["pan", "volume"]); + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + pan: 0, + volume: 0, + mute: false, + solo: false, + channelCount: 1, + }); + } + /** + * Solo/unsolo the channel. Soloing is only relative to other [[Channels]] and [[Solo]] instances + */ + get solo() { + return this._solo.solo; + } + set solo(solo) { + this._solo.solo = solo; + } + /** + * If the current instance is muted, i.e. another instance is soloed, + * or the channel is muted + */ + get muted() { + return this._solo.muted || this.mute; + } + /** + * Mute/unmute the volume + */ + get mute() { + return this._panVol.mute; + } + set mute(mute) { + this._panVol.mute = mute; + } + /** + * Get the gain node belonging to the bus name. Create it if + * it doesn't exist + * @param name The bus name + */ + _getBus(name) { + if (!Channel.buses.has(name)) { + Channel.buses.set(name, new Gain({ context: this.context })); + } + return Channel.buses.get(name); + } + /** + * Send audio to another channel using a string. `send` is a lot like + * [[connect]], except it uses a string instead of an object. This can + * be useful in large applications to decouple sections since [[send]] + * and [[receive]] can be invoked separately in order to connect an object + * @param name The channel name to send the audio + * @param volume The amount of the signal to send. + * Defaults to 0db, i.e. send the entire signal + * @returns Returns the gain node of this connection. + */ + send(name, volume = 0) { + const bus = this._getBus(name); + const sendKnob = new Gain({ + context: this.context, + units: "decibels", + gain: volume, + }); + this.connect(sendKnob); + sendKnob.connect(bus); + return sendKnob; + } + /** + * Receive audio from a channel which was connected with [[send]]. + * @param name The channel name to receive audio from. + */ + receive(name) { + const bus = this._getBus(name); + bus.connect(this); + return this; + } + dispose() { + super.dispose(); + this._panVol.dispose(); + this.pan.dispose(); + this.volume.dispose(); + this._solo.dispose(); + return this; + } +} +/** + * Store the send/receive channels by name. + */ +Channel.buses = new Map(); + +/** + * Tone.Listener is a thin wrapper around the AudioListener. Listener combined + * with [[Panner3D]] makes up the Web Audio API's 3D panning system. Panner3D allows you + * to place sounds in 3D and Listener allows you to navigate the 3D sound environment from + * a first-person perspective. There is only one listener per audio context. + */ +class Listener extends ToneAudioNode { + constructor() { + super(...arguments); + this.name = "Listener"; + this.positionX = new Param({ + context: this.context, + param: this.context.rawContext.listener.positionX, + }); + this.positionY = new Param({ + context: this.context, + param: this.context.rawContext.listener.positionY, + }); + this.positionZ = new Param({ + context: this.context, + param: this.context.rawContext.listener.positionZ, + }); + this.forwardX = new Param({ + context: this.context, + param: this.context.rawContext.listener.forwardX, + }); + this.forwardY = new Param({ + context: this.context, + param: this.context.rawContext.listener.forwardY, + }); + this.forwardZ = new Param({ + context: this.context, + param: this.context.rawContext.listener.forwardZ, + }); + this.upX = new Param({ + context: this.context, + param: this.context.rawContext.listener.upX, + }); + this.upY = new Param({ + context: this.context, + param: this.context.rawContext.listener.upY, + }); + this.upZ = new Param({ + context: this.context, + param: this.context.rawContext.listener.upZ, + }); + } + static getDefaults() { + return Object.assign(ToneAudioNode.getDefaults(), { + positionX: 0, + positionY: 0, + positionZ: 0, + forwardX: 0, + forwardY: 0, + forwardZ: -1, + upX: 0, + upY: 1, + upZ: 0, + }); + } + dispose() { + super.dispose(); + this.positionX.dispose(); + this.positionY.dispose(); + this.positionZ.dispose(); + this.forwardX.dispose(); + this.forwardY.dispose(); + this.forwardZ.dispose(); + this.upX.dispose(); + this.upY.dispose(); + this.upZ.dispose(); + return this; + } +} +//------------------------------------- +// INITIALIZATION +//------------------------------------- +onContextInit(context => { + context.listener = new Listener({ context }); +}); +onContextClose(context => { + context.listener.dispose(); +}); + +/** + * The current audio context time of the global [[Context]]. + * See [[Context.now]] + * @category Core + */ +function now() { + return getContext().now(); +} +/** + * The current audio context time of the global [[Context]] without the [[Context.lookAhead]] + * See [[Context.immediate]] + * @category Core + */ +function immediate() { + return getContext().immediate(); +} +/** + * The Transport object belonging to the global Tone.js Context. + * See [[Transport]] + * @category Core + */ +const Transport$1 = getContext().transport; +/** + * The Transport object belonging to the global Tone.js Context. + * See [[Transport]] + * @category Core + */ +function getTransport() { + return getContext().transport; +} +/** + * The Destination (output) belonging to the global Tone.js Context. + * See [[Destination]] + * @category Core + */ +const Destination$1 = getContext().destination; +/** + * @deprecated Use [[Destination]] + */ +const Master = getContext().destination; +/** + * The Destination (output) belonging to the global Tone.js Context. + * See [[Destination]] + * @category Core + */ +function getDestination() { + return getContext().destination; +} +/** + * The [[Listener]] belonging to the global Tone.js Context. + * @category Core + */ +const Listener$1 = getContext().listener; +/** + * The [[Listener]] belonging to the global Tone.js Context. + * @category Core + */ +function getListener() { + return getContext().listener; +} +/** + * Draw is used to synchronize the draw frame with the Transport's callbacks. + * See [[Draw]] + * @category Core + */ +const Draw$1 = getContext().draw; +/** + * Get the singleton attached to the global context. + * Draw is used to synchronize the draw frame with the Transport's callbacks. + * See [[Draw]] + * @category Core + */ +function getDraw() { + return getContext().draw; +} +/** + * A reference to the global context + * See [[Context]] + */ +const context = getContext(); +/** + * Promise which resolves when all of the loading promises are resolved. + * Alias for static [[ToneAudioBuffer.loaded]] method. + * @category Core + */ +function loaded() { + return ToneAudioBuffer.loaded(); +} +const Buffer = ToneAudioBuffer; +const Buffers = ToneAudioBuffers; +const BufferSource = ToneBufferSource; + +export { isArray as $, AudioToGain as A, TransportTimeClass as B, Clock as C, Monophonic as D, Synth as E, Frequency as F, Gain as G, omitFromObject as H, OmniOscillator as I, Envelope as J, writable as K, AmplitudeEnvelope as L, Midi as M, deepMerge as N, OfflineContext as O, Param as P, FMOscillator as Q, Instrument as R, Sampler as S, ToneAudioNode as T, getWorkletGlobalScope as U, Volume as V, WaveShaper as W, workletName as X, warn as Y, MidiClass as Z, __awaiter as _, ToneAudioBuffers as a, ToneWithContext as a0, StateTimeline as a1, TicksClass as a2, isBoolean as a3, isObject as a4, isUndef as a5, clamp as a6, Panner as a7, gainToDb as a8, dbToGain as a9, Context as aA, BaseContext as aB, FrequencyClass as aC, TimeClass as aD, Time as aE, Ticks as aF, TransportTime as aG, Emitter as aH, IntervalTimeline as aI, Timeline as aJ, isFunction as aK, AMOscillator as aL, PulseOscillator as aM, FatOscillator as aN, PWMOscillator as aO, Channel as aP, PanVol as aQ, Solo as aR, version as aS, workletName$1 as aa, ToneOscillatorNode as ab, theWindow as ac, isNote as ad, MembraneSynth as ae, getDestination as af, now as ag, immediate as ah, Transport$1 as ai, getTransport as aj, Destination$1 as ak, Master as al, Listener$1 as am, getListener as an, Draw$1 as ao, getDraw as ap, context as aq, loaded as ar, Buffer as as, Buffers as at, BufferSource as au, start as av, isSupported as aw, Debug as ax, ftom as ay, mtof as az, ToneBufferSource as b, ToneAudioBuffer as c, Source as d, assert as e, isNumber as f, getContext as g, isDefined as h, isString as i, connect as j, Signal as k, connectSeries as l, SignalOperator as m, Multiply as n, optionsFromArguments as o, disconnect as p, Oscillator as q, readOnly as r, setContext as s, connectSignal as t, noOp as u, Player as v, intervalToFrequencyRatio as w, assertRange as x, defaultArg as y, ToneConstantSource as z }; diff --git a/docs/_snowpack/pkg/common/webmidi.min-97732fd4.js b/docs/_snowpack/pkg/common/webmidi.min-97732fd4.js new file mode 100644 index 00000000..f58b4b13 --- /dev/null +++ b/docs/_snowpack/pkg/common/webmidi.min-97732fd4.js @@ -0,0 +1,37 @@ +import { c as createCommonjsModule, a as commonjsGlobal } from './_commonjsHelpers-8c19dec8.js'; + +var webmidi_min = createCommonjsModule(function (module) { +/* + +WebMidi v2.5.3 + +WebMidi.js helps you tame the Web MIDI API. Send and receive MIDI messages with ease. Control instruments with user-friendly functions (playNote, sendPitchBend, etc.). React to MIDI input with simple event listeners (noteon, pitchbend, controlchange, etc.). +https://github.com/djipco/webmidi + + +The MIT License (MIT) + +Copyright (c) 2015-2019, Jean-Philippe Côté + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT +NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES +OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +!function(scope){function WebMidi(){if(WebMidi.prototype._singleton)throw new Error("WebMidi is a singleton, it cannot be instantiated directly.");(WebMidi.prototype._singleton=this)._inputs=[],this._outputs=[],this._userHandlers={},this._stateChangeQueue=[],this._processingStateChange=!1,this._midiInterfaceEvents=["connected","disconnected"],this._nrpnBuffer=[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],this._nrpnEventsEnabled=!0,this._nrpnTypes=["entry","increment","decrement"],this._notes=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],this._semitones={C:0,D:2,E:4,F:5,G:7,A:9,B:11},Object.defineProperties(this,{MIDI_SYSTEM_MESSAGES:{value:{sysex:240,timecode:241,songposition:242,songselect:243,tuningrequest:246,sysexend:247,clock:248,start:250,continue:251,stop:252,activesensing:254,reset:255,midimessage:0,unknownsystemmessage:-1},writable:!1,enumerable:!0,configurable:!1},MIDI_CHANNEL_MESSAGES:{value:{noteoff:8,noteon:9,keyaftertouch:10,controlchange:11,channelmode:11,nrpn:11,programchange:12,channelaftertouch:13,pitchbend:14},writable:!1,enumerable:!0,configurable:!1},MIDI_REGISTERED_PARAMETER:{value:{pitchbendrange:[0,0],channelfinetuning:[0,1],channelcoarsetuning:[0,2],tuningprogram:[0,3],tuningbank:[0,4],modulationrange:[0,5],azimuthangle:[61,0],elevationangle:[61,1],gain:[61,2],distanceratio:[61,3],maximumdistance:[61,4],maximumdistancegain:[61,5],referencedistanceratio:[61,6],panspreadangle:[61,7],rollangle:[61,8]},writable:!1,enumerable:!0,configurable:!1},MIDI_CONTROL_CHANGE_MESSAGES:{value:{bankselectcoarse:0,modulationwheelcoarse:1,breathcontrollercoarse:2,footcontrollercoarse:4,portamentotimecoarse:5,dataentrycoarse:6,volumecoarse:7,balancecoarse:8,pancoarse:10,expressioncoarse:11,effectcontrol1coarse:12,effectcontrol2coarse:13,generalpurposeslider1:16,generalpurposeslider2:17,generalpurposeslider3:18,generalpurposeslider4:19,bankselectfine:32,modulationwheelfine:33,breathcontrollerfine:34,footcontrollerfine:36,portamentotimefine:37,dataentryfine:38,volumefine:39,balancefine:40,panfine:42,expressionfine:43,effectcontrol1fine:44,effectcontrol2fine:45,holdpedal:64,portamento:65,sustenutopedal:66,softpedal:67,legatopedal:68,hold2pedal:69,soundvariation:70,resonance:71,soundreleasetime:72,soundattacktime:73,brightness:74,soundcontrol6:75,soundcontrol7:76,soundcontrol8:77,soundcontrol9:78,soundcontrol10:79,generalpurposebutton1:80,generalpurposebutton2:81,generalpurposebutton3:82,generalpurposebutton4:83,reverblevel:91,tremololevel:92,choruslevel:93,celestelevel:94,phaserlevel:95,databuttonincrement:96,databuttondecrement:97,nonregisteredparametercoarse:98,nonregisteredparameterfine:99,registeredparametercoarse:100,registeredparameterfine:101},writable:!1,enumerable:!0,configurable:!1},MIDI_NRPN_MESSAGES:{value:{entrymsb:6,entrylsb:38,increment:96,decrement:97,paramlsb:98,parammsb:99,nullactiveparameter:127},writable:!1,enumerable:!0,configurable:!1},MIDI_CHANNEL_MODE_MESSAGES:{value:{allsoundoff:120,resetallcontrollers:121,localcontrol:122,allnotesoff:123,omnimodeoff:124,omnimodeon:125,monomodeon:126,polymodeon:127},writable:!1,enumerable:!0,configurable:!1},octaveOffset:{value:0,writable:!0,enumerable:!0,configurable:!1}}),Object.defineProperties(this,{supported:{enumerable:!0,get:function(){return "requestMIDIAccess"in navigator}},enabled:{enumerable:!0,get:function(){return void 0!==this.interface}.bind(this)},inputs:{enumerable:!0,get:function(){return this._inputs}.bind(this)},outputs:{enumerable:!0,get:function(){return this._outputs}.bind(this)},sysexEnabled:{enumerable:!0,get:function(){return !(!this.interface||!this.interface.sysexEnabled)}.bind(this)},nrpnEventsEnabled:{enumerable:!0,get:function(){return !!this._nrpnEventsEnabled}.bind(this),set:function(enabled){return this._nrpnEventsEnabled=enabled,this._nrpnEventsEnabled}},nrpnTypes:{enumerable:!0,get:function(){return this._nrpnTypes}.bind(this)},time:{enumerable:!0,get:function(){return performance.now()}}});}var wm=new WebMidi;function Input(midiInput){var that=this;this._userHandlers={channel:{},system:{}},this._midiInput=midiInput,Object.defineProperties(this,{connection:{enumerable:!0,get:function(){return that._midiInput.connection}},id:{enumerable:!0,get:function(){return that._midiInput.id}},manufacturer:{enumerable:!0,get:function(){return that._midiInput.manufacturer}},name:{enumerable:!0,get:function(){return that._midiInput.name}},state:{enumerable:!0,get:function(){return that._midiInput.state}},type:{enumerable:!0,get:function(){return that._midiInput.type}}}),this._initializeUserHandlers(),this._midiInput.onmidimessage=this._onMidiMessage.bind(this);}function Output(midiOutput){var that=this;this._midiOutput=midiOutput,Object.defineProperties(this,{connection:{enumerable:!0,get:function(){return that._midiOutput.connection}},id:{enumerable:!0,get:function(){return that._midiOutput.id}},manufacturer:{enumerable:!0,get:function(){return that._midiOutput.manufacturer}},name:{enumerable:!0,get:function(){return that._midiOutput.name}},state:{enumerable:!0,get:function(){return that._midiOutput.state}},type:{enumerable:!0,get:function(){return that._midiOutput.type}}});}WebMidi.prototype.enable=function(callback,sysex){this.enabled||(this.supported?navigator.requestMIDIAccess({sysex:sysex}).then(function(midiAccess){var promiseTimeout,events=[],promises=[];this.interface=midiAccess,this._resetInterfaceUserHandlers(),this.interface.onstatechange=function(e){events.push(e);};for(var inputs=midiAccess.inputs.values(),input=inputs.next();input&&!input.done;input=inputs.next())promises.push(input.value.open());for(var outputs=midiAccess.outputs.values(),output=outputs.next();output&&!output.done;output=outputs.next())promises.push(output.value.open());function onPortsOpen(){clearTimeout(promiseTimeout),this._updateInputsAndOutputs(),this.interface.onstatechange=this._onInterfaceStateChange.bind(this),"function"==typeof callback&&callback.call(this),events.forEach(function(event){this._onInterfaceStateChange(event);}.bind(this));}promiseTimeout=setTimeout(onPortsOpen.bind(this),200),Promise&&Promise.all(promises).catch(function(err){}).then(onPortsOpen.bind(this));}.bind(this),function(err){"function"==typeof callback&&callback.call(this,err);}.bind(this)):"function"==typeof callback&&callback(new Error("The Web MIDI API is not supported by your browser.")));},WebMidi.prototype.disable=function(){if(!this.supported)throw new Error("The Web MIDI API is not supported by your browser.");this.enabled&&(this.removeListener(),this.inputs.forEach(function(input){input.removeListener();})),this.interface&&(this.interface.onstatechange=void 0),this.interface=void 0,this._inputs=[],this._outputs=[],this._nrpnEventsEnabled=!0,this._resetInterfaceUserHandlers();},WebMidi.prototype.addListener=function(type,listener){if(!this.enabled)throw new Error("WebMidi must be enabled before adding event listeners.");if("function"!=typeof listener)throw new TypeError("The 'listener' parameter must be a function.");if(!(0<=this._midiInterfaceEvents.indexOf(type)))throw new TypeError("The specified event type is not supported.");return this._userHandlers[type].push(listener),this},WebMidi.prototype.hasListener=function(type,listener){if(!this.enabled)throw new Error("WebMidi must be enabled before checking event listeners.");if("function"!=typeof listener)throw new TypeError("The 'listener' parameter must be a function.");if(!(0<=this._midiInterfaceEvents.indexOf(type)))throw new TypeError("The specified event type is not supported.");for(var o=0;o>4,channelBufferIndex=15&e.data[0],channel=1+channelBufferIndex;if(1=wm.MIDI_NRPN_MESSAGES.increment&&data1<=wm.MIDI_NRPN_MESSAGES.parammsb||data1===wm.MIDI_NRPN_MESSAGES.entrymsb||data1===wm.MIDI_NRPN_MESSAGES.entrylsb)){var ccEvent={target:this,type:"controlchange",data:e.data,timestamp:e.timeStamp,channel:channel,controller:{number:data1,name:this.getCcNameByNumber(data1)},value:data2};if(ccEvent.controller.number===wm.MIDI_NRPN_MESSAGES.parammsb&&ccEvent.value!=wm.MIDI_NRPN_MESSAGES.nullactiveparameter)wm._nrpnBuffer[channelBufferIndex]=[],wm._nrpnBuffer[channelBufferIndex][0]=ccEvent;else if(1===wm._nrpnBuffer[channelBufferIndex].length&&ccEvent.controller.number===wm.MIDI_NRPN_MESSAGES.paramlsb)wm._nrpnBuffer[channelBufferIndex].push(ccEvent);else if(2!==wm._nrpnBuffer[channelBufferIndex].length||ccEvent.controller.number!==wm.MIDI_NRPN_MESSAGES.increment&&ccEvent.controller.number!==wm.MIDI_NRPN_MESSAGES.decrement&&ccEvent.controller.number!==wm.MIDI_NRPN_MESSAGES.entrymsb)if(3===wm._nrpnBuffer[channelBufferIndex].length&&wm._nrpnBuffer[channelBufferIndex][2].number===wm.MIDI_NRPN_MESSAGES.entrymsb&&ccEvent.controller.number===wm.MIDI_NRPN_MESSAGES.entrylsb)wm._nrpnBuffer[channelBufferIndex].push(ccEvent);else if(3<=wm._nrpnBuffer[channelBufferIndex].length&&wm._nrpnBuffer[channelBufferIndex].length<=4&&ccEvent.controller.number===wm.MIDI_NRPN_MESSAGES.parammsb&&ccEvent.value===wm.MIDI_NRPN_MESSAGES.nullactiveparameter)wm._nrpnBuffer[channelBufferIndex].push(ccEvent);else if(4<=wm._nrpnBuffer[channelBufferIndex].length&&wm._nrpnBuffer[channelBufferIndex].length<=5&&ccEvent.controller.number===wm.MIDI_NRPN_MESSAGES.paramlsb&&ccEvent.value===wm.MIDI_NRPN_MESSAGES.nullactiveparameter){wm._nrpnBuffer[channelBufferIndex].push(ccEvent);var rawData=[];wm._nrpnBuffer[channelBufferIndex].forEach(function(ev){rawData.push(ev.data);});var nrpnNumber=wm._nrpnBuffer[channelBufferIndex][0].value<<7|wm._nrpnBuffer[channelBufferIndex][1].value,nrpnValue=wm._nrpnBuffer[channelBufferIndex][2].value;6===wm._nrpnBuffer[channelBufferIndex].length&&(nrpnValue=wm._nrpnBuffer[channelBufferIndex][2].value<<7|wm._nrpnBuffer[channelBufferIndex][3].value);var nrpnControllerType="";switch(wm._nrpnBuffer[channelBufferIndex][2].controller.number){case wm.MIDI_NRPN_MESSAGES.entrymsb:nrpnControllerType=wm._nrpnTypes[0];break;case wm.MIDI_NRPN_MESSAGES.increment:nrpnControllerType=wm._nrpnTypes[1];break;case wm.MIDI_NRPN_MESSAGES.decrement:nrpnControllerType=wm._nrpnTypes[2];break;default:throw new Error("The NPRN type was unidentifiable.")}var nrpnEvent={timestamp:ccEvent.timestamp,channel:ccEvent.channel,type:"nrpn",data:rawData,controller:{number:nrpnNumber,type:nrpnControllerType,name:"Non-Registered Parameter "+nrpnNumber},value:nrpnValue};wm._nrpnBuffer[channelBufferIndex]=[],this._userHandlers.channel[nrpnEvent.type]&&this._userHandlers.channel[nrpnEvent.type][nrpnEvent.channel]&&this._userHandlers.channel[nrpnEvent.type][nrpnEvent.channel].forEach(function(callback){callback(nrpnEvent);});}else wm._nrpnBuffer[channelBufferIndex]=[];else wm._nrpnBuffer[channelBufferIndex].push(ccEvent);}},Input.prototype._parseChannelEvent=function(e){var data1,data2,command=e.data[0]>>4,channel=1+(15&e.data[0]);1>7&127,lsb=127&value;return this.send(wm.MIDI_SYSTEM_MESSAGES.songposition,[msb,lsb],this._parseTimeParameter(options.time)),this},Output.prototype.sendSongSelect=function(value,options){if(options=options||{},!(0<=(value=Math.floor(value))&&value<=127))throw new RangeError("The song number must be between 0 and 127.");return this.send(wm.MIDI_SYSTEM_MESSAGES.songselect,[value],this._parseTimeParameter(options.time)),this},Output.prototype.sendTuningRequest=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.tuningrequest,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.sendClock=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.clock,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.sendStart=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.start,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.sendContinue=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.continue,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.sendStop=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.stop,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.sendActiveSensing=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.activesensing,[],this._parseTimeParameter(options.time)),this},Output.prototype.sendReset=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.reset,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.stopNote=function(note,channel,options){if("all"===note)return this.sendChannelMode("allnotesoff",0,channel,options);var nVelocity=64;return (options=options||{}).rawVelocity?!isNaN(options.velocity)&&0<=options.velocity&&options.velocity<=127&&(nVelocity=options.velocity):!isNaN(options.velocity)&&0<=options.velocity&&options.velocity<=1&&(nVelocity=127*options.velocity),this._convertNoteToArray(note).forEach(function(item){wm.toMIDIChannels(channel).forEach(function(ch){this.send((wm.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(ch-1),[item,Math.round(nVelocity)],this._parseTimeParameter(options.time));}.bind(this));}.bind(this)),this},Output.prototype.playNote=function(note,channel,options){var time,nVelocity=64;if((options=options||{}).rawVelocity?!isNaN(options.velocity)&&0<=options.velocity&&options.velocity<=127&&(nVelocity=options.velocity):!isNaN(options.velocity)&&0<=options.velocity&&options.velocity<=1&&(nVelocity=127*options.velocity),time=this._parseTimeParameter(options.time),this._convertNoteToArray(note).forEach(function(item){wm.toMIDIChannels(channel).forEach(function(ch){this.send((wm.MIDI_CHANNEL_MESSAGES.noteon<<4)+(ch-1),[item,Math.round(nVelocity)],time);}.bind(this));}.bind(this)),!isNaN(options.duration)){options.duration<=0&&(options.duration=0);var nRelease=64;options.rawVelocity?!isNaN(options.release)&&0<=options.release&&options.release<=127&&(nRelease=options.release):!isNaN(options.release)&&0<=options.release&&options.release<=1&&(nRelease=127*options.release),this._convertNoteToArray(note).forEach(function(item){wm.toMIDIChannels(channel).forEach(function(ch){this.send((wm.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(ch-1),[item,Math.round(nRelease)],(time||wm.time)+options.duration);}.bind(this));}.bind(this));}return this},Output.prototype.sendKeyAftertouch=function(note,channel,pressure,options){var that=this;if(options=options||{},channel<1||16>7&127,lsb=127&fine;return wm.toMIDIChannels(channel).forEach(function(){that.setRegisteredParameter("channelcoarsetuning",coarse,channel,{time:options.time}),that.setRegisteredParameter("channelfinetuning",[msb,lsb],channel,{time:options.time});}),this},Output.prototype.setTuningProgram=function(value,channel,options){var that=this;if(options=options||{},!(0<=(value=Math.floor(value))&&value<=127))throw new RangeError("The program value must be between 0 and 127");return wm.toMIDIChannels(channel).forEach(function(){that.setRegisteredParameter("tuningprogram",value,channel,{time:options.time});}),this},Output.prototype.setTuningBank=function(value,channel,options){var that=this;if(options=options||{},!(0<=(value=Math.floor(value)||0)&&value<=127))throw new RangeError("The bank value must be between 0 and 127");return wm.toMIDIChannels(channel).forEach(function(){that.setRegisteredParameter("tuningbank",value,channel,{time:options.time});}),this},Output.prototype.sendChannelMode=function(command,value,channel,options){if(options=options||{},"string"==typeof command){if(!(command=wm.MIDI_CHANNEL_MODE_MESSAGES[command]))throw new TypeError("Invalid channel mode message name.")}else if(!(120<=(command=Math.floor(command))&&command<=127))throw new RangeError("Channel mode numerical identifiers must be between 120 and 127.");if((value=Math.floor(value)||0)<0||127>7&127,lsb=127&nLevel;return wm.toMIDIChannels(channel).forEach(function(ch){that.send((wm.MIDI_CHANNEL_MESSAGES.pitchbend<<4)+(ch-1),[lsb,msb],that._parseTimeParameter(options.time));}),this},Output.prototype._parseTimeParameter=function(time){var value,parsed=parseFloat(time);return "string"==typeof time&&"+"===time.substring(0,1)?parsed&&0wm.time&&(value=parsed),value},Output.prototype._convertNoteToArray=function(note){var notes=[];return Array.isArray(note)||(note=[note]),note.forEach(function(item){notes.push(wm.guessNoteNumber(item));}),notes},module.exports?module.exports=wm:scope.WebMidi||(scope.WebMidi=wm);}(commonjsGlobal); +}); + +export { webmidi_min as w }; diff --git a/docs/_snowpack/pkg/import-map.json b/docs/_snowpack/pkg/import-map.json index dc8f9809..c457dfee 100644 --- a/docs/_snowpack/pkg/import-map.json +++ b/docs/_snowpack/pkg/import-map.json @@ -1,6 +1,7 @@ { "imports": { "@tonaljs/tonal": "./@tonaljs/tonal.js", + "@tonejs/piano": "./@tonejs/piano.js", "chord-voicings": "./chord-voicings.js", "codemirror/lib/codemirror.css": "./codemirror/lib/codemirror.css", "codemirror/mode/javascript/javascript.js": "./codemirror/mode/javascript/javascript.js", diff --git a/docs/_snowpack/pkg/tone.js b/docs/_snowpack/pkg/tone.js index 2cd0323c..67a519c7 100644 --- a/docs/_snowpack/pkg/tone.js +++ b/docs/_snowpack/pkg/tone.js @@ -1,13368 +1,5 @@ -const version = "14.7.77"; - -const createExtendedExponentialRampToValueAutomationEvent = (value, endTime, insertTime) => { - return { endTime, insertTime, type: 'exponentialRampToValue', value }; -}; - -const createExtendedLinearRampToValueAutomationEvent = (value, endTime, insertTime) => { - return { endTime, insertTime, type: 'linearRampToValue', value }; -}; - -const createSetValueAutomationEvent = (value, startTime) => { - return { startTime, type: 'setValue', value }; -}; - -const createSetValueCurveAutomationEvent = (values, startTime, duration) => { - return { duration, startTime, type: 'setValueCurve', values }; -}; - -const getTargetValueAtTime = (time, valueAtStartTime, { startTime, target, timeConstant }) => { - return target + (valueAtStartTime - target) * Math.exp((startTime - time) / timeConstant); -}; - -const isExponentialRampToValueAutomationEvent = (automationEvent) => { - return automationEvent.type === 'exponentialRampToValue'; -}; - -const isLinearRampToValueAutomationEvent = (automationEvent) => { - return automationEvent.type === 'linearRampToValue'; -}; - -const isAnyRampToValueAutomationEvent = (automationEvent) => { - return isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent); -}; - -const isSetValueAutomationEvent = (automationEvent) => { - return automationEvent.type === 'setValue'; -}; - -const isSetValueCurveAutomationEvent = (automationEvent) => { - return automationEvent.type === 'setValueCurve'; -}; - -const getValueOfAutomationEventAtIndexAtTime = (automationEvents, index, time, defaultValue) => { - const automationEvent = automationEvents[index]; - return automationEvent === undefined - ? defaultValue - : isAnyRampToValueAutomationEvent(automationEvent) || isSetValueAutomationEvent(automationEvent) - ? automationEvent.value - : isSetValueCurveAutomationEvent(automationEvent) - ? automationEvent.values[automationEvent.values.length - 1] - : getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, automationEvent.startTime, defaultValue), automationEvent); -}; - -const getEndTimeAndValueOfPreviousAutomationEvent = (automationEvents, index, currentAutomationEvent, nextAutomationEvent, defaultValue) => { - return currentAutomationEvent === undefined - ? [nextAutomationEvent.insertTime, defaultValue] - : isAnyRampToValueAutomationEvent(currentAutomationEvent) - ? [currentAutomationEvent.endTime, currentAutomationEvent.value] - : isSetValueAutomationEvent(currentAutomationEvent) - ? [currentAutomationEvent.startTime, currentAutomationEvent.value] - : isSetValueCurveAutomationEvent(currentAutomationEvent) - ? [ - currentAutomationEvent.startTime + currentAutomationEvent.duration, - currentAutomationEvent.values[currentAutomationEvent.values.length - 1] - ] - : [ - currentAutomationEvent.startTime, - getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, currentAutomationEvent.startTime, defaultValue) - ]; -}; - -const isCancelAndHoldAutomationEvent = (automationEvent) => { - return automationEvent.type === 'cancelAndHold'; -}; - -const isCancelScheduledValuesAutomationEvent = (automationEvent) => { - return automationEvent.type === 'cancelScheduledValues'; -}; - -const getEventTime = (automationEvent) => { - if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) { - return automationEvent.cancelTime; - } - if (isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent)) { - return automationEvent.endTime; - } - return automationEvent.startTime; -}; - -const getExponentialRampValueAtTime = (time, startTime, valueAtStartTime, { endTime, value }) => { - if (valueAtStartTime === value) { - return value; - } - if ((0 < valueAtStartTime && 0 < value) || (valueAtStartTime < 0 && value < 0)) { - return valueAtStartTime * (value / valueAtStartTime) ** ((time - startTime) / (endTime - startTime)); - } - return 0; -}; - -const getLinearRampValueAtTime = (time, startTime, valueAtStartTime, { endTime, value }) => { - return valueAtStartTime + ((time - startTime) / (endTime - startTime)) * (value - valueAtStartTime); -}; - -const interpolateValue = (values, theoreticIndex) => { - const lowerIndex = Math.floor(theoreticIndex); - const upperIndex = Math.ceil(theoreticIndex); - if (lowerIndex === upperIndex) { - return values[lowerIndex]; - } - return (1 - (theoreticIndex - lowerIndex)) * values[lowerIndex] + (1 - (upperIndex - theoreticIndex)) * values[upperIndex]; -}; - -const getValueCurveValueAtTime = (time, { duration, startTime, values }) => { - const theoreticIndex = ((time - startTime) / duration) * (values.length - 1); - return interpolateValue(values, theoreticIndex); -}; - -const isSetTargetAutomationEvent = (automationEvent) => { - return automationEvent.type === 'setTarget'; -}; - -class AutomationEventList { - constructor(defaultValue) { - this._automationEvents = []; - this._currenTime = 0; - this._defaultValue = defaultValue; - } - [Symbol.iterator]() { - return this._automationEvents[Symbol.iterator](); - } - add(automationEvent) { - const eventTime = getEventTime(automationEvent); - if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) { - const index = this._automationEvents.findIndex((currentAutomationEvent) => { - if (isCancelScheduledValuesAutomationEvent(automationEvent) && isSetValueCurveAutomationEvent(currentAutomationEvent)) { - return currentAutomationEvent.startTime + currentAutomationEvent.duration >= eventTime; - } - return getEventTime(currentAutomationEvent) >= eventTime; - }); - const removedAutomationEvent = this._automationEvents[index]; - if (index !== -1) { - this._automationEvents = this._automationEvents.slice(0, index); - } - if (isCancelAndHoldAutomationEvent(automationEvent)) { - const lastAutomationEvent = this._automationEvents[this._automationEvents.length - 1]; - if (removedAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(removedAutomationEvent)) { - if (isSetTargetAutomationEvent(lastAutomationEvent)) { - throw new Error('The internal list is malformed.'); - } - const startTime = isSetValueCurveAutomationEvent(lastAutomationEvent) - ? lastAutomationEvent.startTime + lastAutomationEvent.duration - : getEventTime(lastAutomationEvent); - const startValue = isSetValueCurveAutomationEvent(lastAutomationEvent) - ? lastAutomationEvent.values[lastAutomationEvent.values.length - 1] - : lastAutomationEvent.value; - const value = isExponentialRampToValueAutomationEvent(removedAutomationEvent) - ? getExponentialRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent) - : getLinearRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent); - const truncatedAutomationEvent = isExponentialRampToValueAutomationEvent(removedAutomationEvent) - ? createExtendedExponentialRampToValueAutomationEvent(value, eventTime, this._currenTime) - : createExtendedLinearRampToValueAutomationEvent(value, eventTime, this._currenTime); - this._automationEvents.push(truncatedAutomationEvent); - } - if (lastAutomationEvent !== undefined && isSetTargetAutomationEvent(lastAutomationEvent)) { - this._automationEvents.push(createSetValueAutomationEvent(this.getValue(eventTime), eventTime)); - } - if (lastAutomationEvent !== undefined && - isSetValueCurveAutomationEvent(lastAutomationEvent) && - lastAutomationEvent.startTime + lastAutomationEvent.duration > eventTime) { - this._automationEvents[this._automationEvents.length - 1] = createSetValueCurveAutomationEvent(new Float32Array([6, 7]), lastAutomationEvent.startTime, eventTime - lastAutomationEvent.startTime); - } - } - } - else { - const index = this._automationEvents.findIndex((currentAutomationEvent) => getEventTime(currentAutomationEvent) > eventTime); - const previousAutomationEvent = index === -1 ? this._automationEvents[this._automationEvents.length - 1] : this._automationEvents[index - 1]; - if (previousAutomationEvent !== undefined && - isSetValueCurveAutomationEvent(previousAutomationEvent) && - getEventTime(previousAutomationEvent) + previousAutomationEvent.duration > eventTime) { - return false; - } - const persistentAutomationEvent = isExponentialRampToValueAutomationEvent(automationEvent) - ? createExtendedExponentialRampToValueAutomationEvent(automationEvent.value, automationEvent.endTime, this._currenTime) - : isLinearRampToValueAutomationEvent(automationEvent) - ? createExtendedLinearRampToValueAutomationEvent(automationEvent.value, eventTime, this._currenTime) - : automationEvent; - if (index === -1) { - this._automationEvents.push(persistentAutomationEvent); - } - else { - if (isSetValueCurveAutomationEvent(automationEvent) && - eventTime + automationEvent.duration > getEventTime(this._automationEvents[index])) { - return false; - } - this._automationEvents.splice(index, 0, persistentAutomationEvent); - } - } - return true; - } - flush(time) { - const index = this._automationEvents.findIndex((currentAutomationEvent) => getEventTime(currentAutomationEvent) > time); - if (index > 1) { - const remainingAutomationEvents = this._automationEvents.slice(index - 1); - const firstRemainingAutomationEvent = remainingAutomationEvents[0]; - if (isSetTargetAutomationEvent(firstRemainingAutomationEvent)) { - remainingAutomationEvents.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents, index - 2, firstRemainingAutomationEvent.startTime, this._defaultValue), firstRemainingAutomationEvent.startTime)); - } - this._automationEvents = remainingAutomationEvents; - } - } - getValue(time) { - if (this._automationEvents.length === 0) { - return this._defaultValue; - } - const indexOfNextEvent = this._automationEvents.findIndex((automationEvent) => getEventTime(automationEvent) > time); - const nextAutomationEvent = this._automationEvents[indexOfNextEvent]; - const indexOfCurrentEvent = (indexOfNextEvent === -1 ? this._automationEvents.length : indexOfNextEvent) - 1; - const currentAutomationEvent = this._automationEvents[indexOfCurrentEvent]; - if (currentAutomationEvent !== undefined && - isSetTargetAutomationEvent(currentAutomationEvent) && - (nextAutomationEvent === undefined || - !isAnyRampToValueAutomationEvent(nextAutomationEvent) || - nextAutomationEvent.insertTime > time)) { - return getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(this._automationEvents, indexOfCurrentEvent - 1, currentAutomationEvent.startTime, this._defaultValue), currentAutomationEvent); - } - if (currentAutomationEvent !== undefined && - isSetValueAutomationEvent(currentAutomationEvent) && - (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) { - return currentAutomationEvent.value; - } - if (currentAutomationEvent !== undefined && - isSetValueCurveAutomationEvent(currentAutomationEvent) && - (nextAutomationEvent === undefined || - !isAnyRampToValueAutomationEvent(nextAutomationEvent) || - currentAutomationEvent.startTime + currentAutomationEvent.duration > time)) { - if (time < currentAutomationEvent.startTime + currentAutomationEvent.duration) { - return getValueCurveValueAtTime(time, currentAutomationEvent); - } - return currentAutomationEvent.values[currentAutomationEvent.values.length - 1]; - } - if (currentAutomationEvent !== undefined && - isAnyRampToValueAutomationEvent(currentAutomationEvent) && - (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) { - return currentAutomationEvent.value; - } - if (nextAutomationEvent !== undefined && isExponentialRampToValueAutomationEvent(nextAutomationEvent)) { - const [startTime, value] = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue); - return getExponentialRampValueAtTime(time, startTime, value, nextAutomationEvent); - } - if (nextAutomationEvent !== undefined && isLinearRampToValueAutomationEvent(nextAutomationEvent)) { - const [startTime, value] = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue); - return getLinearRampValueAtTime(time, startTime, value, nextAutomationEvent); - } - return this._defaultValue; - } -} - -const createCancelAndHoldAutomationEvent = (cancelTime) => { - return { cancelTime, type: 'cancelAndHold' }; -}; - -const createCancelScheduledValuesAutomationEvent = (cancelTime) => { - return { cancelTime, type: 'cancelScheduledValues' }; -}; - -const createExponentialRampToValueAutomationEvent = (value, endTime) => { - return { endTime, type: 'exponentialRampToValue', value }; -}; - -const createLinearRampToValueAutomationEvent = (value, endTime) => { - return { endTime, type: 'linearRampToValue', value }; -}; - -const createSetTargetAutomationEvent = (target, startTime, timeConstant) => { - return { startTime, target, timeConstant, type: 'setTarget' }; -}; - -const createAbortError = () => new DOMException('', 'AbortError'); - -const createAddActiveInputConnectionToAudioNode = (insertElementInSet) => { - return (activeInputs, source, [output, input, eventListener], ignoreDuplicates) => { - insertElementInSet(activeInputs[input], [source, output, eventListener], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output, ignoreDuplicates); - }; -}; - -const createAddAudioNodeConnections = (audioNodeConnectionsStore) => { - return (audioNode, audioNodeRenderer, nativeAudioNode) => { - const activeInputs = []; - for (let i = 0; i < nativeAudioNode.numberOfInputs; i += 1) { - activeInputs.push(new Set()); - } - audioNodeConnectionsStore.set(audioNode, { - activeInputs, - outputs: new Set(), - passiveInputs: new WeakMap(), - renderer: audioNodeRenderer - }); - }; -}; - -const createAddAudioParamConnections = (audioParamConnectionsStore) => { - return (audioParam, audioParamRenderer) => { - audioParamConnectionsStore.set(audioParam, { activeInputs: new Set(), passiveInputs: new WeakMap(), renderer: audioParamRenderer }); - }; -}; - -const ACTIVE_AUDIO_NODE_STORE = new WeakSet(); -const AUDIO_NODE_CONNECTIONS_STORE = new WeakMap(); -const AUDIO_NODE_STORE = new WeakMap(); -const AUDIO_PARAM_CONNECTIONS_STORE = new WeakMap(); -const AUDIO_PARAM_STORE = new WeakMap(); -const CONTEXT_STORE = new WeakMap(); -const EVENT_LISTENERS = new WeakMap(); -const CYCLE_COUNTERS = new WeakMap(); -// This clunky name is borrowed from the spec. :-) -const NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS = new WeakMap(); -const NODE_TO_PROCESSOR_MAPS = new WeakMap(); - -const handler = { - construct() { - return handler; - } -}; -const isConstructible = (constructible) => { - try { - const proxy = new Proxy(constructible, handler); - new proxy(); // tslint:disable-line:no-unused-expression - } - catch { - return false; - } - return true; -}; - -/* - * This massive regex tries to cover all the following cases. - * - * import './path'; - * import defaultImport from './path'; - * import { namedImport } from './path'; - * import { namedImport as renamendImport } from './path'; - * import * as namespaceImport from './path'; - * import defaultImport, { namedImport } from './path'; - * import defaultImport, { namedImport as renamendImport } from './path'; - * import defaultImport, * as namespaceImport from './path'; - */ -const IMPORT_STATEMENT_REGEX = /^import(?:(?:[\s]+[\w]+|(?:[\s]+[\w]+[\s]*,)?[\s]*\{[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?(?:[\s]*,[\s]*[\w]+(?:[\s]+as[\s]+[\w]+)?)*[\s]*}|(?:[\s]+[\w]+[\s]*,)?[\s]*\*[\s]+as[\s]+[\w]+)[\s]+from)?(?:[\s]*)("([^"\\]|\\.)+"|'([^'\\]|\\.)+')(?:[\s]*);?/; // tslint:disable-line:max-line-length -const splitImportStatements = (source, url) => { - const importStatements = []; - let sourceWithoutImportStatements = source.replace(/^[\s]+/, ''); - let result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX); - while (result !== null) { - const unresolvedUrl = result[1].slice(1, -1); - const importStatementWithResolvedUrl = result[0] - .replace(/([\s]+)?;?$/, '') - .replace(unresolvedUrl, new URL(unresolvedUrl, url).toString()); - importStatements.push(importStatementWithResolvedUrl); - sourceWithoutImportStatements = sourceWithoutImportStatements.slice(result[0].length).replace(/^[\s]+/, ''); - result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX); - } - return [importStatements.join(';'), sourceWithoutImportStatements]; -}; - -const verifyParameterDescriptors = (parameterDescriptors) => { - if (parameterDescriptors !== undefined && !Array.isArray(parameterDescriptors)) { - throw new TypeError('The parameterDescriptors property of given value for processorCtor is not an array.'); - } -}; -const verifyProcessorCtor = (processorCtor) => { - if (!isConstructible(processorCtor)) { - throw new TypeError('The given value for processorCtor should be a constructor.'); - } - if (processorCtor.prototype === null || typeof processorCtor.prototype !== 'object') { - throw new TypeError('The given value for processorCtor should have a prototype.'); - } -}; -const createAddAudioWorkletModule = (cacheTestResult, createNotSupportedError, evaluateSource, exposeCurrentFrameAndCurrentTime, fetchSource, getNativeContext, getOrCreateBackupOfflineAudioContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, ongoingRequests, resolvedRequests, testAudioWorkletProcessorPostMessageSupport, window) => { - let index = 0; - return (context, moduleURL, options = { credentials: 'omit' }) => { - const resolvedRequestsOfContext = resolvedRequests.get(context); - if (resolvedRequestsOfContext !== undefined && resolvedRequestsOfContext.has(moduleURL)) { - return Promise.resolve(); - } - const ongoingRequestsOfContext = ongoingRequests.get(context); - if (ongoingRequestsOfContext !== undefined) { - const promiseOfOngoingRequest = ongoingRequestsOfContext.get(moduleURL); - if (promiseOfOngoingRequest !== undefined) { - return promiseOfOngoingRequest; - } - } - const nativeContext = getNativeContext(context); - // Bug #59: Safari does not implement the audioWorklet property. - const promise = nativeContext.audioWorklet === undefined - ? fetchSource(moduleURL) - .then(([source, absoluteUrl]) => { - const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl); - /* - * This is the unminified version of the code used below: - * - * ```js - * ${ importStatements }; - * ((a, b) => { - * (a[b] = a[b] || [ ]).push( - * (AudioWorkletProcessor, global, registerProcessor, sampleRate, self, window) => { - * ${ sourceWithoutImportStatements } - * } - * ); - * })(window, '_AWGS'); - * ``` - */ - // tslint:disable-next-line:max-line-length - const wrappedSource = `${importStatements};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${sourceWithoutImportStatements} -})})(window,'_AWGS')`; - // @todo Evaluating the given source code is a possible security problem. - return evaluateSource(wrappedSource); - }) - .then(() => { - const evaluateAudioWorkletGlobalScope = window._AWGS.pop(); - if (evaluateAudioWorkletGlobalScope === undefined) { - // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException. - throw new SyntaxError(); - } - exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () => evaluateAudioWorkletGlobalScope(class AudioWorkletProcessor { - }, undefined, (name, processorCtor) => { - if (name.trim() === '') { - throw createNotSupportedError(); - } - const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext); - if (nodeNameToProcessorConstructorMap !== undefined) { - if (nodeNameToProcessorConstructorMap.has(name)) { - throw createNotSupportedError(); - } - verifyProcessorCtor(processorCtor); - verifyParameterDescriptors(processorCtor.parameterDescriptors); - nodeNameToProcessorConstructorMap.set(name, processorCtor); - } - else { - verifyProcessorCtor(processorCtor); - verifyParameterDescriptors(processorCtor.parameterDescriptors); - NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(nativeContext, new Map([[name, processorCtor]])); - } - }, nativeContext.sampleRate, undefined, undefined)); - }) - : Promise.all([ - fetchSource(moduleURL), - Promise.resolve(cacheTestResult(testAudioWorkletProcessorPostMessageSupport, testAudioWorkletProcessorPostMessageSupport)) - ]).then(([[source, absoluteUrl], isSupportingPostMessage]) => { - const currentIndex = index + 1; - index = currentIndex; - const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl); - /* - * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument. - * - * This is the unminified version of the code used below. - * - * ```js - * class extends AudioWorkletProcessor { - * - * __buffers = new WeakSet(); - * - * constructor () { - * super(); - * - * this.port.postMessage = ((postMessage) => { - * return (message, transferables) => { - * const filteredTransferables = (transferables) - * ? transferables.filter((transferable) => !this.__buffers.has(transferable)) - * : transferables; - * - * return postMessage.call(this.port, message, filteredTransferables); - * }; - * })(this.port.postMessage); - * } - * } - * ``` - */ - const patchedAudioWorkletProcessor = isSupportingPostMessage - ? 'AudioWorkletProcessor' - : 'class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}'; - /* - * Bug #170: Chrome and Edge do call process() with an array with empty channelData for each input if no input is connected. - * - * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument. - * - * Bug #190: Safari doesn't throw an error when loading an unparsable module. - * - * This is the unminified version of the code used below: - * - * ```js - * `${ importStatements }; - * ((AudioWorkletProcessor, registerProcessor) => {${ sourceWithoutImportStatements } - * })( - * ${ patchedAudioWorkletProcessor }, - * (name, processorCtor) => registerProcessor(name, class extends processorCtor { - * - * __collectBuffers = (array) => { - * array.forEach((element) => this.__buffers.add(element.buffer)); - * }; - * - * process (inputs, outputs, parameters) { - * inputs.forEach(this.__collectBuffers); - * outputs.forEach(this.__collectBuffers); - * this.__collectBuffers(Object.values(parameters)); - * - * return super.process( - * (inputs.map((input) => input.some((channelData) => channelData.length === 0)) ? [ ] : input), - * outputs, - * parameters - * ); - * } - * - * }) - * ); - * - * registerProcessor(`__sac${currentIndex}`, class extends AudioWorkletProcessor{ - * - * process () { - * return false; - * } - * - * })` - * ``` - */ - const memberDefinition = isSupportingPostMessage ? '' : '__c = (a) => a.forEach(e=>this.__b.add(e.buffer));'; - const bufferRegistration = isSupportingPostMessage - ? '' - : 'i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));'; - const wrappedSource = `${importStatements};((AudioWorkletProcessor,registerProcessor)=>{${sourceWithoutImportStatements} -})(${patchedAudioWorkletProcessor},(n,p)=>registerProcessor(n,class extends p{${memberDefinition}process(i,o,p){${bufferRegistration}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${currentIndex}',class extends AudioWorkletProcessor{process(){return !1}})`; - const blob = new Blob([wrappedSource], { type: 'application/javascript; charset=utf-8' }); - const url = URL.createObjectURL(blob); - return nativeContext.audioWorklet - .addModule(url, options) - .then(() => { - if (isNativeOfflineAudioContext(nativeContext)) { - return nativeContext; - } - // Bug #186: Chrome, Edge and Opera do not allow to create an AudioWorkletNode on a closed AudioContext. - const backupOfflineAudioContext = getOrCreateBackupOfflineAudioContext(nativeContext); - return backupOfflineAudioContext.audioWorklet.addModule(url, options).then(() => backupOfflineAudioContext); - }) - .then((nativeContextOrBackupOfflineAudioContext) => { - if (nativeAudioWorkletNodeConstructor === null) { - throw new SyntaxError(); - } - try { - // Bug #190: Safari doesn't throw an error when loading an unparsable module. - new nativeAudioWorkletNodeConstructor(nativeContextOrBackupOfflineAudioContext, `__sac${currentIndex}`); // tslint:disable-line:no-unused-expression - } - catch { - throw new SyntaxError(); - } - }) - .finally(() => URL.revokeObjectURL(url)); - }); - if (ongoingRequestsOfContext === undefined) { - ongoingRequests.set(context, new Map([[moduleURL, promise]])); - } - else { - ongoingRequestsOfContext.set(moduleURL, promise); - } - promise - .then(() => { - const updatedResolvedRequestsOfContext = resolvedRequests.get(context); - if (updatedResolvedRequestsOfContext === undefined) { - resolvedRequests.set(context, new Set([moduleURL])); - } - else { - updatedResolvedRequestsOfContext.add(moduleURL); - } - }) - .finally(() => { - const updatedOngoingRequestsOfContext = ongoingRequests.get(context); - if (updatedOngoingRequestsOfContext !== undefined) { - updatedOngoingRequestsOfContext.delete(moduleURL); - } - }); - return promise; - }; -}; - -const getValueForKey = (map, key) => { - const value = map.get(key); - if (value === undefined) { - throw new Error('A value with the given key could not be found.'); - } - return value; -}; - -const pickElementFromSet = (set, predicate) => { - const matchingElements = Array.from(set).filter(predicate); - if (matchingElements.length > 1) { - throw Error('More than one element was found.'); - } - if (matchingElements.length === 0) { - throw Error('No element was found.'); - } - const [matchingElement] = matchingElements; - set.delete(matchingElement); - return matchingElement; -}; - -const deletePassiveInputConnectionToAudioNode = (passiveInputs, source, output, input) => { - const passiveInputConnections = getValueForKey(passiveInputs, source); - const matchingConnection = pickElementFromSet(passiveInputConnections, (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input); - if (passiveInputConnections.size === 0) { - passiveInputs.delete(source); - } - return matchingConnection; -}; - -const getEventListenersOfAudioNode = (audioNode) => { - return getValueForKey(EVENT_LISTENERS, audioNode); -}; - -const setInternalStateToActive = (audioNode) => { - if (ACTIVE_AUDIO_NODE_STORE.has(audioNode)) { - throw new Error('The AudioNode is already stored.'); - } - ACTIVE_AUDIO_NODE_STORE.add(audioNode); - getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(true)); -}; - -const isAudioWorkletNode = (audioNode) => { - return 'port' in audioNode; -}; - -const setInternalStateToPassive = (audioNode) => { - if (!ACTIVE_AUDIO_NODE_STORE.has(audioNode)) { - throw new Error('The AudioNode is not stored.'); - } - ACTIVE_AUDIO_NODE_STORE.delete(audioNode); - getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(false)); -}; - -// Set the internalState of the audioNode to 'passive' if it is not an AudioWorkletNode and if it has no 'active' input connections. -const setInternalStateToPassiveWhenNecessary = (audioNode, activeInputs) => { - if (!isAudioWorkletNode(audioNode) && activeInputs.every((connections) => connections.size === 0)) { - setInternalStateToPassive(audioNode); - } -}; - -const createAddConnectionToAudioNode = (addActiveInputConnectionToAudioNode, addPassiveInputConnectionToAudioNode, connectNativeAudioNodeToNativeAudioNode, deleteActiveInputConnectionToAudioNode, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getAudioNodeTailTime, getEventListenersOfAudioNode, getNativeAudioNode, insertElementInSet, isActiveAudioNode, isPartOfACycle, isPassiveAudioNode) => { - const tailTimeTimeoutIds = new WeakMap(); - return (source, destination, output, input, isOffline) => { - const { activeInputs, passiveInputs } = getAudioNodeConnections(destination); - const { outputs } = getAudioNodeConnections(source); - const eventListeners = getEventListenersOfAudioNode(source); - const eventListener = (isActive) => { - const nativeDestinationAudioNode = getNativeAudioNode(destination); - const nativeSourceAudioNode = getNativeAudioNode(source); - if (isActive) { - const partialConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input); - addActiveInputConnectionToAudioNode(activeInputs, source, partialConnection, false); - if (!isOffline && !isPartOfACycle(source)) { - connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input); - } - if (isPassiveAudioNode(destination)) { - setInternalStateToActive(destination); - } - } - else { - const partialConnection = deleteActiveInputConnectionToAudioNode(activeInputs, source, output, input); - addPassiveInputConnectionToAudioNode(passiveInputs, input, partialConnection, false); - if (!isOffline && !isPartOfACycle(source)) { - disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input); - } - const tailTime = getAudioNodeTailTime(destination); - if (tailTime === 0) { - if (isActiveAudioNode(destination)) { - setInternalStateToPassiveWhenNecessary(destination, activeInputs); - } - } - else { - const tailTimeTimeoutId = tailTimeTimeoutIds.get(destination); - if (tailTimeTimeoutId !== undefined) { - clearTimeout(tailTimeTimeoutId); - } - tailTimeTimeoutIds.set(destination, setTimeout(() => { - if (isActiveAudioNode(destination)) { - setInternalStateToPassiveWhenNecessary(destination, activeInputs); - } - }, tailTime * 1000)); - } - } - }; - if (insertElementInSet(outputs, [destination, output, input], (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output && outputConnection[2] === input, true)) { - eventListeners.add(eventListener); - if (isActiveAudioNode(source)) { - addActiveInputConnectionToAudioNode(activeInputs, source, [output, input, eventListener], true); - } - else { - addPassiveInputConnectionToAudioNode(passiveInputs, input, [source, output, eventListener], true); - } - return true; - } - return false; - }; -}; - -const createAddPassiveInputConnectionToAudioNode = (insertElementInSet) => { - return (passiveInputs, input, [source, output, eventListener], ignoreDuplicates) => { - const passiveInputConnections = passiveInputs.get(source); - if (passiveInputConnections === undefined) { - passiveInputs.set(source, new Set([[output, input, eventListener]])); - } - else { - insertElementInSet(passiveInputConnections, [output, input, eventListener], (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input, ignoreDuplicates); - } - }; -}; - -const createAddSilentConnection = (createNativeGainNode) => { - return (nativeContext, nativeAudioScheduledSourceNode) => { - const nativeGainNode = createNativeGainNode(nativeContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - gain: 0 - }); - nativeAudioScheduledSourceNode.connect(nativeGainNode).connect(nativeContext.destination); - const disconnect = () => { - nativeAudioScheduledSourceNode.removeEventListener('ended', disconnect); - nativeAudioScheduledSourceNode.disconnect(nativeGainNode); - nativeGainNode.disconnect(); - }; - nativeAudioScheduledSourceNode.addEventListener('ended', disconnect); - }; -}; - -const createAddUnrenderedAudioWorkletNode = (getUnrenderedAudioWorkletNodes) => { - return (nativeContext, audioWorkletNode) => { - getUnrenderedAudioWorkletNodes(nativeContext).add(audioWorkletNode); - }; -}; - -const DEFAULT_OPTIONS = { - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - fftSize: 2048, - maxDecibels: -30, - minDecibels: -100, - smoothingTimeConstant: 0.8 -}; -const createAnalyserNodeConstructor = (audionNodeConstructor, createAnalyserNodeRenderer, createIndexSizeError, createNativeAnalyserNode, getNativeContext, isNativeOfflineAudioContext) => { - return class AnalyserNode extends audionNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS, ...options }; - const nativeAnalyserNode = createNativeAnalyserNode(nativeContext, mergedOptions); - const analyserNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createAnalyserNodeRenderer() : null)); - super(context, false, nativeAnalyserNode, analyserNodeRenderer); - this._nativeAnalyserNode = nativeAnalyserNode; - } - get fftSize() { - return this._nativeAnalyserNode.fftSize; - } - set fftSize(value) { - this._nativeAnalyserNode.fftSize = value; - } - get frequencyBinCount() { - return this._nativeAnalyserNode.frequencyBinCount; - } - get maxDecibels() { - return this._nativeAnalyserNode.maxDecibels; - } - set maxDecibels(value) { - // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels. - const maxDecibels = this._nativeAnalyserNode.maxDecibels; - this._nativeAnalyserNode.maxDecibels = value; - if (!(value > this._nativeAnalyserNode.minDecibels)) { - this._nativeAnalyserNode.maxDecibels = maxDecibels; - throw createIndexSizeError(); - } - } - get minDecibels() { - return this._nativeAnalyserNode.minDecibels; - } - set minDecibels(value) { - // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels. - const minDecibels = this._nativeAnalyserNode.minDecibels; - this._nativeAnalyserNode.minDecibels = value; - if (!(this._nativeAnalyserNode.maxDecibels > value)) { - this._nativeAnalyserNode.minDecibels = minDecibels; - throw createIndexSizeError(); - } - } - get smoothingTimeConstant() { - return this._nativeAnalyserNode.smoothingTimeConstant; - } - set smoothingTimeConstant(value) { - this._nativeAnalyserNode.smoothingTimeConstant = value; - } - getByteFrequencyData(array) { - this._nativeAnalyserNode.getByteFrequencyData(array); - } - getByteTimeDomainData(array) { - this._nativeAnalyserNode.getByteTimeDomainData(array); - } - getFloatFrequencyData(array) { - this._nativeAnalyserNode.getFloatFrequencyData(array); - } - getFloatTimeDomainData(array) { - this._nativeAnalyserNode.getFloatTimeDomainData(array); - } - }; -}; - -const isOwnedByContext = (nativeAudioNode, nativeContext) => { - return nativeAudioNode.context === nativeContext; -}; - -const createAnalyserNodeRendererFactory = (createNativeAnalyserNode, getNativeAudioNode, renderInputsOfAudioNode) => { - return () => { - const renderedNativeAnalyserNodes = new WeakMap(); - const createAnalyserNode = async (proxy, nativeOfflineAudioContext) => { - let nativeAnalyserNode = getNativeAudioNode(proxy); - // If the initially used nativeAnalyserNode was not constructed on the same OfflineAudioContext it needs to be created again. - const nativeAnalyserNodeIsOwnedByContext = isOwnedByContext(nativeAnalyserNode, nativeOfflineAudioContext); - if (!nativeAnalyserNodeIsOwnedByContext) { - const options = { - channelCount: nativeAnalyserNode.channelCount, - channelCountMode: nativeAnalyserNode.channelCountMode, - channelInterpretation: nativeAnalyserNode.channelInterpretation, - fftSize: nativeAnalyserNode.fftSize, - maxDecibels: nativeAnalyserNode.maxDecibels, - minDecibels: nativeAnalyserNode.minDecibels, - smoothingTimeConstant: nativeAnalyserNode.smoothingTimeConstant - }; - nativeAnalyserNode = createNativeAnalyserNode(nativeOfflineAudioContext, options); - } - renderedNativeAnalyserNodes.set(nativeOfflineAudioContext, nativeAnalyserNode); - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAnalyserNode); - return nativeAnalyserNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeAnalyserNode = renderedNativeAnalyserNodes.get(nativeOfflineAudioContext); - if (renderedNativeAnalyserNode !== undefined) { - return Promise.resolve(renderedNativeAnalyserNode); - } - return createAnalyserNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const testAudioBufferCopyChannelMethodsOutOfBoundsSupport = (nativeAudioBuffer) => { - try { - nativeAudioBuffer.copyToChannel(new Float32Array(1), 0, -1); - } - catch { - return false; - } - return true; -}; - -const createIndexSizeError = () => new DOMException('', 'IndexSizeError'); - -const wrapAudioBufferGetChannelDataMethod = (audioBuffer) => { - audioBuffer.getChannelData = ((getChannelData) => { - return (channel) => { - try { - return getChannelData.call(audioBuffer, channel); - } - catch (err) { - if (err.code === 12) { - throw createIndexSizeError(); - } - throw err; - } - }; - })(audioBuffer.getChannelData); -}; - -const DEFAULT_OPTIONS$1 = { - numberOfChannels: 1 -}; -const createAudioBufferConstructor = (audioBufferStore, cacheTestResult, createNotSupportedError, nativeAudioBufferConstructor, nativeOfflineAudioContextConstructor, testNativeAudioBufferConstructorSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => { - let nativeOfflineAudioContext = null; - return class AudioBuffer { - constructor(options) { - if (nativeOfflineAudioContextConstructor === null) { - throw new Error('Missing the native OfflineAudioContext constructor.'); - } - const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS$1, ...options }; - if (nativeOfflineAudioContext === null) { - nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); - } - /* - * Bug #99: Firefox does not throw a NotSupportedError when the numberOfChannels is zero. But it only does it when using the - * factory function. But since Firefox also supports the constructor everything should be fine. - */ - const audioBuffer = nativeAudioBufferConstructor !== null && - cacheTestResult(testNativeAudioBufferConstructorSupport, testNativeAudioBufferConstructorSupport) - ? new nativeAudioBufferConstructor({ length, numberOfChannels, sampleRate }) - : nativeOfflineAudioContext.createBuffer(numberOfChannels, length, sampleRate); - // Bug #99: Safari does not throw an error when the numberOfChannels is zero. - if (audioBuffer.numberOfChannels === 0) { - throw createNotSupportedError(); - } - // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). - // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value. - if (typeof audioBuffer.copyFromChannel !== 'function') { - wrapAudioBufferCopyChannelMethods(audioBuffer); - wrapAudioBufferGetChannelDataMethod(audioBuffer); - // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds. - } - else if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) { - wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer); - } - audioBufferStore.add(audioBuffer); - /* - * This does violate all good pratices but it is necessary to allow this AudioBuffer to be used with native - * (Offline)AudioContexts. - */ - return audioBuffer; - } - static [Symbol.hasInstance](instance) { - return ((instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === AudioBuffer.prototype) || - audioBufferStore.has(instance)); - } - }; -}; - -const MOST_NEGATIVE_SINGLE_FLOAT = -3.4028234663852886e38; -const MOST_POSITIVE_SINGLE_FLOAT = -MOST_NEGATIVE_SINGLE_FLOAT; - -const isActiveAudioNode = (audioNode) => ACTIVE_AUDIO_NODE_STORE.has(audioNode); - -const DEFAULT_OPTIONS$2 = { - buffer: null, - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - // Bug #149: Safari does not yet support the detune AudioParam. - loop: false, - loopEnd: 0, - loopStart: 0, - playbackRate: 1 -}; -const createAudioBufferSourceNodeConstructor = (audioNodeConstructor, createAudioBufferSourceNodeRenderer, createAudioParam, createInvalidStateError, createNativeAudioBufferSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => { - return class AudioBufferSourceNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$2, ...options }; - const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, mergedOptions); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const audioBufferSourceNodeRenderer = ((isOffline ? createAudioBufferSourceNodeRenderer() : null)); - super(context, false, nativeAudioBufferSourceNode, audioBufferSourceNodeRenderer); - this._audioBufferSourceNodeRenderer = audioBufferSourceNodeRenderer; - this._isBufferNullified = false; - this._isBufferSet = mergedOptions.buffer !== null; - this._nativeAudioBufferSourceNode = nativeAudioBufferSourceNode; - this._onended = null; - // Bug #73: Safari does not export the correct values for maxValue and minValue. - this._playbackRate = createAudioParam(this, isOffline, nativeAudioBufferSourceNode.playbackRate, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); - } - get buffer() { - if (this._isBufferNullified) { - return null; - } - return this._nativeAudioBufferSourceNode.buffer; - } - set buffer(value) { - this._nativeAudioBufferSourceNode.buffer = value; - // Bug #72: Only Chrome, Edge & Opera do not allow to reassign the buffer yet. - if (value !== null) { - if (this._isBufferSet) { - throw createInvalidStateError(); - } - this._isBufferSet = true; - } - } - get loop() { - return this._nativeAudioBufferSourceNode.loop; - } - set loop(value) { - this._nativeAudioBufferSourceNode.loop = value; - } - get loopEnd() { - return this._nativeAudioBufferSourceNode.loopEnd; - } - set loopEnd(value) { - this._nativeAudioBufferSourceNode.loopEnd = value; - } - get loopStart() { - return this._nativeAudioBufferSourceNode.loopStart; - } - set loopStart(value) { - this._nativeAudioBufferSourceNode.loopStart = value; - } - get onended() { - return this._onended; - } - set onended(value) { - const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null; - this._nativeAudioBufferSourceNode.onended = wrappedListener; - const nativeOnEnded = this._nativeAudioBufferSourceNode.onended; - this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded; - } - get playbackRate() { - return this._playbackRate; - } - start(when = 0, offset = 0, duration) { - this._nativeAudioBufferSourceNode.start(when, offset, duration); - if (this._audioBufferSourceNodeRenderer !== null) { - this._audioBufferSourceNodeRenderer.start = duration === undefined ? [when, offset] : [when, offset, duration]; - } - if (this.context.state !== 'closed') { - setInternalStateToActive(this); - const resetInternalStateToPassive = () => { - this._nativeAudioBufferSourceNode.removeEventListener('ended', resetInternalStateToPassive); - if (isActiveAudioNode(this)) { - setInternalStateToPassive(this); - } - }; - this._nativeAudioBufferSourceNode.addEventListener('ended', resetInternalStateToPassive); - } - } - stop(when = 0) { - this._nativeAudioBufferSourceNode.stop(when); - if (this._audioBufferSourceNodeRenderer !== null) { - this._audioBufferSourceNodeRenderer.stop = when; - } - } - }; -}; - -const createAudioBufferSourceNodeRendererFactory = (connectAudioParam, createNativeAudioBufferSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { - return () => { - const renderedNativeAudioBufferSourceNodes = new WeakMap(); - let start = null; - let stop = null; - const createAudioBufferSourceNode = async (proxy, nativeOfflineAudioContext) => { - let nativeAudioBufferSourceNode = getNativeAudioNode(proxy); - /* - * If the initially used nativeAudioBufferSourceNode was not constructed on the same OfflineAudioContext it needs to be created - * again. - */ - const nativeAudioBufferSourceNodeIsOwnedByContext = isOwnedByContext(nativeAudioBufferSourceNode, nativeOfflineAudioContext); - if (!nativeAudioBufferSourceNodeIsOwnedByContext) { - const options = { - buffer: nativeAudioBufferSourceNode.buffer, - channelCount: nativeAudioBufferSourceNode.channelCount, - channelCountMode: nativeAudioBufferSourceNode.channelCountMode, - channelInterpretation: nativeAudioBufferSourceNode.channelInterpretation, - // Bug #149: Safari does not yet support the detune AudioParam. - loop: nativeAudioBufferSourceNode.loop, - loopEnd: nativeAudioBufferSourceNode.loopEnd, - loopStart: nativeAudioBufferSourceNode.loopStart, - playbackRate: nativeAudioBufferSourceNode.playbackRate.value - }; - nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, options); - if (start !== null) { - nativeAudioBufferSourceNode.start(...start); - } - if (stop !== null) { - nativeAudioBufferSourceNode.stop(stop); - } - } - renderedNativeAudioBufferSourceNodes.set(nativeOfflineAudioContext, nativeAudioBufferSourceNode); - if (!nativeAudioBufferSourceNodeIsOwnedByContext) { - // Bug #149: Safari does not yet support the detune AudioParam. - await renderAutomation(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate); - } - else { - // Bug #149: Safari does not yet support the detune AudioParam. - await connectAudioParam(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate); - } - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioBufferSourceNode); - return nativeAudioBufferSourceNode; - }; - return { - set start(value) { - start = value; - }, - set stop(value) { - stop = value; - }, - render(proxy, nativeOfflineAudioContext) { - const renderedNativeAudioBufferSourceNode = renderedNativeAudioBufferSourceNodes.get(nativeOfflineAudioContext); - if (renderedNativeAudioBufferSourceNode !== undefined) { - return Promise.resolve(renderedNativeAudioBufferSourceNode); - } - return createAudioBufferSourceNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const isAudioBufferSourceNode = (audioNode) => { - return 'playbackRate' in audioNode; -}; - -const isBiquadFilterNode = (audioNode) => { - return 'frequency' in audioNode && 'gain' in audioNode; -}; - -const isConstantSourceNode = (audioNode) => { - return 'offset' in audioNode; -}; - -const isGainNode = (audioNode) => { - return !('frequency' in audioNode) && 'gain' in audioNode; -}; - -const isOscillatorNode = (audioNode) => { - return 'detune' in audioNode && 'frequency' in audioNode; -}; - -const isStereoPannerNode = (audioNode) => { - return 'pan' in audioNode; -}; - -const getAudioNodeConnections = (audioNode) => { - return getValueForKey(AUDIO_NODE_CONNECTIONS_STORE, audioNode); -}; - -const getAudioParamConnections = (audioParam) => { - return getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE, audioParam); -}; - -const deactivateActiveAudioNodeInputConnections = (audioNode, trace) => { - const { activeInputs } = getAudioNodeConnections(audioNode); - activeInputs.forEach((connections) => connections.forEach(([source]) => { - if (!trace.includes(audioNode)) { - deactivateActiveAudioNodeInputConnections(source, [...trace, audioNode]); - } - })); - const audioParams = isAudioBufferSourceNode(audioNode) - ? [ - // Bug #149: Safari does not yet support the detune AudioParam. - audioNode.playbackRate - ] - : isAudioWorkletNode(audioNode) - ? Array.from(audioNode.parameters.values()) - : isBiquadFilterNode(audioNode) - ? [audioNode.Q, audioNode.detune, audioNode.frequency, audioNode.gain] - : isConstantSourceNode(audioNode) - ? [audioNode.offset] - : isGainNode(audioNode) - ? [audioNode.gain] - : isOscillatorNode(audioNode) - ? [audioNode.detune, audioNode.frequency] - : isStereoPannerNode(audioNode) - ? [audioNode.pan] - : []; - for (const audioParam of audioParams) { - const audioParamConnections = getAudioParamConnections(audioParam); - if (audioParamConnections !== undefined) { - audioParamConnections.activeInputs.forEach(([source]) => deactivateActiveAudioNodeInputConnections(source, trace)); - } - } - if (isActiveAudioNode(audioNode)) { - setInternalStateToPassive(audioNode); - } -}; - -const deactivateAudioGraph = (context) => { - deactivateActiveAudioNodeInputConnections(context.destination, []); -}; - -const isValidLatencyHint = (latencyHint) => { - return (latencyHint === undefined || - typeof latencyHint === 'number' || - (typeof latencyHint === 'string' && (latencyHint === 'balanced' || latencyHint === 'interactive' || latencyHint === 'playback'))); -}; - -const createAudioContextConstructor = (baseAudioContextConstructor, createInvalidStateError, createNotSupportedError, createUnknownError, mediaElementAudioSourceNodeConstructor, mediaStreamAudioDestinationNodeConstructor, mediaStreamAudioSourceNodeConstructor, mediaStreamTrackAudioSourceNodeConstructor, nativeAudioContextConstructor) => { - return class AudioContext extends baseAudioContextConstructor { - constructor(options = {}) { - if (nativeAudioContextConstructor === null) { - throw new Error('Missing the native AudioContext constructor.'); - } - let nativeAudioContext; - try { - nativeAudioContext = new nativeAudioContextConstructor(options); - } - catch (err) { - // Bug #192 Safari does throw a SyntaxError if the sampleRate is not supported. - if (err.code === 12 && err.message === 'sampleRate is not in range') { - throw createNotSupportedError(); - } - throw err; - } - // Bug #131 Safari returns null when there are four other AudioContexts running already. - if (nativeAudioContext === null) { - throw createUnknownError(); - } - // Bug #51 Only Chrome, Edge and Opera throw an error if the given latencyHint is invalid. - if (!isValidLatencyHint(options.latencyHint)) { - throw new TypeError(`The provided value '${options.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`); - } - // Bug #150 Safari does not support setting the sampleRate. - if (options.sampleRate !== undefined && nativeAudioContext.sampleRate !== options.sampleRate) { - throw createNotSupportedError(); - } - super(nativeAudioContext, 2); - const { latencyHint } = options; - const { sampleRate } = nativeAudioContext; - // @todo The values for 'balanced', 'interactive' and 'playback' are just copied from Chrome's implementation. - this._baseLatency = - typeof nativeAudioContext.baseLatency === 'number' - ? nativeAudioContext.baseLatency - : latencyHint === 'balanced' - ? 512 / sampleRate - : latencyHint === 'interactive' || latencyHint === undefined - ? 256 / sampleRate - : latencyHint === 'playback' - ? 1024 / sampleRate - : /* - * @todo The min (256) and max (16384) values are taken from the allowed bufferSize values of a - * ScriptProcessorNode. - */ - (Math.max(2, Math.min(128, Math.round((latencyHint * sampleRate) / 128))) * 128) / sampleRate; - this._nativeAudioContext = nativeAudioContext; - // Bug #188: Safari will set the context's state to 'interrupted' in case the user switches tabs. - if (nativeAudioContextConstructor.name === 'webkitAudioContext') { - this._nativeGainNode = nativeAudioContext.createGain(); - this._nativeOscillatorNode = nativeAudioContext.createOscillator(); - this._nativeGainNode.gain.value = 1e-37; - this._nativeOscillatorNode.connect(this._nativeGainNode).connect(nativeAudioContext.destination); - this._nativeOscillatorNode.start(); - } - else { - this._nativeGainNode = null; - this._nativeOscillatorNode = null; - } - this._state = null; - /* - * Bug #34: Chrome, Edge and Opera pretend to be running right away, but fire an onstatechange event when the state actually - * changes to 'running'. - */ - if (nativeAudioContext.state === 'running') { - this._state = 'suspended'; - const revokeState = () => { - if (this._state === 'suspended') { - this._state = null; - } - nativeAudioContext.removeEventListener('statechange', revokeState); - }; - nativeAudioContext.addEventListener('statechange', revokeState); - } - } - get baseLatency() { - return this._baseLatency; - } - get state() { - return this._state !== null ? this._state : this._nativeAudioContext.state; - } - close() { - // Bug #35: Firefox does not throw an error if the AudioContext was closed before. - if (this.state === 'closed') { - return this._nativeAudioContext.close().then(() => { - throw createInvalidStateError(); - }); - } - // Bug #34: If the state was set to suspended before it should be revoked now. - if (this._state === 'suspended') { - this._state = null; - } - return this._nativeAudioContext.close().then(() => { - if (this._nativeGainNode !== null && this._nativeOscillatorNode !== null) { - this._nativeOscillatorNode.stop(); - this._nativeGainNode.disconnect(); - this._nativeOscillatorNode.disconnect(); - } - deactivateAudioGraph(this); - }); - } - createMediaElementSource(mediaElement) { - return new mediaElementAudioSourceNodeConstructor(this, { mediaElement }); - } - createMediaStreamDestination() { - return new mediaStreamAudioDestinationNodeConstructor(this); - } - createMediaStreamSource(mediaStream) { - return new mediaStreamAudioSourceNodeConstructor(this, { mediaStream }); - } - createMediaStreamTrackSource(mediaStreamTrack) { - return new mediaStreamTrackAudioSourceNodeConstructor(this, { mediaStreamTrack }); - } - resume() { - if (this._state === 'suspended') { - return new Promise((resolve, reject) => { - const resolvePromise = () => { - this._nativeAudioContext.removeEventListener('statechange', resolvePromise); - if (this._nativeAudioContext.state === 'running') { - resolve(); - } - else { - this.resume().then(resolve, reject); - } - }; - this._nativeAudioContext.addEventListener('statechange', resolvePromise); - }); - } - return this._nativeAudioContext.resume().catch((err) => { - // Bug #55: Chrome, Edge and Opera do throw an InvalidAccessError instead of an InvalidStateError. - // Bug #56: Safari invokes the catch handler but without an error. - if (err === undefined || err.code === 15) { - throw createInvalidStateError(); - } - throw err; - }); - } - suspend() { - return this._nativeAudioContext.suspend().catch((err) => { - // Bug #56: Safari invokes the catch handler but without an error. - if (err === undefined) { - throw createInvalidStateError(); - } - throw err; - }); - } - }; -}; - -const createAudioDestinationNodeConstructor = (audioNodeConstructor, createAudioDestinationNodeRenderer, createIndexSizeError, createInvalidStateError, createNativeAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext, renderInputsOfAudioNode) => { - return class AudioDestinationNode extends audioNodeConstructor { - constructor(context, channelCount) { - const nativeContext = getNativeContext(context); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const nativeAudioDestinationNode = createNativeAudioDestinationNode(nativeContext, channelCount, isOffline); - const audioDestinationNodeRenderer = ((isOffline ? createAudioDestinationNodeRenderer(renderInputsOfAudioNode) : null)); - super(context, false, nativeAudioDestinationNode, audioDestinationNodeRenderer); - this._isNodeOfNativeOfflineAudioContext = isOffline; - this._nativeAudioDestinationNode = nativeAudioDestinationNode; - } - get channelCount() { - return this._nativeAudioDestinationNode.channelCount; - } - set channelCount(value) { - // Bug #52: Chrome, Edge, Opera & Safari do not throw an exception at all. - // Bug #54: Firefox does throw an IndexSizeError. - if (this._isNodeOfNativeOfflineAudioContext) { - throw createInvalidStateError(); - } - // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly. - if (value > this._nativeAudioDestinationNode.maxChannelCount) { - throw createIndexSizeError(); - } - this._nativeAudioDestinationNode.channelCount = value; - } - get channelCountMode() { - return this._nativeAudioDestinationNode.channelCountMode; - } - set channelCountMode(value) { - // Bug #53: No browser does throw an exception yet. - if (this._isNodeOfNativeOfflineAudioContext) { - throw createInvalidStateError(); - } - this._nativeAudioDestinationNode.channelCountMode = value; - } - get maxChannelCount() { - return this._nativeAudioDestinationNode.maxChannelCount; - } - }; -}; - -const createAudioDestinationNodeRenderer = (renderInputsOfAudioNode) => { - const renderedNativeAudioDestinationNodes = new WeakMap(); - const createAudioDestinationNode = async (proxy, nativeOfflineAudioContext) => { - const nativeAudioDestinationNode = nativeOfflineAudioContext.destination; - renderedNativeAudioDestinationNodes.set(nativeOfflineAudioContext, nativeAudioDestinationNode); - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioDestinationNode); - return nativeAudioDestinationNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeAudioDestinationNode = renderedNativeAudioDestinationNodes.get(nativeOfflineAudioContext); - if (renderedNativeAudioDestinationNode !== undefined) { - return Promise.resolve(renderedNativeAudioDestinationNode); - } - return createAudioDestinationNode(proxy, nativeOfflineAudioContext); - } - }; -}; - -const createAudioListenerFactory = (createAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeScriptProcessorNode, createNotSupportedError, getFirstSample, isNativeOfflineAudioContext, overwriteAccessors) => { - return (context, nativeContext) => { - const nativeListener = nativeContext.listener; - // Bug #117: Only Chrome, Edge & Opera support the new interface already. - const createFakeAudioParams = () => { - const buffer = new Float32Array(1); - const channelMergerNode = createNativeChannelMergerNode(nativeContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'speakers', - numberOfInputs: 9 - }); - const isOffline = isNativeOfflineAudioContext(nativeContext); - let isScriptProcessorNodeCreated = false; - let lastOrientation = [0, 0, -1, 0, 1, 0]; - let lastPosition = [0, 0, 0]; - const createScriptProcessorNode = () => { - if (isScriptProcessorNodeCreated) { - return; - } - isScriptProcessorNodeCreated = true; - const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 9, 0); - // tslint:disable-next-line:deprecation - scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => { - const orientation = [ - getFirstSample(inputBuffer, buffer, 0), - getFirstSample(inputBuffer, buffer, 1), - getFirstSample(inputBuffer, buffer, 2), - getFirstSample(inputBuffer, buffer, 3), - getFirstSample(inputBuffer, buffer, 4), - getFirstSample(inputBuffer, buffer, 5) - ]; - if (orientation.some((value, index) => value !== lastOrientation[index])) { - nativeListener.setOrientation(...orientation); // tslint:disable-line:deprecation - lastOrientation = orientation; - } - const positon = [ - getFirstSample(inputBuffer, buffer, 6), - getFirstSample(inputBuffer, buffer, 7), - getFirstSample(inputBuffer, buffer, 8) - ]; - if (positon.some((value, index) => value !== lastPosition[index])) { - nativeListener.setPosition(...positon); // tslint:disable-line:deprecation - lastPosition = positon; - } - }; - channelMergerNode.connect(scriptProcessorNode); - }; - const createSetOrientation = (index) => (value) => { - if (value !== lastOrientation[index]) { - lastOrientation[index] = value; - nativeListener.setOrientation(...lastOrientation); // tslint:disable-line:deprecation - } - }; - const createSetPosition = (index) => (value) => { - if (value !== lastPosition[index]) { - lastPosition[index] = value; - nativeListener.setPosition(...lastPosition); // tslint:disable-line:deprecation - } - }; - const createFakeAudioParam = (input, initialValue, setValue) => { - const constantSourceNode = createNativeConstantSourceNode(nativeContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - offset: initialValue - }); - constantSourceNode.connect(channelMergerNode, 0, input); - // @todo This should be stopped when the context is closed. - constantSourceNode.start(); - Object.defineProperty(constantSourceNode.offset, 'defaultValue', { - get() { - return initialValue; - } - }); - /* - * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and - * minValue for GainNodes. - */ - const audioParam = createAudioParam({ context }, isOffline, constantSourceNode.offset, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); - overwriteAccessors(audioParam, 'value', (get) => () => get.call(audioParam), (set) => (value) => { - try { - set.call(audioParam, value); - } - catch (err) { - if (err.code !== 9) { - throw err; - } - } - createScriptProcessorNode(); - if (isOffline) { - // Bug #117: Using setOrientation() and setPosition() doesn't work with an OfflineAudioContext. - setValue(value); - } - }); - audioParam.cancelAndHoldAtTime = ((cancelAndHoldAtTime) => { - if (isOffline) { - return () => { - throw createNotSupportedError(); - }; - } - return (...args) => { - const value = cancelAndHoldAtTime.apply(audioParam, args); - createScriptProcessorNode(); - return value; - }; - })(audioParam.cancelAndHoldAtTime); - audioParam.cancelScheduledValues = ((cancelScheduledValues) => { - if (isOffline) { - return () => { - throw createNotSupportedError(); - }; - } - return (...args) => { - const value = cancelScheduledValues.apply(audioParam, args); - createScriptProcessorNode(); - return value; - }; - })(audioParam.cancelScheduledValues); - audioParam.exponentialRampToValueAtTime = ((exponentialRampToValueAtTime) => { - if (isOffline) { - return () => { - throw createNotSupportedError(); - }; - } - return (...args) => { - const value = exponentialRampToValueAtTime.apply(audioParam, args); - createScriptProcessorNode(); - return value; - }; - })(audioParam.exponentialRampToValueAtTime); - audioParam.linearRampToValueAtTime = ((linearRampToValueAtTime) => { - if (isOffline) { - return () => { - throw createNotSupportedError(); - }; - } - return (...args) => { - const value = linearRampToValueAtTime.apply(audioParam, args); - createScriptProcessorNode(); - return value; - }; - })(audioParam.linearRampToValueAtTime); - audioParam.setTargetAtTime = ((setTargetAtTime) => { - if (isOffline) { - return () => { - throw createNotSupportedError(); - }; - } - return (...args) => { - const value = setTargetAtTime.apply(audioParam, args); - createScriptProcessorNode(); - return value; - }; - })(audioParam.setTargetAtTime); - audioParam.setValueAtTime = ((setValueAtTime) => { - if (isOffline) { - return () => { - throw createNotSupportedError(); - }; - } - return (...args) => { - const value = setValueAtTime.apply(audioParam, args); - createScriptProcessorNode(); - return value; - }; - })(audioParam.setValueAtTime); - audioParam.setValueCurveAtTime = ((setValueCurveAtTime) => { - if (isOffline) { - return () => { - throw createNotSupportedError(); - }; - } - return (...args) => { - const value = setValueCurveAtTime.apply(audioParam, args); - createScriptProcessorNode(); - return value; - }; - })(audioParam.setValueCurveAtTime); - return audioParam; - }; - return { - forwardX: createFakeAudioParam(0, 0, createSetOrientation(0)), - forwardY: createFakeAudioParam(1, 0, createSetOrientation(1)), - forwardZ: createFakeAudioParam(2, -1, createSetOrientation(2)), - positionX: createFakeAudioParam(6, 0, createSetPosition(0)), - positionY: createFakeAudioParam(7, 0, createSetPosition(1)), - positionZ: createFakeAudioParam(8, 0, createSetPosition(2)), - upX: createFakeAudioParam(3, 0, createSetOrientation(3)), - upY: createFakeAudioParam(4, 1, createSetOrientation(4)), - upZ: createFakeAudioParam(5, 0, createSetOrientation(5)) - }; - }; - const { forwardX, forwardY, forwardZ, positionX, positionY, positionZ, upX, upY, upZ } = nativeListener.forwardX === undefined ? createFakeAudioParams() : nativeListener; - return { - get forwardX() { - return forwardX; - }, - get forwardY() { - return forwardY; - }, - get forwardZ() { - return forwardZ; - }, - get positionX() { - return positionX; - }, - get positionY() { - return positionY; - }, - get positionZ() { - return positionZ; - }, - get upX() { - return upX; - }, - get upY() { - return upY; - }, - get upZ() { - return upZ; - } - }; - }; -}; - -const isAudioNode = (audioNodeOrAudioParam) => { - return 'context' in audioNodeOrAudioParam; -}; - -const isAudioNodeOutputConnection = (outputConnection) => { - return isAudioNode(outputConnection[0]); -}; - -const insertElementInSet = (set, element, predicate, ignoreDuplicates) => { - for (const lmnt of set) { - if (predicate(lmnt)) { - if (ignoreDuplicates) { - return false; - } - throw Error('The set contains at least one similar element.'); - } - } - set.add(element); - return true; -}; - -const addActiveInputConnectionToAudioParam = (activeInputs, source, [output, eventListener], ignoreDuplicates) => { - insertElementInSet(activeInputs, [source, output, eventListener], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output, ignoreDuplicates); -}; - -const addPassiveInputConnectionToAudioParam = (passiveInputs, [source, output, eventListener], ignoreDuplicates) => { - const passiveInputConnections = passiveInputs.get(source); - if (passiveInputConnections === undefined) { - passiveInputs.set(source, new Set([[output, eventListener]])); - } - else { - insertElementInSet(passiveInputConnections, [output, eventListener], (passiveInputConnection) => passiveInputConnection[0] === output, ignoreDuplicates); - } -}; - -const isNativeAudioNodeFaker = (nativeAudioNodeOrNativeAudioNodeFaker) => { - return 'inputs' in nativeAudioNodeOrNativeAudioNodeFaker; -}; - -const connectNativeAudioNodeToNativeAudioNode = (nativeSourceAudioNode, nativeDestinationAudioNode, output, input) => { - if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) { - const fakeNativeDestinationAudioNode = nativeDestinationAudioNode.inputs[input]; - nativeSourceAudioNode.connect(fakeNativeDestinationAudioNode, output, 0); - return [fakeNativeDestinationAudioNode, output, 0]; - } - nativeSourceAudioNode.connect(nativeDestinationAudioNode, output, input); - return [nativeDestinationAudioNode, output, input]; -}; - -const deleteActiveInputConnection = (activeInputConnections, source, output) => { - for (const activeInputConnection of activeInputConnections) { - if (activeInputConnection[0] === source && activeInputConnection[1] === output) { - activeInputConnections.delete(activeInputConnection); - return activeInputConnection; - } - } - return null; -}; - -const deleteActiveInputConnectionToAudioParam = (activeInputs, source, output) => { - return pickElementFromSet(activeInputs, (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output); -}; - -const deleteEventListenerOfAudioNode = (audioNode, eventListener) => { - const eventListeners = getEventListenersOfAudioNode(audioNode); - if (!eventListeners.delete(eventListener)) { - throw new Error('Missing the expected event listener.'); - } -}; - -const deletePassiveInputConnectionToAudioParam = (passiveInputs, source, output) => { - const passiveInputConnections = getValueForKey(passiveInputs, source); - const matchingConnection = pickElementFromSet(passiveInputConnections, (passiveInputConnection) => passiveInputConnection[0] === output); - if (passiveInputConnections.size === 0) { - passiveInputs.delete(source); - } - return matchingConnection; -}; - -const disconnectNativeAudioNodeFromNativeAudioNode = (nativeSourceAudioNode, nativeDestinationAudioNode, output, input) => { - if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) { - nativeSourceAudioNode.disconnect(nativeDestinationAudioNode.inputs[input], output, 0); - } - else { - nativeSourceAudioNode.disconnect(nativeDestinationAudioNode, output, input); - } -}; - -const getNativeAudioNode = (audioNode) => { - return getValueForKey(AUDIO_NODE_STORE, audioNode); -}; - -const getNativeAudioParam = (audioParam) => { - return getValueForKey(AUDIO_PARAM_STORE, audioParam); -}; - -const isPartOfACycle = (audioNode) => { - return CYCLE_COUNTERS.has(audioNode); -}; - -const isPassiveAudioNode = (audioNode) => { - return !ACTIVE_AUDIO_NODE_STORE.has(audioNode); -}; - -const testAudioNodeDisconnectMethodSupport = (nativeAudioContext, nativeAudioWorkletNodeConstructor) => { - return new Promise((resolve) => { - /* - * This bug existed in Safari up until v14.0.2. Since AudioWorklets were not supported in Safari until v14.1 the presence of the - * constructor for an AudioWorkletNode can be used here to skip the test. - */ - if (nativeAudioWorkletNodeConstructor !== null) { - resolve(true); - } - else { - const analyzer = nativeAudioContext.createScriptProcessor(256, 1, 1); // tslint:disable-line deprecation - const dummy = nativeAudioContext.createGain(); - // Bug #95: Safari does not play one sample buffers. - const ones = nativeAudioContext.createBuffer(1, 2, 44100); - const channelData = ones.getChannelData(0); - channelData[0] = 1; - channelData[1] = 1; - const source = nativeAudioContext.createBufferSource(); - source.buffer = ones; - source.loop = true; - source.connect(analyzer).connect(nativeAudioContext.destination); - source.connect(dummy); - source.disconnect(dummy); - // tslint:disable-next-line:deprecation - analyzer.onaudioprocess = (event) => { - const chnnlDt = event.inputBuffer.getChannelData(0); // tslint:disable-line deprecation - if (Array.prototype.some.call(chnnlDt, (sample) => sample === 1)) { - resolve(true); - } - else { - resolve(false); - } - source.stop(); - analyzer.onaudioprocess = null; // tslint:disable-line:deprecation - source.disconnect(analyzer); - analyzer.disconnect(nativeAudioContext.destination); - }; - source.start(); - } - }); -}; - -const visitEachAudioNodeOnce = (cycles, visitor) => { - const counts = new Map(); - for (const cycle of cycles) { - for (const audioNode of cycle) { - const count = counts.get(audioNode); - counts.set(audioNode, count === undefined ? 1 : count + 1); - } - } - counts.forEach((count, audioNode) => visitor(audioNode, count)); -}; - -const isNativeAudioNode = (nativeAudioNodeOrAudioParam) => { - return 'context' in nativeAudioNodeOrAudioParam; -}; - -const wrapAudioNodeDisconnectMethod = (nativeAudioNode) => { - const connections = new Map(); - nativeAudioNode.connect = ((connect) => { - // tslint:disable-next-line:invalid-void no-inferrable-types - return (destination, output = 0, input = 0) => { - const returnValue = isNativeAudioNode(destination) ? connect(destination, output, input) : connect(destination, output); - // Save the new connection only if the calls to connect above didn't throw an error. - const connectionsToDestination = connections.get(destination); - if (connectionsToDestination === undefined) { - connections.set(destination, [{ input, output }]); - } - else { - if (connectionsToDestination.every((connection) => connection.input !== input || connection.output !== output)) { - connectionsToDestination.push({ input, output }); - } - } - return returnValue; - }; - })(nativeAudioNode.connect.bind(nativeAudioNode)); - nativeAudioNode.disconnect = ((disconnect) => { - return (destinationOrOutput, output, input) => { - disconnect.apply(nativeAudioNode); - if (destinationOrOutput === undefined) { - connections.clear(); - } - else if (typeof destinationOrOutput === 'number') { - for (const [destination, connectionsToDestination] of connections) { - const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== destinationOrOutput); - if (filteredConnections.length === 0) { - connections.delete(destination); - } - else { - connections.set(destination, filteredConnections); - } - } - } - else if (connections.has(destinationOrOutput)) { - if (output === undefined) { - connections.delete(destinationOrOutput); - } - else { - const connectionsToDestination = connections.get(destinationOrOutput); - if (connectionsToDestination !== undefined) { - const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== output && (connection.input !== input || input === undefined)); - if (filteredConnections.length === 0) { - connections.delete(destinationOrOutput); - } - else { - connections.set(destinationOrOutput, filteredConnections); - } - } - } - } - for (const [destination, connectionsToDestination] of connections) { - connectionsToDestination.forEach((connection) => { - if (isNativeAudioNode(destination)) { - nativeAudioNode.connect(destination, connection.output, connection.input); - } - else { - nativeAudioNode.connect(destination, connection.output); - } - }); - } - }; - })(nativeAudioNode.disconnect); -}; - -const addConnectionToAudioParamOfAudioContext = (source, destination, output, isOffline) => { - const { activeInputs, passiveInputs } = getAudioParamConnections(destination); - const { outputs } = getAudioNodeConnections(source); - const eventListeners = getEventListenersOfAudioNode(source); - const eventListener = (isActive) => { - const nativeAudioNode = getNativeAudioNode(source); - const nativeAudioParam = getNativeAudioParam(destination); - if (isActive) { - const partialConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output); - addActiveInputConnectionToAudioParam(activeInputs, source, partialConnection, false); - if (!isOffline && !isPartOfACycle(source)) { - nativeAudioNode.connect(nativeAudioParam, output); - } - } - else { - const partialConnection = deleteActiveInputConnectionToAudioParam(activeInputs, source, output); - addPassiveInputConnectionToAudioParam(passiveInputs, partialConnection, false); - if (!isOffline && !isPartOfACycle(source)) { - nativeAudioNode.disconnect(nativeAudioParam, output); - } - } - }; - if (insertElementInSet(outputs, [destination, output], (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output, true)) { - eventListeners.add(eventListener); - if (isActiveAudioNode(source)) { - addActiveInputConnectionToAudioParam(activeInputs, source, [output, eventListener], true); - } - else { - addPassiveInputConnectionToAudioParam(passiveInputs, [source, output, eventListener], true); - } - return true; - } - return false; -}; -const deleteInputConnectionOfAudioNode = (source, destination, output, input) => { - const { activeInputs, passiveInputs } = getAudioNodeConnections(destination); - const activeInputConnection = deleteActiveInputConnection(activeInputs[input], source, output); - if (activeInputConnection === null) { - const passiveInputConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input); - return [passiveInputConnection[2], false]; - } - return [activeInputConnection[2], true]; -}; -const deleteInputConnectionOfAudioParam = (source, destination, output) => { - const { activeInputs, passiveInputs } = getAudioParamConnections(destination); - const activeInputConnection = deleteActiveInputConnection(activeInputs, source, output); - if (activeInputConnection === null) { - const passiveInputConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output); - return [passiveInputConnection[1], false]; - } - return [activeInputConnection[2], true]; -}; -const deleteInputsOfAudioNode = (source, isOffline, destination, output, input) => { - const [listener, isActive] = deleteInputConnectionOfAudioNode(source, destination, output, input); - if (listener !== null) { - deleteEventListenerOfAudioNode(source, listener); - if (isActive && !isOffline && !isPartOfACycle(source)) { - disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(source), getNativeAudioNode(destination), output, input); - } - } - if (isActiveAudioNode(destination)) { - const { activeInputs } = getAudioNodeConnections(destination); - setInternalStateToPassiveWhenNecessary(destination, activeInputs); - } -}; -const deleteInputsOfAudioParam = (source, isOffline, destination, output) => { - const [listener, isActive] = deleteInputConnectionOfAudioParam(source, destination, output); - if (listener !== null) { - deleteEventListenerOfAudioNode(source, listener); - if (isActive && !isOffline && !isPartOfACycle(source)) { - getNativeAudioNode(source).disconnect(getNativeAudioParam(destination), output); - } - } -}; -const deleteAnyConnection = (source, isOffline) => { - const audioNodeConnectionsOfSource = getAudioNodeConnections(source); - const destinations = []; - for (const outputConnection of audioNodeConnectionsOfSource.outputs) { - if (isAudioNodeOutputConnection(outputConnection)) { - deleteInputsOfAudioNode(source, isOffline, ...outputConnection); - } - else { - deleteInputsOfAudioParam(source, isOffline, ...outputConnection); - } - destinations.push(outputConnection[0]); - } - audioNodeConnectionsOfSource.outputs.clear(); - return destinations; -}; -const deleteConnectionAtOutput = (source, isOffline, output) => { - const audioNodeConnectionsOfSource = getAudioNodeConnections(source); - const destinations = []; - for (const outputConnection of audioNodeConnectionsOfSource.outputs) { - if (outputConnection[1] === output) { - if (isAudioNodeOutputConnection(outputConnection)) { - deleteInputsOfAudioNode(source, isOffline, ...outputConnection); - } - else { - deleteInputsOfAudioParam(source, isOffline, ...outputConnection); - } - destinations.push(outputConnection[0]); - audioNodeConnectionsOfSource.outputs.delete(outputConnection); - } - } - return destinations; -}; -const deleteConnectionToDestination = (source, isOffline, destination, output, input) => { - const audioNodeConnectionsOfSource = getAudioNodeConnections(source); - return Array.from(audioNodeConnectionsOfSource.outputs) - .filter((outputConnection) => outputConnection[0] === destination && - (output === undefined || outputConnection[1] === output) && - (input === undefined || outputConnection[2] === input)) - .map((outputConnection) => { - if (isAudioNodeOutputConnection(outputConnection)) { - deleteInputsOfAudioNode(source, isOffline, ...outputConnection); - } - else { - deleteInputsOfAudioParam(source, isOffline, ...outputConnection); - } - audioNodeConnectionsOfSource.outputs.delete(outputConnection); - return outputConnection[0]; - }); -}; -const createAudioNodeConstructor = (addAudioNodeConnections, addConnectionToAudioNode, cacheTestResult, createIncrementCycleCounter, createIndexSizeError, createInvalidAccessError, createNotSupportedError, decrementCycleCounter, detectCycles, eventTargetConstructor, getNativeContext, isNativeAudioContext, isNativeAudioNode, isNativeAudioParam, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor) => { - return class AudioNode extends eventTargetConstructor { - constructor(context, isActive, nativeAudioNode, audioNodeRenderer) { - super(nativeAudioNode); - this._context = context; - this._nativeAudioNode = nativeAudioNode; - const nativeContext = getNativeContext(context); - // Bug #12: Safari does not support to disconnect a specific destination. - if (isNativeAudioContext(nativeContext) && - true !== - cacheTestResult(testAudioNodeDisconnectMethodSupport, () => { - return testAudioNodeDisconnectMethodSupport(nativeContext, nativeAudioWorkletNodeConstructor); - })) { - wrapAudioNodeDisconnectMethod(nativeAudioNode); - } - AUDIO_NODE_STORE.set(this, nativeAudioNode); - EVENT_LISTENERS.set(this, new Set()); - if (context.state !== 'closed' && isActive) { - setInternalStateToActive(this); - } - addAudioNodeConnections(this, audioNodeRenderer, nativeAudioNode); - } - get channelCount() { - return this._nativeAudioNode.channelCount; - } - set channelCount(value) { - this._nativeAudioNode.channelCount = value; - } - get channelCountMode() { - return this._nativeAudioNode.channelCountMode; - } - set channelCountMode(value) { - this._nativeAudioNode.channelCountMode = value; - } - get channelInterpretation() { - return this._nativeAudioNode.channelInterpretation; - } - set channelInterpretation(value) { - this._nativeAudioNode.channelInterpretation = value; - } - get context() { - return this._context; - } - get numberOfInputs() { - return this._nativeAudioNode.numberOfInputs; - } - get numberOfOutputs() { - return this._nativeAudioNode.numberOfOutputs; - } - // tslint:disable-next-line:invalid-void - connect(destination, output = 0, input = 0) { - // Bug #174: Safari does expose a wrong numberOfOutputs for MediaStreamAudioDestinationNodes. - if (output < 0 || output >= this._nativeAudioNode.numberOfOutputs) { - throw createIndexSizeError(); - } - const nativeContext = getNativeContext(this._context); - const isOffline = isNativeOfflineAudioContext(nativeContext); - if (isNativeAudioNode(destination) || isNativeAudioParam(destination)) { - throw createInvalidAccessError(); - } - if (isAudioNode(destination)) { - const nativeDestinationAudioNode = getNativeAudioNode(destination); - try { - const connection = connectNativeAudioNodeToNativeAudioNode(this._nativeAudioNode, nativeDestinationAudioNode, output, input); - const isPassive = isPassiveAudioNode(this); - if (isOffline || isPassive) { - this._nativeAudioNode.disconnect(...connection); - } - if (this.context.state !== 'closed' && !isPassive && isPassiveAudioNode(destination)) { - setInternalStateToActive(destination); - } - } - catch (err) { - // Bug #41: Safari does not throw the correct exception so far. - if (err.code === 12) { - throw createInvalidAccessError(); - } - throw err; - } - const isNewConnectionToAudioNode = addConnectionToAudioNode(this, destination, output, input, isOffline); - // Bug #164: Only Firefox detects cycles so far. - if (isNewConnectionToAudioNode) { - const cycles = detectCycles([this], destination); - visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline)); - } - return destination; - } - const nativeAudioParam = getNativeAudioParam(destination); - /* - * Bug #73, #147 & #153: Safari does not support to connect an input signal to the playbackRate AudioParam of an - * AudioBufferSourceNode. This can't be easily detected and that's why the outdated name property is used here to identify - * Safari. In addition to that the maxValue property is used to only detect the affected versions below v14.0.2. - */ - if (nativeAudioParam.name === 'playbackRate' && nativeAudioParam.maxValue === 1024) { - throw createNotSupportedError(); - } - try { - this._nativeAudioNode.connect(nativeAudioParam, output); - if (isOffline || isPassiveAudioNode(this)) { - this._nativeAudioNode.disconnect(nativeAudioParam, output); - } - } - catch (err) { - // Bug #58: Safari doesn't throw an InvalidAccessError yet. - if (err.code === 12) { - throw createInvalidAccessError(); - } - throw err; - } - const isNewConnectionToAudioParam = addConnectionToAudioParamOfAudioContext(this, destination, output, isOffline); - // Bug #164: Only Firefox detects cycles so far. - if (isNewConnectionToAudioParam) { - const cycles = detectCycles([this], destination); - visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline)); - } - } - disconnect(destinationOrOutput, output, input) { - let destinations; - const nativeContext = getNativeContext(this._context); - const isOffline = isNativeOfflineAudioContext(nativeContext); - if (destinationOrOutput === undefined) { - destinations = deleteAnyConnection(this, isOffline); - } - else if (typeof destinationOrOutput === 'number') { - if (destinationOrOutput < 0 || destinationOrOutput >= this.numberOfOutputs) { - throw createIndexSizeError(); - } - destinations = deleteConnectionAtOutput(this, isOffline, destinationOrOutput); - } - else { - if (output !== undefined && (output < 0 || output >= this.numberOfOutputs)) { - throw createIndexSizeError(); - } - if (isAudioNode(destinationOrOutput) && input !== undefined && (input < 0 || input >= destinationOrOutput.numberOfInputs)) { - throw createIndexSizeError(); - } - destinations = deleteConnectionToDestination(this, isOffline, destinationOrOutput, output, input); - if (destinations.length === 0) { - throw createInvalidAccessError(); - } - } - // Bug #164: Only Firefox detects cycles so far. - for (const destination of destinations) { - const cycles = detectCycles([this], destination); - visitEachAudioNodeOnce(cycles, decrementCycleCounter); - } - } - }; -}; - -const createAudioParamFactory = (addAudioParamConnections, audioParamAudioNodeStore, audioParamStore, createAudioParamRenderer, createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent, nativeAudioContextConstructor, setValueAtTimeUntilPossible) => { - return (audioNode, isAudioParamOfOfflineAudioContext, nativeAudioParam, maxValue = null, minValue = null) => { - const automationEventList = new AutomationEventList(nativeAudioParam.defaultValue); - const audioParamRenderer = isAudioParamOfOfflineAudioContext ? createAudioParamRenderer(automationEventList) : null; - const audioParam = { - get defaultValue() { - return nativeAudioParam.defaultValue; - }, - get maxValue() { - return maxValue === null ? nativeAudioParam.maxValue : maxValue; - }, - get minValue() { - return minValue === null ? nativeAudioParam.minValue : minValue; - }, - get value() { - return nativeAudioParam.value; - }, - set value(value) { - nativeAudioParam.value = value; - // Bug #98: Firefox & Safari do not yet treat the value setter like a call to setValueAtTime(). - audioParam.setValueAtTime(value, audioNode.context.currentTime); - }, - cancelAndHoldAtTime(cancelTime) { - // Bug #28: Firefox & Safari do not yet implement cancelAndHoldAtTime(). - if (typeof nativeAudioParam.cancelAndHoldAtTime === 'function') { - if (audioParamRenderer === null) { - automationEventList.flush(audioNode.context.currentTime); - } - automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime)); - nativeAudioParam.cancelAndHoldAtTime(cancelTime); - } - else { - const previousLastEvent = Array.from(automationEventList).pop(); - if (audioParamRenderer === null) { - automationEventList.flush(audioNode.context.currentTime); - } - automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime)); - const currentLastEvent = Array.from(automationEventList).pop(); - nativeAudioParam.cancelScheduledValues(cancelTime); - if (previousLastEvent !== currentLastEvent && currentLastEvent !== undefined) { - if (currentLastEvent.type === 'exponentialRampToValue') { - nativeAudioParam.exponentialRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime); - } - else if (currentLastEvent.type === 'linearRampToValue') { - nativeAudioParam.linearRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime); - } - else if (currentLastEvent.type === 'setValue') { - nativeAudioParam.setValueAtTime(currentLastEvent.value, currentLastEvent.startTime); - } - else if (currentLastEvent.type === 'setValueCurve') { - nativeAudioParam.setValueCurveAtTime(currentLastEvent.values, currentLastEvent.startTime, currentLastEvent.duration); - } - } - } - return audioParam; - }, - cancelScheduledValues(cancelTime) { - if (audioParamRenderer === null) { - automationEventList.flush(audioNode.context.currentTime); - } - automationEventList.add(createCancelScheduledValuesAutomationEvent(cancelTime)); - nativeAudioParam.cancelScheduledValues(cancelTime); - return audioParam; - }, - exponentialRampToValueAtTime(value, endTime) { - // Bug #45: Safari does not throw an error yet. - if (value === 0) { - throw new RangeError(); - } - // Bug #187: Safari does not throw an error yet. - if (!Number.isFinite(endTime) || endTime < 0) { - throw new RangeError(); - } - if (audioParamRenderer === null) { - automationEventList.flush(audioNode.context.currentTime); - } - automationEventList.add(createExponentialRampToValueAutomationEvent(value, endTime)); - nativeAudioParam.exponentialRampToValueAtTime(value, endTime); - return audioParam; - }, - linearRampToValueAtTime(value, endTime) { - if (audioParamRenderer === null) { - automationEventList.flush(audioNode.context.currentTime); - } - automationEventList.add(createLinearRampToValueAutomationEvent(value, endTime)); - nativeAudioParam.linearRampToValueAtTime(value, endTime); - return audioParam; - }, - setTargetAtTime(target, startTime, timeConstant) { - if (audioParamRenderer === null) { - automationEventList.flush(audioNode.context.currentTime); - } - automationEventList.add(createSetTargetAutomationEvent(target, startTime, timeConstant)); - nativeAudioParam.setTargetAtTime(target, startTime, timeConstant); - return audioParam; - }, - setValueAtTime(value, startTime) { - if (audioParamRenderer === null) { - automationEventList.flush(audioNode.context.currentTime); - } - automationEventList.add(createSetValueAutomationEvent(value, startTime)); - nativeAudioParam.setValueAtTime(value, startTime); - return audioParam; - }, - setValueCurveAtTime(values, startTime, duration) { - // Bug 183: Safari only accepts a Float32Array. - const convertedValues = values instanceof Float32Array ? values : new Float32Array(values); - /* - * Bug #152: Safari does not correctly interpolate the values of the curve. - * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the - * existence of the webkitAudioContext is used as a workaround here. - */ - if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') { - const endTime = startTime + duration; - const sampleRate = audioNode.context.sampleRate; - const firstSample = Math.ceil(startTime * sampleRate); - const lastSample = Math.floor(endTime * sampleRate); - const numberOfInterpolatedValues = lastSample - firstSample; - const interpolatedValues = new Float32Array(numberOfInterpolatedValues); - for (let i = 0; i < numberOfInterpolatedValues; i += 1) { - const theoreticIndex = ((convertedValues.length - 1) / duration) * ((firstSample + i) / sampleRate - startTime); - const lowerIndex = Math.floor(theoreticIndex); - const upperIndex = Math.ceil(theoreticIndex); - interpolatedValues[i] = - lowerIndex === upperIndex - ? convertedValues[lowerIndex] - : (1 - (theoreticIndex - lowerIndex)) * convertedValues[lowerIndex] + - (1 - (upperIndex - theoreticIndex)) * convertedValues[upperIndex]; - } - if (audioParamRenderer === null) { - automationEventList.flush(audioNode.context.currentTime); - } - automationEventList.add(createSetValueCurveAutomationEvent(interpolatedValues, startTime, duration)); - nativeAudioParam.setValueCurveAtTime(interpolatedValues, startTime, duration); - const timeOfLastSample = lastSample / sampleRate; - if (timeOfLastSample < endTime) { - setValueAtTimeUntilPossible(audioParam, interpolatedValues[interpolatedValues.length - 1], timeOfLastSample); - } - setValueAtTimeUntilPossible(audioParam, convertedValues[convertedValues.length - 1], endTime); - } - else { - if (audioParamRenderer === null) { - automationEventList.flush(audioNode.context.currentTime); - } - automationEventList.add(createSetValueCurveAutomationEvent(convertedValues, startTime, duration)); - nativeAudioParam.setValueCurveAtTime(convertedValues, startTime, duration); - } - return audioParam; - } - }; - audioParamStore.set(audioParam, nativeAudioParam); - audioParamAudioNodeStore.set(audioParam, audioNode); - addAudioParamConnections(audioParam, audioParamRenderer); - return audioParam; - }; -}; - -const createAudioParamRenderer = (automationEventList) => { - return { - replay(audioParam) { - for (const automationEvent of automationEventList) { - if (automationEvent.type === 'exponentialRampToValue') { - const { endTime, value } = automationEvent; - audioParam.exponentialRampToValueAtTime(value, endTime); - } - else if (automationEvent.type === 'linearRampToValue') { - const { endTime, value } = automationEvent; - audioParam.linearRampToValueAtTime(value, endTime); - } - else if (automationEvent.type === 'setTarget') { - const { startTime, target, timeConstant } = automationEvent; - audioParam.setTargetAtTime(target, startTime, timeConstant); - } - else if (automationEvent.type === 'setValue') { - const { startTime, value } = automationEvent; - audioParam.setValueAtTime(value, startTime); - } - else if (automationEvent.type === 'setValueCurve') { - const { duration, startTime, values } = automationEvent; - audioParam.setValueCurveAtTime(values, startTime, duration); - } - else { - throw new Error("Can't apply an unknown automation."); - } - } - } - }; -}; - -class ReadOnlyMap { - constructor(parameters) { - this._map = new Map(parameters); - } - get size() { - return this._map.size; - } - entries() { - return this._map.entries(); - } - forEach(callback, thisArg = null) { - return this._map.forEach((value, key) => callback.call(thisArg, value, key, this)); - } - get(name) { - return this._map.get(name); - } - has(name) { - return this._map.has(name); - } - keys() { - return this._map.keys(); - } - values() { - return this._map.values(); - } -} - -const DEFAULT_OPTIONS$3 = { - channelCount: 2, - // Bug #61: The channelCountMode should be 'max' according to the spec but is set to 'explicit' to achieve consistent behavior. - channelCountMode: 'explicit', - channelInterpretation: 'speakers', - numberOfInputs: 1, - numberOfOutputs: 1, - parameterData: {}, - processorOptions: {} -}; -const createAudioWorkletNodeConstructor = (addUnrenderedAudioWorkletNode, audioNodeConstructor, createAudioParam, createAudioWorkletNodeRenderer, createNativeAudioWorkletNode, getAudioNodeConnections, getBackupOfflineAudioContext, getNativeContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, sanitizeAudioWorkletNodeOptions, setActiveAudioWorkletNodeInputs, testAudioWorkletNodeOptionsClonability, wrapEventListener) => { - return class AudioWorkletNode extends audioNodeConstructor { - constructor(context, name, options) { - var _a; - const nativeContext = getNativeContext(context); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const mergedOptions = sanitizeAudioWorkletNodeOptions({ ...DEFAULT_OPTIONS$3, ...options }); - // Bug #191: Safari doesn't throw an error if the options aren't clonable. - testAudioWorkletNodeOptionsClonability(mergedOptions); - const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext); - const processorConstructor = nodeNameToProcessorConstructorMap === null || nodeNameToProcessorConstructorMap === void 0 ? void 0 : nodeNameToProcessorConstructorMap.get(name); - // Bug #186: Chrome, Edge and Opera do not allow to create an AudioWorkletNode on a closed AudioContext. - const nativeContextOrBackupOfflineAudioContext = isOffline || nativeContext.state !== 'closed' - ? nativeContext - : (_a = getBackupOfflineAudioContext(nativeContext)) !== null && _a !== void 0 ? _a : nativeContext; - const nativeAudioWorkletNode = createNativeAudioWorkletNode(nativeContextOrBackupOfflineAudioContext, isOffline ? null : context.baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, mergedOptions); - const audioWorkletNodeRenderer = ((isOffline ? createAudioWorkletNodeRenderer(name, mergedOptions, processorConstructor) : null)); - /* - * @todo Add a mechanism to switch an AudioWorkletNode to passive once the process() function of the AudioWorkletProcessor - * returns false. - */ - super(context, true, nativeAudioWorkletNode, audioWorkletNodeRenderer); - const parameters = []; - nativeAudioWorkletNode.parameters.forEach((nativeAudioParam, nm) => { - const audioParam = createAudioParam(this, isOffline, nativeAudioParam); - parameters.push([nm, audioParam]); - }); - this._nativeAudioWorkletNode = nativeAudioWorkletNode; - this._onprocessorerror = null; - this._parameters = new ReadOnlyMap(parameters); - /* - * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to - * the destination. - */ - if (isOffline) { - addUnrenderedAudioWorkletNode(nativeContext, this); - } - const { activeInputs } = getAudioNodeConnections(this); - setActiveAudioWorkletNodeInputs(nativeAudioWorkletNode, activeInputs); - } - get onprocessorerror() { - return this._onprocessorerror; - } - set onprocessorerror(value) { - const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null; - this._nativeAudioWorkletNode.onprocessorerror = wrappedListener; - const nativeOnProcessorError = this._nativeAudioWorkletNode.onprocessorerror; - this._onprocessorerror = - nativeOnProcessorError !== null && nativeOnProcessorError === wrappedListener - ? value - : nativeOnProcessorError; - } - get parameters() { - if (this._parameters === null) { - // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods. - return this._nativeAudioWorkletNode.parameters; - } - return this._parameters; - } - get port() { - return this._nativeAudioWorkletNode.port; - } - }; -}; - -function copyFromChannel(audioBuffer, -// @todo There is currently no way to define something like { [ key: number | string ]: Float32Array } -parent, key, channelNumber, bufferOffset) { - if (typeof audioBuffer.copyFromChannel === 'function') { - // The byteLength will be 0 when the ArrayBuffer was transferred. - if (parent[key].byteLength === 0) { - parent[key] = new Float32Array(128); - } - audioBuffer.copyFromChannel(parent[key], channelNumber, bufferOffset); - // Bug #5: Safari does not support copyFromChannel(). - } - else { - const channelData = audioBuffer.getChannelData(channelNumber); - // The byteLength will be 0 when the ArrayBuffer was transferred. - if (parent[key].byteLength === 0) { - parent[key] = channelData.slice(bufferOffset, bufferOffset + 128); - } - else { - const slicedInput = new Float32Array(channelData.buffer, bufferOffset * Float32Array.BYTES_PER_ELEMENT, 128); - parent[key].set(slicedInput); - } - } -} - -const copyToChannel = (audioBuffer, parent, key, channelNumber, bufferOffset) => { - if (typeof audioBuffer.copyToChannel === 'function') { - // The byteLength will be 0 when the ArrayBuffer was transferred. - if (parent[key].byteLength !== 0) { - audioBuffer.copyToChannel(parent[key], channelNumber, bufferOffset); - } - // Bug #5: Safari does not support copyToChannel(). - } - else { - // The byteLength will be 0 when the ArrayBuffer was transferred. - if (parent[key].byteLength !== 0) { - audioBuffer.getChannelData(channelNumber).set(parent[key], bufferOffset); - } - } -}; - -const createNestedArrays = (x, y) => { - const arrays = []; - for (let i = 0; i < x; i += 1) { - const array = []; - const length = typeof y === 'number' ? y : y[i]; - for (let j = 0; j < length; j += 1) { - array.push(new Float32Array(128)); - } - arrays.push(array); - } - return arrays; -}; - -const getAudioWorkletProcessor = (nativeOfflineAudioContext, proxy) => { - const nodeToProcessorMap = getValueForKey(NODE_TO_PROCESSOR_MAPS, nativeOfflineAudioContext); - const nativeAudioWorkletNode = getNativeAudioNode(proxy); - return getValueForKey(nodeToProcessorMap, nativeAudioWorkletNode); -}; - -const processBuffer = async (proxy, renderedBuffer, nativeOfflineAudioContext, options, outputChannelCount, processorConstructor, exposeCurrentFrameAndCurrentTime) => { - // Ceil the length to the next full render quantum. - // Bug #17: Safari does not yet expose the length. - const length = renderedBuffer === null ? Math.ceil(proxy.context.length / 128) * 128 : renderedBuffer.length; - const numberOfInputChannels = options.channelCount * options.numberOfInputs; - const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0); - const processedBuffer = numberOfOutputChannels === 0 - ? null - : nativeOfflineAudioContext.createBuffer(numberOfOutputChannels, length, nativeOfflineAudioContext.sampleRate); - if (processorConstructor === undefined) { - throw new Error('Missing the processor constructor.'); - } - const audioNodeConnections = getAudioNodeConnections(proxy); - const audioWorkletProcessor = await getAudioWorkletProcessor(nativeOfflineAudioContext, proxy); - const inputs = createNestedArrays(options.numberOfInputs, options.channelCount); - const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount); - const parameters = Array.from(proxy.parameters.keys()).reduce((prmtrs, name) => ({ ...prmtrs, [name]: new Float32Array(128) }), {}); - for (let i = 0; i < length; i += 128) { - if (options.numberOfInputs > 0 && renderedBuffer !== null) { - for (let j = 0; j < options.numberOfInputs; j += 1) { - for (let k = 0; k < options.channelCount; k += 1) { - copyFromChannel(renderedBuffer, inputs[j], k, k, i); - } - } - } - if (processorConstructor.parameterDescriptors !== undefined && renderedBuffer !== null) { - processorConstructor.parameterDescriptors.forEach(({ name }, index) => { - copyFromChannel(renderedBuffer, parameters, name, numberOfInputChannels + index, i); - }); - } - for (let j = 0; j < options.numberOfInputs; j += 1) { - for (let k = 0; k < outputChannelCount[j]; k += 1) { - // The byteLength will be 0 when the ArrayBuffer was transferred. - if (outputs[j][k].byteLength === 0) { - outputs[j][k] = new Float32Array(128); - } - } - } - try { - const potentiallyEmptyInputs = inputs.map((input, index) => { - if (audioNodeConnections.activeInputs[index].size === 0) { - return []; - } - return input; - }); - const activeSourceFlag = exposeCurrentFrameAndCurrentTime(i / nativeOfflineAudioContext.sampleRate, nativeOfflineAudioContext.sampleRate, () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters)); - if (processedBuffer !== null) { - for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) { - for (let k = 0; k < outputChannelCount[j]; k += 1) { - copyToChannel(processedBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i); - } - outputChannelSplitterNodeOutput += outputChannelCount[j]; - } - } - if (!activeSourceFlag) { - break; - } - } - catch (error) { - proxy.dispatchEvent(new ErrorEvent('processorerror', { - colno: error.colno, - filename: error.filename, - lineno: error.lineno, - message: error.message - })); - break; - } - } - return processedBuffer; -}; -const createAudioWorkletNodeRendererFactory = (connectAudioParam, connectMultipleOutputs, createNativeAudioBufferSourceNode, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, deleteUnrenderedAudioWorkletNode, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getNativeAudioNode, nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => { - return (name, options, processorConstructor) => { - const renderedNativeAudioNodes = new WeakMap(); - let processedBufferPromise = null; - const createAudioNode = async (proxy, nativeOfflineAudioContext) => { - let nativeAudioWorkletNode = getNativeAudioNode(proxy); - let nativeOutputNodes = null; - const nativeAudioWorkletNodeIsOwnedByContext = isOwnedByContext(nativeAudioWorkletNode, nativeOfflineAudioContext); - const outputChannelCount = Array.isArray(options.outputChannelCount) - ? options.outputChannelCount - : Array.from(options.outputChannelCount); - // Bug #61: Only Chrome, Edge, Firefox & Opera have an implementation of the AudioWorkletNode yet. - if (nativeAudioWorkletNodeConstructor === null) { - const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0); - const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, { - channelCount: Math.max(1, numberOfOutputChannels), - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - numberOfOutputs: Math.max(1, numberOfOutputChannels) - }); - const outputChannelMergerNodes = []; - for (let i = 0; i < proxy.numberOfOutputs; i += 1) { - outputChannelMergerNodes.push(createNativeChannelMergerNode(nativeOfflineAudioContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'speakers', - numberOfInputs: outputChannelCount[i] - })); - } - const outputGainNode = createNativeGainNode(nativeOfflineAudioContext, { - channelCount: options.channelCount, - channelCountMode: options.channelCountMode, - channelInterpretation: options.channelInterpretation, - gain: 1 - }); - outputGainNode.connect = connectMultipleOutputs.bind(null, outputChannelMergerNodes); - outputGainNode.disconnect = disconnectMultipleOutputs.bind(null, outputChannelMergerNodes); - nativeOutputNodes = [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode]; - } - else if (!nativeAudioWorkletNodeIsOwnedByContext) { - nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeOfflineAudioContext, name); - } - renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeOutputNodes === null ? nativeAudioWorkletNode : nativeOutputNodes[2]); - if (nativeOutputNodes !== null) { - if (processedBufferPromise === null) { - if (processorConstructor === undefined) { - throw new Error('Missing the processor constructor.'); - } - if (nativeOfflineAudioContextConstructor === null) { - throw new Error('Missing the native OfflineAudioContext constructor.'); - } - // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly. - const numberOfInputChannels = proxy.channelCount * proxy.numberOfInputs; - const numberOfParameters = processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length; - const numberOfChannels = numberOfInputChannels + numberOfParameters; - const renderBuffer = async () => { - const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(numberOfChannels, - // Ceil the length to the next full render quantum. - // Bug #17: Safari does not yet expose the length. - Math.ceil(proxy.context.length / 128) * 128, nativeOfflineAudioContext.sampleRate); - const gainNodes = []; - const inputChannelSplitterNodes = []; - for (let i = 0; i < options.numberOfInputs; i += 1) { - gainNodes.push(createNativeGainNode(partialOfflineAudioContext, { - channelCount: options.channelCount, - channelCountMode: options.channelCountMode, - channelInterpretation: options.channelInterpretation, - gain: 1 - })); - inputChannelSplitterNodes.push(createNativeChannelSplitterNode(partialOfflineAudioContext, { - channelCount: options.channelCount, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - numberOfOutputs: options.channelCount - })); - } - const constantSourceNodes = await Promise.all(Array.from(proxy.parameters.values()).map(async (audioParam) => { - const constantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - offset: audioParam.value - }); - await renderAutomation(partialOfflineAudioContext, audioParam, constantSourceNode.offset); - return constantSourceNode; - })); - const inputChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'speakers', - numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters) - }); - for (let i = 0; i < options.numberOfInputs; i += 1) { - gainNodes[i].connect(inputChannelSplitterNodes[i]); - for (let j = 0; j < options.channelCount; j += 1) { - inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j); - } - } - for (const [index, constantSourceNode] of constantSourceNodes.entries()) { - constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index); - constantSourceNode.start(0); - } - inputChannelMergerNode.connect(partialOfflineAudioContext.destination); - await Promise.all(gainNodes.map((gainNode) => renderInputsOfAudioNode(proxy, partialOfflineAudioContext, gainNode))); - return renderNativeOfflineAudioContext(partialOfflineAudioContext); - }; - processedBufferPromise = processBuffer(proxy, numberOfChannels === 0 ? null : await renderBuffer(), nativeOfflineAudioContext, options, outputChannelCount, processorConstructor, exposeCurrentFrameAndCurrentTime); - } - const processedBuffer = await processedBufferPromise; - const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, { - buffer: null, - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - loop: false, - loopEnd: 0, - loopStart: 0, - playbackRate: 1 - }); - const [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode] = nativeOutputNodes; - if (processedBuffer !== null) { - audioBufferSourceNode.buffer = processedBuffer; - audioBufferSourceNode.start(0); - } - audioBufferSourceNode.connect(outputChannelSplitterNode); - for (let i = 0, outputChannelSplitterNodeOutput = 0; i < proxy.numberOfOutputs; i += 1) { - const outputChannelMergerNode = outputChannelMergerNodes[i]; - for (let j = 0; j < outputChannelCount[i]; j += 1) { - outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j); - } - outputChannelSplitterNodeOutput += outputChannelCount[i]; - } - return outputGainNode; - } - if (!nativeAudioWorkletNodeIsOwnedByContext) { - for (const [nm, audioParam] of proxy.parameters.entries()) { - await renderAutomation(nativeOfflineAudioContext, audioParam, - // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods. - nativeAudioWorkletNode.parameters.get(nm)); - } - } - else { - for (const [nm, audioParam] of proxy.parameters.entries()) { - await connectAudioParam(nativeOfflineAudioContext, audioParam, - // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods. - nativeAudioWorkletNode.parameters.get(nm)); - } - } - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioWorkletNode); - return nativeAudioWorkletNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - deleteUnrenderedAudioWorkletNode(nativeOfflineAudioContext, proxy); - const renderedNativeAudioWorkletNodeOrGainNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext); - if (renderedNativeAudioWorkletNodeOrGainNode !== undefined) { - return Promise.resolve(renderedNativeAudioWorkletNodeOrGainNode); - } - return createAudioNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const createBaseAudioContextConstructor = (addAudioWorkletModule, analyserNodeConstructor, audioBufferConstructor, audioBufferSourceNodeConstructor, biquadFilterNodeConstructor, channelMergerNodeConstructor, channelSplitterNodeConstructor, constantSourceNodeConstructor, convolverNodeConstructor, decodeAudioData, delayNodeConstructor, dynamicsCompressorNodeConstructor, gainNodeConstructor, iIRFilterNodeConstructor, minimalBaseAudioContextConstructor, oscillatorNodeConstructor, pannerNodeConstructor, periodicWaveConstructor, stereoPannerNodeConstructor, waveShaperNodeConstructor) => { - return class BaseAudioContext extends minimalBaseAudioContextConstructor { - constructor(_nativeContext, numberOfChannels) { - super(_nativeContext, numberOfChannels); - this._nativeContext = _nativeContext; - this._audioWorklet = - addAudioWorkletModule === undefined - ? undefined - : { - addModule: (moduleURL, options) => { - return addAudioWorkletModule(this, moduleURL, options); - } - }; - } - get audioWorklet() { - return this._audioWorklet; - } - createAnalyser() { - return new analyserNodeConstructor(this); - } - createBiquadFilter() { - return new biquadFilterNodeConstructor(this); - } - createBuffer(numberOfChannels, length, sampleRate) { - return new audioBufferConstructor({ length, numberOfChannels, sampleRate }); - } - createBufferSource() { - return new audioBufferSourceNodeConstructor(this); - } - createChannelMerger(numberOfInputs = 6) { - return new channelMergerNodeConstructor(this, { numberOfInputs }); - } - createChannelSplitter(numberOfOutputs = 6) { - return new channelSplitterNodeConstructor(this, { numberOfOutputs }); - } - createConstantSource() { - return new constantSourceNodeConstructor(this); - } - createConvolver() { - return new convolverNodeConstructor(this); - } - createDelay(maxDelayTime = 1) { - return new delayNodeConstructor(this, { maxDelayTime }); - } - createDynamicsCompressor() { - return new dynamicsCompressorNodeConstructor(this); - } - createGain() { - return new gainNodeConstructor(this); - } - createIIRFilter(feedforward, feedback) { - return new iIRFilterNodeConstructor(this, { feedback, feedforward }); - } - createOscillator() { - return new oscillatorNodeConstructor(this); - } - createPanner() { - return new pannerNodeConstructor(this); - } - createPeriodicWave(real, imag, constraints = { disableNormalization: false }) { - return new periodicWaveConstructor(this, { ...constraints, imag, real }); - } - createStereoPanner() { - return new stereoPannerNodeConstructor(this); - } - createWaveShaper() { - return new waveShaperNodeConstructor(this); - } - decodeAudioData(audioData, successCallback, errorCallback) { - return decodeAudioData(this._nativeContext, audioData).then((audioBuffer) => { - if (typeof successCallback === 'function') { - successCallback(audioBuffer); - } - return audioBuffer; - }, (err) => { - if (typeof errorCallback === 'function') { - errorCallback(err); - } - throw err; - }); - } - }; -}; - -const DEFAULT_OPTIONS$4 = { - Q: 1, - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - detune: 0, - frequency: 350, - gain: 0, - type: 'lowpass' -}; -const createBiquadFilterNodeConstructor = (audioNodeConstructor, createAudioParam, createBiquadFilterNodeRenderer, createInvalidAccessError, createNativeBiquadFilterNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { - return class BiquadFilterNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$4, ...options }; - const nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeContext, mergedOptions); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const biquadFilterNodeRenderer = (isOffline ? createBiquadFilterNodeRenderer() : null); - super(context, false, nativeBiquadFilterNode, biquadFilterNodeRenderer); - // Bug #80: Safari does not export the correct values for maxValue and minValue. - this._Q = createAudioParam(this, isOffline, nativeBiquadFilterNode.Q, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); - // Bug #78: Firefox & Safari do not export the correct values for maxValue and minValue. - this._detune = createAudioParam(this, isOffline, nativeBiquadFilterNode.detune, 1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT), -1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT)); - // Bug #77: Firefox & Safari do not export the correct value for minValue. - this._frequency = createAudioParam(this, isOffline, nativeBiquadFilterNode.frequency, context.sampleRate / 2, 0); - // Bug #79: Firefox & Safari do not export the correct values for maxValue and minValue. - this._gain = createAudioParam(this, isOffline, nativeBiquadFilterNode.gain, 40 * Math.log10(MOST_POSITIVE_SINGLE_FLOAT), MOST_NEGATIVE_SINGLE_FLOAT); - this._nativeBiquadFilterNode = nativeBiquadFilterNode; - // @todo Determine a meaningful tail-time instead of just using one second. - setAudioNodeTailTime(this, 1); - } - get detune() { - return this._detune; - } - get frequency() { - return this._frequency; - } - get gain() { - return this._gain; - } - get Q() { - return this._Q; - } - get type() { - return this._nativeBiquadFilterNode.type; - } - set type(value) { - this._nativeBiquadFilterNode.type = value; - } - getFrequencyResponse(frequencyHz, magResponse, phaseResponse) { - // Bug #189: Safari does throw an InvalidStateError. - try { - this._nativeBiquadFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse); - } - catch (err) { - if (err.code === 11) { - throw createInvalidAccessError(); - } - throw err; - } - // Bug #68: Safari does not throw an error if the parameters differ in their length. - if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) { - throw createInvalidAccessError(); - } - } - }; -}; - -const createBiquadFilterNodeRendererFactory = (connectAudioParam, createNativeBiquadFilterNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { - return () => { - const renderedNativeBiquadFilterNodes = new WeakMap(); - const createBiquadFilterNode = async (proxy, nativeOfflineAudioContext) => { - let nativeBiquadFilterNode = getNativeAudioNode(proxy); - /* - * If the initially used nativeBiquadFilterNode was not constructed on the same OfflineAudioContext it needs to be created - * again. - */ - const nativeBiquadFilterNodeIsOwnedByContext = isOwnedByContext(nativeBiquadFilterNode, nativeOfflineAudioContext); - if (!nativeBiquadFilterNodeIsOwnedByContext) { - const options = { - Q: nativeBiquadFilterNode.Q.value, - channelCount: nativeBiquadFilterNode.channelCount, - channelCountMode: nativeBiquadFilterNode.channelCountMode, - channelInterpretation: nativeBiquadFilterNode.channelInterpretation, - detune: nativeBiquadFilterNode.detune.value, - frequency: nativeBiquadFilterNode.frequency.value, - gain: nativeBiquadFilterNode.gain.value, - type: nativeBiquadFilterNode.type - }; - nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeOfflineAudioContext, options); - } - renderedNativeBiquadFilterNodes.set(nativeOfflineAudioContext, nativeBiquadFilterNode); - if (!nativeBiquadFilterNodeIsOwnedByContext) { - await renderAutomation(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q); - await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune); - await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency); - await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain); - } - else { - await connectAudioParam(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q); - await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune); - await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency); - await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain); - } - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeBiquadFilterNode); - return nativeBiquadFilterNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeBiquadFilterNode = renderedNativeBiquadFilterNodes.get(nativeOfflineAudioContext); - if (renderedNativeBiquadFilterNode !== undefined) { - return Promise.resolve(renderedNativeBiquadFilterNode); - } - return createBiquadFilterNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const createCacheTestResult = (ongoingTests, testResults) => { - return (tester, test) => { - const cachedTestResult = testResults.get(tester); - if (cachedTestResult !== undefined) { - return cachedTestResult; - } - const ongoingTest = ongoingTests.get(tester); - if (ongoingTest !== undefined) { - return ongoingTest; - } - try { - const synchronousTestResult = test(); - if (synchronousTestResult instanceof Promise) { - ongoingTests.set(tester, synchronousTestResult); - return synchronousTestResult - .catch(() => false) - .then((finalTestResult) => { - ongoingTests.delete(tester); - testResults.set(tester, finalTestResult); - return finalTestResult; - }); - } - testResults.set(tester, synchronousTestResult); - return synchronousTestResult; - } - catch { - testResults.set(tester, false); - return false; - } - }; -}; - -const DEFAULT_OPTIONS$5 = { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'speakers', - numberOfInputs: 6 -}; -const createChannelMergerNodeConstructor = (audioNodeConstructor, createChannelMergerNodeRenderer, createNativeChannelMergerNode, getNativeContext, isNativeOfflineAudioContext) => { - return class ChannelMergerNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$5, ...options }; - const nativeChannelMergerNode = createNativeChannelMergerNode(nativeContext, mergedOptions); - const channelMergerNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createChannelMergerNodeRenderer() : null)); - super(context, false, nativeChannelMergerNode, channelMergerNodeRenderer); - } - }; -}; - -const createChannelMergerNodeRendererFactory = (createNativeChannelMergerNode, getNativeAudioNode, renderInputsOfAudioNode) => { - return () => { - const renderedNativeAudioNodes = new WeakMap(); - const createAudioNode = async (proxy, nativeOfflineAudioContext) => { - let nativeAudioNode = getNativeAudioNode(proxy); - // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again. - const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext); - if (!nativeAudioNodeIsOwnedByContext) { - const options = { - channelCount: nativeAudioNode.channelCount, - channelCountMode: nativeAudioNode.channelCountMode, - channelInterpretation: nativeAudioNode.channelInterpretation, - numberOfInputs: nativeAudioNode.numberOfInputs - }; - nativeAudioNode = createNativeChannelMergerNode(nativeOfflineAudioContext, options); - } - renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode); - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode); - return nativeAudioNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext); - if (renderedNativeAudioNode !== undefined) { - return Promise.resolve(renderedNativeAudioNode); - } - return createAudioNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const DEFAULT_OPTIONS$6 = { - channelCount: 6, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - numberOfOutputs: 6 -}; -const createChannelSplitterNodeConstructor = (audioNodeConstructor, createChannelSplitterNodeRenderer, createNativeChannelSplitterNode, getNativeContext, isNativeOfflineAudioContext, sanitizeChannelSplitterOptions) => { - return class ChannelSplitterNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = sanitizeChannelSplitterOptions({ ...DEFAULT_OPTIONS$6, ...options }); - const nativeChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, mergedOptions); - const channelSplitterNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createChannelSplitterNodeRenderer() : null)); - super(context, false, nativeChannelSplitterNode, channelSplitterNodeRenderer); - } - }; -}; - -const createChannelSplitterNodeRendererFactory = (createNativeChannelSplitterNode, getNativeAudioNode, renderInputsOfAudioNode) => { - return () => { - const renderedNativeAudioNodes = new WeakMap(); - const createAudioNode = async (proxy, nativeOfflineAudioContext) => { - let nativeAudioNode = getNativeAudioNode(proxy); - // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again. - const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext); - if (!nativeAudioNodeIsOwnedByContext) { - const options = { - channelCount: nativeAudioNode.channelCount, - channelCountMode: nativeAudioNode.channelCountMode, - channelInterpretation: nativeAudioNode.channelInterpretation, - numberOfOutputs: nativeAudioNode.numberOfOutputs - }; - nativeAudioNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, options); - } - renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode); - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode); - return nativeAudioNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext); - if (renderedNativeAudioNode !== undefined) { - return Promise.resolve(renderedNativeAudioNode); - } - return createAudioNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const createConnectAudioParam = (renderInputsOfAudioParam) => { - return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => { - return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam); - }; -}; - -const createConnectMultipleOutputs = (createIndexSizeError) => { - return (outputAudioNodes, destination, output = 0, input = 0) => { - const outputAudioNode = outputAudioNodes[output]; - if (outputAudioNode === undefined) { - throw createIndexSizeError(); - } - if (isNativeAudioNode(destination)) { - return outputAudioNode.connect(destination, 0, input); - } - return outputAudioNode.connect(destination, 0); - }; -}; - -const createConnectedNativeAudioBufferSourceNodeFactory = (createNativeAudioBufferSourceNode) => { - return (nativeContext, nativeAudioNode) => { - const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, { - buffer: null, - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - loop: false, - loopEnd: 0, - loopStart: 0, - playbackRate: 1 - }); - const nativeAudioBuffer = nativeContext.createBuffer(1, 2, 44100); - nativeAudioBufferSourceNode.buffer = nativeAudioBuffer; - nativeAudioBufferSourceNode.loop = true; - nativeAudioBufferSourceNode.connect(nativeAudioNode); - nativeAudioBufferSourceNode.start(); - return () => { - nativeAudioBufferSourceNode.stop(); - nativeAudioBufferSourceNode.disconnect(nativeAudioNode); - }; - }; -}; - -const DEFAULT_OPTIONS$7 = { - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - offset: 1 -}; -const createConstantSourceNodeConstructor = (audioNodeConstructor, createAudioParam, createConstantSourceNodeRendererFactory, createNativeConstantSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => { - return class ConstantSourceNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$7, ...options }; - const nativeConstantSourceNode = createNativeConstantSourceNode(nativeContext, mergedOptions); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const constantSourceNodeRenderer = ((isOffline ? createConstantSourceNodeRendererFactory() : null)); - super(context, false, nativeConstantSourceNode, constantSourceNodeRenderer); - this._constantSourceNodeRenderer = constantSourceNodeRenderer; - this._nativeConstantSourceNode = nativeConstantSourceNode; - /* - * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and minValue - * for GainNodes. - */ - this._offset = createAudioParam(this, isOffline, nativeConstantSourceNode.offset, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); - this._onended = null; - } - get offset() { - return this._offset; - } - get onended() { - return this._onended; - } - set onended(value) { - const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null; - this._nativeConstantSourceNode.onended = wrappedListener; - const nativeOnEnded = this._nativeConstantSourceNode.onended; - this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded; - } - start(when = 0) { - this._nativeConstantSourceNode.start(when); - if (this._constantSourceNodeRenderer !== null) { - this._constantSourceNodeRenderer.start = when; - } - if (this.context.state !== 'closed') { - setInternalStateToActive(this); - const resetInternalStateToPassive = () => { - this._nativeConstantSourceNode.removeEventListener('ended', resetInternalStateToPassive); - if (isActiveAudioNode(this)) { - setInternalStateToPassive(this); - } - }; - this._nativeConstantSourceNode.addEventListener('ended', resetInternalStateToPassive); - } - } - stop(when = 0) { - this._nativeConstantSourceNode.stop(when); - if (this._constantSourceNodeRenderer !== null) { - this._constantSourceNodeRenderer.stop = when; - } - } - }; -}; - -const createConstantSourceNodeRendererFactory = (connectAudioParam, createNativeConstantSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { - return () => { - const renderedNativeConstantSourceNodes = new WeakMap(); - let start = null; - let stop = null; - const createConstantSourceNode = async (proxy, nativeOfflineAudioContext) => { - let nativeConstantSourceNode = getNativeAudioNode(proxy); - /* - * If the initially used nativeConstantSourceNode was not constructed on the same OfflineAudioContext it needs to be created - * again. - */ - const nativeConstantSourceNodeIsOwnedByContext = isOwnedByContext(nativeConstantSourceNode, nativeOfflineAudioContext); - if (!nativeConstantSourceNodeIsOwnedByContext) { - const options = { - channelCount: nativeConstantSourceNode.channelCount, - channelCountMode: nativeConstantSourceNode.channelCountMode, - channelInterpretation: nativeConstantSourceNode.channelInterpretation, - offset: nativeConstantSourceNode.offset.value - }; - nativeConstantSourceNode = createNativeConstantSourceNode(nativeOfflineAudioContext, options); - if (start !== null) { - nativeConstantSourceNode.start(start); - } - if (stop !== null) { - nativeConstantSourceNode.stop(stop); - } - } - renderedNativeConstantSourceNodes.set(nativeOfflineAudioContext, nativeConstantSourceNode); - if (!nativeConstantSourceNodeIsOwnedByContext) { - await renderAutomation(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset); - } - else { - await connectAudioParam(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset); - } - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConstantSourceNode); - return nativeConstantSourceNode; - }; - return { - set start(value) { - start = value; - }, - set stop(value) { - stop = value; - }, - render(proxy, nativeOfflineAudioContext) { - const renderedNativeConstantSourceNode = renderedNativeConstantSourceNodes.get(nativeOfflineAudioContext); - if (renderedNativeConstantSourceNode !== undefined) { - return Promise.resolve(renderedNativeConstantSourceNode); - } - return createConstantSourceNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const createConvertNumberToUnsignedLong = (unit32Array) => { - return (value) => { - unit32Array[0] = value; - return unit32Array[0]; - }; -}; - -const DEFAULT_OPTIONS$8 = { - buffer: null, - channelCount: 2, - channelCountMode: 'clamped-max', - channelInterpretation: 'speakers', - disableNormalization: false -}; -const createConvolverNodeConstructor = (audioNodeConstructor, createConvolverNodeRenderer, createNativeConvolverNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { - return class ConvolverNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$8, ...options }; - const nativeConvolverNode = createNativeConvolverNode(nativeContext, mergedOptions); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const convolverNodeRenderer = (isOffline ? createConvolverNodeRenderer() : null); - super(context, false, nativeConvolverNode, convolverNodeRenderer); - this._isBufferNullified = false; - this._nativeConvolverNode = nativeConvolverNode; - if (mergedOptions.buffer !== null) { - setAudioNodeTailTime(this, mergedOptions.buffer.duration); - } - } - get buffer() { - if (this._isBufferNullified) { - return null; - } - return this._nativeConvolverNode.buffer; - } - set buffer(value) { - this._nativeConvolverNode.buffer = value; - // Bug #115: Safari does not allow to set the buffer to null. - if (value === null && this._nativeConvolverNode.buffer !== null) { - const nativeContext = this._nativeConvolverNode.context; - this._nativeConvolverNode.buffer = nativeContext.createBuffer(1, 1, 44100); - this._isBufferNullified = true; - setAudioNodeTailTime(this, 0); - } - else { - this._isBufferNullified = false; - setAudioNodeTailTime(this, this._nativeConvolverNode.buffer === null ? 0 : this._nativeConvolverNode.buffer.duration); - } - } - get normalize() { - return this._nativeConvolverNode.normalize; - } - set normalize(value) { - this._nativeConvolverNode.normalize = value; - } - }; -}; - -const createConvolverNodeRendererFactory = (createNativeConvolverNode, getNativeAudioNode, renderInputsOfAudioNode) => { - return () => { - const renderedNativeConvolverNodes = new WeakMap(); - const createConvolverNode = async (proxy, nativeOfflineAudioContext) => { - let nativeConvolverNode = getNativeAudioNode(proxy); - // If the initially used nativeConvolverNode was not constructed on the same OfflineAudioContext it needs to be created again. - const nativeConvolverNodeIsOwnedByContext = isOwnedByContext(nativeConvolverNode, nativeOfflineAudioContext); - if (!nativeConvolverNodeIsOwnedByContext) { - const options = { - buffer: nativeConvolverNode.buffer, - channelCount: nativeConvolverNode.channelCount, - channelCountMode: nativeConvolverNode.channelCountMode, - channelInterpretation: nativeConvolverNode.channelInterpretation, - disableNormalization: !nativeConvolverNode.normalize - }; - nativeConvolverNode = createNativeConvolverNode(nativeOfflineAudioContext, options); - } - renderedNativeConvolverNodes.set(nativeOfflineAudioContext, nativeConvolverNode); - if (isNativeAudioNodeFaker(nativeConvolverNode)) { - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode.inputs[0]); - } - else { - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode); - } - return nativeConvolverNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeConvolverNode = renderedNativeConvolverNodes.get(nativeOfflineAudioContext); - if (renderedNativeConvolverNode !== undefined) { - return Promise.resolve(renderedNativeConvolverNode); - } - return createConvolverNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const createCreateNativeOfflineAudioContext = (createNotSupportedError, nativeOfflineAudioContextConstructor) => { - return (numberOfChannels, length, sampleRate) => { - if (nativeOfflineAudioContextConstructor === null) { - throw new Error('Missing the native OfflineAudioContext constructor.'); - } - try { - return new nativeOfflineAudioContextConstructor(numberOfChannels, length, sampleRate); - } - catch (err) { - // Bug #143, #144 & #146: Safari throws a SyntaxError when numberOfChannels, length or sampleRate are invalid. - if (err.name === 'SyntaxError') { - throw createNotSupportedError(); - } - throw err; - } - }; -}; - -const createDataCloneError = () => new DOMException('', 'DataCloneError'); - -const detachArrayBuffer = (arrayBuffer) => { - const { port1, port2 } = new MessageChannel(); - return new Promise((resolve) => { - const closeAndResolve = () => { - port2.onmessage = null; - port1.close(); - port2.close(); - resolve(); - }; - port2.onmessage = () => closeAndResolve(); - try { - port1.postMessage(arrayBuffer, [arrayBuffer]); - } - finally { - closeAndResolve(); - } - }); -}; - -const createDecodeAudioData = (audioBufferStore, cacheTestResult, createDataCloneError, createEncodingError, detachedArrayBuffers, getNativeContext, isNativeContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, testPromiseSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => { - return (anyContext, audioData) => { - const nativeContext = isNativeContext(anyContext) ? anyContext : getNativeContext(anyContext); - // Bug #43: Only Chrome, Edge and Opera do throw a DataCloneError. - if (detachedArrayBuffers.has(audioData)) { - const err = createDataCloneError(); - return Promise.reject(err); - } - // The audioData parameter maybe of a type which can't be added to a WeakSet. - try { - detachedArrayBuffers.add(audioData); - } - catch { - // Ignore errors. - } - // Bug #21: Safari does not support promises yet. - if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeContext))) { - return nativeContext.decodeAudioData(audioData).then((audioBuffer) => { - // Bug #133: Safari does neuter the ArrayBuffer. - detachArrayBuffer(audioData).catch(() => { - // Ignore errors. - }); - // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds. - if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) { - wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer); - } - audioBufferStore.add(audioBuffer); - return audioBuffer; - }); - } - // Bug #21: Safari does not return a Promise yet. - return new Promise((resolve, reject) => { - const complete = async () => { - // Bug #133: Safari does neuter the ArrayBuffer. - try { - await detachArrayBuffer(audioData); - } - catch { - // Ignore errors. - } - }; - const fail = (err) => { - reject(err); - complete(); - }; - // Bug #26: Safari throws a synchronous error. - try { - // Bug #1: Safari requires a successCallback. - nativeContext.decodeAudioData(audioData, (audioBuffer) => { - // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). - // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value. - if (typeof audioBuffer.copyFromChannel !== 'function') { - wrapAudioBufferCopyChannelMethods(audioBuffer); - wrapAudioBufferGetChannelDataMethod(audioBuffer); - } - audioBufferStore.add(audioBuffer); - complete().then(() => resolve(audioBuffer)); - }, (err) => { - // Bug #4: Safari returns null instead of an error. - if (err === null) { - fail(createEncodingError()); - } - else { - fail(err); - } - }); - } - catch (err) { - fail(err); - } - }); - }; -}; - -const createDecrementCycleCounter = (connectNativeAudioNodeToNativeAudioNode, cycleCounters, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, getNativeContext, isActiveAudioNode, isNativeOfflineAudioContext) => { - return (audioNode, count) => { - const cycleCounter = cycleCounters.get(audioNode); - if (cycleCounter === undefined) { - throw new Error('Missing the expected cycle count.'); - } - const nativeContext = getNativeContext(audioNode.context); - const isOffline = isNativeOfflineAudioContext(nativeContext); - if (cycleCounter === count) { - cycleCounters.delete(audioNode); - if (!isOffline && isActiveAudioNode(audioNode)) { - const nativeSourceAudioNode = getNativeAudioNode(audioNode); - const { outputs } = getAudioNodeConnections(audioNode); - for (const output of outputs) { - if (isAudioNodeOutputConnection(output)) { - const nativeDestinationAudioNode = getNativeAudioNode(output[0]); - connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]); - } - else { - const nativeDestinationAudioParam = getNativeAudioParam(output[0]); - nativeSourceAudioNode.connect(nativeDestinationAudioParam, output[1]); - } - } - } - } - else { - cycleCounters.set(audioNode, cycleCounter - count); - } - }; -}; - -const DEFAULT_OPTIONS$9 = { - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - delayTime: 0, - maxDelayTime: 1 -}; -const createDelayNodeConstructor = (audioNodeConstructor, createAudioParam, createDelayNodeRenderer, createNativeDelayNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { - return class DelayNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$9, ...options }; - const nativeDelayNode = createNativeDelayNode(nativeContext, mergedOptions); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const delayNodeRenderer = (isOffline ? createDelayNodeRenderer(mergedOptions.maxDelayTime) : null); - super(context, false, nativeDelayNode, delayNodeRenderer); - this._delayTime = createAudioParam(this, isOffline, nativeDelayNode.delayTime); - setAudioNodeTailTime(this, mergedOptions.maxDelayTime); - } - get delayTime() { - return this._delayTime; - } - }; -}; - -const createDelayNodeRendererFactory = (connectAudioParam, createNativeDelayNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { - return (maxDelayTime) => { - const renderedNativeDelayNodes = new WeakMap(); - const createDelayNode = async (proxy, nativeOfflineAudioContext) => { - let nativeDelayNode = getNativeAudioNode(proxy); - // If the initially used nativeDelayNode was not constructed on the same OfflineAudioContext it needs to be created again. - const nativeDelayNodeIsOwnedByContext = isOwnedByContext(nativeDelayNode, nativeOfflineAudioContext); - if (!nativeDelayNodeIsOwnedByContext) { - const options = { - channelCount: nativeDelayNode.channelCount, - channelCountMode: nativeDelayNode.channelCountMode, - channelInterpretation: nativeDelayNode.channelInterpretation, - delayTime: nativeDelayNode.delayTime.value, - maxDelayTime - }; - nativeDelayNode = createNativeDelayNode(nativeOfflineAudioContext, options); - } - renderedNativeDelayNodes.set(nativeOfflineAudioContext, nativeDelayNode); - if (!nativeDelayNodeIsOwnedByContext) { - await renderAutomation(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime); - } - else { - await connectAudioParam(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime); - } - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDelayNode); - return nativeDelayNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeDelayNode = renderedNativeDelayNodes.get(nativeOfflineAudioContext); - if (renderedNativeDelayNode !== undefined) { - return Promise.resolve(renderedNativeDelayNode); - } - return createDelayNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const createDeleteActiveInputConnectionToAudioNode = (pickElementFromSet) => { - return (activeInputs, source, output, input) => { - return pickElementFromSet(activeInputs[input], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output); - }; -}; - -const createDeleteUnrenderedAudioWorkletNode = (getUnrenderedAudioWorkletNodes) => { - return (nativeContext, audioWorkletNode) => { - getUnrenderedAudioWorkletNodes(nativeContext).delete(audioWorkletNode); - }; -}; - -const isDelayNode = (audioNode) => { - return 'delayTime' in audioNode; -}; - -const createDetectCycles = (audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey) => { - return function detectCycles(chain, nextLink) { - const audioNode = isAudioNode(nextLink) ? nextLink : getValueForKey(audioParamAudioNodeStore, nextLink); - if (isDelayNode(audioNode)) { - return []; - } - if (chain[0] === audioNode) { - return [chain]; - } - if (chain.includes(audioNode)) { - return []; - } - const { outputs } = getAudioNodeConnections(audioNode); - return Array.from(outputs) - .map((outputConnection) => detectCycles([...chain, audioNode], outputConnection[0])) - .reduce((mergedCycles, nestedCycles) => mergedCycles.concat(nestedCycles), []); - }; -}; - -const getOutputAudioNodeAtIndex = (createIndexSizeError, outputAudioNodes, output) => { - const outputAudioNode = outputAudioNodes[output]; - if (outputAudioNode === undefined) { - throw createIndexSizeError(); - } - return outputAudioNode; -}; -const createDisconnectMultipleOutputs = (createIndexSizeError) => { - return (outputAudioNodes, destinationOrOutput = undefined, output = undefined, input = 0) => { - if (destinationOrOutput === undefined) { - return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect()); - } - if (typeof destinationOrOutput === 'number') { - return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, destinationOrOutput).disconnect(); - } - if (isNativeAudioNode(destinationOrOutput)) { - if (output === undefined) { - return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput)); - } - if (input === undefined) { - return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0); - } - return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0, input); - } - if (output === undefined) { - return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput)); - } - return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0); - }; -}; - -const DEFAULT_OPTIONS$a = { - attack: 0.003, - channelCount: 2, - channelCountMode: 'clamped-max', - channelInterpretation: 'speakers', - knee: 30, - ratio: 12, - release: 0.25, - threshold: -24 -}; -const createDynamicsCompressorNodeConstructor = (audioNodeConstructor, createAudioParam, createDynamicsCompressorNodeRenderer, createNativeDynamicsCompressorNode, createNotSupportedError, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { - return class DynamicsCompressorNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$a, ...options }; - const nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeContext, mergedOptions); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const dynamicsCompressorNodeRenderer = (isOffline ? createDynamicsCompressorNodeRenderer() : null); - super(context, false, nativeDynamicsCompressorNode, dynamicsCompressorNodeRenderer); - this._attack = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.attack); - this._knee = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.knee); - this._nativeDynamicsCompressorNode = nativeDynamicsCompressorNode; - this._ratio = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.ratio); - this._release = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.release); - this._threshold = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.threshold); - setAudioNodeTailTime(this, 0.006); - } - get attack() { - return this._attack; - } - // Bug #108: Safari allows a channelCount of three and above which is why the getter and setter needs to be overwritten here. - get channelCount() { - return this._nativeDynamicsCompressorNode.channelCount; - } - set channelCount(value) { - const previousChannelCount = this._nativeDynamicsCompressorNode.channelCount; - this._nativeDynamicsCompressorNode.channelCount = value; - if (value > 2) { - this._nativeDynamicsCompressorNode.channelCount = previousChannelCount; - throw createNotSupportedError(); - } - } - /* - * Bug #109: Only Chrome, Firefox and Opera disallow a channelCountMode of 'max' yet which is why the getter and setter needs to be - * overwritten here. - */ - get channelCountMode() { - return this._nativeDynamicsCompressorNode.channelCountMode; - } - set channelCountMode(value) { - const previousChannelCount = this._nativeDynamicsCompressorNode.channelCountMode; - this._nativeDynamicsCompressorNode.channelCountMode = value; - if (value === 'max') { - this._nativeDynamicsCompressorNode.channelCountMode = previousChannelCount; - throw createNotSupportedError(); - } - } - get knee() { - return this._knee; - } - get ratio() { - return this._ratio; - } - get reduction() { - // Bug #111: Safari returns an AudioParam instead of a number. - if (typeof this._nativeDynamicsCompressorNode.reduction.value === 'number') { - return this._nativeDynamicsCompressorNode.reduction.value; - } - return this._nativeDynamicsCompressorNode.reduction; - } - get release() { - return this._release; - } - get threshold() { - return this._threshold; - } - }; -}; - -const createDynamicsCompressorNodeRendererFactory = (connectAudioParam, createNativeDynamicsCompressorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { - return () => { - const renderedNativeDynamicsCompressorNodes = new WeakMap(); - const createDynamicsCompressorNode = async (proxy, nativeOfflineAudioContext) => { - let nativeDynamicsCompressorNode = getNativeAudioNode(proxy); - /* - * If the initially used nativeDynamicsCompressorNode was not constructed on the same OfflineAudioContext it needs to be - * created again. - */ - const nativeDynamicsCompressorNodeIsOwnedByContext = isOwnedByContext(nativeDynamicsCompressorNode, nativeOfflineAudioContext); - if (!nativeDynamicsCompressorNodeIsOwnedByContext) { - const options = { - attack: nativeDynamicsCompressorNode.attack.value, - channelCount: nativeDynamicsCompressorNode.channelCount, - channelCountMode: nativeDynamicsCompressorNode.channelCountMode, - channelInterpretation: nativeDynamicsCompressorNode.channelInterpretation, - knee: nativeDynamicsCompressorNode.knee.value, - ratio: nativeDynamicsCompressorNode.ratio.value, - release: nativeDynamicsCompressorNode.release.value, - threshold: nativeDynamicsCompressorNode.threshold.value - }; - nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeOfflineAudioContext, options); - } - renderedNativeDynamicsCompressorNodes.set(nativeOfflineAudioContext, nativeDynamicsCompressorNode); - if (!nativeDynamicsCompressorNodeIsOwnedByContext) { - await renderAutomation(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack); - await renderAutomation(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee); - await renderAutomation(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio); - await renderAutomation(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release); - await renderAutomation(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold); - } - else { - await connectAudioParam(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack); - await connectAudioParam(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee); - await connectAudioParam(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio); - await connectAudioParam(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release); - await connectAudioParam(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold); - } - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDynamicsCompressorNode); - return nativeDynamicsCompressorNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeDynamicsCompressorNode = renderedNativeDynamicsCompressorNodes.get(nativeOfflineAudioContext); - if (renderedNativeDynamicsCompressorNode !== undefined) { - return Promise.resolve(renderedNativeDynamicsCompressorNode); - } - return createDynamicsCompressorNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const createEncodingError = () => new DOMException('', 'EncodingError'); - -const createEvaluateSource = (window) => { - return (source) => new Promise((resolve, reject) => { - if (window === null) { - // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException. - reject(new SyntaxError()); - return; - } - const head = window.document.head; - if (head === null) { - // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException. - reject(new SyntaxError()); - } - else { - const script = window.document.createElement('script'); - // @todo Safari doesn't like URLs with a type of 'application/javascript; charset=utf-8'. - const blob = new Blob([source], { type: 'application/javascript' }); - const url = URL.createObjectURL(blob); - const originalOnErrorHandler = window.onerror; - const removeErrorEventListenerAndRevokeUrl = () => { - window.onerror = originalOnErrorHandler; - URL.revokeObjectURL(url); - }; - window.onerror = (message, src, lineno, colno, error) => { - // @todo Edge thinks the source is the one of the html document. - if (src === url || (src === window.location.href && lineno === 1 && colno === 1)) { - removeErrorEventListenerAndRevokeUrl(); - reject(error); - return false; - } - if (originalOnErrorHandler !== null) { - return originalOnErrorHandler(message, src, lineno, colno, error); - } - }; - script.onerror = () => { - removeErrorEventListenerAndRevokeUrl(); - // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException. - reject(new SyntaxError()); - }; - script.onload = () => { - removeErrorEventListenerAndRevokeUrl(); - resolve(); - }; - script.src = url; - script.type = 'module'; - head.appendChild(script); - } - }); -}; - -const createEventTargetConstructor = (wrapEventListener) => { - return class EventTarget { - constructor(_nativeEventTarget) { - this._nativeEventTarget = _nativeEventTarget; - this._listeners = new WeakMap(); - } - addEventListener(type, listener, options) { - if (listener !== null) { - let wrappedEventListener = this._listeners.get(listener); - if (wrappedEventListener === undefined) { - wrappedEventListener = wrapEventListener(this, listener); - if (typeof listener === 'function') { - this._listeners.set(listener, wrappedEventListener); - } - } - this._nativeEventTarget.addEventListener(type, wrappedEventListener, options); - } - } - dispatchEvent(event) { - return this._nativeEventTarget.dispatchEvent(event); - } - removeEventListener(type, listener, options) { - const wrappedEventListener = listener === null ? undefined : this._listeners.get(listener); - this._nativeEventTarget.removeEventListener(type, wrappedEventListener === undefined ? null : wrappedEventListener, options); - } - }; -}; - -const createExposeCurrentFrameAndCurrentTime = (window) => { - return (currentTime, sampleRate, fn) => { - Object.defineProperties(window, { - currentFrame: { - configurable: true, - get() { - return Math.round(currentTime * sampleRate); - } - }, - currentTime: { - configurable: true, - get() { - return currentTime; - } - } - }); - try { - return fn(); - } - finally { - if (window !== null) { - delete window.currentFrame; - delete window.currentTime; - } - } - }; -}; - -const createFetchSource = (createAbortError) => { - return async (url) => { - try { - const response = await fetch(url); - if (response.ok) { - return [await response.text(), response.url]; - } - } - catch { - // Ignore errors. - } // tslint:disable-line:no-empty - throw createAbortError(); - }; -}; - -const DEFAULT_OPTIONS$b = { - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - gain: 1 -}; -const createGainNodeConstructor = (audioNodeConstructor, createAudioParam, createGainNodeRenderer, createNativeGainNode, getNativeContext, isNativeOfflineAudioContext) => { - return class GainNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$b, ...options }; - const nativeGainNode = createNativeGainNode(nativeContext, mergedOptions); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const gainNodeRenderer = (isOffline ? createGainNodeRenderer() : null); - super(context, false, nativeGainNode, gainNodeRenderer); - // Bug #74: Safari does not export the correct values for maxValue and minValue. - this._gain = createAudioParam(this, isOffline, nativeGainNode.gain, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); - } - get gain() { - return this._gain; - } - }; -}; - -const createGainNodeRendererFactory = (connectAudioParam, createNativeGainNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { - return () => { - const renderedNativeGainNodes = new WeakMap(); - const createGainNode = async (proxy, nativeOfflineAudioContext) => { - let nativeGainNode = getNativeAudioNode(proxy); - // If the initially used nativeGainNode was not constructed on the same OfflineAudioContext it needs to be created again. - const nativeGainNodeIsOwnedByContext = isOwnedByContext(nativeGainNode, nativeOfflineAudioContext); - if (!nativeGainNodeIsOwnedByContext) { - const options = { - channelCount: nativeGainNode.channelCount, - channelCountMode: nativeGainNode.channelCountMode, - channelInterpretation: nativeGainNode.channelInterpretation, - gain: nativeGainNode.gain.value - }; - nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, options); - } - renderedNativeGainNodes.set(nativeOfflineAudioContext, nativeGainNode); - if (!nativeGainNodeIsOwnedByContext) { - await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain); - } - else { - await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain); - } - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeGainNode); - return nativeGainNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeGainNode = renderedNativeGainNodes.get(nativeOfflineAudioContext); - if (renderedNativeGainNode !== undefined) { - return Promise.resolve(renderedNativeGainNode); - } - return createGainNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const createGetActiveAudioWorkletNodeInputs = (activeAudioWorkletNodeInputsStore, getValueForKey) => { - return (nativeAudioWorkletNode) => getValueForKey(activeAudioWorkletNodeInputsStore, nativeAudioWorkletNode); -}; - -const createGetAudioNodeRenderer = (getAudioNodeConnections) => { - return (audioNode) => { - const audioNodeConnections = getAudioNodeConnections(audioNode); - if (audioNodeConnections.renderer === null) { - throw new Error('Missing the renderer of the given AudioNode in the audio graph.'); - } - return audioNodeConnections.renderer; - }; -}; - -const createGetAudioNodeTailTime = (audioNodeTailTimeStore) => { - return (audioNode) => { var _a; return (_a = audioNodeTailTimeStore.get(audioNode)) !== null && _a !== void 0 ? _a : 0; }; -}; - -const createGetAudioParamRenderer = (getAudioParamConnections) => { - return (audioParam) => { - const audioParamConnections = getAudioParamConnections(audioParam); - if (audioParamConnections.renderer === null) { - throw new Error('Missing the renderer of the given AudioParam in the audio graph.'); - } - return audioParamConnections.renderer; - }; -}; - -const createGetBackupOfflineAudioContext = (backupOfflineAudioContextStore) => { - return (nativeContext) => { - return backupOfflineAudioContextStore.get(nativeContext); - }; -}; - -const createInvalidStateError = () => new DOMException('', 'InvalidStateError'); - -const createGetNativeContext = (contextStore) => { - return (context) => { - const nativeContext = contextStore.get(context); - if (nativeContext === undefined) { - throw createInvalidStateError(); - } - return (nativeContext); - }; -}; - -const createGetOrCreateBackupOfflineAudioContext = (backupOfflineAudioContextStore, nativeOfflineAudioContextConstructor) => { - return (nativeContext) => { - let backupOfflineAudioContext = backupOfflineAudioContextStore.get(nativeContext); - if (backupOfflineAudioContext !== undefined) { - return backupOfflineAudioContext; - } - if (nativeOfflineAudioContextConstructor === null) { - throw new Error('Missing the native OfflineAudioContext constructor.'); - } - // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz. - backupOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); - backupOfflineAudioContextStore.set(nativeContext, backupOfflineAudioContext); - return backupOfflineAudioContext; - }; -}; - -const createGetUnrenderedAudioWorkletNodes = (unrenderedAudioWorkletNodeStore) => { - return (nativeContext) => { - const unrenderedAudioWorkletNodes = unrenderedAudioWorkletNodeStore.get(nativeContext); - if (unrenderedAudioWorkletNodes === undefined) { - throw new Error('The context has no set of AudioWorkletNodes.'); - } - return unrenderedAudioWorkletNodes; - }; -}; - -const createInvalidAccessError = () => new DOMException('', 'InvalidAccessError'); - -const wrapIIRFilterNodeGetFrequencyResponseMethod = (nativeIIRFilterNode) => { - nativeIIRFilterNode.getFrequencyResponse = ((getFrequencyResponse) => { - return (frequencyHz, magResponse, phaseResponse) => { - if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) { - throw createInvalidAccessError(); - } - return getFrequencyResponse.call(nativeIIRFilterNode, frequencyHz, magResponse, phaseResponse); - }; - })(nativeIIRFilterNode.getFrequencyResponse); -}; - -const DEFAULT_OPTIONS$c = { - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers' -}; -const createIIRFilterNodeConstructor = (audioNodeConstructor, createNativeIIRFilterNode, createIIRFilterNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { - return class IIRFilterNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const mergedOptions = { ...DEFAULT_OPTIONS$c, ...options }; - const nativeIIRFilterNode = createNativeIIRFilterNode(nativeContext, isOffline ? null : context.baseLatency, mergedOptions); - const iirFilterNodeRenderer = ((isOffline ? createIIRFilterNodeRenderer(mergedOptions.feedback, mergedOptions.feedforward) : null)); - super(context, false, nativeIIRFilterNode, iirFilterNodeRenderer); - // Bug #23 & #24: FirefoxDeveloper does not throw an InvalidAccessError. - // @todo Write a test which allows other browsers to remain unpatched. - wrapIIRFilterNodeGetFrequencyResponseMethod(nativeIIRFilterNode); - this._nativeIIRFilterNode = nativeIIRFilterNode; - // @todo Determine a meaningful tail-time instead of just using one second. - setAudioNodeTailTime(this, 1); - } - getFrequencyResponse(frequencyHz, magResponse, phaseResponse) { - return this._nativeIIRFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse); - } - }; -}; - -// This implementation as shamelessly inspired by source code of -// tslint:disable-next-line:max-line-length -// {@link https://chromium.googlesource.com/chromium/src.git/+/master/third_party/WebKit/Source/platform/audio/IIRFilter.cpp|Chromium's IIRFilter}. -const filterBuffer = (feedback, feedbackLength, feedforward, feedforwardLength, minLength, xBuffer, yBuffer, bufferIndex, bufferLength, input, output) => { - const inputLength = input.length; - let i = bufferIndex; - for (let j = 0; j < inputLength; j += 1) { - let y = feedforward[0] * input[j]; - for (let k = 1; k < minLength; k += 1) { - const x = (i - k) & (bufferLength - 1); // tslint:disable-line:no-bitwise - y += feedforward[k] * xBuffer[x]; - y -= feedback[k] * yBuffer[x]; - } - for (let k = minLength; k < feedforwardLength; k += 1) { - y += feedforward[k] * xBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise - } - for (let k = minLength; k < feedbackLength; k += 1) { - y -= feedback[k] * yBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise - } - xBuffer[i] = input[j]; - yBuffer[i] = y; - i = (i + 1) & (bufferLength - 1); // tslint:disable-line:no-bitwise - output[j] = y; - } - return i; -}; - -const filterFullBuffer = (renderedBuffer, nativeOfflineAudioContext, feedback, feedforward) => { - const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback); - const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward); - const feedbackLength = convertedFeedback.length; - const feedforwardLength = convertedFeedforward.length; - const minLength = Math.min(feedbackLength, feedforwardLength); - if (convertedFeedback[0] !== 1) { - for (let i = 0; i < feedbackLength; i += 1) { - convertedFeedforward[i] /= convertedFeedback[0]; - } - for (let i = 1; i < feedforwardLength; i += 1) { - convertedFeedback[i] /= convertedFeedback[0]; - } - } - const bufferLength = 32; - const xBuffer = new Float32Array(bufferLength); - const yBuffer = new Float32Array(bufferLength); - const filteredBuffer = nativeOfflineAudioContext.createBuffer(renderedBuffer.numberOfChannels, renderedBuffer.length, renderedBuffer.sampleRate); - const numberOfChannels = renderedBuffer.numberOfChannels; - for (let i = 0; i < numberOfChannels; i += 1) { - const input = renderedBuffer.getChannelData(i); - const output = filteredBuffer.getChannelData(i); - xBuffer.fill(0); - yBuffer.fill(0); - filterBuffer(convertedFeedback, feedbackLength, convertedFeedforward, feedforwardLength, minLength, xBuffer, yBuffer, 0, bufferLength, input, output); - } - return filteredBuffer; -}; -const createIIRFilterNodeRendererFactory = (createNativeAudioBufferSourceNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => { - return (feedback, feedforward) => { - const renderedNativeAudioNodes = new WeakMap(); - let filteredBufferPromise = null; - const createAudioNode = async (proxy, nativeOfflineAudioContext) => { - let nativeAudioBufferSourceNode = null; - let nativeIIRFilterNode = getNativeAudioNode(proxy); - // If the initially used nativeIIRFilterNode was not constructed on the same OfflineAudioContext it needs to be created again. - const nativeIIRFilterNodeIsOwnedByContext = isOwnedByContext(nativeIIRFilterNode, nativeOfflineAudioContext); - // Bug #9: Safari does not support IIRFilterNodes. - if (nativeOfflineAudioContext.createIIRFilter === undefined) { - nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, { - buffer: null, - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - loop: false, - loopEnd: 0, - loopStart: 0, - playbackRate: 1 - }); - } - else if (!nativeIIRFilterNodeIsOwnedByContext) { - // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers. - nativeIIRFilterNode = nativeOfflineAudioContext.createIIRFilter(feedforward, feedback); - } - renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioBufferSourceNode === null ? nativeIIRFilterNode : nativeAudioBufferSourceNode); - if (nativeAudioBufferSourceNode !== null) { - if (filteredBufferPromise === null) { - if (nativeOfflineAudioContextConstructor === null) { - throw new Error('Missing the native OfflineAudioContext constructor.'); - } - const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor( - // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly. - proxy.context.destination.channelCount, - // Bug #17: Safari does not yet expose the length. - proxy.context.length, nativeOfflineAudioContext.sampleRate); - filteredBufferPromise = (async () => { - await renderInputsOfAudioNode(proxy, partialOfflineAudioContext, partialOfflineAudioContext.destination); - const renderedBuffer = await renderNativeOfflineAudioContext(partialOfflineAudioContext); - return filterFullBuffer(renderedBuffer, nativeOfflineAudioContext, feedback, feedforward); - })(); - } - const filteredBuffer = await filteredBufferPromise; - nativeAudioBufferSourceNode.buffer = filteredBuffer; - nativeAudioBufferSourceNode.start(0); - return nativeAudioBufferSourceNode; - } - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeIIRFilterNode); - return nativeIIRFilterNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext); - if (renderedNativeAudioNode !== undefined) { - return Promise.resolve(renderedNativeAudioNode); - } - return createAudioNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const createIncrementCycleCounterFactory = (cycleCounters, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, isActiveAudioNode) => { - return (isOffline) => { - return (audioNode, count) => { - const cycleCounter = cycleCounters.get(audioNode); - if (cycleCounter === undefined) { - if (!isOffline && isActiveAudioNode(audioNode)) { - const nativeSourceAudioNode = getNativeAudioNode(audioNode); - const { outputs } = getAudioNodeConnections(audioNode); - for (const output of outputs) { - if (isAudioNodeOutputConnection(output)) { - const nativeDestinationAudioNode = getNativeAudioNode(output[0]); - disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]); - } - else { - const nativeDestinationAudioParam = getNativeAudioParam(output[0]); - nativeSourceAudioNode.disconnect(nativeDestinationAudioParam, output[1]); - } - } - } - cycleCounters.set(audioNode, count); - } - else { - cycleCounters.set(audioNode, cycleCounter + count); - } - }; - }; -}; - -const createIsAnyAudioContext = (contextStore, isNativeAudioContext) => { - return (anything) => { - const nativeContext = contextStore.get(anything); - return isNativeAudioContext(nativeContext) || isNativeAudioContext(anything); - }; -}; - -const createIsAnyAudioNode = (audioNodeStore, isNativeAudioNode) => { - return (anything) => audioNodeStore.has(anything) || isNativeAudioNode(anything); -}; - -const createIsAnyAudioParam = (audioParamStore, isNativeAudioParam) => { - return (anything) => audioParamStore.has(anything) || isNativeAudioParam(anything); -}; - -const createIsAnyOfflineAudioContext = (contextStore, isNativeOfflineAudioContext) => { - return (anything) => { - const nativeContext = contextStore.get(anything); - return isNativeOfflineAudioContext(nativeContext) || isNativeOfflineAudioContext(anything); - }; -}; - -const createIsNativeAudioContext = (nativeAudioContextConstructor) => { - return (anything) => { - return nativeAudioContextConstructor !== null && anything instanceof nativeAudioContextConstructor; - }; -}; - -const createIsNativeAudioNode = (window) => { - return (anything) => { - return window !== null && typeof window.AudioNode === 'function' && anything instanceof window.AudioNode; - }; -}; - -const createIsNativeAudioParam = (window) => { - return (anything) => { - return window !== null && typeof window.AudioParam === 'function' && anything instanceof window.AudioParam; - }; -}; - -const createIsNativeContext = (isNativeAudioContext, isNativeOfflineAudioContext) => { - return (anything) => { - return isNativeAudioContext(anything) || isNativeOfflineAudioContext(anything); - }; -}; - -const createIsNativeOfflineAudioContext = (nativeOfflineAudioContextConstructor) => { - return (anything) => { - return nativeOfflineAudioContextConstructor !== null && anything instanceof nativeOfflineAudioContextConstructor; - }; -}; - -const createIsSecureContext = (window) => window !== null && window.isSecureContext; - -const createIsSupportedPromise = async (cacheTestResult, testAudioBufferCopyChannelMethodsSubarraySupport, testAudioContextCloseMethodSupport, testAudioContextDecodeAudioDataMethodTypeErrorSupport, testAudioContextOptionsSupport, testAudioNodeConnectMethodSupport, testAudioWorkletProcessorNoOutputsSupport, testChannelMergerNodeChannelCountSupport, testConstantSourceNodeAccurateSchedulingSupport, testConvolverNodeBufferReassignabilitySupport, testConvolverNodeChannelCountSupport, testDomExceptionContrucorSupport, testIsSecureContextSupport, testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport, testStereoPannerNodeDefaultValueSupport, testTransferablesSupport) => { - if (cacheTestResult(testAudioBufferCopyChannelMethodsSubarraySupport, testAudioBufferCopyChannelMethodsSubarraySupport) && - cacheTestResult(testAudioContextCloseMethodSupport, testAudioContextCloseMethodSupport) && - cacheTestResult(testAudioContextOptionsSupport, testAudioContextOptionsSupport) && - cacheTestResult(testAudioNodeConnectMethodSupport, testAudioNodeConnectMethodSupport) && - cacheTestResult(testChannelMergerNodeChannelCountSupport, testChannelMergerNodeChannelCountSupport) && - cacheTestResult(testConstantSourceNodeAccurateSchedulingSupport, testConstantSourceNodeAccurateSchedulingSupport) && - cacheTestResult(testConvolverNodeBufferReassignabilitySupport, testConvolverNodeBufferReassignabilitySupport) && - cacheTestResult(testConvolverNodeChannelCountSupport, testConvolverNodeChannelCountSupport) && - cacheTestResult(testDomExceptionContrucorSupport, testDomExceptionContrucorSupport) && - cacheTestResult(testIsSecureContextSupport, testIsSecureContextSupport) && - cacheTestResult(testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport, testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport)) { - const results = await Promise.all([ - cacheTestResult(testAudioContextDecodeAudioDataMethodTypeErrorSupport, testAudioContextDecodeAudioDataMethodTypeErrorSupport), - cacheTestResult(testAudioWorkletProcessorNoOutputsSupport, testAudioWorkletProcessorNoOutputsSupport), - cacheTestResult(testStereoPannerNodeDefaultValueSupport, testStereoPannerNodeDefaultValueSupport), - cacheTestResult(testTransferablesSupport, testTransferablesSupport) - ]); - return results.every((result) => result); - } - return false; -}; - -const createMediaElementAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaElementAudioSourceNode, getNativeContext, isNativeOfflineAudioContext) => { - return class MediaElementAudioSourceNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const nativeMediaElementAudioSourceNode = createNativeMediaElementAudioSourceNode(nativeContext, options); - // Bug #171: Safari allows to create a MediaElementAudioSourceNode with an OfflineAudioContext. - if (isNativeOfflineAudioContext(nativeContext)) { - throw TypeError(); - } - super(context, true, nativeMediaElementAudioSourceNode, null); - this._nativeMediaElementAudioSourceNode = nativeMediaElementAudioSourceNode; - } - get mediaElement() { - return this._nativeMediaElementAudioSourceNode.mediaElement; - } - }; -}; - -const DEFAULT_OPTIONS$d = { - channelCount: 2, - channelCountMode: 'explicit', - channelInterpretation: 'speakers' -}; -const createMediaStreamAudioDestinationNodeConstructor = (audioNodeConstructor, createNativeMediaStreamAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext) => { - return class MediaStreamAudioDestinationNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - // Bug #173: Safari allows to create a MediaStreamAudioDestinationNode with an OfflineAudioContext. - if (isNativeOfflineAudioContext(nativeContext)) { - throw new TypeError(); - } - const mergedOptions = { ...DEFAULT_OPTIONS$d, ...options }; - const nativeMediaStreamAudioDestinationNode = createNativeMediaStreamAudioDestinationNode(nativeContext, mergedOptions); - super(context, false, nativeMediaStreamAudioDestinationNode, null); - this._nativeMediaStreamAudioDestinationNode = nativeMediaStreamAudioDestinationNode; - } - get stream() { - return this._nativeMediaStreamAudioDestinationNode.stream; - } - }; -}; - -const createMediaStreamAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaStreamAudioSourceNode, getNativeContext, isNativeOfflineAudioContext) => { - return class MediaStreamAudioSourceNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const nativeMediaStreamAudioSourceNode = createNativeMediaStreamAudioSourceNode(nativeContext, options); - // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext. - if (isNativeOfflineAudioContext(nativeContext)) { - throw new TypeError(); - } - super(context, true, nativeMediaStreamAudioSourceNode, null); - this._nativeMediaStreamAudioSourceNode = nativeMediaStreamAudioSourceNode; - } - get mediaStream() { - return this._nativeMediaStreamAudioSourceNode.mediaStream; - } - }; -}; - -const createMediaStreamTrackAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext) => { - return class MediaStreamTrackAudioSourceNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const nativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNode(nativeContext, options); - super(context, true, nativeMediaStreamTrackAudioSourceNode, null); - } - }; -}; - -const createMinimalBaseAudioContextConstructor = (audioDestinationNodeConstructor, createAudioListener, eventTargetConstructor, isNativeOfflineAudioContext, unrenderedAudioWorkletNodeStore, wrapEventListener) => { - return class MinimalBaseAudioContext extends eventTargetConstructor { - constructor(_nativeContext, numberOfChannels) { - super(_nativeContext); - this._nativeContext = _nativeContext; - CONTEXT_STORE.set(this, _nativeContext); - if (isNativeOfflineAudioContext(_nativeContext)) { - unrenderedAudioWorkletNodeStore.set(_nativeContext, new Set()); - } - this._destination = new audioDestinationNodeConstructor(this, numberOfChannels); - this._listener = createAudioListener(this, _nativeContext); - this._onstatechange = null; - } - get currentTime() { - return this._nativeContext.currentTime; - } - get destination() { - return this._destination; - } - get listener() { - return this._listener; - } - get onstatechange() { - return this._onstatechange; - } - set onstatechange(value) { - const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null; - this._nativeContext.onstatechange = wrappedListener; - const nativeOnStateChange = this._nativeContext.onstatechange; - this._onstatechange = nativeOnStateChange !== null && nativeOnStateChange === wrappedListener ? value : nativeOnStateChange; - } - get sampleRate() { - return this._nativeContext.sampleRate; - } - get state() { - return this._nativeContext.state; - } - }; -}; - -const testPromiseSupport = (nativeContext) => { - // This 12 numbers represent the 48 bytes of an empty WAVE file with a single sample. - const uint32Array = new Uint32Array([1179011410, 40, 1163280727, 544501094, 16, 131073, 44100, 176400, 1048580, 1635017060, 4, 0]); - try { - // Bug #1: Safari requires a successCallback. - const promise = nativeContext.decodeAudioData(uint32Array.buffer, () => { - // Ignore the success callback. - }); - if (promise === undefined) { - return false; - } - promise.catch(() => { - // Ignore rejected errors. - }); - return true; - } - catch { - // Ignore errors. - } - return false; -}; - -const createMonitorConnections = (insertElementInSet, isNativeAudioNode) => { - return (nativeAudioNode, whenConnected, whenDisconnected) => { - const connections = new Set(); - nativeAudioNode.connect = ((connect) => { - // tslint:disable-next-line:invalid-void no-inferrable-types - return (destination, output = 0, input = 0) => { - const wasDisconnected = connections.size === 0; - if (isNativeAudioNode(destination)) { - // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet. - connect.call(nativeAudioNode, destination, output, input); - insertElementInSet(connections, [destination, output, input], (connection) => connection[0] === destination && connection[1] === output && connection[2] === input, true); - if (wasDisconnected) { - whenConnected(); - } - return destination; - } - connect.call(nativeAudioNode, destination, output); - insertElementInSet(connections, [destination, output], (connection) => connection[0] === destination && connection[1] === output, true); - if (wasDisconnected) { - whenConnected(); - } - return; - }; - })(nativeAudioNode.connect); - nativeAudioNode.disconnect = ((disconnect) => { - return (destinationOrOutput, output, input) => { - const wasConnected = connections.size > 0; - if (destinationOrOutput === undefined) { - disconnect.apply(nativeAudioNode); - connections.clear(); - } - else if (typeof destinationOrOutput === 'number') { - // @todo TypeScript cannot infer the overloaded signature with 1 argument yet. - disconnect.call(nativeAudioNode, destinationOrOutput); - for (const connection of connections) { - if (connection[1] === destinationOrOutput) { - connections.delete(connection); - } - } - } - else { - if (isNativeAudioNode(destinationOrOutput)) { - // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet. - disconnect.call(nativeAudioNode, destinationOrOutput, output, input); - } - else { - // @todo TypeScript cannot infer the overloaded signature with 2 arguments yet. - disconnect.call(nativeAudioNode, destinationOrOutput, output); - } - for (const connection of connections) { - if (connection[0] === destinationOrOutput && - (output === undefined || connection[1] === output) && - (input === undefined || connection[2] === input)) { - connections.delete(connection); - } - } - } - const isDisconnected = connections.size === 0; - if (wasConnected && isDisconnected) { - whenDisconnected(); - } - }; - })(nativeAudioNode.disconnect); - return nativeAudioNode; - }; -}; - -const assignNativeAudioNodeOption = (nativeAudioNode, options, option) => { - const value = options[option]; - if (value !== undefined && value !== nativeAudioNode[option]) { - nativeAudioNode[option] = value; - } -}; - -const assignNativeAudioNodeOptions = (nativeAudioNode, options) => { - assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCount'); - assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCountMode'); - assignNativeAudioNodeOption(nativeAudioNode, options, 'channelInterpretation'); -}; - -const testAnalyserNodeGetFloatTimeDomainDataMethodSupport = (nativeAnalyserNode) => { - return typeof nativeAnalyserNode.getFloatTimeDomainData === 'function'; -}; - -const wrapAnalyserNodeGetFloatTimeDomainDataMethod = (nativeAnalyserNode) => { - nativeAnalyserNode.getFloatTimeDomainData = (array) => { - const byteTimeDomainData = new Uint8Array(array.length); - nativeAnalyserNode.getByteTimeDomainData(byteTimeDomainData); - const length = Math.max(byteTimeDomainData.length, nativeAnalyserNode.fftSize); - for (let i = 0; i < length; i += 1) { - array[i] = (byteTimeDomainData[i] - 128) * 0.0078125; - } - return array; - }; -}; - -const createNativeAnalyserNodeFactory = (cacheTestResult, createIndexSizeError) => { - return (nativeContext, options) => { - const nativeAnalyserNode = nativeContext.createAnalyser(); - // Bug #37: Firefox does not create an AnalyserNode with the default properties. - assignNativeAudioNodeOptions(nativeAnalyserNode, options); - // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels. - if (!(options.maxDecibels > options.minDecibels)) { - throw createIndexSizeError(); - } - assignNativeAudioNodeOption(nativeAnalyserNode, options, 'fftSize'); - assignNativeAudioNodeOption(nativeAnalyserNode, options, 'maxDecibels'); - assignNativeAudioNodeOption(nativeAnalyserNode, options, 'minDecibels'); - assignNativeAudioNodeOption(nativeAnalyserNode, options, 'smoothingTimeConstant'); - // Bug #36: Safari does not support getFloatTimeDomainData() yet. - if (!cacheTestResult(testAnalyserNodeGetFloatTimeDomainDataMethodSupport, () => testAnalyserNodeGetFloatTimeDomainDataMethodSupport(nativeAnalyserNode))) { - wrapAnalyserNodeGetFloatTimeDomainDataMethod(nativeAnalyserNode); - } - return nativeAnalyserNode; - }; -}; - -const createNativeAudioBufferConstructor = (window) => { - if (window === null) { - return null; - } - if (window.hasOwnProperty('AudioBuffer')) { - return window.AudioBuffer; - } - return null; -}; - -const assignNativeAudioNodeAudioParamValue = (nativeAudioNode, options, audioParam) => { - const value = options[audioParam]; - if (value !== undefined && value !== nativeAudioNode[audioParam].value) { - nativeAudioNode[audioParam].value = value; - } -}; - -const wrapAudioBufferSourceNodeStartMethodConsecutiveCalls = (nativeAudioBufferSourceNode) => { - nativeAudioBufferSourceNode.start = ((start) => { - let isScheduled = false; - return (when = 0, offset = 0, duration) => { - if (isScheduled) { - throw createInvalidStateError(); - } - start.call(nativeAudioBufferSourceNode, when, offset, duration); - isScheduled = true; - }; - })(nativeAudioBufferSourceNode.start); -}; - -const wrapAudioScheduledSourceNodeStartMethodNegativeParameters = (nativeAudioScheduledSourceNode) => { - nativeAudioScheduledSourceNode.start = ((start) => { - return (when = 0, offset = 0, duration) => { - if ((typeof duration === 'number' && duration < 0) || offset < 0 || when < 0) { - throw new RangeError("The parameters can't be negative."); - } - // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet. - start.call(nativeAudioScheduledSourceNode, when, offset, duration); - }; - })(nativeAudioScheduledSourceNode.start); -}; - -const wrapAudioScheduledSourceNodeStopMethodNegativeParameters = (nativeAudioScheduledSourceNode) => { - nativeAudioScheduledSourceNode.stop = ((stop) => { - return (when = 0) => { - if (when < 0) { - throw new RangeError("The parameter can't be negative."); - } - stop.call(nativeAudioScheduledSourceNode, when); - }; - })(nativeAudioScheduledSourceNode.stop); -}; - -const createNativeAudioBufferSourceNodeFactory = (addSilentConnection, cacheTestResult, testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, testAudioBufferSourceNodeStartMethodOffsetClampingSupport, testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioBufferSourceNodeStartMethodOffsetClampling, wrapAudioBufferSourceNodeStopMethodNullifiedBuffer, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls) => { - return (nativeContext, options) => { - const nativeAudioBufferSourceNode = nativeContext.createBufferSource(); - assignNativeAudioNodeOptions(nativeAudioBufferSourceNode, options); - assignNativeAudioNodeAudioParamValue(nativeAudioBufferSourceNode, options, 'playbackRate'); - assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'buffer'); - // Bug #149: Safari does not yet support the detune AudioParam. - assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loop'); - assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopEnd'); - assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopStart'); - // Bug #69: Safari does allow calls to start() of an already scheduled AudioBufferSourceNode. - if (!cacheTestResult(testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, () => testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport(nativeContext))) { - wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(nativeAudioBufferSourceNode); - } - // Bug #154 & #155: Safari does not handle offsets which are equal to or greater than the duration of the buffer. - if (!cacheTestResult(testAudioBufferSourceNodeStartMethodOffsetClampingSupport, () => testAudioBufferSourceNodeStartMethodOffsetClampingSupport(nativeContext))) { - wrapAudioBufferSourceNodeStartMethodOffsetClampling(nativeAudioBufferSourceNode); - } - // Bug #162: Safari does throw an error when stop() is called on an AudioBufferSourceNode which has no buffer assigned to it. - if (!cacheTestResult(testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, () => testAudioBufferSourceNodeStopMethodNullifiedBufferSupport(nativeContext))) { - wrapAudioBufferSourceNodeStopMethodNullifiedBuffer(nativeAudioBufferSourceNode, nativeContext); - } - // Bug #44: Safari does not throw a RangeError yet. - if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) { - wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeAudioBufferSourceNode); - } - // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode. - if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () => testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext))) { - wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeAudioBufferSourceNode, nativeContext); - } - // Bug #44: Only Firefox does not throw a RangeError yet. - if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) { - wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeAudioBufferSourceNode); - } - // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected. - addSilentConnection(nativeContext, nativeAudioBufferSourceNode); - return nativeAudioBufferSourceNode; - }; -}; - -const createNativeAudioContextConstructor = (window) => { - if (window === null) { - return null; - } - if (window.hasOwnProperty('AudioContext')) { - return window.AudioContext; - } - return window.hasOwnProperty('webkitAudioContext') ? window.webkitAudioContext : null; -}; - -const createNativeAudioDestinationNodeFactory = (createNativeGainNode, overwriteAccessors) => { - return (nativeContext, channelCount, isNodeOfNativeOfflineAudioContext) => { - const nativeAudioDestinationNode = nativeContext.destination; - // Bug #132: Safari does not have the correct channelCount. - if (nativeAudioDestinationNode.channelCount !== channelCount) { - try { - nativeAudioDestinationNode.channelCount = channelCount; - } - catch { - // Bug #169: Safari throws an error on each attempt to change the channelCount. - } - } - // Bug #83: Safari does not have the correct channelCountMode. - if (isNodeOfNativeOfflineAudioContext && nativeAudioDestinationNode.channelCountMode !== 'explicit') { - nativeAudioDestinationNode.channelCountMode = 'explicit'; - } - // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly. - if (nativeAudioDestinationNode.maxChannelCount === 0) { - Object.defineProperty(nativeAudioDestinationNode, 'maxChannelCount', { - value: channelCount - }); - } - // Bug #168: No browser does yet have an AudioDestinationNode with an output. - const gainNode = createNativeGainNode(nativeContext, { - channelCount, - channelCountMode: nativeAudioDestinationNode.channelCountMode, - channelInterpretation: nativeAudioDestinationNode.channelInterpretation, - gain: 1 - }); - overwriteAccessors(gainNode, 'channelCount', (get) => () => get.call(gainNode), (set) => (value) => { - set.call(gainNode, value); - try { - nativeAudioDestinationNode.channelCount = value; - } - catch (err) { - // Bug #169: Safari throws an error on each attempt to change the channelCount. - if (value > nativeAudioDestinationNode.maxChannelCount) { - throw err; - } - } - }); - overwriteAccessors(gainNode, 'channelCountMode', (get) => () => get.call(gainNode), (set) => (value) => { - set.call(gainNode, value); - nativeAudioDestinationNode.channelCountMode = value; - }); - overwriteAccessors(gainNode, 'channelInterpretation', (get) => () => get.call(gainNode), (set) => (value) => { - set.call(gainNode, value); - nativeAudioDestinationNode.channelInterpretation = value; - }); - Object.defineProperty(gainNode, 'maxChannelCount', { - get: () => nativeAudioDestinationNode.maxChannelCount - }); - // @todo This should be disconnected when the context is closed. - gainNode.connect(nativeAudioDestinationNode); - return gainNode; - }; -}; - -const createNativeAudioWorkletNodeConstructor = (window) => { - if (window === null) { - return null; - } - return window.hasOwnProperty('AudioWorkletNode') ? window.AudioWorkletNode : null; -}; - -const testClonabilityOfAudioWorkletNodeOptions = (audioWorkletNodeOptions) => { - const { port1 } = new MessageChannel(); - try { - // This will throw an error if the audioWorkletNodeOptions are not clonable. - port1.postMessage(audioWorkletNodeOptions); - } - finally { - port1.close(); - } -}; - -const createNativeAudioWorkletNodeFactory = (createInvalidStateError, createNativeAudioWorkletNodeFaker, createNativeGainNode, createNotSupportedError, monitorConnections) => { - return (nativeContext, baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, options) => { - if (nativeAudioWorkletNodeConstructor !== null) { - try { - const nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeContext, name, options); - const patchedEventListeners = new Map(); - let onprocessorerror = null; - Object.defineProperties(nativeAudioWorkletNode, { - /* - * Bug #61: Overwriting the property accessors for channelCount and channelCountMode is necessary as long as some - * browsers have no native implementation to achieve a consistent behavior. - */ - channelCount: { - get: () => options.channelCount, - set: () => { - throw createInvalidStateError(); - } - }, - channelCountMode: { - get: () => 'explicit', - set: () => { - throw createInvalidStateError(); - } - }, - // Bug #156: Chrome and Edge do not yet fire an ErrorEvent. - onprocessorerror: { - get: () => onprocessorerror, - set: (value) => { - if (typeof onprocessorerror === 'function') { - nativeAudioWorkletNode.removeEventListener('processorerror', onprocessorerror); - } - onprocessorerror = typeof value === 'function' ? value : null; - if (typeof onprocessorerror === 'function') { - nativeAudioWorkletNode.addEventListener('processorerror', onprocessorerror); - } - } - } - }); - nativeAudioWorkletNode.addEventListener = ((addEventListener) => { - return (...args) => { - if (args[0] === 'processorerror') { - const unpatchedEventListener = typeof args[1] === 'function' - ? args[1] - : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function' - ? args[1].handleEvent - : null; - if (unpatchedEventListener !== null) { - const patchedEventListener = patchedEventListeners.get(args[1]); - if (patchedEventListener !== undefined) { - args[1] = patchedEventListener; - } - else { - args[1] = (event) => { - // Bug #178: Chrome, Edge and Opera do fire an event of type error. - if (event.type === 'error') { - Object.defineProperties(event, { - type: { value: 'processorerror' } - }); - unpatchedEventListener(event); - } - else { - unpatchedEventListener(new ErrorEvent(args[0], { ...event })); - } - }; - patchedEventListeners.set(unpatchedEventListener, args[1]); - } - } - } - // Bug #178: Chrome, Edge and Opera do fire an event of type error. - addEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]); - return addEventListener.call(nativeAudioWorkletNode, ...args); - }; - })(nativeAudioWorkletNode.addEventListener); - nativeAudioWorkletNode.removeEventListener = ((removeEventListener) => { - return (...args) => { - if (args[0] === 'processorerror') { - const patchedEventListener = patchedEventListeners.get(args[1]); - if (patchedEventListener !== undefined) { - patchedEventListeners.delete(args[1]); - args[1] = patchedEventListener; - } - } - // Bug #178: Chrome, Edge and Opera do fire an event of type error. - removeEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]); - return removeEventListener.call(nativeAudioWorkletNode, args[0], args[1], args[2]); - }; - })(nativeAudioWorkletNode.removeEventListener); - /* - * Bug #86: Chrome and Edge do not invoke the process() function if the corresponding AudioWorkletNode is unconnected but - * has an output. - */ - if (options.numberOfOutputs !== 0) { - const nativeGainNode = createNativeGainNode(nativeContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - gain: 0 - }); - nativeAudioWorkletNode.connect(nativeGainNode).connect(nativeContext.destination); - const whenConnected = () => nativeGainNode.disconnect(); - const whenDisconnected = () => nativeGainNode.connect(nativeContext.destination); - // @todo Disconnect the connection when the process() function of the AudioWorkletNode returns false. - return monitorConnections(nativeAudioWorkletNode, whenConnected, whenDisconnected); - } - return nativeAudioWorkletNode; - } - catch (err) { - // Bug #60: Chrome, Edge & Opera throw an InvalidStateError instead of a NotSupportedError. - if (err.code === 11) { - throw createNotSupportedError(); - } - throw err; - } - } - // Bug #61: Only Chrome & Opera have an implementation of the AudioWorkletNode yet. - if (processorConstructor === undefined) { - throw createNotSupportedError(); - } - testClonabilityOfAudioWorkletNodeOptions(options); - return createNativeAudioWorkletNodeFaker(nativeContext, baseLatency, processorConstructor, options); - }; -}; - -const computeBufferSize = (baseLatency, sampleRate) => { - if (baseLatency === null) { - return 512; - } - return Math.max(512, Math.min(16384, Math.pow(2, Math.round(Math.log2(baseLatency * sampleRate))))); -}; - -const cloneAudioWorkletNodeOptions = (audioWorkletNodeOptions) => { - return new Promise((resolve, reject) => { - const { port1, port2 } = new MessageChannel(); - port1.onmessage = ({ data }) => { - port1.close(); - port2.close(); - resolve(data); - }; - port1.onmessageerror = ({ data }) => { - port1.close(); - port2.close(); - reject(data); - }; - // This will throw an error if the audioWorkletNodeOptions are not clonable. - port2.postMessage(audioWorkletNodeOptions); - }); -}; - -const createAudioWorkletProcessorPromise = async (processorConstructor, audioWorkletNodeOptions) => { - const clonedAudioWorkletNodeOptions = await cloneAudioWorkletNodeOptions(audioWorkletNodeOptions); - return new processorConstructor(clonedAudioWorkletNodeOptions); -}; - -const createAudioWorkletProcessor = (nativeContext, nativeAudioWorkletNode, processorConstructor, audioWorkletNodeOptions) => { - let nodeToProcessorMap = NODE_TO_PROCESSOR_MAPS.get(nativeContext); - if (nodeToProcessorMap === undefined) { - nodeToProcessorMap = new WeakMap(); - NODE_TO_PROCESSOR_MAPS.set(nativeContext, nodeToProcessorMap); - } - const audioWorkletProcessorPromise = createAudioWorkletProcessorPromise(processorConstructor, audioWorkletNodeOptions); - nodeToProcessorMap.set(nativeAudioWorkletNode, audioWorkletProcessorPromise); - return audioWorkletProcessorPromise; -}; - -const createNativeAudioWorkletNodeFakerFactory = (connectMultipleOutputs, createIndexSizeError, createInvalidStateError, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, createNativeScriptProcessorNode, createNotSupportedError, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getActiveAudioWorkletNodeInputs, monitorConnections) => { - return (nativeContext, baseLatency, processorConstructor, options) => { - if (options.numberOfInputs === 0 && options.numberOfOutputs === 0) { - throw createNotSupportedError(); - } - const outputChannelCount = Array.isArray(options.outputChannelCount) - ? options.outputChannelCount - : Array.from(options.outputChannelCount); - // @todo Check if any of the channelCount values is greater than the implementation's maximum number of channels. - if (outputChannelCount.some((channelCount) => channelCount < 1)) { - throw createNotSupportedError(); - } - if (outputChannelCount.length !== options.numberOfOutputs) { - throw createIndexSizeError(); - } - // Bug #61: This is not part of the standard but required for the faker to work. - if (options.channelCountMode !== 'explicit') { - throw createNotSupportedError(); - } - const numberOfInputChannels = options.channelCount * options.numberOfInputs; - const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0); - const numberOfParameters = processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length; - // Bug #61: This is not part of the standard but required for the faker to work. - if (numberOfInputChannels + numberOfParameters > 6 || numberOfOutputChannels > 6) { - throw createNotSupportedError(); - } - const messageChannel = new MessageChannel(); - const gainNodes = []; - const inputChannelSplitterNodes = []; - for (let i = 0; i < options.numberOfInputs; i += 1) { - gainNodes.push(createNativeGainNode(nativeContext, { - channelCount: options.channelCount, - channelCountMode: options.channelCountMode, - channelInterpretation: options.channelInterpretation, - gain: 1 - })); - inputChannelSplitterNodes.push(createNativeChannelSplitterNode(nativeContext, { - channelCount: options.channelCount, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - numberOfOutputs: options.channelCount - })); - } - const constantSourceNodes = []; - if (processorConstructor.parameterDescriptors !== undefined) { - for (const { defaultValue, maxValue, minValue, name } of processorConstructor.parameterDescriptors) { - const constantSourceNode = createNativeConstantSourceNode(nativeContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - offset: options.parameterData[name] !== undefined - ? options.parameterData[name] - : defaultValue === undefined - ? 0 - : defaultValue - }); - Object.defineProperties(constantSourceNode.offset, { - defaultValue: { - get: () => (defaultValue === undefined ? 0 : defaultValue) - }, - maxValue: { - get: () => (maxValue === undefined ? MOST_POSITIVE_SINGLE_FLOAT : maxValue) - }, - minValue: { - get: () => (minValue === undefined ? MOST_NEGATIVE_SINGLE_FLOAT : minValue) - } - }); - constantSourceNodes.push(constantSourceNode); - } - } - const inputChannelMergerNode = createNativeChannelMergerNode(nativeContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'speakers', - numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters) - }); - const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate); - const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, bufferSize, numberOfInputChannels + numberOfParameters, - // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output. - Math.max(1, numberOfOutputChannels)); - const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, { - channelCount: Math.max(1, numberOfOutputChannels), - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - numberOfOutputs: Math.max(1, numberOfOutputChannels) - }); - const outputChannelMergerNodes = []; - for (let i = 0; i < options.numberOfOutputs; i += 1) { - outputChannelMergerNodes.push(createNativeChannelMergerNode(nativeContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'speakers', - numberOfInputs: outputChannelCount[i] - })); - } - for (let i = 0; i < options.numberOfInputs; i += 1) { - gainNodes[i].connect(inputChannelSplitterNodes[i]); - for (let j = 0; j < options.channelCount; j += 1) { - inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j); - } - } - const parameterMap = new ReadOnlyMap(processorConstructor.parameterDescriptors === undefined - ? [] - : processorConstructor.parameterDescriptors.map(({ name }, index) => { - const constantSourceNode = constantSourceNodes[index]; - constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index); - constantSourceNode.start(0); - return [name, constantSourceNode.offset]; - })); - inputChannelMergerNode.connect(scriptProcessorNode); - let channelInterpretation = options.channelInterpretation; - let onprocessorerror = null; - // Bug #87: Expose at least one output to make this node connectable. - const outputAudioNodes = options.numberOfOutputs === 0 ? [scriptProcessorNode] : outputChannelMergerNodes; - const nativeAudioWorkletNodeFaker = { - get bufferSize() { - return bufferSize; - }, - get channelCount() { - return options.channelCount; - }, - set channelCount(_) { - // Bug #61: This is not part of the standard but required for the faker to work. - throw createInvalidStateError(); - }, - get channelCountMode() { - return options.channelCountMode; - }, - set channelCountMode(_) { - // Bug #61: This is not part of the standard but required for the faker to work. - throw createInvalidStateError(); - }, - get channelInterpretation() { - return channelInterpretation; - }, - set channelInterpretation(value) { - for (const gainNode of gainNodes) { - gainNode.channelInterpretation = value; - } - channelInterpretation = value; - }, - get context() { - return scriptProcessorNode.context; - }, - get inputs() { - return gainNodes; - }, - get numberOfInputs() { - return options.numberOfInputs; - }, - get numberOfOutputs() { - return options.numberOfOutputs; - }, - get onprocessorerror() { - return onprocessorerror; - }, - set onprocessorerror(value) { - if (typeof onprocessorerror === 'function') { - nativeAudioWorkletNodeFaker.removeEventListener('processorerror', onprocessorerror); - } - onprocessorerror = typeof value === 'function' ? value : null; - if (typeof onprocessorerror === 'function') { - nativeAudioWorkletNodeFaker.addEventListener('processorerror', onprocessorerror); - } - }, - get parameters() { - return parameterMap; - }, - get port() { - return messageChannel.port2; - }, - addEventListener(...args) { - return scriptProcessorNode.addEventListener(args[0], args[1], args[2]); - }, - connect: connectMultipleOutputs.bind(null, outputAudioNodes), - disconnect: disconnectMultipleOutputs.bind(null, outputAudioNodes), - dispatchEvent(...args) { - return scriptProcessorNode.dispatchEvent(args[0]); - }, - removeEventListener(...args) { - return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]); - } - }; - const patchedEventListeners = new Map(); - messageChannel.port1.addEventListener = ((addEventListener) => { - return (...args) => { - if (args[0] === 'message') { - const unpatchedEventListener = typeof args[1] === 'function' - ? args[1] - : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function' - ? args[1].handleEvent - : null; - if (unpatchedEventListener !== null) { - const patchedEventListener = patchedEventListeners.get(args[1]); - if (patchedEventListener !== undefined) { - args[1] = patchedEventListener; - } - else { - args[1] = (event) => { - exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () => unpatchedEventListener(event)); - }; - patchedEventListeners.set(unpatchedEventListener, args[1]); - } - } - } - return addEventListener.call(messageChannel.port1, args[0], args[1], args[2]); - }; - })(messageChannel.port1.addEventListener); - messageChannel.port1.removeEventListener = ((removeEventListener) => { - return (...args) => { - if (args[0] === 'message') { - const patchedEventListener = patchedEventListeners.get(args[1]); - if (patchedEventListener !== undefined) { - patchedEventListeners.delete(args[1]); - args[1] = patchedEventListener; - } - } - return removeEventListener.call(messageChannel.port1, args[0], args[1], args[2]); - }; - })(messageChannel.port1.removeEventListener); - let onmessage = null; - Object.defineProperty(messageChannel.port1, 'onmessage', { - get: () => onmessage, - set: (value) => { - if (typeof onmessage === 'function') { - messageChannel.port1.removeEventListener('message', onmessage); - } - onmessage = typeof value === 'function' ? value : null; - if (typeof onmessage === 'function') { - messageChannel.port1.addEventListener('message', onmessage); - messageChannel.port1.start(); - } - } - }); - processorConstructor.prototype.port = messageChannel.port1; - let audioWorkletProcessor = null; - const audioWorkletProcessorPromise = createAudioWorkletProcessor(nativeContext, nativeAudioWorkletNodeFaker, processorConstructor, options); - audioWorkletProcessorPromise.then((dWrkltPrcssr) => (audioWorkletProcessor = dWrkltPrcssr)); - const inputs = createNestedArrays(options.numberOfInputs, options.channelCount); - const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount); - const parameters = processorConstructor.parameterDescriptors === undefined - ? [] - : processorConstructor.parameterDescriptors.reduce((prmtrs, { name }) => ({ ...prmtrs, [name]: new Float32Array(128) }), {}); - let isActive = true; - const disconnectOutputsGraph = () => { - if (options.numberOfOutputs > 0) { - scriptProcessorNode.disconnect(outputChannelSplitterNode); - } - for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) { - const outputChannelMergerNode = outputChannelMergerNodes[i]; - for (let j = 0; j < outputChannelCount[i]; j += 1) { - outputChannelSplitterNode.disconnect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j); - } - outputChannelSplitterNodeOutput += outputChannelCount[i]; - } - }; - const activeInputIndexes = new Map(); - // tslint:disable-next-line:deprecation - scriptProcessorNode.onaudioprocess = ({ inputBuffer, outputBuffer }) => { - if (audioWorkletProcessor !== null) { - const activeInputs = getActiveAudioWorkletNodeInputs(nativeAudioWorkletNodeFaker); - for (let i = 0; i < bufferSize; i += 128) { - for (let j = 0; j < options.numberOfInputs; j += 1) { - for (let k = 0; k < options.channelCount; k += 1) { - copyFromChannel(inputBuffer, inputs[j], k, k, i); - } - } - if (processorConstructor.parameterDescriptors !== undefined) { - processorConstructor.parameterDescriptors.forEach(({ name }, index) => { - copyFromChannel(inputBuffer, parameters, name, numberOfInputChannels + index, i); - }); - } - for (let j = 0; j < options.numberOfInputs; j += 1) { - for (let k = 0; k < outputChannelCount[j]; k += 1) { - // The byteLength will be 0 when the ArrayBuffer was transferred. - if (outputs[j][k].byteLength === 0) { - outputs[j][k] = new Float32Array(128); - } - } - } - try { - const potentiallyEmptyInputs = inputs.map((input, index) => { - const activeInput = activeInputs[index]; - if (activeInput.size > 0) { - activeInputIndexes.set(index, bufferSize / 128); - return input; - } - const count = activeInputIndexes.get(index); - if (count === undefined) { - return []; - } - if (input.every((channelData) => channelData.every((sample) => sample === 0))) { - if (count === 1) { - activeInputIndexes.delete(index); - } - else { - activeInputIndexes.set(index, count - 1); - } - } - return input; - }); - const activeSourceFlag = exposeCurrentFrameAndCurrentTime(nativeContext.currentTime + i / nativeContext.sampleRate, nativeContext.sampleRate, () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters)); - isActive = activeSourceFlag; - for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) { - for (let k = 0; k < outputChannelCount[j]; k += 1) { - copyToChannel(outputBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i); - } - outputChannelSplitterNodeOutput += outputChannelCount[j]; - } - } - catch (error) { - isActive = false; - nativeAudioWorkletNodeFaker.dispatchEvent(new ErrorEvent('processorerror', { - colno: error.colno, - filename: error.filename, - lineno: error.lineno, - message: error.message - })); - } - if (!isActive) { - for (let j = 0; j < options.numberOfInputs; j += 1) { - gainNodes[j].disconnect(inputChannelSplitterNodes[j]); - for (let k = 0; k < options.channelCount; k += 1) { - inputChannelSplitterNodes[i].disconnect(inputChannelMergerNode, k, j * options.channelCount + k); - } - } - if (processorConstructor.parameterDescriptors !== undefined) { - const length = processorConstructor.parameterDescriptors.length; - for (let j = 0; j < length; j += 1) { - const constantSourceNode = constantSourceNodes[j]; - constantSourceNode.disconnect(inputChannelMergerNode, 0, numberOfInputChannels + j); - constantSourceNode.stop(); - } - } - inputChannelMergerNode.disconnect(scriptProcessorNode); - scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation - if (isConnected) { - disconnectOutputsGraph(); - } - else { - disconnectFakeGraph(); - } - break; - } - } - } - }; - let isConnected = false; - // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output. - const nativeGainNode = createNativeGainNode(nativeContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - gain: 0 - }); - const connectFakeGraph = () => scriptProcessorNode.connect(nativeGainNode).connect(nativeContext.destination); - const disconnectFakeGraph = () => { - scriptProcessorNode.disconnect(nativeGainNode); - nativeGainNode.disconnect(); - }; - const whenConnected = () => { - if (isActive) { - disconnectFakeGraph(); - if (options.numberOfOutputs > 0) { - scriptProcessorNode.connect(outputChannelSplitterNode); - } - for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) { - const outputChannelMergerNode = outputChannelMergerNodes[i]; - for (let j = 0; j < outputChannelCount[i]; j += 1) { - outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j); - } - outputChannelSplitterNodeOutput += outputChannelCount[i]; - } - } - isConnected = true; - }; - const whenDisconnected = () => { - if (isActive) { - connectFakeGraph(); - disconnectOutputsGraph(); - } - isConnected = false; - }; - connectFakeGraph(); - return monitorConnections(nativeAudioWorkletNodeFaker, whenConnected, whenDisconnected); - }; -}; - -const createNativeBiquadFilterNode = (nativeContext, options) => { - const nativeBiquadFilterNode = nativeContext.createBiquadFilter(); - assignNativeAudioNodeOptions(nativeBiquadFilterNode, options); - assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'Q'); - assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'detune'); - assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'frequency'); - assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'gain'); - assignNativeAudioNodeOption(nativeBiquadFilterNode, options, 'type'); - return nativeBiquadFilterNode; -}; - -const createNativeChannelMergerNodeFactory = (nativeAudioContextConstructor, wrapChannelMergerNode) => { - return (nativeContext, options) => { - const nativeChannelMergerNode = nativeContext.createChannelMerger(options.numberOfInputs); - /* - * Bug #20: Safari requires a connection of any kind to treat the input signal correctly. - * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of - * the webkitAudioContext is used as a workaround here. - */ - if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') { - wrapChannelMergerNode(nativeContext, nativeChannelMergerNode); - } - assignNativeAudioNodeOptions(nativeChannelMergerNode, options); - return nativeChannelMergerNode; - }; -}; - -const wrapChannelSplitterNode = (channelSplitterNode) => { - const channelCount = channelSplitterNode.numberOfOutputs; - // Bug #97: Safari does not throw an error when attempting to change the channelCount to something other than its initial value. - Object.defineProperty(channelSplitterNode, 'channelCount', { - get: () => channelCount, - set: (value) => { - if (value !== channelCount) { - throw createInvalidStateError(); - } - } - }); - // Bug #30: Safari does not throw an error when attempting to change the channelCountMode to something other than explicit. - Object.defineProperty(channelSplitterNode, 'channelCountMode', { - get: () => 'explicit', - set: (value) => { - if (value !== 'explicit') { - throw createInvalidStateError(); - } - } - }); - // Bug #32: Safari does not throw an error when attempting to change the channelInterpretation to something other than discrete. - Object.defineProperty(channelSplitterNode, 'channelInterpretation', { - get: () => 'discrete', - set: (value) => { - if (value !== 'discrete') { - throw createInvalidStateError(); - } - } - }); -}; - -const createNativeChannelSplitterNode = (nativeContext, options) => { - const nativeChannelSplitterNode = nativeContext.createChannelSplitter(options.numberOfOutputs); - // Bug #96: Safari does not have the correct channelCount. - // Bug #29: Safari does not have the correct channelCountMode. - // Bug #31: Safari does not have the correct channelInterpretation. - assignNativeAudioNodeOptions(nativeChannelSplitterNode, options); - // Bug #29, #30, #31, #32, #96 & #97: Only Chrome, Edge, Firefox & Opera partially support the spec yet. - wrapChannelSplitterNode(nativeChannelSplitterNode); - return nativeChannelSplitterNode; -}; - -const createNativeConstantSourceNodeFactory = (addSilentConnection, cacheTestResult, createNativeConstantSourceNodeFaker, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport) => { - return (nativeContext, options) => { - // Bug #62: Safari does not support ConstantSourceNodes. - if (nativeContext.createConstantSource === undefined) { - return createNativeConstantSourceNodeFaker(nativeContext, options); - } - const nativeConstantSourceNode = nativeContext.createConstantSource(); - assignNativeAudioNodeOptions(nativeConstantSourceNode, options); - assignNativeAudioNodeAudioParamValue(nativeConstantSourceNode, options, 'offset'); - // Bug #44: Safari does not throw a RangeError yet. - if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) { - wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeConstantSourceNode); - } - // Bug #44: Only Firefox does not throw a RangeError yet. - if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) { - wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeConstantSourceNode); - } - // Bug #175: Safari will not fire an ended event if the ConstantSourceNode is unconnected. - addSilentConnection(nativeContext, nativeConstantSourceNode); - return nativeConstantSourceNode; - }; -}; - -const interceptConnections = (original, interceptor) => { - original.connect = interceptor.connect.bind(interceptor); - original.disconnect = interceptor.disconnect.bind(interceptor); - return original; -}; - -const createNativeConstantSourceNodeFakerFactory = (addSilentConnection, createNativeAudioBufferSourceNode, createNativeGainNode, monitorConnections) => { - return (nativeContext, { offset, ...audioNodeOptions }) => { - const audioBuffer = nativeContext.createBuffer(1, 2, 44100); - const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, { - buffer: null, - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - loop: false, - loopEnd: 0, - loopStart: 0, - playbackRate: 1 - }); - const gainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: offset }); - // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). - const channelData = audioBuffer.getChannelData(0); - // Bug #95: Safari does not play or loop one sample buffers. - channelData[0] = 1; - channelData[1] = 1; - audioBufferSourceNode.buffer = audioBuffer; - audioBufferSourceNode.loop = true; - const nativeConstantSourceNodeFaker = { - get bufferSize() { - return undefined; - }, - get channelCount() { - return gainNode.channelCount; - }, - set channelCount(value) { - gainNode.channelCount = value; - }, - get channelCountMode() { - return gainNode.channelCountMode; - }, - set channelCountMode(value) { - gainNode.channelCountMode = value; - }, - get channelInterpretation() { - return gainNode.channelInterpretation; - }, - set channelInterpretation(value) { - gainNode.channelInterpretation = value; - }, - get context() { - return gainNode.context; - }, - get inputs() { - return []; - }, - get numberOfInputs() { - return audioBufferSourceNode.numberOfInputs; - }, - get numberOfOutputs() { - return gainNode.numberOfOutputs; - }, - get offset() { - return gainNode.gain; - }, - get onended() { - return audioBufferSourceNode.onended; - }, - set onended(value) { - audioBufferSourceNode.onended = value; - }, - addEventListener(...args) { - return audioBufferSourceNode.addEventListener(args[0], args[1], args[2]); - }, - dispatchEvent(...args) { - return audioBufferSourceNode.dispatchEvent(args[0]); - }, - removeEventListener(...args) { - return audioBufferSourceNode.removeEventListener(args[0], args[1], args[2]); - }, - start(when = 0) { - audioBufferSourceNode.start.call(audioBufferSourceNode, when); - }, - stop(when = 0) { - audioBufferSourceNode.stop.call(audioBufferSourceNode, when); - } - }; - const whenConnected = () => audioBufferSourceNode.connect(gainNode); - const whenDisconnected = () => audioBufferSourceNode.disconnect(gainNode); - // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected. - addSilentConnection(nativeContext, audioBufferSourceNode); - return monitorConnections(interceptConnections(nativeConstantSourceNodeFaker, gainNode), whenConnected, whenDisconnected); - }; -}; - -const createNativeConvolverNodeFactory = (createNotSupportedError, overwriteAccessors) => { - return (nativeContext, options) => { - const nativeConvolverNode = nativeContext.createConvolver(); - assignNativeAudioNodeOptions(nativeConvolverNode, options); - // The normalize property needs to be set before setting the buffer. - if (options.disableNormalization === nativeConvolverNode.normalize) { - nativeConvolverNode.normalize = !options.disableNormalization; - } - assignNativeAudioNodeOption(nativeConvolverNode, options, 'buffer'); - // Bug #113: Safari does allow to set the channelCount to a value larger than 2. - if (options.channelCount > 2) { - throw createNotSupportedError(); - } - overwriteAccessors(nativeConvolverNode, 'channelCount', (get) => () => get.call(nativeConvolverNode), (set) => (value) => { - if (value > 2) { - throw createNotSupportedError(); - } - return set.call(nativeConvolverNode, value); - }); - // Bug #114: Safari allows to set the channelCountMode to 'max'. - if (options.channelCountMode === 'max') { - throw createNotSupportedError(); - } - overwriteAccessors(nativeConvolverNode, 'channelCountMode', (get) => () => get.call(nativeConvolverNode), (set) => (value) => { - if (value === 'max') { - throw createNotSupportedError(); - } - return set.call(nativeConvolverNode, value); - }); - return nativeConvolverNode; - }; -}; - -const createNativeDelayNode = (nativeContext, options) => { - const nativeDelayNode = nativeContext.createDelay(options.maxDelayTime); - assignNativeAudioNodeOptions(nativeDelayNode, options); - assignNativeAudioNodeAudioParamValue(nativeDelayNode, options, 'delayTime'); - return nativeDelayNode; -}; - -const createNativeDynamicsCompressorNodeFactory = (createNotSupportedError) => { - return (nativeContext, options) => { - const nativeDynamicsCompressorNode = nativeContext.createDynamicsCompressor(); - assignNativeAudioNodeOptions(nativeDynamicsCompressorNode, options); - // Bug #108: Safari allows a channelCount of three and above. - if (options.channelCount > 2) { - throw createNotSupportedError(); - } - // Bug #109: Only Chrome, Firefox and Opera disallow a channelCountMode of 'max'. - if (options.channelCountMode === 'max') { - throw createNotSupportedError(); - } - assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'attack'); - assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'knee'); - assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'ratio'); - assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'release'); - assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'threshold'); - return nativeDynamicsCompressorNode; - }; -}; - -const createNativeGainNode = (nativeContext, options) => { - const nativeGainNode = nativeContext.createGain(); - assignNativeAudioNodeOptions(nativeGainNode, options); - assignNativeAudioNodeAudioParamValue(nativeGainNode, options, 'gain'); - return nativeGainNode; -}; - -const createNativeIIRFilterNodeFactory = (createNativeIIRFilterNodeFaker) => { - return (nativeContext, baseLatency, options) => { - // Bug #9: Safari does not support IIRFilterNodes. - if (nativeContext.createIIRFilter === undefined) { - return createNativeIIRFilterNodeFaker(nativeContext, baseLatency, options); - } - // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers. - const nativeIIRFilterNode = nativeContext.createIIRFilter(options.feedforward, options.feedback); - assignNativeAudioNodeOptions(nativeIIRFilterNode, options); - return nativeIIRFilterNode; - }; -}; - -function divide(a, b) { - const denominator = b[0] * b[0] + b[1] * b[1]; - return [(a[0] * b[0] + a[1] * b[1]) / denominator, (a[1] * b[0] - a[0] * b[1]) / denominator]; -} -function multiply(a, b) { - return [a[0] * b[0] - a[1] * b[1], a[0] * b[1] + a[1] * b[0]]; -} -function evaluatePolynomial(coefficient, z) { - let result = [0, 0]; - for (let i = coefficient.length - 1; i >= 0; i -= 1) { - result = multiply(result, z); - result[0] += coefficient[i]; - } - return result; -} -const createNativeIIRFilterNodeFakerFactory = (createInvalidAccessError, createInvalidStateError, createNativeScriptProcessorNode, createNotSupportedError) => { - return (nativeContext, baseLatency, { channelCount, channelCountMode, channelInterpretation, feedback, feedforward }) => { - const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate); - const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback); - const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward); - const feedbackLength = convertedFeedback.length; - const feedforwardLength = convertedFeedforward.length; - const minLength = Math.min(feedbackLength, feedforwardLength); - if (feedbackLength === 0 || feedbackLength > 20) { - throw createNotSupportedError(); - } - if (convertedFeedback[0] === 0) { - throw createInvalidStateError(); - } - if (feedforwardLength === 0 || feedforwardLength > 20) { - throw createNotSupportedError(); - } - if (convertedFeedforward[0] === 0) { - throw createInvalidStateError(); - } - if (convertedFeedback[0] !== 1) { - for (let i = 0; i < feedforwardLength; i += 1) { - convertedFeedforward[i] /= convertedFeedback[0]; - } - for (let i = 1; i < feedbackLength; i += 1) { - convertedFeedback[i] /= convertedFeedback[0]; - } - } - const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, bufferSize, channelCount, channelCount); - scriptProcessorNode.channelCount = channelCount; - scriptProcessorNode.channelCountMode = channelCountMode; - scriptProcessorNode.channelInterpretation = channelInterpretation; - const bufferLength = 32; - const bufferIndexes = []; - const xBuffers = []; - const yBuffers = []; - for (let i = 0; i < channelCount; i += 1) { - bufferIndexes.push(0); - const xBuffer = new Float32Array(bufferLength); - const yBuffer = new Float32Array(bufferLength); - xBuffer.fill(0); - yBuffer.fill(0); - xBuffers.push(xBuffer); - yBuffers.push(yBuffer); - } - // tslint:disable-next-line:deprecation - scriptProcessorNode.onaudioprocess = (event) => { - const inputBuffer = event.inputBuffer; - const outputBuffer = event.outputBuffer; - const numberOfChannels = inputBuffer.numberOfChannels; - for (let i = 0; i < numberOfChannels; i += 1) { - const input = inputBuffer.getChannelData(i); - const output = outputBuffer.getChannelData(i); - bufferIndexes[i] = filterBuffer(convertedFeedback, feedbackLength, convertedFeedforward, feedforwardLength, minLength, xBuffers[i], yBuffers[i], bufferIndexes[i], bufferLength, input, output); - } - }; - const nyquist = nativeContext.sampleRate / 2; - const nativeIIRFilterNodeFaker = { - get bufferSize() { - return bufferSize; - }, - get channelCount() { - return scriptProcessorNode.channelCount; - }, - set channelCount(value) { - scriptProcessorNode.channelCount = value; - }, - get channelCountMode() { - return scriptProcessorNode.channelCountMode; - }, - set channelCountMode(value) { - scriptProcessorNode.channelCountMode = value; - }, - get channelInterpretation() { - return scriptProcessorNode.channelInterpretation; - }, - set channelInterpretation(value) { - scriptProcessorNode.channelInterpretation = value; - }, - get context() { - return scriptProcessorNode.context; - }, - get inputs() { - return [scriptProcessorNode]; - }, - get numberOfInputs() { - return scriptProcessorNode.numberOfInputs; - }, - get numberOfOutputs() { - return scriptProcessorNode.numberOfOutputs; - }, - addEventListener(...args) { - // @todo Dissallow adding an audioprocess listener. - return scriptProcessorNode.addEventListener(args[0], args[1], args[2]); - }, - dispatchEvent(...args) { - return scriptProcessorNode.dispatchEvent(args[0]); - }, - getFrequencyResponse(frequencyHz, magResponse, phaseResponse) { - if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) { - throw createInvalidAccessError(); - } - const length = frequencyHz.length; - for (let i = 0; i < length; i += 1) { - const omega = -Math.PI * (frequencyHz[i] / nyquist); - const z = [Math.cos(omega), Math.sin(omega)]; - const numerator = evaluatePolynomial(convertedFeedforward, z); - const denominator = evaluatePolynomial(convertedFeedback, z); - const response = divide(numerator, denominator); - magResponse[i] = Math.sqrt(response[0] * response[0] + response[1] * response[1]); - phaseResponse[i] = Math.atan2(response[1], response[0]); - } - }, - removeEventListener(...args) { - return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]); - } - }; - return interceptConnections(nativeIIRFilterNodeFaker, scriptProcessorNode); - }; -}; - -const createNativeMediaElementAudioSourceNode = (nativeAudioContext, options) => { - return nativeAudioContext.createMediaElementSource(options.mediaElement); -}; - -const createNativeMediaStreamAudioDestinationNode = (nativeAudioContext, options) => { - const nativeMediaStreamAudioDestinationNode = nativeAudioContext.createMediaStreamDestination(); - assignNativeAudioNodeOptions(nativeMediaStreamAudioDestinationNode, options); - // Bug #174: Safari does expose a wrong numberOfOutputs. - if (nativeMediaStreamAudioDestinationNode.numberOfOutputs === 1) { - Object.defineProperty(nativeMediaStreamAudioDestinationNode, 'numberOfOutputs', { get: () => 0 }); - } - return nativeMediaStreamAudioDestinationNode; -}; - -const createNativeMediaStreamAudioSourceNode = (nativeAudioContext, { mediaStream }) => { - const audioStreamTracks = mediaStream.getAudioTracks(); - /* - * Bug #151: Safari does not use the audio track as input anymore if it gets removed from the mediaStream after construction. - * Bug #159: Safari picks the first audio track if the MediaStream has more than one audio track. - */ - audioStreamTracks.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0)); - const filteredAudioStreamTracks = audioStreamTracks.slice(0, 1); - const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(new MediaStream(filteredAudioStreamTracks)); - /* - * Bug #151 & #159: The given mediaStream gets reconstructed before it gets passed to the native node which is why the accessor needs - * to be overwritten as it would otherwise expose the reconstructed version. - */ - Object.defineProperty(nativeMediaStreamAudioSourceNode, 'mediaStream', { value: mediaStream }); - return nativeMediaStreamAudioSourceNode; -}; - -const createNativeMediaStreamTrackAudioSourceNodeFactory = (createInvalidStateError, isNativeOfflineAudioContext) => { - return (nativeAudioContext, { mediaStreamTrack }) => { - // Bug #121: Only Firefox does yet support the MediaStreamTrackAudioSourceNode. - if (typeof nativeAudioContext.createMediaStreamTrackSource === 'function') { - return nativeAudioContext.createMediaStreamTrackSource(mediaStreamTrack); - } - const mediaStream = new MediaStream([mediaStreamTrack]); - const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(mediaStream); - // Bug #120: Firefox does not throw an error if the mediaStream has no audio track. - if (mediaStreamTrack.kind !== 'audio') { - throw createInvalidStateError(); - } - // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext. - if (isNativeOfflineAudioContext(nativeAudioContext)) { - throw new TypeError(); - } - return nativeMediaStreamAudioSourceNode; - }; -}; - -const createNativeOfflineAudioContextConstructor = (window) => { - if (window === null) { - return null; - } - if (window.hasOwnProperty('OfflineAudioContext')) { - return window.OfflineAudioContext; - } - return window.hasOwnProperty('webkitOfflineAudioContext') ? window.webkitOfflineAudioContext : null; -}; - -const createNativeOscillatorNodeFactory = (addSilentConnection, cacheTestResult, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls) => { - return (nativeContext, options) => { - const nativeOscillatorNode = nativeContext.createOscillator(); - assignNativeAudioNodeOptions(nativeOscillatorNode, options); - assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'detune'); - assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'frequency'); - if (options.periodicWave !== undefined) { - nativeOscillatorNode.setPeriodicWave(options.periodicWave); - } - else { - assignNativeAudioNodeOption(nativeOscillatorNode, options, 'type'); - } - // Bug #44: Only Chrome, Edge & Opera throw a RangeError yet. - if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) { - wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeOscillatorNode); - } - // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode. - if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () => testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext))) { - wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeOscillatorNode, nativeContext); - } - // Bug #44: Only Firefox does not throw a RangeError yet. - if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) { - wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeOscillatorNode); - } - // Bug #175: Safari will not fire an ended event if the OscillatorNode is unconnected. - addSilentConnection(nativeContext, nativeOscillatorNode); - return nativeOscillatorNode; - }; -}; - -const createNativePannerNodeFactory = (createNativePannerNodeFaker) => { - return (nativeContext, options) => { - const nativePannerNode = nativeContext.createPanner(); - // Bug #124: Safari does not support modifying the orientation and the position with AudioParams. - if (nativePannerNode.orientationX === undefined) { - return createNativePannerNodeFaker(nativeContext, options); - } - assignNativeAudioNodeOptions(nativePannerNode, options); - assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationX'); - assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationY'); - assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationZ'); - assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionX'); - assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionY'); - assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionZ'); - assignNativeAudioNodeOption(nativePannerNode, options, 'coneInnerAngle'); - assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterAngle'); - assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterGain'); - assignNativeAudioNodeOption(nativePannerNode, options, 'distanceModel'); - assignNativeAudioNodeOption(nativePannerNode, options, 'maxDistance'); - assignNativeAudioNodeOption(nativePannerNode, options, 'panningModel'); - assignNativeAudioNodeOption(nativePannerNode, options, 'refDistance'); - assignNativeAudioNodeOption(nativePannerNode, options, 'rolloffFactor'); - return nativePannerNode; - }; -}; - -const createNativePannerNodeFakerFactory = (connectNativeAudioNodeToNativeAudioNode, createInvalidStateError, createNativeChannelMergerNode, createNativeGainNode, createNativeScriptProcessorNode, createNativeWaveShaperNode, createNotSupportedError, disconnectNativeAudioNodeFromNativeAudioNode, getFirstSample, monitorConnections) => { - return (nativeContext, { coneInnerAngle, coneOuterAngle, coneOuterGain, distanceModel, maxDistance, orientationX, orientationY, orientationZ, panningModel, positionX, positionY, positionZ, refDistance, rolloffFactor, ...audioNodeOptions }) => { - const pannerNode = nativeContext.createPanner(); - // Bug #125: Safari does not throw an error yet. - if (audioNodeOptions.channelCount > 2) { - throw createNotSupportedError(); - } - // Bug #126: Safari does not throw an error yet. - if (audioNodeOptions.channelCountMode === 'max') { - throw createNotSupportedError(); - } - assignNativeAudioNodeOptions(pannerNode, audioNodeOptions); - const SINGLE_CHANNEL_OPTIONS = { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'discrete' - }; - const channelMergerNode = createNativeChannelMergerNode(nativeContext, { - ...SINGLE_CHANNEL_OPTIONS, - channelInterpretation: 'speakers', - numberOfInputs: 6 - }); - const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 }); - const orientationXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 1 }); - const orientationYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); - const orientationZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); - const positionXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); - const positionYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); - const positionZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); - const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 6, 1); - const waveShaperNode = createNativeWaveShaperNode(nativeContext, { - ...SINGLE_CHANNEL_OPTIONS, - curve: new Float32Array([1, 1]), - oversample: 'none' - }); - let lastOrientation = [orientationX, orientationY, orientationZ]; - let lastPosition = [positionX, positionY, positionZ]; - const buffer = new Float32Array(1); - // tslint:disable-next-line:deprecation - scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => { - const orientation = [ - getFirstSample(inputBuffer, buffer, 0), - getFirstSample(inputBuffer, buffer, 1), - getFirstSample(inputBuffer, buffer, 2) - ]; - if (orientation.some((value, index) => value !== lastOrientation[index])) { - pannerNode.setOrientation(...orientation); // tslint:disable-line:deprecation - lastOrientation = orientation; - } - const positon = [ - getFirstSample(inputBuffer, buffer, 3), - getFirstSample(inputBuffer, buffer, 4), - getFirstSample(inputBuffer, buffer, 5) - ]; - if (positon.some((value, index) => value !== lastPosition[index])) { - pannerNode.setPosition(...positon); // tslint:disable-line:deprecation - lastPosition = positon; - } - }; - Object.defineProperty(orientationYGainNode.gain, 'defaultValue', { get: () => 0 }); - Object.defineProperty(orientationZGainNode.gain, 'defaultValue', { get: () => 0 }); - Object.defineProperty(positionXGainNode.gain, 'defaultValue', { get: () => 0 }); - Object.defineProperty(positionYGainNode.gain, 'defaultValue', { get: () => 0 }); - Object.defineProperty(positionZGainNode.gain, 'defaultValue', { get: () => 0 }); - const nativePannerNodeFaker = { - get bufferSize() { - return undefined; - }, - get channelCount() { - return pannerNode.channelCount; - }, - set channelCount(value) { - // Bug #125: Safari does not throw an error yet. - if (value > 2) { - throw createNotSupportedError(); - } - inputGainNode.channelCount = value; - pannerNode.channelCount = value; - }, - get channelCountMode() { - return pannerNode.channelCountMode; - }, - set channelCountMode(value) { - // Bug #126: Safari does not throw an error yet. - if (value === 'max') { - throw createNotSupportedError(); - } - inputGainNode.channelCountMode = value; - pannerNode.channelCountMode = value; - }, - get channelInterpretation() { - return pannerNode.channelInterpretation; - }, - set channelInterpretation(value) { - inputGainNode.channelInterpretation = value; - pannerNode.channelInterpretation = value; - }, - get coneInnerAngle() { - return pannerNode.coneInnerAngle; - }, - set coneInnerAngle(value) { - pannerNode.coneInnerAngle = value; - }, - get coneOuterAngle() { - return pannerNode.coneOuterAngle; - }, - set coneOuterAngle(value) { - pannerNode.coneOuterAngle = value; - }, - get coneOuterGain() { - return pannerNode.coneOuterGain; - }, - set coneOuterGain(value) { - // Bug #127: Safari does not throw an InvalidStateError yet. - if (value < 0 || value > 1) { - throw createInvalidStateError(); - } - pannerNode.coneOuterGain = value; - }, - get context() { - return pannerNode.context; - }, - get distanceModel() { - return pannerNode.distanceModel; - }, - set distanceModel(value) { - pannerNode.distanceModel = value; - }, - get inputs() { - return [inputGainNode]; - }, - get maxDistance() { - return pannerNode.maxDistance; - }, - set maxDistance(value) { - // Bug #128: Safari does not throw an error yet. - if (value < 0) { - throw new RangeError(); - } - pannerNode.maxDistance = value; - }, - get numberOfInputs() { - return pannerNode.numberOfInputs; - }, - get numberOfOutputs() { - return pannerNode.numberOfOutputs; - }, - get orientationX() { - return orientationXGainNode.gain; - }, - get orientationY() { - return orientationYGainNode.gain; - }, - get orientationZ() { - return orientationZGainNode.gain; - }, - get panningModel() { - return pannerNode.panningModel; - }, - set panningModel(value) { - pannerNode.panningModel = value; - }, - get positionX() { - return positionXGainNode.gain; - }, - get positionY() { - return positionYGainNode.gain; - }, - get positionZ() { - return positionZGainNode.gain; - }, - get refDistance() { - return pannerNode.refDistance; - }, - set refDistance(value) { - // Bug #129: Safari does not throw an error yet. - if (value < 0) { - throw new RangeError(); - } - pannerNode.refDistance = value; - }, - get rolloffFactor() { - return pannerNode.rolloffFactor; - }, - set rolloffFactor(value) { - // Bug #130: Safari does not throw an error yet. - if (value < 0) { - throw new RangeError(); - } - pannerNode.rolloffFactor = value; - }, - addEventListener(...args) { - return inputGainNode.addEventListener(args[0], args[1], args[2]); - }, - dispatchEvent(...args) { - return inputGainNode.dispatchEvent(args[0]); - }, - removeEventListener(...args) { - return inputGainNode.removeEventListener(args[0], args[1], args[2]); - } - }; - if (coneInnerAngle !== nativePannerNodeFaker.coneInnerAngle) { - nativePannerNodeFaker.coneInnerAngle = coneInnerAngle; - } - if (coneOuterAngle !== nativePannerNodeFaker.coneOuterAngle) { - nativePannerNodeFaker.coneOuterAngle = coneOuterAngle; - } - if (coneOuterGain !== nativePannerNodeFaker.coneOuterGain) { - nativePannerNodeFaker.coneOuterGain = coneOuterGain; - } - if (distanceModel !== nativePannerNodeFaker.distanceModel) { - nativePannerNodeFaker.distanceModel = distanceModel; - } - if (maxDistance !== nativePannerNodeFaker.maxDistance) { - nativePannerNodeFaker.maxDistance = maxDistance; - } - if (orientationX !== nativePannerNodeFaker.orientationX.value) { - nativePannerNodeFaker.orientationX.value = orientationX; - } - if (orientationY !== nativePannerNodeFaker.orientationY.value) { - nativePannerNodeFaker.orientationY.value = orientationY; - } - if (orientationZ !== nativePannerNodeFaker.orientationZ.value) { - nativePannerNodeFaker.orientationZ.value = orientationZ; - } - if (panningModel !== nativePannerNodeFaker.panningModel) { - nativePannerNodeFaker.panningModel = panningModel; - } - if (positionX !== nativePannerNodeFaker.positionX.value) { - nativePannerNodeFaker.positionX.value = positionX; - } - if (positionY !== nativePannerNodeFaker.positionY.value) { - nativePannerNodeFaker.positionY.value = positionY; - } - if (positionZ !== nativePannerNodeFaker.positionZ.value) { - nativePannerNodeFaker.positionZ.value = positionZ; - } - if (refDistance !== nativePannerNodeFaker.refDistance) { - nativePannerNodeFaker.refDistance = refDistance; - } - if (rolloffFactor !== nativePannerNodeFaker.rolloffFactor) { - nativePannerNodeFaker.rolloffFactor = rolloffFactor; - } - if (lastOrientation[0] !== 1 || lastOrientation[1] !== 0 || lastOrientation[2] !== 0) { - pannerNode.setOrientation(...lastOrientation); // tslint:disable-line:deprecation - } - if (lastPosition[0] !== 0 || lastPosition[1] !== 0 || lastPosition[2] !== 0) { - pannerNode.setPosition(...lastPosition); // tslint:disable-line:deprecation - } - const whenConnected = () => { - inputGainNode.connect(pannerNode); - // Bug #119: Safari does not fully support the WaveShaperNode. - connectNativeAudioNodeToNativeAudioNode(inputGainNode, waveShaperNode, 0, 0); - waveShaperNode.connect(orientationXGainNode).connect(channelMergerNode, 0, 0); - waveShaperNode.connect(orientationYGainNode).connect(channelMergerNode, 0, 1); - waveShaperNode.connect(orientationZGainNode).connect(channelMergerNode, 0, 2); - waveShaperNode.connect(positionXGainNode).connect(channelMergerNode, 0, 3); - waveShaperNode.connect(positionYGainNode).connect(channelMergerNode, 0, 4); - waveShaperNode.connect(positionZGainNode).connect(channelMergerNode, 0, 5); - channelMergerNode.connect(scriptProcessorNode).connect(nativeContext.destination); - }; - const whenDisconnected = () => { - inputGainNode.disconnect(pannerNode); - // Bug #119: Safari does not fully support the WaveShaperNode. - disconnectNativeAudioNodeFromNativeAudioNode(inputGainNode, waveShaperNode, 0, 0); - waveShaperNode.disconnect(orientationXGainNode); - orientationXGainNode.disconnect(channelMergerNode); - waveShaperNode.disconnect(orientationYGainNode); - orientationYGainNode.disconnect(channelMergerNode); - waveShaperNode.disconnect(orientationZGainNode); - orientationZGainNode.disconnect(channelMergerNode); - waveShaperNode.disconnect(positionXGainNode); - positionXGainNode.disconnect(channelMergerNode); - waveShaperNode.disconnect(positionYGainNode); - positionYGainNode.disconnect(channelMergerNode); - waveShaperNode.disconnect(positionZGainNode); - positionZGainNode.disconnect(channelMergerNode); - channelMergerNode.disconnect(scriptProcessorNode); - scriptProcessorNode.disconnect(nativeContext.destination); - }; - return monitorConnections(interceptConnections(nativePannerNodeFaker, pannerNode), whenConnected, whenDisconnected); - }; -}; - -const createNativePeriodicWaveFactory = (createIndexSizeError) => { - return (nativeContext, { disableNormalization, imag, real }) => { - // Bug #180: Safari does not allow to use ordinary arrays. - const convertedImag = imag instanceof Float32Array ? imag : new Float32Array(imag); - const convertedReal = real instanceof Float32Array ? real : new Float32Array(real); - const nativePeriodicWave = nativeContext.createPeriodicWave(convertedReal, convertedImag, { disableNormalization }); - // Bug #181: Safari does not throw an IndexSizeError so far if the given arrays have less than two values. - if (Array.from(imag).length < 2) { - throw createIndexSizeError(); - } - return nativePeriodicWave; - }; -}; - -const createNativeScriptProcessorNode = (nativeContext, bufferSize, numberOfInputChannels, numberOfOutputChannels) => { - return nativeContext.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels); // tslint:disable-line deprecation -}; - -const createNativeStereoPannerNodeFactory = (createNativeStereoPannerNodeFaker, createNotSupportedError) => { - return (nativeContext, options) => { - const channelCountMode = options.channelCountMode; - /* - * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari - * which supports it and therefore it can't be supported at all. - */ - if (channelCountMode === 'clamped-max') { - throw createNotSupportedError(); - } - // Bug #105: Safari does not support the StereoPannerNode. - if (nativeContext.createStereoPanner === undefined) { - return createNativeStereoPannerNodeFaker(nativeContext, options); - } - const nativeStereoPannerNode = nativeContext.createStereoPanner(); - assignNativeAudioNodeOptions(nativeStereoPannerNode, options); - assignNativeAudioNodeAudioParamValue(nativeStereoPannerNode, options, 'pan'); - /* - * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari - * which supports it and therefore it can't be supported at all. - */ - Object.defineProperty(nativeStereoPannerNode, 'channelCountMode', { - get: () => channelCountMode, - set: (value) => { - if (value !== channelCountMode) { - throw createNotSupportedError(); - } - } - }); - return nativeStereoPannerNode; - }; -}; - -const createNativeStereoPannerNodeFakerFactory = (createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeGainNode, createNativeWaveShaperNode, createNotSupportedError, monitorConnections) => { - // The curve has a size of 14bit plus 1 value to have an exact representation for zero. This value has been determined experimentally. - const CURVE_SIZE = 16385; - const DC_CURVE = new Float32Array([1, 1]); - const HALF_PI = Math.PI / 2; - const SINGLE_CHANNEL_OPTIONS = { channelCount: 1, channelCountMode: 'explicit', channelInterpretation: 'discrete' }; - const SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS = { ...SINGLE_CHANNEL_OPTIONS, oversample: 'none' }; - const buildInternalGraphForMono = (nativeContext, inputGainNode, panGainNode, channelMergerNode) => { - const leftWaveShaperCurve = new Float32Array(CURVE_SIZE); - const rightWaveShaperCurve = new Float32Array(CURVE_SIZE); - for (let i = 0; i < CURVE_SIZE; i += 1) { - const x = (i / (CURVE_SIZE - 1)) * HALF_PI; - leftWaveShaperCurve[i] = Math.cos(x); - rightWaveShaperCurve[i] = Math.sin(x); - } - const leftGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); - // Bug #119: Safari does not fully support the WaveShaperNode. - const leftWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: leftWaveShaperCurve })); - // Bug #119: Safari does not fully support the WaveShaperNode. - const panWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE })); - const rightGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); - // Bug #119: Safari does not fully support the WaveShaperNode. - const rightWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: rightWaveShaperCurve })); - return { - connectGraph() { - inputGainNode.connect(leftGainNode); - inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]); - inputGainNode.connect(rightGainNode); - panWaveShaperNode.connect(panGainNode); - panGainNode.connect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]); - panGainNode.connect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]); - leftWaveShaperNode.connect(leftGainNode.gain); - rightWaveShaperNode.connect(rightGainNode.gain); - leftGainNode.connect(channelMergerNode, 0, 0); - rightGainNode.connect(channelMergerNode, 0, 1); - }, - disconnectGraph() { - inputGainNode.disconnect(leftGainNode); - inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]); - inputGainNode.disconnect(rightGainNode); - panWaveShaperNode.disconnect(panGainNode); - panGainNode.disconnect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]); - panGainNode.disconnect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]); - leftWaveShaperNode.disconnect(leftGainNode.gain); - rightWaveShaperNode.disconnect(rightGainNode.gain); - leftGainNode.disconnect(channelMergerNode, 0, 0); - rightGainNode.disconnect(channelMergerNode, 0, 1); - } - }; - }; - const buildInternalGraphForStereo = (nativeContext, inputGainNode, panGainNode, channelMergerNode) => { - const leftInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE); - const leftInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE); - const rightInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE); - const rightInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE); - const centerIndex = Math.floor(CURVE_SIZE / 2); - for (let i = 0; i < CURVE_SIZE; i += 1) { - if (i > centerIndex) { - const x = ((i - centerIndex) / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI; - leftInputForLeftOutputWaveShaperCurve[i] = Math.cos(x); - leftInputForRightOutputWaveShaperCurve[i] = Math.sin(x); - rightInputForLeftOutputWaveShaperCurve[i] = 0; - rightInputForRightOutputWaveShaperCurve[i] = 1; - } - else { - const x = (i / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI; - leftInputForLeftOutputWaveShaperCurve[i] = 1; - leftInputForRightOutputWaveShaperCurve[i] = 0; - rightInputForLeftOutputWaveShaperCurve[i] = Math.cos(x); - rightInputForRightOutputWaveShaperCurve[i] = Math.sin(x); - } - } - const channelSplitterNode = createNativeChannelSplitterNode(nativeContext, { - channelCount: 2, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - numberOfOutputs: 2 - }); - const leftInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); - // Bug #119: Safari does not fully support the WaveShaperNode. - const leftInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, { - ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, - curve: leftInputForLeftOutputWaveShaperCurve - }); - const leftInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); - // Bug #119: Safari does not fully support the WaveShaperNode. - const leftInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, { - ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, - curve: leftInputForRightOutputWaveShaperCurve - }); - // Bug #119: Safari does not fully support the WaveShaperNode. - const panWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE })); - const rightInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); - // Bug #119: Safari does not fully support the WaveShaperNode. - const rightInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, { - ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, - curve: rightInputForLeftOutputWaveShaperCurve - }); - const rightInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 }); - // Bug #119: Safari does not fully support the WaveShaperNode. - const rightInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, { - ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, - curve: rightInputForRightOutputWaveShaperCurve - }); - return { - connectGraph() { - inputGainNode.connect(channelSplitterNode); - inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]); - channelSplitterNode.connect(leftInputForLeftOutputGainNode, 0); - channelSplitterNode.connect(leftInputForRightOutputGainNode, 0); - channelSplitterNode.connect(rightInputForLeftOutputGainNode, 1); - channelSplitterNode.connect(rightInputForRightOutputGainNode, 1); - panWaveShaperNode.connect(panGainNode); - panGainNode.connect(leftInputForLeftOutputWaveShaperNode.inputs === undefined - ? leftInputForLeftOutputWaveShaperNode - : leftInputForLeftOutputWaveShaperNode.inputs[0]); - panGainNode.connect(leftInputForRightOutputWaveShaperNode.inputs === undefined - ? leftInputForRightOutputWaveShaperNode - : leftInputForRightOutputWaveShaperNode.inputs[0]); - panGainNode.connect(rightInputForLeftOutputWaveShaperNode.inputs === undefined - ? rightInputForLeftOutputWaveShaperNode - : rightInputForLeftOutputWaveShaperNode.inputs[0]); - panGainNode.connect(rightInputForRightOutputWaveShaperNode.inputs === undefined - ? rightInputForRightOutputWaveShaperNode - : rightInputForRightOutputWaveShaperNode.inputs[0]); - leftInputForLeftOutputWaveShaperNode.connect(leftInputForLeftOutputGainNode.gain); - leftInputForRightOutputWaveShaperNode.connect(leftInputForRightOutputGainNode.gain); - rightInputForLeftOutputWaveShaperNode.connect(rightInputForLeftOutputGainNode.gain); - rightInputForRightOutputWaveShaperNode.connect(rightInputForRightOutputGainNode.gain); - leftInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0); - rightInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0); - leftInputForRightOutputGainNode.connect(channelMergerNode, 0, 1); - rightInputForRightOutputGainNode.connect(channelMergerNode, 0, 1); - }, - disconnectGraph() { - inputGainNode.disconnect(channelSplitterNode); - inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]); - channelSplitterNode.disconnect(leftInputForLeftOutputGainNode, 0); - channelSplitterNode.disconnect(leftInputForRightOutputGainNode, 0); - channelSplitterNode.disconnect(rightInputForLeftOutputGainNode, 1); - channelSplitterNode.disconnect(rightInputForRightOutputGainNode, 1); - panWaveShaperNode.disconnect(panGainNode); - panGainNode.disconnect(leftInputForLeftOutputWaveShaperNode.inputs === undefined - ? leftInputForLeftOutputWaveShaperNode - : leftInputForLeftOutputWaveShaperNode.inputs[0]); - panGainNode.disconnect(leftInputForRightOutputWaveShaperNode.inputs === undefined - ? leftInputForRightOutputWaveShaperNode - : leftInputForRightOutputWaveShaperNode.inputs[0]); - panGainNode.disconnect(rightInputForLeftOutputWaveShaperNode.inputs === undefined - ? rightInputForLeftOutputWaveShaperNode - : rightInputForLeftOutputWaveShaperNode.inputs[0]); - panGainNode.disconnect(rightInputForRightOutputWaveShaperNode.inputs === undefined - ? rightInputForRightOutputWaveShaperNode - : rightInputForRightOutputWaveShaperNode.inputs[0]); - leftInputForLeftOutputWaveShaperNode.disconnect(leftInputForLeftOutputGainNode.gain); - leftInputForRightOutputWaveShaperNode.disconnect(leftInputForRightOutputGainNode.gain); - rightInputForLeftOutputWaveShaperNode.disconnect(rightInputForLeftOutputGainNode.gain); - rightInputForRightOutputWaveShaperNode.disconnect(rightInputForRightOutputGainNode.gain); - leftInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0); - rightInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0); - leftInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1); - rightInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1); - } - }; - }; - const buildInternalGraph = (nativeContext, channelCount, inputGainNode, panGainNode, channelMergerNode) => { - if (channelCount === 1) { - return buildInternalGraphForMono(nativeContext, inputGainNode, panGainNode, channelMergerNode); - } - if (channelCount === 2) { - return buildInternalGraphForStereo(nativeContext, inputGainNode, panGainNode, channelMergerNode); - } - throw createNotSupportedError(); - }; - return (nativeContext, { channelCount, channelCountMode, pan, ...audioNodeOptions }) => { - if (channelCountMode === 'max') { - throw createNotSupportedError(); - } - const channelMergerNode = createNativeChannelMergerNode(nativeContext, { - ...audioNodeOptions, - channelCount: 1, - channelCountMode, - numberOfInputs: 2 - }); - const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, channelCount, channelCountMode, gain: 1 }); - const panGainNode = createNativeGainNode(nativeContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - gain: pan - }); - let { connectGraph, disconnectGraph } = buildInternalGraph(nativeContext, channelCount, inputGainNode, panGainNode, channelMergerNode); - Object.defineProperty(panGainNode.gain, 'defaultValue', { get: () => 0 }); - Object.defineProperty(panGainNode.gain, 'maxValue', { get: () => 1 }); - Object.defineProperty(panGainNode.gain, 'minValue', { get: () => -1 }); - const nativeStereoPannerNodeFakerFactory = { - get bufferSize() { - return undefined; - }, - get channelCount() { - return inputGainNode.channelCount; - }, - set channelCount(value) { - if (inputGainNode.channelCount !== value) { - if (isConnected) { - disconnectGraph(); - } - ({ connectGraph, disconnectGraph } = buildInternalGraph(nativeContext, value, inputGainNode, panGainNode, channelMergerNode)); - if (isConnected) { - connectGraph(); - } - } - inputGainNode.channelCount = value; - }, - get channelCountMode() { - return inputGainNode.channelCountMode; - }, - set channelCountMode(value) { - if (value === 'clamped-max' || value === 'max') { - throw createNotSupportedError(); - } - inputGainNode.channelCountMode = value; - }, - get channelInterpretation() { - return inputGainNode.channelInterpretation; - }, - set channelInterpretation(value) { - inputGainNode.channelInterpretation = value; - }, - get context() { - return inputGainNode.context; - }, - get inputs() { - return [inputGainNode]; - }, - get numberOfInputs() { - return inputGainNode.numberOfInputs; - }, - get numberOfOutputs() { - return inputGainNode.numberOfOutputs; - }, - get pan() { - return panGainNode.gain; - }, - addEventListener(...args) { - return inputGainNode.addEventListener(args[0], args[1], args[2]); - }, - dispatchEvent(...args) { - return inputGainNode.dispatchEvent(args[0]); - }, - removeEventListener(...args) { - return inputGainNode.removeEventListener(args[0], args[1], args[2]); - } - }; - let isConnected = false; - const whenConnected = () => { - connectGraph(); - isConnected = true; - }; - const whenDisconnected = () => { - disconnectGraph(); - isConnected = false; - }; - return monitorConnections(interceptConnections(nativeStereoPannerNodeFakerFactory, channelMergerNode), whenConnected, whenDisconnected); - }; -}; - -const createNativeWaveShaperNodeFactory = (createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeWaveShaperNodeFaker, isDCCurve, monitorConnections, nativeAudioContextConstructor, overwriteAccessors) => { - return (nativeContext, options) => { - const nativeWaveShaperNode = nativeContext.createWaveShaper(); - /* - * Bug #119: Safari does not correctly map the values. - * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of - * the webkitAudioContext is used as a workaround here. Testing for the automationRate property is necessary because this workaround - * isn't necessary anymore since v14.0.2 of Safari. - */ - if (nativeAudioContextConstructor !== null && - nativeAudioContextConstructor.name === 'webkitAudioContext' && - nativeContext.createGain().gain.automationRate === undefined) { - return createNativeWaveShaperNodeFaker(nativeContext, options); - } - assignNativeAudioNodeOptions(nativeWaveShaperNode, options); - const curve = options.curve === null || options.curve instanceof Float32Array ? options.curve : new Float32Array(options.curve); - // Bug #104: Chrome, Edge and Opera will throw an InvalidAccessError when the curve has less than two samples. - if (curve !== null && curve.length < 2) { - throw createInvalidStateError(); - } - // Only values of type Float32Array can be assigned to the curve property. - assignNativeAudioNodeOption(nativeWaveShaperNode, { curve }, 'curve'); - assignNativeAudioNodeOption(nativeWaveShaperNode, options, 'oversample'); - let disconnectNativeAudioBufferSourceNode = null; - let isConnected = false; - overwriteAccessors(nativeWaveShaperNode, 'curve', (get) => () => get.call(nativeWaveShaperNode), (set) => (value) => { - set.call(nativeWaveShaperNode, value); - if (isConnected) { - if (isDCCurve(value) && disconnectNativeAudioBufferSourceNode === null) { - disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, nativeWaveShaperNode); - } - else if (!isDCCurve(value) && disconnectNativeAudioBufferSourceNode !== null) { - disconnectNativeAudioBufferSourceNode(); - disconnectNativeAudioBufferSourceNode = null; - } - } - return value; - }); - const whenConnected = () => { - isConnected = true; - if (isDCCurve(nativeWaveShaperNode.curve)) { - disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, nativeWaveShaperNode); - } - }; - const whenDisconnected = () => { - isConnected = false; - if (disconnectNativeAudioBufferSourceNode !== null) { - disconnectNativeAudioBufferSourceNode(); - disconnectNativeAudioBufferSourceNode = null; - } - }; - return monitorConnections(nativeWaveShaperNode, whenConnected, whenDisconnected); - }; -}; - -const createNativeWaveShaperNodeFakerFactory = (createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeGainNode, isDCCurve, monitorConnections) => { - return (nativeContext, { curve, oversample, ...audioNodeOptions }) => { - const negativeWaveShaperNode = nativeContext.createWaveShaper(); - const positiveWaveShaperNode = nativeContext.createWaveShaper(); - assignNativeAudioNodeOptions(negativeWaveShaperNode, audioNodeOptions); - assignNativeAudioNodeOptions(positiveWaveShaperNode, audioNodeOptions); - const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 }); - const invertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 }); - const outputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 }); - const revertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 }); - let disconnectNativeAudioBufferSourceNode = null; - let isConnected = false; - let unmodifiedCurve = null; - const nativeWaveShaperNodeFaker = { - get bufferSize() { - return undefined; - }, - get channelCount() { - return negativeWaveShaperNode.channelCount; - }, - set channelCount(value) { - inputGainNode.channelCount = value; - invertGainNode.channelCount = value; - negativeWaveShaperNode.channelCount = value; - outputGainNode.channelCount = value; - positiveWaveShaperNode.channelCount = value; - revertGainNode.channelCount = value; - }, - get channelCountMode() { - return negativeWaveShaperNode.channelCountMode; - }, - set channelCountMode(value) { - inputGainNode.channelCountMode = value; - invertGainNode.channelCountMode = value; - negativeWaveShaperNode.channelCountMode = value; - outputGainNode.channelCountMode = value; - positiveWaveShaperNode.channelCountMode = value; - revertGainNode.channelCountMode = value; - }, - get channelInterpretation() { - return negativeWaveShaperNode.channelInterpretation; - }, - set channelInterpretation(value) { - inputGainNode.channelInterpretation = value; - invertGainNode.channelInterpretation = value; - negativeWaveShaperNode.channelInterpretation = value; - outputGainNode.channelInterpretation = value; - positiveWaveShaperNode.channelInterpretation = value; - revertGainNode.channelInterpretation = value; - }, - get context() { - return negativeWaveShaperNode.context; - }, - get curve() { - return unmodifiedCurve; - }, - set curve(value) { - // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples. - if (value !== null && value.length < 2) { - throw createInvalidStateError(); - } - if (value === null) { - negativeWaveShaperNode.curve = value; - positiveWaveShaperNode.curve = value; - } - else { - const curveLength = value.length; - const negativeCurve = new Float32Array(curveLength + 2 - (curveLength % 2)); - const positiveCurve = new Float32Array(curveLength + 2 - (curveLength % 2)); - negativeCurve[0] = value[0]; - positiveCurve[0] = -value[curveLength - 1]; - const length = Math.ceil((curveLength + 1) / 2); - const centerIndex = (curveLength + 1) / 2 - 1; - for (let i = 1; i < length; i += 1) { - const theoreticIndex = (i / length) * centerIndex; - const lowerIndex = Math.floor(theoreticIndex); - const upperIndex = Math.ceil(theoreticIndex); - negativeCurve[i] = - lowerIndex === upperIndex - ? value[lowerIndex] - : (1 - (theoreticIndex - lowerIndex)) * value[lowerIndex] + - (1 - (upperIndex - theoreticIndex)) * value[upperIndex]; - positiveCurve[i] = - lowerIndex === upperIndex - ? -value[curveLength - 1 - lowerIndex] - : -((1 - (theoreticIndex - lowerIndex)) * value[curveLength - 1 - lowerIndex]) - - (1 - (upperIndex - theoreticIndex)) * value[curveLength - 1 - upperIndex]; - } - negativeCurve[length] = curveLength % 2 === 1 ? value[length - 1] : (value[length - 2] + value[length - 1]) / 2; - negativeWaveShaperNode.curve = negativeCurve; - positiveWaveShaperNode.curve = positiveCurve; - } - unmodifiedCurve = value; - if (isConnected) { - if (isDCCurve(unmodifiedCurve) && disconnectNativeAudioBufferSourceNode === null) { - disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode); - } - else if (disconnectNativeAudioBufferSourceNode !== null) { - disconnectNativeAudioBufferSourceNode(); - disconnectNativeAudioBufferSourceNode = null; - } - } - }, - get inputs() { - return [inputGainNode]; - }, - get numberOfInputs() { - return negativeWaveShaperNode.numberOfInputs; - }, - get numberOfOutputs() { - return negativeWaveShaperNode.numberOfOutputs; - }, - get oversample() { - return negativeWaveShaperNode.oversample; - }, - set oversample(value) { - negativeWaveShaperNode.oversample = value; - positiveWaveShaperNode.oversample = value; - }, - addEventListener(...args) { - return inputGainNode.addEventListener(args[0], args[1], args[2]); - }, - dispatchEvent(...args) { - return inputGainNode.dispatchEvent(args[0]); - }, - removeEventListener(...args) { - return inputGainNode.removeEventListener(args[0], args[1], args[2]); - } - }; - if (curve !== null) { - // Only values of type Float32Array can be assigned to the curve property. - nativeWaveShaperNodeFaker.curve = curve instanceof Float32Array ? curve : new Float32Array(curve); - } - if (oversample !== nativeWaveShaperNodeFaker.oversample) { - nativeWaveShaperNodeFaker.oversample = oversample; - } - const whenConnected = () => { - inputGainNode.connect(negativeWaveShaperNode).connect(outputGainNode); - inputGainNode.connect(invertGainNode).connect(positiveWaveShaperNode).connect(revertGainNode).connect(outputGainNode); - isConnected = true; - if (isDCCurve(unmodifiedCurve)) { - disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode); - } - }; - const whenDisconnected = () => { - inputGainNode.disconnect(negativeWaveShaperNode); - negativeWaveShaperNode.disconnect(outputGainNode); - inputGainNode.disconnect(invertGainNode); - invertGainNode.disconnect(positiveWaveShaperNode); - positiveWaveShaperNode.disconnect(revertGainNode); - revertGainNode.disconnect(outputGainNode); - isConnected = false; - if (disconnectNativeAudioBufferSourceNode !== null) { - disconnectNativeAudioBufferSourceNode(); - disconnectNativeAudioBufferSourceNode = null; - } - }; - return monitorConnections(interceptConnections(nativeWaveShaperNodeFaker, outputGainNode), whenConnected, whenDisconnected); - }; -}; - -const createNotSupportedError = () => new DOMException('', 'NotSupportedError'); - -const DEFAULT_OPTIONS$e = { - numberOfChannels: 1 -}; -const createOfflineAudioContextConstructor = (baseAudioContextConstructor, cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, startRendering) => { - return class OfflineAudioContext extends baseAudioContextConstructor { - constructor(a, b, c) { - let options; - if (typeof a === 'number' && b !== undefined && c !== undefined) { - options = { length: b, numberOfChannels: a, sampleRate: c }; - } - else if (typeof a === 'object') { - options = a; - } - else { - throw new Error('The given parameters are not valid.'); - } - const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS$e, ...options }; - const nativeOfflineAudioContext = createNativeOfflineAudioContext(numberOfChannels, length, sampleRate); - // #21 Safari does not support promises and therefore would fire the statechange event before the promise can be resolved. - if (!cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) { - nativeOfflineAudioContext.addEventListener('statechange', (() => { - let i = 0; - const delayStateChangeEvent = (event) => { - if (this._state === 'running') { - if (i > 0) { - nativeOfflineAudioContext.removeEventListener('statechange', delayStateChangeEvent); - event.stopImmediatePropagation(); - this._waitForThePromiseToSettle(event); - } - else { - i += 1; - } - } - }; - return delayStateChangeEvent; - })()); - } - super(nativeOfflineAudioContext, numberOfChannels); - this._length = length; - this._nativeOfflineAudioContext = nativeOfflineAudioContext; - this._state = null; - } - get length() { - // Bug #17: Safari does not yet expose the length. - if (this._nativeOfflineAudioContext.length === undefined) { - return this._length; - } - return this._nativeOfflineAudioContext.length; - } - get state() { - return this._state === null ? this._nativeOfflineAudioContext.state : this._state; - } - startRendering() { - /* - * Bug #9 & #59: It is theoretically possible that startRendering() will first render a partialOfflineAudioContext. Therefore - * the state of the nativeOfflineAudioContext might no transition to running immediately. - */ - if (this._state === 'running') { - return Promise.reject(createInvalidStateError()); - } - this._state = 'running'; - return startRendering(this.destination, this._nativeOfflineAudioContext).finally(() => { - this._state = null; - deactivateAudioGraph(this); - }); - } - _waitForThePromiseToSettle(event) { - if (this._state === null) { - this._nativeOfflineAudioContext.dispatchEvent(event); - } - else { - setTimeout(() => this._waitForThePromiseToSettle(event)); - } - } - }; -}; - -const DEFAULT_OPTIONS$f = { - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - detune: 0, - frequency: 440, - periodicWave: undefined, - type: 'sine' -}; -const createOscillatorNodeConstructor = (audioNodeConstructor, createAudioParam, createNativeOscillatorNode, createOscillatorNodeRenderer, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => { - return class OscillatorNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$f, ...options }; - const nativeOscillatorNode = createNativeOscillatorNode(nativeContext, mergedOptions); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const oscillatorNodeRenderer = (isOffline ? createOscillatorNodeRenderer() : null); - const nyquist = context.sampleRate / 2; - super(context, false, nativeOscillatorNode, oscillatorNodeRenderer); - // Bug #81: Firefox & Safari do not export the correct values for maxValue and minValue. - this._detune = createAudioParam(this, isOffline, nativeOscillatorNode.detune, 153600, -153600); - // Bug #76: Safari does not export the correct values for maxValue and minValue. - this._frequency = createAudioParam(this, isOffline, nativeOscillatorNode.frequency, nyquist, -nyquist); - this._nativeOscillatorNode = nativeOscillatorNode; - this._onended = null; - this._oscillatorNodeRenderer = oscillatorNodeRenderer; - if (this._oscillatorNodeRenderer !== null && mergedOptions.periodicWave !== undefined) { - this._oscillatorNodeRenderer.periodicWave = - mergedOptions.periodicWave; - } - } - get detune() { - return this._detune; - } - get frequency() { - return this._frequency; - } - get onended() { - return this._onended; - } - set onended(value) { - const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null; - this._nativeOscillatorNode.onended = wrappedListener; - const nativeOnEnded = this._nativeOscillatorNode.onended; - this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded; - } - get type() { - return this._nativeOscillatorNode.type; - } - set type(value) { - this._nativeOscillatorNode.type = value; - if (this._oscillatorNodeRenderer !== null) { - this._oscillatorNodeRenderer.periodicWave = null; - } - } - setPeriodicWave(periodicWave) { - this._nativeOscillatorNode.setPeriodicWave(periodicWave); - if (this._oscillatorNodeRenderer !== null) { - this._oscillatorNodeRenderer.periodicWave = periodicWave; - } - } - start(when = 0) { - this._nativeOscillatorNode.start(when); - if (this._oscillatorNodeRenderer !== null) { - this._oscillatorNodeRenderer.start = when; - } - if (this.context.state !== 'closed') { - setInternalStateToActive(this); - const resetInternalStateToPassive = () => { - this._nativeOscillatorNode.removeEventListener('ended', resetInternalStateToPassive); - if (isActiveAudioNode(this)) { - setInternalStateToPassive(this); - } - }; - this._nativeOscillatorNode.addEventListener('ended', resetInternalStateToPassive); - } - } - stop(when = 0) { - this._nativeOscillatorNode.stop(when); - if (this._oscillatorNodeRenderer !== null) { - this._oscillatorNodeRenderer.stop = when; - } - } - }; -}; - -const createOscillatorNodeRendererFactory = (connectAudioParam, createNativeOscillatorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { - return () => { - const renderedNativeOscillatorNodes = new WeakMap(); - let periodicWave = null; - let start = null; - let stop = null; - const createOscillatorNode = async (proxy, nativeOfflineAudioContext) => { - let nativeOscillatorNode = getNativeAudioNode(proxy); - // If the initially used nativeOscillatorNode was not constructed on the same OfflineAudioContext it needs to be created again. - const nativeOscillatorNodeIsOwnedByContext = isOwnedByContext(nativeOscillatorNode, nativeOfflineAudioContext); - if (!nativeOscillatorNodeIsOwnedByContext) { - const options = { - channelCount: nativeOscillatorNode.channelCount, - channelCountMode: nativeOscillatorNode.channelCountMode, - channelInterpretation: nativeOscillatorNode.channelInterpretation, - detune: nativeOscillatorNode.detune.value, - frequency: nativeOscillatorNode.frequency.value, - periodicWave: periodicWave === null ? undefined : periodicWave, - type: nativeOscillatorNode.type - }; - nativeOscillatorNode = createNativeOscillatorNode(nativeOfflineAudioContext, options); - if (start !== null) { - nativeOscillatorNode.start(start); - } - if (stop !== null) { - nativeOscillatorNode.stop(stop); - } - } - renderedNativeOscillatorNodes.set(nativeOfflineAudioContext, nativeOscillatorNode); - if (!nativeOscillatorNodeIsOwnedByContext) { - await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune); - await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency); - } - else { - await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune); - await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency); - } - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeOscillatorNode); - return nativeOscillatorNode; - }; - return { - set periodicWave(value) { - periodicWave = value; - }, - set start(value) { - start = value; - }, - set stop(value) { - stop = value; - }, - render(proxy, nativeOfflineAudioContext) { - const renderedNativeOscillatorNode = renderedNativeOscillatorNodes.get(nativeOfflineAudioContext); - if (renderedNativeOscillatorNode !== undefined) { - return Promise.resolve(renderedNativeOscillatorNode); - } - return createOscillatorNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const DEFAULT_OPTIONS$g = { - channelCount: 2, - channelCountMode: 'clamped-max', - channelInterpretation: 'speakers', - coneInnerAngle: 360, - coneOuterAngle: 360, - coneOuterGain: 0, - distanceModel: 'inverse', - maxDistance: 10000, - orientationX: 1, - orientationY: 0, - orientationZ: 0, - panningModel: 'equalpower', - positionX: 0, - positionY: 0, - positionZ: 0, - refDistance: 1, - rolloffFactor: 1 -}; -const createPannerNodeConstructor = (audioNodeConstructor, createAudioParam, createNativePannerNode, createPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { - return class PannerNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$g, ...options }; - const nativePannerNode = createNativePannerNode(nativeContext, mergedOptions); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const pannerNodeRenderer = (isOffline ? createPannerNodeRenderer() : null); - super(context, false, nativePannerNode, pannerNodeRenderer); - this._nativePannerNode = nativePannerNode; - // Bug #74: Safari does not export the correct values for maxValue and minValue. - this._orientationX = createAudioParam(this, isOffline, nativePannerNode.orientationX, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); - this._orientationY = createAudioParam(this, isOffline, nativePannerNode.orientationY, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); - this._orientationZ = createAudioParam(this, isOffline, nativePannerNode.orientationZ, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); - this._positionX = createAudioParam(this, isOffline, nativePannerNode.positionX, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); - this._positionY = createAudioParam(this, isOffline, nativePannerNode.positionY, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); - this._positionZ = createAudioParam(this, isOffline, nativePannerNode.positionZ, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT); - // @todo Determine a meaningful tail-time instead of just using one second. - setAudioNodeTailTime(this, 1); - } - get coneInnerAngle() { - return this._nativePannerNode.coneInnerAngle; - } - set coneInnerAngle(value) { - this._nativePannerNode.coneInnerAngle = value; - } - get coneOuterAngle() { - return this._nativePannerNode.coneOuterAngle; - } - set coneOuterAngle(value) { - this._nativePannerNode.coneOuterAngle = value; - } - get coneOuterGain() { - return this._nativePannerNode.coneOuterGain; - } - set coneOuterGain(value) { - this._nativePannerNode.coneOuterGain = value; - } - get distanceModel() { - return this._nativePannerNode.distanceModel; - } - set distanceModel(value) { - this._nativePannerNode.distanceModel = value; - } - get maxDistance() { - return this._nativePannerNode.maxDistance; - } - set maxDistance(value) { - this._nativePannerNode.maxDistance = value; - } - get orientationX() { - return this._orientationX; - } - get orientationY() { - return this._orientationY; - } - get orientationZ() { - return this._orientationZ; - } - get panningModel() { - return this._nativePannerNode.panningModel; - } - set panningModel(value) { - this._nativePannerNode.panningModel = value; - } - get positionX() { - return this._positionX; - } - get positionY() { - return this._positionY; - } - get positionZ() { - return this._positionZ; - } - get refDistance() { - return this._nativePannerNode.refDistance; - } - set refDistance(value) { - this._nativePannerNode.refDistance = value; - } - get rolloffFactor() { - return this._nativePannerNode.rolloffFactor; - } - set rolloffFactor(value) { - this._nativePannerNode.rolloffFactor = value; - } - }; -}; - -const createPannerNodeRendererFactory = (connectAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeGainNode, createNativePannerNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => { - return () => { - const renderedNativeAudioNodes = new WeakMap(); - let renderedBufferPromise = null; - const createAudioNode = async (proxy, nativeOfflineAudioContext) => { - let nativeGainNode = null; - let nativePannerNode = getNativeAudioNode(proxy); - const commonAudioNodeOptions = { - channelCount: nativePannerNode.channelCount, - channelCountMode: nativePannerNode.channelCountMode, - channelInterpretation: nativePannerNode.channelInterpretation - }; - const commonNativePannerNodeOptions = { - ...commonAudioNodeOptions, - coneInnerAngle: nativePannerNode.coneInnerAngle, - coneOuterAngle: nativePannerNode.coneOuterAngle, - coneOuterGain: nativePannerNode.coneOuterGain, - distanceModel: nativePannerNode.distanceModel, - maxDistance: nativePannerNode.maxDistance, - panningModel: nativePannerNode.panningModel, - refDistance: nativePannerNode.refDistance, - rolloffFactor: nativePannerNode.rolloffFactor - }; - // If the initially used nativePannerNode was not constructed on the same OfflineAudioContext it needs to be created again. - const nativePannerNodeIsOwnedByContext = isOwnedByContext(nativePannerNode, nativeOfflineAudioContext); - // Bug #124: Safari does not support modifying the orientation and the position with AudioParams. - if ('bufferSize' in nativePannerNode) { - nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 }); - } - else if (!nativePannerNodeIsOwnedByContext) { - const options = { - ...commonNativePannerNodeOptions, - orientationX: nativePannerNode.orientationX.value, - orientationY: nativePannerNode.orientationY.value, - orientationZ: nativePannerNode.orientationZ.value, - positionX: nativePannerNode.positionX.value, - positionY: nativePannerNode.positionY.value, - positionZ: nativePannerNode.positionZ.value - }; - nativePannerNode = createNativePannerNode(nativeOfflineAudioContext, options); - } - renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeGainNode === null ? nativePannerNode : nativeGainNode); - if (nativeGainNode !== null) { - if (renderedBufferPromise === null) { - if (nativeOfflineAudioContextConstructor === null) { - throw new Error('Missing the native OfflineAudioContext constructor.'); - } - const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(6, - // Bug #17: Safari does not yet expose the length. - proxy.context.length, nativeOfflineAudioContext.sampleRate); - const nativeChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'speakers', - numberOfInputs: 6 - }); - nativeChannelMergerNode.connect(partialOfflineAudioContext.destination); - renderedBufferPromise = (async () => { - const nativeConstantSourceNodes = await Promise.all([ - proxy.orientationX, - proxy.orientationY, - proxy.orientationZ, - proxy.positionX, - proxy.positionY, - proxy.positionZ - ].map(async (audioParam, index) => { - const nativeConstantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - offset: index === 0 ? 1 : 0 - }); - await renderAutomation(partialOfflineAudioContext, audioParam, nativeConstantSourceNode.offset); - return nativeConstantSourceNode; - })); - for (let i = 0; i < 6; i += 1) { - nativeConstantSourceNodes[i].connect(nativeChannelMergerNode, 0, i); - nativeConstantSourceNodes[i].start(0); - } - return renderNativeOfflineAudioContext(partialOfflineAudioContext); - })(); - } - const renderedBuffer = await renderedBufferPromise; - const inputGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 }); - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, inputGainNode); - const channelDatas = []; - for (let i = 0; i < renderedBuffer.numberOfChannels; i += 1) { - channelDatas.push(renderedBuffer.getChannelData(i)); - } - let lastOrientation = [channelDatas[0][0], channelDatas[1][0], channelDatas[2][0]]; - let lastPosition = [channelDatas[3][0], channelDatas[4][0], channelDatas[5][0]]; - let gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 }); - let partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, { - ...commonNativePannerNodeOptions, - orientationX: lastOrientation[0], - orientationY: lastOrientation[1], - orientationZ: lastOrientation[2], - positionX: lastPosition[0], - positionY: lastPosition[1], - positionZ: lastPosition[2] - }); - inputGainNode.connect(gateGainNode).connect(partialPannerNode.inputs[0]); - partialPannerNode.connect(nativeGainNode); - for (let i = 128; i < renderedBuffer.length; i += 128) { - const orientation = [channelDatas[0][i], channelDatas[1][i], channelDatas[2][i]]; - const positon = [channelDatas[3][i], channelDatas[4][i], channelDatas[5][i]]; - if (orientation.some((value, index) => value !== lastOrientation[index]) || - positon.some((value, index) => value !== lastPosition[index])) { - lastOrientation = orientation; - lastPosition = positon; - const currentTime = i / nativeOfflineAudioContext.sampleRate; - gateGainNode.gain.setValueAtTime(0, currentTime); - gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 0 }); - partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, { - ...commonNativePannerNodeOptions, - orientationX: lastOrientation[0], - orientationY: lastOrientation[1], - orientationZ: lastOrientation[2], - positionX: lastPosition[0], - positionY: lastPosition[1], - positionZ: lastPosition[2] - }); - gateGainNode.gain.setValueAtTime(1, currentTime); - inputGainNode.connect(gateGainNode).connect(partialPannerNode.inputs[0]); - partialPannerNode.connect(nativeGainNode); - } - } - return nativeGainNode; - } - if (!nativePannerNodeIsOwnedByContext) { - await renderAutomation(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX); - await renderAutomation(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY); - await renderAutomation(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ); - await renderAutomation(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX); - await renderAutomation(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY); - await renderAutomation(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ); - } - else { - await connectAudioParam(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX); - await connectAudioParam(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY); - await connectAudioParam(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ); - await connectAudioParam(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX); - await connectAudioParam(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY); - await connectAudioParam(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ); - } - if (isNativeAudioNodeFaker(nativePannerNode)) { - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode.inputs[0]); - } - else { - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode); - } - return nativePannerNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeGainNodeOrNativePannerNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext); - if (renderedNativeGainNodeOrNativePannerNode !== undefined) { - return Promise.resolve(renderedNativeGainNodeOrNativePannerNode); - } - return createAudioNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const DEFAULT_OPTIONS$h = { - disableNormalization: false -}; -const createPeriodicWaveConstructor = (createNativePeriodicWave, getNativeContext, periodicWaveStore, sanitizePeriodicWaveOptions) => { - return class PeriodicWave { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = sanitizePeriodicWaveOptions({ ...DEFAULT_OPTIONS$h, ...options }); - const periodicWave = createNativePeriodicWave(nativeContext, mergedOptions); - periodicWaveStore.add(periodicWave); - // This does violate all good pratices but it is used here to simplify the handling of periodic waves. - return periodicWave; - } - static [Symbol.hasInstance](instance) { - return ((instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === PeriodicWave.prototype) || - periodicWaveStore.has(instance)); - } - }; -}; - -const createRenderAutomation = (getAudioParamRenderer, renderInputsOfAudioParam) => { - return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => { - const audioParamRenderer = getAudioParamRenderer(audioParam); - audioParamRenderer.replay(nativeAudioParam); - return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam); - }; -}; - -const createRenderInputsOfAudioNode = (getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle) => { - return async (audioNode, nativeOfflineAudioContext, nativeAudioNode) => { - const audioNodeConnections = getAudioNodeConnections(audioNode); - await Promise.all(audioNodeConnections.activeInputs - .map((connections, input) => Array.from(connections).map(async ([source, output]) => { - const audioNodeRenderer = getAudioNodeRenderer(source); - const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext); - const destination = audioNode.context.destination; - if (!isPartOfACycle(source) && (audioNode !== destination || !isPartOfACycle(audioNode))) { - renderedNativeAudioNode.connect(nativeAudioNode, output, input); - } - })) - .reduce((allRenderingPromises, renderingPromises) => [...allRenderingPromises, ...renderingPromises], [])); - }; -}; - -const createRenderInputsOfAudioParam = (getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle) => { - return async (audioParam, nativeOfflineAudioContext, nativeAudioParam) => { - const audioParamConnections = getAudioParamConnections(audioParam); - await Promise.all(Array.from(audioParamConnections.activeInputs).map(async ([source, output]) => { - const audioNodeRenderer = getAudioNodeRenderer(source); - const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext); - if (!isPartOfACycle(source)) { - renderedNativeAudioNode.connect(nativeAudioParam, output); - } - })); - }; -}; - -const createRenderNativeOfflineAudioContext = (cacheTestResult, createNativeGainNode, createNativeScriptProcessorNode, testOfflineAudioContextCurrentTimeSupport) => { - return (nativeOfflineAudioContext) => { - // Bug #21: Safari does not support promises yet. - if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) { - // Bug #158: Chrome and Edge do not advance currentTime if it is not accessed while rendering the audio. - return Promise.resolve(cacheTestResult(testOfflineAudioContextCurrentTimeSupport, testOfflineAudioContextCurrentTimeSupport)).then((isOfflineAudioContextCurrentTimeSupported) => { - if (!isOfflineAudioContextCurrentTimeSupported) { - const scriptProcessorNode = createNativeScriptProcessorNode(nativeOfflineAudioContext, 512, 0, 1); - nativeOfflineAudioContext.oncomplete = () => { - scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation - scriptProcessorNode.disconnect(); - }; - scriptProcessorNode.onaudioprocess = () => nativeOfflineAudioContext.currentTime; // tslint:disable-line:deprecation - scriptProcessorNode.connect(nativeOfflineAudioContext.destination); - } - return nativeOfflineAudioContext.startRendering(); - }); - } - return new Promise((resolve) => { - // Bug #48: Safari does not render an OfflineAudioContext without any connected node. - const gainNode = createNativeGainNode(nativeOfflineAudioContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - gain: 0 - }); - nativeOfflineAudioContext.oncomplete = (event) => { - gainNode.disconnect(); - resolve(event.renderedBuffer); - }; - gainNode.connect(nativeOfflineAudioContext.destination); - nativeOfflineAudioContext.startRendering(); - }); - }; -}; - -const createSetActiveAudioWorkletNodeInputs = (activeAudioWorkletNodeInputsStore) => { - return (nativeAudioWorkletNode, activeInputs) => { - activeAudioWorkletNodeInputsStore.set(nativeAudioWorkletNode, activeInputs); - }; -}; - -const createSetAudioNodeTailTime = (audioNodeTailTimeStore) => { - return (audioNode, tailTime) => audioNodeTailTimeStore.set(audioNode, tailTime); -}; - -const createStartRendering = (audioBufferStore, cacheTestResult, getAudioNodeRenderer, getUnrenderedAudioWorkletNodes, renderNativeOfflineAudioContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => { - return (destination, nativeOfflineAudioContext) => getAudioNodeRenderer(destination) - .render(destination, nativeOfflineAudioContext) - /* - * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to the - * destination. - */ - .then(() => Promise.all(Array.from(getUnrenderedAudioWorkletNodes(nativeOfflineAudioContext)).map((audioWorkletNode) => getAudioNodeRenderer(audioWorkletNode).render(audioWorkletNode, nativeOfflineAudioContext)))) - .then(() => renderNativeOfflineAudioContext(nativeOfflineAudioContext)) - .then((audioBuffer) => { - // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). - // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value. - if (typeof audioBuffer.copyFromChannel !== 'function') { - wrapAudioBufferCopyChannelMethods(audioBuffer); - wrapAudioBufferGetChannelDataMethod(audioBuffer); - // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds. - } - else if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) { - wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer); - } - audioBufferStore.add(audioBuffer); - return audioBuffer; - }); -}; - -const DEFAULT_OPTIONS$i = { - channelCount: 2, - /* - * Bug #105: The channelCountMode should be 'clamped-max' according to the spec but is set to 'explicit' to achieve consistent - * behavior. - */ - channelCountMode: 'explicit', - channelInterpretation: 'speakers', - pan: 0 -}; -const createStereoPannerNodeConstructor = (audioNodeConstructor, createAudioParam, createNativeStereoPannerNode, createStereoPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext) => { - return class StereoPannerNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$i, ...options }; - const nativeStereoPannerNode = createNativeStereoPannerNode(nativeContext, mergedOptions); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const stereoPannerNodeRenderer = (isOffline ? createStereoPannerNodeRenderer() : null); - super(context, false, nativeStereoPannerNode, stereoPannerNodeRenderer); - this._pan = createAudioParam(this, isOffline, nativeStereoPannerNode.pan); - } - get pan() { - return this._pan; - } - }; -}; - -const createStereoPannerNodeRendererFactory = (connectAudioParam, createNativeStereoPannerNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => { - return () => { - const renderedNativeStereoPannerNodes = new WeakMap(); - const createStereoPannerNode = async (proxy, nativeOfflineAudioContext) => { - let nativeStereoPannerNode = getNativeAudioNode(proxy); - /* - * If the initially used nativeStereoPannerNode was not constructed on the same OfflineAudioContext it needs to be created - * again. - */ - const nativeStereoPannerNodeIsOwnedByContext = isOwnedByContext(nativeStereoPannerNode, nativeOfflineAudioContext); - if (!nativeStereoPannerNodeIsOwnedByContext) { - const options = { - channelCount: nativeStereoPannerNode.channelCount, - channelCountMode: nativeStereoPannerNode.channelCountMode, - channelInterpretation: nativeStereoPannerNode.channelInterpretation, - pan: nativeStereoPannerNode.pan.value - }; - nativeStereoPannerNode = createNativeStereoPannerNode(nativeOfflineAudioContext, options); - } - renderedNativeStereoPannerNodes.set(nativeOfflineAudioContext, nativeStereoPannerNode); - if (!nativeStereoPannerNodeIsOwnedByContext) { - await renderAutomation(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan); - } - else { - await connectAudioParam(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan); - } - if (isNativeAudioNodeFaker(nativeStereoPannerNode)) { - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode.inputs[0]); - } - else { - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode); - } - return nativeStereoPannerNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeStereoPannerNode = renderedNativeStereoPannerNodes.get(nativeOfflineAudioContext); - if (renderedNativeStereoPannerNode !== undefined) { - return Promise.resolve(renderedNativeStereoPannerNode); - } - return createStereoPannerNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -// Bug #33: Safari exposes an AudioBuffer but it can't be used as a constructor. -const createTestAudioBufferConstructorSupport = (nativeAudioBufferConstructor) => { - return () => { - if (nativeAudioBufferConstructor === null) { - return false; - } - try { - new nativeAudioBufferConstructor({ length: 1, sampleRate: 44100 }); // tslint:disable-line:no-unused-expression - } - catch { - return false; - } - return true; - }; -}; - -/* - * Firefox up to version 67 didn't fully support the copyFromChannel() and copyToChannel() methods. Therefore testing one of those methods - * is enough to know if the other one is supported as well. - */ -const createTestAudioBufferCopyChannelMethodsSubarraySupport = (nativeOfflineAudioContextConstructor) => { - return () => { - if (nativeOfflineAudioContextConstructor === null) { - return false; - } - const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); - const nativeAudioBuffer = nativeOfflineAudioContext.createBuffer(1, 1, 44100); - // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). - if (nativeAudioBuffer.copyToChannel === undefined) { - return true; - } - const source = new Float32Array(2); - try { - nativeAudioBuffer.copyFromChannel(source, 0, 0); - } - catch { - return false; - } - return true; - }; -}; - -const createTestAudioContextCloseMethodSupport = (nativeAudioContextConstructor) => { - return () => { - if (nativeAudioContextConstructor === null) { - return false; - } - // Try to check the prototype before constructing the AudioContext. - if (nativeAudioContextConstructor.prototype !== undefined && nativeAudioContextConstructor.prototype.close !== undefined) { - return true; - } - const audioContext = new nativeAudioContextConstructor(); - const isAudioContextClosable = audioContext.close !== undefined; - try { - audioContext.close(); - } - catch { - // Ignore errors. - } - return isAudioContextClosable; - }; -}; - -/** - * Edge up to version 14, Firefox up to version 52, Safari up to version 9 and maybe other browsers - * did not refuse to decode invalid parameters with a TypeError. - */ -const createTestAudioContextDecodeAudioDataMethodTypeErrorSupport = (nativeOfflineAudioContextConstructor) => { - return () => { - if (nativeOfflineAudioContextConstructor === null) { - return Promise.resolve(false); - } - const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); - // Bug #21: Safari does not support promises yet. - return new Promise((resolve) => { - let isPending = true; - const resolvePromise = (err) => { - if (isPending) { - isPending = false; - offlineAudioContext.startRendering(); - resolve(err instanceof TypeError); - } - }; - let promise; - // Bug #26: Safari throws a synchronous error. - try { - promise = offlineAudioContext - // Bug #1: Safari requires a successCallback. - .decodeAudioData(null, () => { - // Ignore the success callback. - }, resolvePromise); - } - catch (err) { - resolvePromise(err); - } - // Bug #21: Safari does not support promises yet. - if (promise !== undefined) { - // Bug #6: Chrome, Edge, Firefox and Opera do not call the errorCallback. - promise.catch(resolvePromise); - } - }); - }; -}; - -const createTestAudioContextOptionsSupport = (nativeAudioContextConstructor) => { - return () => { - if (nativeAudioContextConstructor === null) { - return false; - } - let audioContext; - try { - audioContext = new nativeAudioContextConstructor({ latencyHint: 'balanced' }); - } - catch { - return false; - } - audioContext.close(); - return true; - }; -}; - -// Safari up to version 12.0 (but not v12.1) didn't return the destination in case it was an AudioNode. -const createTestAudioNodeConnectMethodSupport = (nativeOfflineAudioContextConstructor) => { - return () => { - if (nativeOfflineAudioContextConstructor === null) { - return false; - } - const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); - const nativeGainNode = nativeOfflineAudioContext.createGain(); - const isSupported = nativeGainNode.connect(nativeGainNode) === nativeGainNode; - nativeGainNode.disconnect(nativeGainNode); - return isSupported; - }; -}; - -/** - * Chrome version 66 and 67 did not call the process() function of an AudioWorkletProcessor if it had no outputs. AudioWorklet support was - * enabled by default in version 66. - */ -const createTestAudioWorkletProcessorNoOutputsSupport = (nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor) => { - return async () => { - // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist. - if (nativeAudioWorkletNodeConstructor === null) { - return true; - } - if (nativeOfflineAudioContextConstructor === null) { - return false; - } - const blob = new Blob([ - 'let c,p;class A extends AudioWorkletProcessor{constructor(){super();this.port.onmessage=(e)=>{p=e.data;p.onmessage=()=>{p.postMessage(c);p.close()};this.port.postMessage(0)}}process(){c=1}}registerProcessor("a",A)' - ], { - type: 'application/javascript; charset=utf-8' - }); - const messageChannel = new MessageChannel(); - // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz. - const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 44100); - const url = URL.createObjectURL(blob); - let isCallingProcess = false; - try { - await offlineAudioContext.audioWorklet.addModule(url); - const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 }); - const oscillator = offlineAudioContext.createOscillator(); - await new Promise((resolve) => { - audioWorkletNode.port.onmessage = () => resolve(); - audioWorkletNode.port.postMessage(messageChannel.port2, [messageChannel.port2]); - }); - audioWorkletNode.port.onmessage = () => (isCallingProcess = true); - oscillator.connect(audioWorkletNode); - oscillator.start(0); - await offlineAudioContext.startRendering(); - isCallingProcess = await new Promise((resolve) => { - messageChannel.port1.onmessage = ({ data }) => resolve(data === 1); - messageChannel.port1.postMessage(0); - }); - } - catch { - // Ignore errors. - } - finally { - messageChannel.port1.close(); - URL.revokeObjectURL(url); - } - return isCallingProcess; - }; -}; - -// Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument. -const createTestAudioWorkletProcessorPostMessageSupport = (nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor) => { - return async () => { - // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist. - if (nativeAudioWorkletNodeConstructor === null) { - return true; - } - if (nativeOfflineAudioContextConstructor === null) { - return false; - } - const blob = new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor("a",A)'], { - type: 'application/javascript; charset=utf-8' - }); - // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz. - const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 44100); - const url = URL.createObjectURL(blob); - let isEmittingMessageEvents = false; - let isEmittingProcessorErrorEvents = false; - try { - await offlineAudioContext.audioWorklet.addModule(url); - const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 }); - const oscillator = offlineAudioContext.createOscillator(); - audioWorkletNode.port.onmessage = () => (isEmittingMessageEvents = true); - audioWorkletNode.onprocessorerror = () => (isEmittingProcessorErrorEvents = true); - oscillator.connect(audioWorkletNode); - oscillator.start(0); - await offlineAudioContext.startRendering(); - } - catch { - // Ignore errors. - } - finally { - URL.revokeObjectURL(url); - } - return isEmittingMessageEvents && !isEmittingProcessorErrorEvents; - }; -}; - -/** - * Firefox up to version 69 did not throw an error when setting a different channelCount or channelCountMode. - */ -const createTestChannelMergerNodeChannelCountSupport = (nativeOfflineAudioContextConstructor) => { - return () => { - if (nativeOfflineAudioContextConstructor === null) { - return false; - } - const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); - const nativeChannelMergerNode = offlineAudioContext.createChannelMerger(); - /** - * Bug #15: Safari does not return the default properties. It still needs to be patched. This test is supposed to test the support - * in other browsers. - */ - if (nativeChannelMergerNode.channelCountMode === 'max') { - return true; - } - try { - nativeChannelMergerNode.channelCount = 2; - } - catch { - return true; - } - return false; - }; -}; - -const createTestConstantSourceNodeAccurateSchedulingSupport = (nativeOfflineAudioContextConstructor) => { - return () => { - if (nativeOfflineAudioContextConstructor === null) { - return false; - } - const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); - // Bug #62: Safari does not support ConstantSourceNodes. - if (nativeOfflineAudioContext.createConstantSource === undefined) { - return true; - } - const nativeConstantSourceNode = nativeOfflineAudioContext.createConstantSource(); - /* - * @todo This is using bug #75 to detect bug #70. That works because both bugs were unique to - * the implementation of Firefox right now, but it could probably be done in a better way. - */ - return nativeConstantSourceNode.offset.maxValue !== Number.POSITIVE_INFINITY; - }; -}; - -// Opera up to version 57 did not allow to reassign the buffer of a ConvolverNode. -const createTestConvolverNodeBufferReassignabilitySupport = (nativeOfflineAudioContextConstructor) => { - return () => { - if (nativeOfflineAudioContextConstructor === null) { - return false; - } - const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); - const nativeConvolverNode = offlineAudioContext.createConvolver(); - nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate); - try { - nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate); - } - catch { - return false; - } - return true; - }; -}; - -// Chrome up to version v80, Edge up to version v80 and Opera up to version v67 did not allow to set the channelCount property of a ConvolverNode to 1. They also did not allow to set the channelCountMode to 'explicit'. -const createTestConvolverNodeChannelCountSupport = (nativeOfflineAudioContextConstructor) => { - return () => { - if (nativeOfflineAudioContextConstructor === null) { - return false; - } - const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); - const nativeConvolverNode = offlineAudioContext.createConvolver(); - try { - nativeConvolverNode.channelCount = 1; - } - catch { - return false; - } - return true; - }; -}; - -const createTestIsSecureContextSupport = (window) => { - return () => window !== null && window.hasOwnProperty('isSecureContext'); -}; - -// Firefox up to version 68 did not throw an error when creating a MediaStreamAudioSourceNode with a mediaStream that had no audio track. -const createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport = (nativeAudioContextConstructor) => { - return () => { - if (nativeAudioContextConstructor === null) { - return false; - } - const audioContext = new nativeAudioContextConstructor(); - try { - audioContext.createMediaStreamSource(new MediaStream()); - return false; - } - catch (err) { - return true; - } - finally { - audioContext.close(); - } - }; -}; - -const createTestOfflineAudioContextCurrentTimeSupport = (createNativeGainNode, nativeOfflineAudioContextConstructor) => { - return () => { - if (nativeOfflineAudioContextConstructor === null) { - return Promise.resolve(false); - } - const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); - // Bug #48: Safari does not render an OfflineAudioContext without any connected node. - const gainNode = createNativeGainNode(nativeOfflineAudioContext, { - channelCount: 1, - channelCountMode: 'explicit', - channelInterpretation: 'discrete', - gain: 0 - }); - // Bug #21: Safari does not support promises yet. - return new Promise((resolve) => { - nativeOfflineAudioContext.oncomplete = () => { - gainNode.disconnect(); - resolve(nativeOfflineAudioContext.currentTime !== 0); - }; - nativeOfflineAudioContext.startRendering(); - }); - }; -}; - -/** - * Firefox up to version 62 did not kick off the processing of the StereoPannerNode if the value of pan was zero. - */ -const createTestStereoPannerNodeDefaultValueSupport = (nativeOfflineAudioContextConstructor) => { - return () => { - if (nativeOfflineAudioContextConstructor === null) { - return Promise.resolve(false); - } - const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100); - /* - * Bug #105: Safari does not support the StereoPannerNode. Therefore the returned value should normally be false but the faker does - * support the tested behaviour. - */ - if (nativeOfflineAudioContext.createStereoPanner === undefined) { - return Promise.resolve(true); - } - // Bug #62: Safari does not support ConstantSourceNodes. - if (nativeOfflineAudioContext.createConstantSource === undefined) { - return Promise.resolve(true); - } - const constantSourceNode = nativeOfflineAudioContext.createConstantSource(); - const stereoPanner = nativeOfflineAudioContext.createStereoPanner(); - constantSourceNode.channelCount = 1; - constantSourceNode.offset.value = 1; - stereoPanner.channelCount = 1; - constantSourceNode.start(); - constantSourceNode.connect(stereoPanner).connect(nativeOfflineAudioContext.destination); - return nativeOfflineAudioContext.startRendering().then((buffer) => buffer.getChannelData(0)[0] !== 1); - }; -}; - -const createUnknownError = () => new DOMException('', 'UnknownError'); - -const DEFAULT_OPTIONS$j = { - channelCount: 2, - channelCountMode: 'max', - channelInterpretation: 'speakers', - curve: null, - oversample: 'none' -}; -const createWaveShaperNodeConstructor = (audioNodeConstructor, createInvalidStateError, createNativeWaveShaperNode, createWaveShaperNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => { - return class WaveShaperNode extends audioNodeConstructor { - constructor(context, options) { - const nativeContext = getNativeContext(context); - const mergedOptions = { ...DEFAULT_OPTIONS$j, ...options }; - const nativeWaveShaperNode = createNativeWaveShaperNode(nativeContext, mergedOptions); - const isOffline = isNativeOfflineAudioContext(nativeContext); - const waveShaperNodeRenderer = (isOffline ? createWaveShaperNodeRenderer() : null); - // @todo Add a mechanism to only switch a WaveShaperNode to active while it is connected. - super(context, true, nativeWaveShaperNode, waveShaperNodeRenderer); - this._isCurveNullified = false; - this._nativeWaveShaperNode = nativeWaveShaperNode; - // @todo Determine a meaningful tail-time instead of just using one second. - setAudioNodeTailTime(this, 1); - } - get curve() { - if (this._isCurveNullified) { - return null; - } - return this._nativeWaveShaperNode.curve; - } - set curve(value) { - // Bug #103: Safari does not allow to set the curve to null. - if (value === null) { - this._isCurveNullified = true; - this._nativeWaveShaperNode.curve = new Float32Array([0, 0]); - } - else { - // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples. - // Bug #104: Chrome, Edge and Opera will throw an InvalidAccessError when the curve has less than two samples. - if (value.length < 2) { - throw createInvalidStateError(); - } - this._isCurveNullified = false; - this._nativeWaveShaperNode.curve = value; - } - } - get oversample() { - return this._nativeWaveShaperNode.oversample; - } - set oversample(value) { - this._nativeWaveShaperNode.oversample = value; - } - }; -}; - -const createWaveShaperNodeRendererFactory = (createNativeWaveShaperNode, getNativeAudioNode, renderInputsOfAudioNode) => { - return () => { - const renderedNativeWaveShaperNodes = new WeakMap(); - const createWaveShaperNode = async (proxy, nativeOfflineAudioContext) => { - let nativeWaveShaperNode = getNativeAudioNode(proxy); - // If the initially used nativeWaveShaperNode was not constructed on the same OfflineAudioContext it needs to be created again. - const nativeWaveShaperNodeIsOwnedByContext = isOwnedByContext(nativeWaveShaperNode, nativeOfflineAudioContext); - if (!nativeWaveShaperNodeIsOwnedByContext) { - const options = { - channelCount: nativeWaveShaperNode.channelCount, - channelCountMode: nativeWaveShaperNode.channelCountMode, - channelInterpretation: nativeWaveShaperNode.channelInterpretation, - curve: nativeWaveShaperNode.curve, - oversample: nativeWaveShaperNode.oversample - }; - nativeWaveShaperNode = createNativeWaveShaperNode(nativeOfflineAudioContext, options); - } - renderedNativeWaveShaperNodes.set(nativeOfflineAudioContext, nativeWaveShaperNode); - if (isNativeAudioNodeFaker(nativeWaveShaperNode)) { - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode.inputs[0]); - } - else { - await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode); - } - return nativeWaveShaperNode; - }; - return { - render(proxy, nativeOfflineAudioContext) { - const renderedNativeWaveShaperNode = renderedNativeWaveShaperNodes.get(nativeOfflineAudioContext); - if (renderedNativeWaveShaperNode !== undefined) { - return Promise.resolve(renderedNativeWaveShaperNode); - } - return createWaveShaperNode(proxy, nativeOfflineAudioContext); - } - }; - }; -}; - -const createWindow = () => (typeof window === 'undefined' ? null : window); - -const createWrapAudioBufferCopyChannelMethods = (convertNumberToUnsignedLong, createIndexSizeError) => { - return (audioBuffer) => { - audioBuffer.copyFromChannel = (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => { - const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber); - const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber); - if (channelNumber >= audioBuffer.numberOfChannels) { - throw createIndexSizeError(); - } - const audioBufferLength = audioBuffer.length; - const channelData = audioBuffer.getChannelData(channelNumber); - const destinationLength = destination.length; - for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < destinationLength; i += 1) { - destination[i] = channelData[i + bufferOffset]; - } - }; - audioBuffer.copyToChannel = (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => { - const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber); - const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber); - if (channelNumber >= audioBuffer.numberOfChannels) { - throw createIndexSizeError(); - } - const audioBufferLength = audioBuffer.length; - const channelData = audioBuffer.getChannelData(channelNumber); - const sourceLength = source.length; - for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < sourceLength; i += 1) { - channelData[i + bufferOffset] = source[i]; - } - }; - }; -}; - -const createWrapAudioBufferCopyChannelMethodsOutOfBounds = (convertNumberToUnsignedLong) => { - return (audioBuffer) => { - audioBuffer.copyFromChannel = ((copyFromChannel) => { - return (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => { - const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber); - const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber); - if (bufferOffset < audioBuffer.length) { - return copyFromChannel.call(audioBuffer, destination, channelNumber, bufferOffset); - } - }; - })(audioBuffer.copyFromChannel); - audioBuffer.copyToChannel = ((copyToChannel) => { - return (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => { - const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber); - const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber); - if (bufferOffset < audioBuffer.length) { - return copyToChannel.call(audioBuffer, source, channelNumber, bufferOffset); - } - }; - })(audioBuffer.copyToChannel); - }; -}; - -const createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer = (overwriteAccessors) => { - return (nativeAudioBufferSourceNode, nativeContext) => { - const nullifiedBuffer = nativeContext.createBuffer(1, 1, 44100); - if (nativeAudioBufferSourceNode.buffer === null) { - nativeAudioBufferSourceNode.buffer = nullifiedBuffer; - } - overwriteAccessors(nativeAudioBufferSourceNode, 'buffer', (get) => () => { - const value = get.call(nativeAudioBufferSourceNode); - return value === nullifiedBuffer ? null : value; - }, (set) => (value) => { - return set.call(nativeAudioBufferSourceNode, value === null ? nullifiedBuffer : value); - }); - }; -}; - -const createWrapChannelMergerNode = (createInvalidStateError, monitorConnections) => { - return (nativeContext, channelMergerNode) => { - // Bug #15: Safari does not return the default properties. - channelMergerNode.channelCount = 1; - channelMergerNode.channelCountMode = 'explicit'; - // Bug #16: Safari does not throw an error when setting a different channelCount or channelCountMode. - Object.defineProperty(channelMergerNode, 'channelCount', { - get: () => 1, - set: () => { - throw createInvalidStateError(); - } - }); - Object.defineProperty(channelMergerNode, 'channelCountMode', { - get: () => 'explicit', - set: () => { - throw createInvalidStateError(); - } - }); - // Bug #20: Safari requires a connection of any kind to treat the input signal correctly. - const audioBufferSourceNode = nativeContext.createBufferSource(); - const whenConnected = () => { - const length = channelMergerNode.numberOfInputs; - for (let i = 0; i < length; i += 1) { - audioBufferSourceNode.connect(channelMergerNode, 0, i); - } - }; - const whenDisconnected = () => audioBufferSourceNode.disconnect(channelMergerNode); - monitorConnections(channelMergerNode, whenConnected, whenDisconnected); - }; -}; - -const getFirstSample = (audioBuffer, buffer, channelNumber) => { - // Bug #5: Safari does not support copyFromChannel() and copyToChannel(). - if (audioBuffer.copyFromChannel === undefined) { - return audioBuffer.getChannelData(channelNumber)[0]; - } - audioBuffer.copyFromChannel(buffer, channelNumber); - return buffer[0]; -}; - -const isDCCurve = (curve) => { - if (curve === null) { - return false; - } - const length = curve.length; - if (length % 2 !== 0) { - return curve[Math.floor(length / 2)] !== 0; - } - return curve[length / 2 - 1] + curve[length / 2] !== 0; -}; - -const overwriteAccessors = (object, property, createGetter, createSetter) => { - let prototype = object; - while (!prototype.hasOwnProperty(property)) { - prototype = Object.getPrototypeOf(prototype); - } - const { get, set } = Object.getOwnPropertyDescriptor(prototype, property); - Object.defineProperty(object, property, { get: createGetter(get), set: createSetter(set) }); -}; - -const sanitizeAudioWorkletNodeOptions = (options) => { - return { - ...options, - outputChannelCount: options.outputChannelCount !== undefined - ? options.outputChannelCount - : options.numberOfInputs === 1 && options.numberOfOutputs === 1 - ? /* - * Bug #61: This should be the computedNumberOfChannels, but unfortunately that is almost impossible to fake. That's why - * the channelCountMode is required to be 'explicit' as long as there is not a native implementation in every browser. That - * makes sure the computedNumberOfChannels is equivilant to the channelCount which makes it much easier to compute. - */ - [options.channelCount] - : Array.from({ length: options.numberOfOutputs }, () => 1) - }; -}; - -const sanitizeChannelSplitterOptions = (options) => { - return { ...options, channelCount: options.numberOfOutputs }; -}; - -const sanitizePeriodicWaveOptions = (options) => { - const { imag, real } = options; - if (imag === undefined) { - if (real === undefined) { - return { ...options, imag: [0, 0], real: [0, 0] }; - } - return { ...options, imag: Array.from(real, () => 0), real }; - } - if (real === undefined) { - return { ...options, imag, real: Array.from(imag, () => 0) }; - } - return { ...options, imag, real }; -}; - -const setValueAtTimeUntilPossible = (audioParam, value, startTime) => { - try { - audioParam.setValueAtTime(value, startTime); - } - catch (err) { - if (err.code !== 9) { - throw err; - } - setValueAtTimeUntilPossible(audioParam, value, startTime + 1e-7); - } -}; - -const testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport = (nativeContext) => { - const nativeAudioBufferSourceNode = nativeContext.createBufferSource(); - nativeAudioBufferSourceNode.start(); - try { - nativeAudioBufferSourceNode.start(); - } - catch { - return true; - } - return false; -}; - -const testAudioBufferSourceNodeStartMethodOffsetClampingSupport = (nativeContext) => { - const nativeAudioBufferSourceNode = nativeContext.createBufferSource(); - const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100); - nativeAudioBufferSourceNode.buffer = nativeAudioBuffer; - try { - nativeAudioBufferSourceNode.start(0, 1); - } - catch { - return false; - } - return true; -}; - -const testAudioBufferSourceNodeStopMethodNullifiedBufferSupport = (nativeContext) => { - const nativeAudioBufferSourceNode = nativeContext.createBufferSource(); - nativeAudioBufferSourceNode.start(); - try { - nativeAudioBufferSourceNode.stop(); - } - catch { - return false; - } - return true; -}; - -const testAudioScheduledSourceNodeStartMethodNegativeParametersSupport = (nativeContext) => { - const nativeAudioBufferSourceNode = nativeContext.createOscillator(); - try { - nativeAudioBufferSourceNode.start(-1); - } - catch (err) { - return err instanceof RangeError; - } - return false; -}; - -const testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport = (nativeContext) => { - const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100); - const nativeAudioBufferSourceNode = nativeContext.createBufferSource(); - nativeAudioBufferSourceNode.buffer = nativeAudioBuffer; - nativeAudioBufferSourceNode.start(); - nativeAudioBufferSourceNode.stop(); - try { - nativeAudioBufferSourceNode.stop(); - return true; - } - catch { - return false; - } -}; - -const testAudioScheduledSourceNodeStopMethodNegativeParametersSupport = (nativeContext) => { - const nativeAudioBufferSourceNode = nativeContext.createOscillator(); - try { - nativeAudioBufferSourceNode.stop(-1); - } - catch (err) { - return err instanceof RangeError; - } - return false; -}; - -const testAudioWorkletNodeOptionsClonability = (audioWorkletNodeOptions) => { - const { port1, port2 } = new MessageChannel(); - try { - // This will throw an error if the audioWorkletNodeOptions are not clonable. - port1.postMessage(audioWorkletNodeOptions); - } - finally { - port1.close(); - port2.close(); - } -}; - -/* - * Bug #122: Edge up to version v18 did not allow to construct a DOMException'. It also had a couple more bugs but since this is easy to - * test it's used here as a placeholder. - * - * Bug #27: Edge up to version v18 did reject an invalid arrayBuffer passed to decodeAudioData() with a DOMException. - * - * Bug #50: Edge up to version v18 did not allow to create AudioNodes on a closed context. - * - * Bug #57: Edge up to version v18 did not throw an error when assigning the type of an OscillatorNode to 'custom'. - * - * Bug #63: Edge up to version v18 did not expose the mediaElement property of a MediaElementAudioSourceNode. - * - * Bug #64: Edge up to version v18 did not support the MediaStreamAudioDestinationNode. - * - * Bug #71: Edge up to version v18 did not allow to set the buffer of an AudioBufferSourceNode to null. - * - * Bug #93: Edge up to version v18 did set the sampleRate of an AudioContext to zero when it was closed. - * - * Bug #101: Edge up to version v18 refused to execute decodeAudioData() on a closed context. - * - * Bug #106: Edge up to version v18 did not expose the maxValue and minValue properties of the pan AudioParam of a StereoPannerNode. - * - * Bug #110: Edge up to version v18 did not expose the maxValue and minValue properties of the attack, knee, ratio, release and threshold AudioParams of a DynamicsCompressorNode. - * - * Bug #123: Edge up to version v18 did not support HRTF as the panningModel for a PannerNode. - * - * Bug #145: Edge up to version v18 did throw an IndexSizeError when an OfflineAudioContext was created with a sampleRate of zero. - * - * Bug #161: Edge up to version v18 did not expose the maxValue and minValue properties of the delayTime AudioParam of a DelayNode. - */ -const testDomExceptionConstructorSupport = () => { - try { - new DOMException(); // tslint:disable-line:no-unused-expression - } - catch { - return false; - } - return true; -}; - -// Safari at version 11 did not support transferables. -const testTransferablesSupport = () => new Promise((resolve) => { - const arrayBuffer = new ArrayBuffer(0); - const { port1, port2 } = new MessageChannel(); - port1.onmessage = ({ data }) => resolve(data !== null); - port2.postMessage(arrayBuffer, [arrayBuffer]); -}); - -const wrapAudioBufferSourceNodeStartMethodOffsetClamping = (nativeAudioBufferSourceNode) => { - nativeAudioBufferSourceNode.start = ((start) => { - return (when = 0, offset = 0, duration) => { - const buffer = nativeAudioBufferSourceNode.buffer; - // Bug #154: Safari does not clamp the offset if it is equal to or greater than the duration of the buffer. - const clampedOffset = buffer === null ? offset : Math.min(buffer.duration, offset); - // Bug #155: Safari does not handle the offset correctly if it would cause the buffer to be not be played at all. - if (buffer !== null && clampedOffset > buffer.duration - 0.5 / nativeAudioBufferSourceNode.context.sampleRate) { - start.call(nativeAudioBufferSourceNode, when, 0, 0); - } - else { - start.call(nativeAudioBufferSourceNode, when, clampedOffset, duration); - } - }; - })(nativeAudioBufferSourceNode.start); -}; - -const wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls = (nativeAudioScheduledSourceNode, nativeContext) => { - const nativeGainNode = nativeContext.createGain(); - nativeAudioScheduledSourceNode.connect(nativeGainNode); - const disconnectGainNode = ((disconnect) => { - return () => { - // @todo TypeScript cannot infer the overloaded signature with 1 argument yet. - disconnect.call(nativeAudioScheduledSourceNode, nativeGainNode); - nativeAudioScheduledSourceNode.removeEventListener('ended', disconnectGainNode); - }; - })(nativeAudioScheduledSourceNode.disconnect); - nativeAudioScheduledSourceNode.addEventListener('ended', disconnectGainNode); - interceptConnections(nativeAudioScheduledSourceNode, nativeGainNode); - nativeAudioScheduledSourceNode.stop = ((stop) => { - let isStopped = false; - return (when = 0) => { - if (isStopped) { - try { - stop.call(nativeAudioScheduledSourceNode, when); - } - catch { - nativeGainNode.gain.setValueAtTime(0, when); - } - } - else { - stop.call(nativeAudioScheduledSourceNode, when); - isStopped = true; - } - }; - })(nativeAudioScheduledSourceNode.stop); -}; - -const wrapEventListener = (target, eventListener) => { - return (event) => { - const descriptor = { value: target }; - Object.defineProperties(event, { - currentTarget: descriptor, - target: descriptor - }); - if (typeof eventListener === 'function') { - return eventListener.call(target, event); - } - return eventListener.handleEvent.call(target, event); - }; -}; - -const addActiveInputConnectionToAudioNode = createAddActiveInputConnectionToAudioNode(insertElementInSet); -const addPassiveInputConnectionToAudioNode = createAddPassiveInputConnectionToAudioNode(insertElementInSet); -const deleteActiveInputConnectionToAudioNode = createDeleteActiveInputConnectionToAudioNode(pickElementFromSet); -const audioNodeTailTimeStore = new WeakMap(); -const getAudioNodeTailTime = createGetAudioNodeTailTime(audioNodeTailTimeStore); -const cacheTestResult = createCacheTestResult(new Map(), new WeakMap()); -const window$1 = createWindow(); -const createNativeAnalyserNode = createNativeAnalyserNodeFactory(cacheTestResult, createIndexSizeError); -const getAudioNodeRenderer = createGetAudioNodeRenderer(getAudioNodeConnections); -const renderInputsOfAudioNode = createRenderInputsOfAudioNode(getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle); -const createAnalyserNodeRenderer = createAnalyserNodeRendererFactory(createNativeAnalyserNode, getNativeAudioNode, renderInputsOfAudioNode); -const getNativeContext = createGetNativeContext(CONTEXT_STORE); -const nativeOfflineAudioContextConstructor = createNativeOfflineAudioContextConstructor(window$1); -const isNativeOfflineAudioContext = createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor); -const audioParamAudioNodeStore = new WeakMap(); -const eventTargetConstructor = createEventTargetConstructor(wrapEventListener); -const nativeAudioContextConstructor = createNativeAudioContextConstructor(window$1); -const isNativeAudioContext = createIsNativeAudioContext(nativeAudioContextConstructor); -const isNativeAudioNode$1 = createIsNativeAudioNode(window$1); -const isNativeAudioParam = createIsNativeAudioParam(window$1); -const nativeAudioWorkletNodeConstructor = createNativeAudioWorkletNodeConstructor(window$1); -const audioNodeConstructor = createAudioNodeConstructor(createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE), createAddConnectionToAudioNode(addActiveInputConnectionToAudioNode, addPassiveInputConnectionToAudioNode, connectNativeAudioNodeToNativeAudioNode, deleteActiveInputConnectionToAudioNode, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getAudioNodeTailTime, getEventListenersOfAudioNode, getNativeAudioNode, insertElementInSet, isActiveAudioNode, isPartOfACycle, isPassiveAudioNode), cacheTestResult, createIncrementCycleCounterFactory(CYCLE_COUNTERS, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, isActiveAudioNode), createIndexSizeError, createInvalidAccessError, createNotSupportedError, createDecrementCycleCounter(connectNativeAudioNodeToNativeAudioNode, CYCLE_COUNTERS, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, getNativeContext, isActiveAudioNode, isNativeOfflineAudioContext), createDetectCycles(audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey), eventTargetConstructor, getNativeContext, isNativeAudioContext, isNativeAudioNode$1, isNativeAudioParam, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor); -const analyserNodeConstructor = createAnalyserNodeConstructor(audioNodeConstructor, createAnalyserNodeRenderer, createIndexSizeError, createNativeAnalyserNode, getNativeContext, isNativeOfflineAudioContext); -const audioBufferStore = new WeakSet(); -const nativeAudioBufferConstructor = createNativeAudioBufferConstructor(window$1); -const convertNumberToUnsignedLong = createConvertNumberToUnsignedLong(new Uint32Array(1)); -const wrapAudioBufferCopyChannelMethods = createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong, createIndexSizeError); -const wrapAudioBufferCopyChannelMethodsOutOfBounds = createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong); -const audioBufferConstructor = createAudioBufferConstructor(audioBufferStore, cacheTestResult, createNotSupportedError, nativeAudioBufferConstructor, nativeOfflineAudioContextConstructor, createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor), wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds); -const addSilentConnection = createAddSilentConnection(createNativeGainNode); -const renderInputsOfAudioParam = createRenderInputsOfAudioParam(getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle); -const connectAudioParam = createConnectAudioParam(renderInputsOfAudioParam); -const createNativeAudioBufferSourceNode = createNativeAudioBufferSourceNodeFactory(addSilentConnection, cacheTestResult, testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, testAudioBufferSourceNodeStartMethodOffsetClampingSupport, testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioBufferSourceNodeStartMethodOffsetClamping, createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors), wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls); -const renderAutomation = createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections), renderInputsOfAudioParam); -const createAudioBufferSourceNodeRenderer = createAudioBufferSourceNodeRendererFactory(connectAudioParam, createNativeAudioBufferSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); -const createAudioParam = createAudioParamFactory(createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE), audioParamAudioNodeStore, AUDIO_PARAM_STORE, createAudioParamRenderer, createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent, nativeAudioContextConstructor, setValueAtTimeUntilPossible); -const audioBufferSourceNodeConstructor = createAudioBufferSourceNodeConstructor(audioNodeConstructor, createAudioBufferSourceNodeRenderer, createAudioParam, createInvalidStateError, createNativeAudioBufferSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener); -const audioDestinationNodeConstructor = createAudioDestinationNodeConstructor(audioNodeConstructor, createAudioDestinationNodeRenderer, createIndexSizeError, createInvalidStateError, createNativeAudioDestinationNodeFactory(createNativeGainNode, overwriteAccessors), getNativeContext, isNativeOfflineAudioContext, renderInputsOfAudioNode); -const createBiquadFilterNodeRenderer = createBiquadFilterNodeRendererFactory(connectAudioParam, createNativeBiquadFilterNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); -const setAudioNodeTailTime = createSetAudioNodeTailTime(audioNodeTailTimeStore); -const biquadFilterNodeConstructor = createBiquadFilterNodeConstructor(audioNodeConstructor, createAudioParam, createBiquadFilterNodeRenderer, createInvalidAccessError, createNativeBiquadFilterNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); -const monitorConnections = createMonitorConnections(insertElementInSet, isNativeAudioNode$1); -const wrapChannelMergerNode = createWrapChannelMergerNode(createInvalidStateError, monitorConnections); -const createNativeChannelMergerNode = createNativeChannelMergerNodeFactory(nativeAudioContextConstructor, wrapChannelMergerNode); -const createChannelMergerNodeRenderer = createChannelMergerNodeRendererFactory(createNativeChannelMergerNode, getNativeAudioNode, renderInputsOfAudioNode); -const channelMergerNodeConstructor = createChannelMergerNodeConstructor(audioNodeConstructor, createChannelMergerNodeRenderer, createNativeChannelMergerNode, getNativeContext, isNativeOfflineAudioContext); -const createChannelSplitterNodeRenderer = createChannelSplitterNodeRendererFactory(createNativeChannelSplitterNode, getNativeAudioNode, renderInputsOfAudioNode); -const channelSplitterNodeConstructor = createChannelSplitterNodeConstructor(audioNodeConstructor, createChannelSplitterNodeRenderer, createNativeChannelSplitterNode, getNativeContext, isNativeOfflineAudioContext, sanitizeChannelSplitterOptions); -const createNativeConstantSourceNodeFaker = createNativeConstantSourceNodeFakerFactory(addSilentConnection, createNativeAudioBufferSourceNode, createNativeGainNode, monitorConnections); -const createNativeConstantSourceNode = createNativeConstantSourceNodeFactory(addSilentConnection, cacheTestResult, createNativeConstantSourceNodeFaker, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport); -const createConstantSourceNodeRenderer = createConstantSourceNodeRendererFactory(connectAudioParam, createNativeConstantSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); -const constantSourceNodeConstructor = createConstantSourceNodeConstructor(audioNodeConstructor, createAudioParam, createConstantSourceNodeRenderer, createNativeConstantSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener); -const createNativeConvolverNode = createNativeConvolverNodeFactory(createNotSupportedError, overwriteAccessors); -const createConvolverNodeRenderer = createConvolverNodeRendererFactory(createNativeConvolverNode, getNativeAudioNode, renderInputsOfAudioNode); -const convolverNodeConstructor = createConvolverNodeConstructor(audioNodeConstructor, createConvolverNodeRenderer, createNativeConvolverNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); -const createDelayNodeRenderer = createDelayNodeRendererFactory(connectAudioParam, createNativeDelayNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); -const delayNodeConstructor = createDelayNodeConstructor(audioNodeConstructor, createAudioParam, createDelayNodeRenderer, createNativeDelayNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); -const createNativeDynamicsCompressorNode = createNativeDynamicsCompressorNodeFactory(createNotSupportedError); -const createDynamicsCompressorNodeRenderer = createDynamicsCompressorNodeRendererFactory(connectAudioParam, createNativeDynamicsCompressorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); -const dynamicsCompressorNodeConstructor = createDynamicsCompressorNodeConstructor(audioNodeConstructor, createAudioParam, createDynamicsCompressorNodeRenderer, createNativeDynamicsCompressorNode, createNotSupportedError, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); -const createGainNodeRenderer = createGainNodeRendererFactory(connectAudioParam, createNativeGainNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); -const gainNodeConstructor = createGainNodeConstructor(audioNodeConstructor, createAudioParam, createGainNodeRenderer, createNativeGainNode, getNativeContext, isNativeOfflineAudioContext); -const createNativeIIRFilterNodeFaker = createNativeIIRFilterNodeFakerFactory(createInvalidAccessError, createInvalidStateError, createNativeScriptProcessorNode, createNotSupportedError); -const renderNativeOfflineAudioContext = createRenderNativeOfflineAudioContext(cacheTestResult, createNativeGainNode, createNativeScriptProcessorNode, createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode, nativeOfflineAudioContextConstructor)); -const createIIRFilterNodeRenderer = createIIRFilterNodeRendererFactory(createNativeAudioBufferSourceNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderInputsOfAudioNode, renderNativeOfflineAudioContext); -const createNativeIIRFilterNode = createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker); -const iIRFilterNodeConstructor = createIIRFilterNodeConstructor(audioNodeConstructor, createNativeIIRFilterNode, createIIRFilterNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); -const createAudioListener = createAudioListenerFactory(createAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeScriptProcessorNode, createNotSupportedError, getFirstSample, isNativeOfflineAudioContext, overwriteAccessors); -const unrenderedAudioWorkletNodeStore = new WeakMap(); -const minimalBaseAudioContextConstructor = createMinimalBaseAudioContextConstructor(audioDestinationNodeConstructor, createAudioListener, eventTargetConstructor, isNativeOfflineAudioContext, unrenderedAudioWorkletNodeStore, wrapEventListener); -const createNativeOscillatorNode = createNativeOscillatorNodeFactory(addSilentConnection, cacheTestResult, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls); -const createOscillatorNodeRenderer = createOscillatorNodeRendererFactory(connectAudioParam, createNativeOscillatorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); -const oscillatorNodeConstructor = createOscillatorNodeConstructor(audioNodeConstructor, createAudioParam, createNativeOscillatorNode, createOscillatorNodeRenderer, getNativeContext, isNativeOfflineAudioContext, wrapEventListener); -const createConnectedNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode); -const createNativeWaveShaperNodeFaker = createNativeWaveShaperNodeFakerFactory(createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeGainNode, isDCCurve, monitorConnections); -const createNativeWaveShaperNode = createNativeWaveShaperNodeFactory(createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeWaveShaperNodeFaker, isDCCurve, monitorConnections, nativeAudioContextConstructor, overwriteAccessors); -const createNativePannerNodeFaker = createNativePannerNodeFakerFactory(connectNativeAudioNodeToNativeAudioNode, createInvalidStateError, createNativeChannelMergerNode, createNativeGainNode, createNativeScriptProcessorNode, createNativeWaveShaperNode, createNotSupportedError, disconnectNativeAudioNodeFromNativeAudioNode, getFirstSample, monitorConnections); -const createNativePannerNode = createNativePannerNodeFactory(createNativePannerNodeFaker); -const createPannerNodeRenderer = createPannerNodeRendererFactory(connectAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeGainNode, createNativePannerNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext); -const pannerNodeConstructor = createPannerNodeConstructor(audioNodeConstructor, createAudioParam, createNativePannerNode, createPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); -const createNativePeriodicWave = createNativePeriodicWaveFactory(createIndexSizeError); -const periodicWaveConstructor = createPeriodicWaveConstructor(createNativePeriodicWave, getNativeContext, new WeakSet(), sanitizePeriodicWaveOptions); -const nativeStereoPannerNodeFakerFactory = createNativeStereoPannerNodeFakerFactory(createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeGainNode, createNativeWaveShaperNode, createNotSupportedError, monitorConnections); -const createNativeStereoPannerNode = createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory, createNotSupportedError); -const createStereoPannerNodeRenderer = createStereoPannerNodeRendererFactory(connectAudioParam, createNativeStereoPannerNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode); -const stereoPannerNodeConstructor = createStereoPannerNodeConstructor(audioNodeConstructor, createAudioParam, createNativeStereoPannerNode, createStereoPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext); -const createWaveShaperNodeRenderer = createWaveShaperNodeRendererFactory(createNativeWaveShaperNode, getNativeAudioNode, renderInputsOfAudioNode); -const waveShaperNodeConstructor = createWaveShaperNodeConstructor(audioNodeConstructor, createInvalidStateError, createNativeWaveShaperNode, createWaveShaperNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime); -const isSecureContext = createIsSecureContext(window$1); -const exposeCurrentFrameAndCurrentTime = createExposeCurrentFrameAndCurrentTime(window$1); -const backupOfflineAudioContextStore = new WeakMap(); -const getOrCreateBackupOfflineAudioContext = createGetOrCreateBackupOfflineAudioContext(backupOfflineAudioContextStore, nativeOfflineAudioContextConstructor); -// The addAudioWorkletModule() function is only available in a SecureContext. -const addAudioWorkletModule = isSecureContext - ? createAddAudioWorkletModule(cacheTestResult, createNotSupportedError, createEvaluateSource(window$1), exposeCurrentFrameAndCurrentTime, createFetchSource(createAbortError), getNativeContext, getOrCreateBackupOfflineAudioContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, new WeakMap(), new WeakMap(), createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor), - // @todo window is guaranteed to be defined because isSecureContext checks that as well. - window$1) - : undefined; -const isNativeContext = createIsNativeContext(isNativeAudioContext, isNativeOfflineAudioContext); -const decodeAudioData = createDecodeAudioData(audioBufferStore, cacheTestResult, createDataCloneError, createEncodingError, new WeakSet(), getNativeContext, isNativeContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, testPromiseSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds); -const baseAudioContextConstructor = createBaseAudioContextConstructor(addAudioWorkletModule, analyserNodeConstructor, audioBufferConstructor, audioBufferSourceNodeConstructor, biquadFilterNodeConstructor, channelMergerNodeConstructor, channelSplitterNodeConstructor, constantSourceNodeConstructor, convolverNodeConstructor, decodeAudioData, delayNodeConstructor, dynamicsCompressorNodeConstructor, gainNodeConstructor, iIRFilterNodeConstructor, minimalBaseAudioContextConstructor, oscillatorNodeConstructor, pannerNodeConstructor, periodicWaveConstructor, stereoPannerNodeConstructor, waveShaperNodeConstructor); -const mediaElementAudioSourceNodeConstructor = createMediaElementAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaElementAudioSourceNode, getNativeContext, isNativeOfflineAudioContext); -const mediaStreamAudioDestinationNodeConstructor = createMediaStreamAudioDestinationNodeConstructor(audioNodeConstructor, createNativeMediaStreamAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext); -const mediaStreamAudioSourceNodeConstructor = createMediaStreamAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamAudioSourceNode, getNativeContext, isNativeOfflineAudioContext); -const createNativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNodeFactory(createInvalidStateError, isNativeOfflineAudioContext); -const mediaStreamTrackAudioSourceNodeConstructor = createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext); -const audioContextConstructor = createAudioContextConstructor(baseAudioContextConstructor, createInvalidStateError, createNotSupportedError, createUnknownError, mediaElementAudioSourceNodeConstructor, mediaStreamAudioDestinationNodeConstructor, mediaStreamAudioSourceNodeConstructor, mediaStreamTrackAudioSourceNodeConstructor, nativeAudioContextConstructor); -const getUnrenderedAudioWorkletNodes = createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore); -const addUnrenderedAudioWorkletNode = createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes); -const connectMultipleOutputs = createConnectMultipleOutputs(createIndexSizeError); -const deleteUnrenderedAudioWorkletNode = createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes); -const disconnectMultipleOutputs = createDisconnectMultipleOutputs(createIndexSizeError); -const activeAudioWorkletNodeInputsStore = new WeakMap(); -const getActiveAudioWorkletNodeInputs = createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore, getValueForKey); -const createNativeAudioWorkletNodeFaker = createNativeAudioWorkletNodeFakerFactory(connectMultipleOutputs, createIndexSizeError, createInvalidStateError, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, createNativeScriptProcessorNode, createNotSupportedError, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getActiveAudioWorkletNodeInputs, monitorConnections); -const createNativeAudioWorkletNode = createNativeAudioWorkletNodeFactory(createInvalidStateError, createNativeAudioWorkletNodeFaker, createNativeGainNode, createNotSupportedError, monitorConnections); -const createAudioWorkletNodeRenderer = createAudioWorkletNodeRendererFactory(connectAudioParam, connectMultipleOutputs, createNativeAudioBufferSourceNode, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, deleteUnrenderedAudioWorkletNode, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getNativeAudioNode, nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext); -const getBackupOfflineAudioContext = createGetBackupOfflineAudioContext(backupOfflineAudioContextStore); -const setActiveAudioWorkletNodeInputs = createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore); -// The AudioWorkletNode constructor is only available in a SecureContext. -const audioWorkletNodeConstructor = isSecureContext - ? createAudioWorkletNodeConstructor(addUnrenderedAudioWorkletNode, audioNodeConstructor, createAudioParam, createAudioWorkletNodeRenderer, createNativeAudioWorkletNode, getAudioNodeConnections, getBackupOfflineAudioContext, getNativeContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, sanitizeAudioWorkletNodeOptions, setActiveAudioWorkletNodeInputs, testAudioWorkletNodeOptionsClonability, wrapEventListener) - : undefined; -const createNativeOfflineAudioContext = createCreateNativeOfflineAudioContext(createNotSupportedError, nativeOfflineAudioContextConstructor); -const startRendering = createStartRendering(audioBufferStore, cacheTestResult, getAudioNodeRenderer, getUnrenderedAudioWorkletNodes, renderNativeOfflineAudioContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds); -const offlineAudioContextConstructor = createOfflineAudioContextConstructor(baseAudioContextConstructor, cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, startRendering); -const isAnyAudioContext = createIsAnyAudioContext(CONTEXT_STORE, isNativeAudioContext); -const isAnyAudioNode = createIsAnyAudioNode(AUDIO_NODE_STORE, isNativeAudioNode$1); -const isAnyAudioParam = createIsAnyAudioParam(AUDIO_PARAM_STORE, isNativeAudioParam); -const isAnyOfflineAudioContext = createIsAnyOfflineAudioContext(CONTEXT_STORE, isNativeOfflineAudioContext); -const isSupported = () => createIsSupportedPromise(cacheTestResult, createTestAudioBufferCopyChannelMethodsSubarraySupport(nativeOfflineAudioContextConstructor), createTestAudioContextCloseMethodSupport(nativeAudioContextConstructor), createTestAudioContextDecodeAudioDataMethodTypeErrorSupport(nativeOfflineAudioContextConstructor), createTestAudioContextOptionsSupport(nativeAudioContextConstructor), createTestAudioNodeConnectMethodSupport(nativeOfflineAudioContextConstructor), createTestAudioWorkletProcessorNoOutputsSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor), createTestChannelMergerNodeChannelCountSupport(nativeOfflineAudioContextConstructor), createTestConstantSourceNodeAccurateSchedulingSupport(nativeOfflineAudioContextConstructor), createTestConvolverNodeBufferReassignabilitySupport(nativeOfflineAudioContextConstructor), createTestConvolverNodeChannelCountSupport(nativeOfflineAudioContextConstructor), testDomExceptionConstructorSupport, createTestIsSecureContextSupport(window$1), createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport(nativeAudioContextConstructor), createTestStereoPannerNodeDefaultValueSupport(nativeOfflineAudioContextConstructor), testTransferablesSupport); - -/** - * Assert that the statement is true, otherwise invoke the error. - * @param statement - * @param error The message which is passed into an Error - */ -function assert(statement, error) { - if (!statement) { - throw new Error(error); - } -} -/** - * Make sure that the given value is within the range - */ -function assertRange(value, gte, lte = Infinity) { - if (!(gte <= value && value <= lte)) { - throw new RangeError(`Value must be within [${gte}, ${lte}], got: ${value}`); - } -} -/** - * Make sure that the given value is within the range - */ -function assertContextRunning(context) { - // add a warning if the context is not started - if (!context.isOffline && context.state !== "running") { - warn("The AudioContext is \"suspended\". Invoke Tone.start() from a user action to start the audio."); - } -} -/** - * The default logger is the console - */ -let defaultLogger = console; -/** - * Set the logging interface - */ -function setLogger(logger) { - defaultLogger = logger; -} -/** - * Log anything - */ -function log(...args) { - defaultLogger.log(...args); -} -/** - * Warn anything - */ -function warn(...args) { - defaultLogger.warn(...args); -} - -var Debug = /*#__PURE__*/Object.freeze({ - __proto__: null, - assert: assert, - assertRange: assertRange, - assertContextRunning: assertContextRunning, - setLogger: setLogger, - log: log, - warn: warn -}); - -/** - * Test if the arg is undefined - */ -function isUndef(arg) { - return typeof arg === "undefined"; -} -/** - * Test if the arg is not undefined - */ -function isDefined(arg) { - return !isUndef(arg); -} -/** - * Test if the arg is a function - */ -function isFunction(arg) { - return typeof arg === "function"; -} -/** - * Test if the argument is a number. - */ -function isNumber(arg) { - return (typeof arg === "number"); -} -/** - * Test if the given argument is an object literal (i.e. `{}`); - */ -function isObject(arg) { - return (Object.prototype.toString.call(arg) === "[object Object]" && arg.constructor === Object); -} -/** - * Test if the argument is a boolean. - */ -function isBoolean(arg) { - return (typeof arg === "boolean"); -} -/** - * Test if the argument is an Array - */ -function isArray(arg) { - return (Array.isArray(arg)); -} -/** - * Test if the argument is a string. - */ -function isString(arg) { - return (typeof arg === "string"); -} -/** - * Test if the argument is in the form of a note in scientific pitch notation. - * e.g. "C4" - */ -function isNote(arg) { - return isString(arg) && /^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(arg); -} - -/** - * Create a new AudioContext - */ -function createAudioContext(options) { - return new audioContextConstructor(options); -} -/** - * Create a new OfflineAudioContext - */ -function createOfflineAudioContext(channels, length, sampleRate) { - return new offlineAudioContextConstructor(channels, length, sampleRate); -} -/** - * A reference to the window object - * @hidden - */ -const theWindow = typeof self === "object" ? self : null; -/** - * If the browser has a window object which has an AudioContext - * @hidden - */ -const hasAudioContext = theWindow && - (theWindow.hasOwnProperty("AudioContext") || theWindow.hasOwnProperty("webkitAudioContext")); -function createAudioWorkletNode(context, name, options) { - assert(isDefined(audioWorkletNodeConstructor), "This node only works in a secure context (https or localhost)"); - // @ts-ignore - return new audioWorkletNodeConstructor(context, name, options); -} - -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -/** - * A class which provides a reliable callback using either - * a Web Worker, or if that isn't supported, falls back to setTimeout. - */ -class Ticker { - constructor(callback, type, updateInterval) { - this._callback = callback; - this._type = type; - this._updateInterval = updateInterval; - // create the clock source for the first time - this._createClock(); - } - /** - * Generate a web worker - */ - _createWorker() { - const blob = new Blob([ - /* javascript */ ` - // the initial timeout time - let timeoutTime = ${(this._updateInterval * 1000).toFixed(1)}; - // onmessage callback - self.onmessage = function(msg){ - timeoutTime = parseInt(msg.data); - }; - // the tick function which posts a message - // and schedules a new tick - function tick(){ - setTimeout(tick, timeoutTime); - self.postMessage('tick'); - } - // call tick initially - tick(); - ` - ], { type: "text/javascript" }); - const blobUrl = URL.createObjectURL(blob); - const worker = new Worker(blobUrl); - worker.onmessage = this._callback.bind(this); - this._worker = worker; - } - /** - * Create a timeout loop - */ - _createTimeout() { - this._timeout = setTimeout(() => { - this._createTimeout(); - this._callback(); - }, this._updateInterval * 1000); - } - /** - * Create the clock source. - */ - _createClock() { - if (this._type === "worker") { - try { - this._createWorker(); - } - catch (e) { - // workers not supported, fallback to timeout - this._type = "timeout"; - this._createClock(); - } - } - else if (this._type === "timeout") { - this._createTimeout(); - } - } - /** - * Clean up the current clock source - */ - _disposeClock() { - if (this._timeout) { - clearTimeout(this._timeout); - this._timeout = 0; - } - if (this._worker) { - this._worker.terminate(); - this._worker.onmessage = null; - } - } - /** - * The rate in seconds the ticker will update - */ - get updateInterval() { - return this._updateInterval; - } - set updateInterval(interval) { - this._updateInterval = Math.max(interval, 128 / 44100); - if (this._type === "worker") { - this._worker.postMessage(Math.max(interval * 1000, 1)); - } - } - /** - * The type of the ticker, either a worker or a timeout - */ - get type() { - return this._type; - } - set type(type) { - this._disposeClock(); - this._type = type; - this._createClock(); - } - /** - * Clean up - */ - dispose() { - this._disposeClock(); - } -} - -/** - * Test if the given value is an instanceof AudioParam - */ -function isAudioParam(arg) { - return isAnyAudioParam(arg); -} -/** - * Test if the given value is an instanceof AudioNode - */ -function isAudioNode$1(arg) { - return isAnyAudioNode(arg); -} -/** - * Test if the arg is instanceof an OfflineAudioContext - */ -function isOfflineAudioContext(arg) { - return isAnyOfflineAudioContext(arg); -} -/** - * Test if the arg is an instanceof AudioContext - */ -function isAudioContext(arg) { - return isAnyAudioContext(arg); -} -/** - * Test if the arg is instanceof an AudioBuffer - */ -function isAudioBuffer(arg) { - return arg instanceof AudioBuffer; -} - -/** - * Some objects should not be merged - */ -function noCopy(key, arg) { - return key === "value" || isAudioParam(arg) || isAudioNode$1(arg) || isAudioBuffer(arg); -} -function deepMerge(target, ...sources) { - if (!sources.length) { - return target; - } - const source = sources.shift(); - if (isObject(target) && isObject(source)) { - for (const key in source) { - if (noCopy(key, source[key])) { - target[key] = source[key]; - } - else if (isObject(source[key])) { - if (!target[key]) { - Object.assign(target, { [key]: {} }); - } - deepMerge(target[key], source[key]); - } - else { - Object.assign(target, { [key]: source[key] }); - } - } - } - // @ts-ignore - return deepMerge(target, ...sources); -} -/** - * Returns true if the two arrays have the same value for each of the elements - */ -function deepEquals(arrayA, arrayB) { - return arrayA.length === arrayB.length && arrayA.every((element, index) => arrayB[index] === element); -} -/** - * Convert an args array into an object. - */ -function optionsFromArguments(defaults, argsArray, keys = [], objKey) { - const opts = {}; - const args = Array.from(argsArray); - // if the first argument is an object and has an object key - if (isObject(args[0]) && objKey && !Reflect.has(args[0], objKey)) { - // if it's not part of the defaults - const partOfDefaults = Object.keys(args[0]).some(key => Reflect.has(defaults, key)); - if (!partOfDefaults) { - // merge that key - deepMerge(opts, { [objKey]: args[0] }); - // remove the obj key from the keys - keys.splice(keys.indexOf(objKey), 1); - // shift the first argument off - args.shift(); - } - } - if (args.length === 1 && isObject(args[0])) { - deepMerge(opts, args[0]); - } - else { - for (let i = 0; i < keys.length; i++) { - if (isDefined(args[i])) { - opts[keys[i]] = args[i]; - } - } - } - return deepMerge(defaults, opts); -} -/** - * Return this instances default values by calling Constructor.getDefaults() - */ -function getDefaultsFromInstance(instance) { - return instance.constructor.getDefaults(); -} -/** - * Returns the fallback if the given object is undefined. - * Take an array of arguments and return a formatted options object. - */ -function defaultArg(given, fallback) { - if (isUndef(given)) { - return fallback; - } - else { - return given; - } -} -/** - * Remove all of the properties belonging to omit from obj. - */ -function omitFromObject(obj, omit) { - omit.forEach(prop => { - if (Reflect.has(obj, prop)) { - delete obj[prop]; - } - }); - return obj; -} - -/** - * Tone.js - * @author Yotam Mann - * @license http://opensource.org/licenses/MIT MIT License - * @copyright 2014-2019 Yotam Mann - */ -/** - * @class Tone is the base class of all other classes. - * @category Core - * @constructor - */ -class Tone { - constructor() { - //------------------------------------- - // DEBUGGING - //------------------------------------- - /** - * Set this debug flag to log all events that happen in this class. - */ - this.debug = false; - //------------------------------------- - // DISPOSING - //------------------------------------- - /** - * Indicates if the instance was disposed - */ - this._wasDisposed = false; - } - /** - * Returns all of the default options belonging to the class. - */ - static getDefaults() { - return {}; - } - /** - * Prints the outputs to the console log for debugging purposes. - * Prints the contents only if either the object has a property - * called `debug` set to true, or a variable called TONE_DEBUG_CLASS - * is set to the name of the class. - * @example - * const osc = new Tone.Oscillator(); - * // prints all logs originating from this oscillator - * osc.debug = true; - * // calls to start/stop will print in the console - * osc.start(); - */ - log(...args) { - // if the object is either set to debug = true - // or if there is a string on the Tone.global.with the class name - if (this.debug || (theWindow && this.toString() === theWindow.TONE_DEBUG_CLASS)) { - log(this, ...args); - } - } - /** - * disconnect and dispose. - */ - dispose() { - this._wasDisposed = true; - return this; - } - /** - * Indicates if the instance was disposed. 'Disposing' an - * instance means that all of the Web Audio nodes that were - * created for the instance are disconnected and freed for garbage collection. - */ - get disposed() { - return this._wasDisposed; - } - /** - * Convert the class to a string - * @example - * const osc = new Tone.Oscillator(); - * console.log(osc.toString()); - */ - toString() { - return this.name; - } -} -/** - * The version number semver - */ -Tone.version = version; - -/** - * The threshold for correctness for operators. Less than one sample even - * at very high sampling rates (e.g. `1e-6 < 1 / 192000`). - */ -const EPSILON = 1e-6; -/** - * Test if A is greater than B - */ -function GT(a, b) { - return a > b + EPSILON; -} -/** - * Test if A is greater than or equal to B - */ -function GTE(a, b) { - return GT(a, b) || EQ(a, b); -} -/** - * Test if A is less than B - */ -function LT(a, b) { - return a + EPSILON < b; -} -/** - * Test if A is less than B - */ -function EQ(a, b) { - return Math.abs(a - b) < EPSILON; -} -/** - * Clamp the value within the given range - */ -function clamp(value, min, max) { - return Math.max(Math.min(value, max), min); -} - -/** - * A Timeline class for scheduling and maintaining state - * along a timeline. All events must have a "time" property. - * Internally, events are stored in time order for fast - * retrieval. - */ -class Timeline extends Tone { - constructor() { - super(); - this.name = "Timeline"; - /** - * The array of scheduled timeline events - */ - this._timeline = []; - const options = optionsFromArguments(Timeline.getDefaults(), arguments, ["memory"]); - this.memory = options.memory; - this.increasing = options.increasing; - } - static getDefaults() { - return { - memory: Infinity, - increasing: false, - }; - } - /** - * The number of items in the timeline. - */ - get length() { - return this._timeline.length; - } - /** - * Insert an event object onto the timeline. Events must have a "time" attribute. - * @param event The event object to insert into the timeline. - */ - add(event) { - // the event needs to have a time attribute - assert(Reflect.has(event, "time"), "Timeline: events must have a time attribute"); - event.time = event.time.valueOf(); - if (this.increasing && this.length) { - const lastValue = this._timeline[this.length - 1]; - assert(GTE(event.time, lastValue.time), "The time must be greater than or equal to the last scheduled time"); - this._timeline.push(event); - } - else { - const index = this._search(event.time); - this._timeline.splice(index + 1, 0, event); - } - // if the length is more than the memory, remove the previous ones - if (this.length > this.memory) { - const diff = this.length - this.memory; - this._timeline.splice(0, diff); - } - return this; - } - /** - * Remove an event from the timeline. - * @param {Object} event The event object to remove from the list. - * @returns {Timeline} this - */ - remove(event) { - const index = this._timeline.indexOf(event); - if (index !== -1) { - this._timeline.splice(index, 1); - } - return this; - } - /** - * Get the nearest event whose time is less than or equal to the given time. - * @param time The time to query. - */ - get(time, param = "time") { - const index = this._search(time, param); - if (index !== -1) { - return this._timeline[index]; - } - else { - return null; - } - } - /** - * Return the first event in the timeline without removing it - * @returns {Object} The first event object - */ - peek() { - return this._timeline[0]; - } - /** - * Return the first event in the timeline and remove it - */ - shift() { - return this._timeline.shift(); - } - /** - * Get the event which is scheduled after the given time. - * @param time The time to query. - */ - getAfter(time, param = "time") { - const index = this._search(time, param); - if (index + 1 < this._timeline.length) { - return this._timeline[index + 1]; - } - else { - return null; - } - } - /** - * Get the event before the event at the given time. - * @param time The time to query. - */ - getBefore(time) { - const len = this._timeline.length; - // if it's after the last item, return the last item - if (len > 0 && this._timeline[len - 1].time < time) { - return this._timeline[len - 1]; - } - const index = this._search(time); - if (index - 1 >= 0) { - return this._timeline[index - 1]; - } - else { - return null; - } - } - /** - * Cancel events at and after the given time - * @param after The time to query. - */ - cancel(after) { - if (this._timeline.length > 1) { - let index = this._search(after); - if (index >= 0) { - if (EQ(this._timeline[index].time, after)) { - // get the first item with that time - for (let i = index; i >= 0; i--) { - if (EQ(this._timeline[i].time, after)) { - index = i; - } - else { - break; - } - } - this._timeline = this._timeline.slice(0, index); - } - else { - this._timeline = this._timeline.slice(0, index + 1); - } - } - else { - this._timeline = []; - } - } - else if (this._timeline.length === 1) { - // the first item's time - if (GTE(this._timeline[0].time, after)) { - this._timeline = []; - } - } - return this; - } - /** - * Cancel events before or equal to the given time. - * @param time The time to cancel before. - */ - cancelBefore(time) { - const index = this._search(time); - if (index >= 0) { - this._timeline = this._timeline.slice(index + 1); - } - return this; - } - /** - * Returns the previous event if there is one. null otherwise - * @param event The event to find the previous one of - * @return The event right before the given event - */ - previousEvent(event) { - const index = this._timeline.indexOf(event); - if (index > 0) { - return this._timeline[index - 1]; - } - else { - return null; - } - } - /** - * Does a binary search on the timeline array and returns the - * nearest event index whose time is after or equal to the given time. - * If a time is searched before the first index in the timeline, -1 is returned. - * If the time is after the end, the index of the last item is returned. - */ - _search(time, param = "time") { - if (this._timeline.length === 0) { - return -1; - } - let beginning = 0; - const len = this._timeline.length; - let end = len; - if (len > 0 && this._timeline[len - 1][param] <= time) { - return len - 1; - } - while (beginning < end) { - // calculate the midpoint for roughly equal partition - let midPoint = Math.floor(beginning + (end - beginning) / 2); - const event = this._timeline[midPoint]; - const nextEvent = this._timeline[midPoint + 1]; - if (EQ(event[param], time)) { - // choose the last one that has the same time - for (let i = midPoint; i < this._timeline.length; i++) { - const testEvent = this._timeline[i]; - if (EQ(testEvent[param], time)) { - midPoint = i; - } - else { - break; - } - } - return midPoint; - } - else if (LT(event[param], time) && GT(nextEvent[param], time)) { - return midPoint; - } - else if (GT(event[param], time)) { - // search lower - end = midPoint; - } - else { - // search upper - beginning = midPoint + 1; - } - } - return -1; - } - /** - * Internal iterator. Applies extra safety checks for - * removing items from the array. - */ - _iterate(callback, lowerBound = 0, upperBound = this._timeline.length - 1) { - this._timeline.slice(lowerBound, upperBound + 1).forEach(callback); - } - /** - * Iterate over everything in the array - * @param callback The callback to invoke with every item - */ - forEach(callback) { - this._iterate(callback); - return this; - } - /** - * Iterate over everything in the array at or before the given time. - * @param time The time to check if items are before - * @param callback The callback to invoke with every item - */ - forEachBefore(time, callback) { - // iterate over the items in reverse so that removing an item doesn't break things - const upperBound = this._search(time); - if (upperBound !== -1) { - this._iterate(callback, 0, upperBound); - } - return this; - } - /** - * Iterate over everything in the array after the given time. - * @param time The time to check if items are before - * @param callback The callback to invoke with every item - */ - forEachAfter(time, callback) { - // iterate over the items in reverse so that removing an item doesn't break things - const lowerBound = this._search(time); - this._iterate(callback, lowerBound + 1); - return this; - } - /** - * Iterate over everything in the array between the startTime and endTime. - * The timerange is inclusive of the startTime, but exclusive of the endTime. - * range = [startTime, endTime). - * @param startTime The time to check if items are before - * @param endTime The end of the test interval. - * @param callback The callback to invoke with every item - */ - forEachBetween(startTime, endTime, callback) { - let lowerBound = this._search(startTime); - let upperBound = this._search(endTime); - if (lowerBound !== -1 && upperBound !== -1) { - if (this._timeline[lowerBound].time !== startTime) { - lowerBound += 1; - } - // exclusive of the end time - if (this._timeline[upperBound].time === endTime) { - upperBound -= 1; - } - this._iterate(callback, lowerBound, upperBound); - } - else if (lowerBound === -1) { - this._iterate(callback, 0, upperBound); - } - return this; - } - /** - * Iterate over everything in the array at or after the given time. Similar to - * forEachAfter, but includes the item(s) at the given time. - * @param time The time to check if items are before - * @param callback The callback to invoke with every item - */ - forEachFrom(time, callback) { - // iterate over the items in reverse so that removing an item doesn't break things - let lowerBound = this._search(time); - // work backwards until the event time is less than time - while (lowerBound >= 0 && this._timeline[lowerBound].time >= time) { - lowerBound--; - } - this._iterate(callback, lowerBound + 1); - return this; - } - /** - * Iterate over everything in the array at the given time - * @param time The time to check if items are before - * @param callback The callback to invoke with every item - */ - forEachAtTime(time, callback) { - // iterate over the items in reverse so that removing an item doesn't break things - const upperBound = this._search(time); - if (upperBound !== -1 && EQ(this._timeline[upperBound].time, time)) { - let lowerBound = upperBound; - for (let i = upperBound; i >= 0; i--) { - if (EQ(this._timeline[i].time, time)) { - lowerBound = i; - } - else { - break; - } - } - this._iterate(event => { - callback(event); - }, lowerBound, upperBound); - } - return this; - } - /** - * Clean up. - */ - dispose() { - super.dispose(); - this._timeline = []; - return this; - } -} - -//------------------------------------- -// INITIALIZING NEW CONTEXT -//------------------------------------- -/** - * Array of callbacks to invoke when a new context is created - */ -const notifyNewContext = []; -/** - * Used internally to setup a new Context - */ -function onContextInit(cb) { - notifyNewContext.push(cb); -} -/** - * Invoke any classes which need to also be initialized when a new context is created. - */ -function initializeContext(ctx) { - // add any additional modules - notifyNewContext.forEach(cb => cb(ctx)); -} -/** - * Array of callbacks to invoke when a new context is created - */ -const notifyCloseContext = []; -/** - * Used internally to tear down a Context - */ -function onContextClose(cb) { - notifyCloseContext.push(cb); -} -function closeContext(ctx) { - // add any additional modules - notifyCloseContext.forEach(cb => cb(ctx)); -} - -/** - * Emitter gives classes which extend it - * the ability to listen for and emit events. - * Inspiration and reference from Jerome Etienne's [MicroEvent](https://github.com/jeromeetienne/microevent.js). - * MIT (c) 2011 Jerome Etienne. - * @category Core - */ -class Emitter extends Tone { - constructor() { - super(...arguments); - this.name = "Emitter"; - } - /** - * Bind a callback to a specific event. - * @param event The name of the event to listen for. - * @param callback The callback to invoke when the event is emitted - */ - on(event, callback) { - // split the event - const events = event.split(/\W+/); - events.forEach(eventName => { - if (isUndef(this._events)) { - this._events = {}; - } - if (!this._events.hasOwnProperty(eventName)) { - this._events[eventName] = []; - } - this._events[eventName].push(callback); - }); - return this; - } - /** - * Bind a callback which is only invoked once - * @param event The name of the event to listen for. - * @param callback The callback to invoke when the event is emitted - */ - once(event, callback) { - const boundCallback = (...args) => { - // invoke the callback - callback(...args); - // remove the event - this.off(event, boundCallback); - }; - this.on(event, boundCallback); - return this; - } - /** - * Remove the event listener. - * @param event The event to stop listening to. - * @param callback The callback which was bound to the event with Emitter.on. - * If no callback is given, all callbacks events are removed. - */ - off(event, callback) { - const events = event.split(/\W+/); - events.forEach(eventName => { - if (isUndef(this._events)) { - this._events = {}; - } - if (this._events.hasOwnProperty(event)) { - if (isUndef(callback)) { - this._events[event] = []; - } - else { - const eventList = this._events[event]; - for (let i = eventList.length - 1; i >= 0; i--) { - if (eventList[i] === callback) { - eventList.splice(i, 1); - } - } - } - } - }); - return this; - } - /** - * Invoke all of the callbacks bound to the event - * with any arguments passed in. - * @param event The name of the event. - * @param args The arguments to pass to the functions listening. - */ - emit(event, ...args) { - if (this._events) { - if (this._events.hasOwnProperty(event)) { - const eventList = this._events[event].slice(0); - for (let i = 0, len = eventList.length; i < len; i++) { - eventList[i].apply(this, args); - } - } - } - return this; - } - /** - * Add Emitter functions (on/off/emit) to the object - */ - static mixin(constr) { - // instance._events = {}; - ["on", "once", "off", "emit"].forEach(name => { - const property = Object.getOwnPropertyDescriptor(Emitter.prototype, name); - Object.defineProperty(constr.prototype, name, property); - }); - } - /** - * Clean up - */ - dispose() { - super.dispose(); - this._events = undefined; - return this; - } -} - -class BaseContext extends Emitter { - constructor() { - super(...arguments); - this.isOffline = false; - } - /* - * This is a placeholder so that JSON.stringify does not throw an error - * This matches what JSON.stringify(audioContext) returns on a native - * audioContext instance. - */ - toJSON() { - return {}; - } -} - -/** - * Wrapper around the native AudioContext. - * @category Core - */ -class Context extends BaseContext { - constructor() { - super(); - this.name = "Context"; - /** - * An object containing all of the constants AudioBufferSourceNodes - */ - this._constants = new Map(); - /** - * All of the setTimeout events. - */ - this._timeouts = new Timeline(); - /** - * The timeout id counter - */ - this._timeoutIds = 0; - /** - * Private indicator if the context has been initialized - */ - this._initialized = false; - /** - * Indicates if the context is an OfflineAudioContext or an AudioContext - */ - this.isOffline = false; - //-------------------------------------------- - // AUDIO WORKLET - //-------------------------------------------- - /** - * Maps a module name to promise of the addModule method - */ - this._workletModules = new Map(); - const options = optionsFromArguments(Context.getDefaults(), arguments, [ - "context", - ]); - if (options.context) { - this._context = options.context; - } - else { - this._context = createAudioContext({ - latencyHint: options.latencyHint, - }); - } - this._ticker = new Ticker(this.emit.bind(this, "tick"), options.clockSource, options.updateInterval); - this.on("tick", this._timeoutLoop.bind(this)); - // fwd events from the context - this._context.onstatechange = () => { - this.emit("statechange", this.state); - }; - this._setLatencyHint(options.latencyHint); - this.lookAhead = options.lookAhead; - } - static getDefaults() { - return { - clockSource: "worker", - latencyHint: "interactive", - lookAhead: 0.1, - updateInterval: 0.05, - }; - } - /** - * Finish setting up the context. **You usually do not need to do this manually.** - */ - initialize() { - if (!this._initialized) { - // add any additional modules - initializeContext(this); - this._initialized = true; - } - return this; - } - //--------------------------- - // BASE AUDIO CONTEXT METHODS - //--------------------------- - createAnalyser() { - return this._context.createAnalyser(); - } - createOscillator() { - return this._context.createOscillator(); - } - createBufferSource() { - return this._context.createBufferSource(); - } - createBiquadFilter() { - return this._context.createBiquadFilter(); - } - createBuffer(numberOfChannels, length, sampleRate) { - return this._context.createBuffer(numberOfChannels, length, sampleRate); - } - createChannelMerger(numberOfInputs) { - return this._context.createChannelMerger(numberOfInputs); - } - createChannelSplitter(numberOfOutputs) { - return this._context.createChannelSplitter(numberOfOutputs); - } - createConstantSource() { - return this._context.createConstantSource(); - } - createConvolver() { - return this._context.createConvolver(); - } - createDelay(maxDelayTime) { - return this._context.createDelay(maxDelayTime); - } - createDynamicsCompressor() { - return this._context.createDynamicsCompressor(); - } - createGain() { - return this._context.createGain(); - } - createIIRFilter(feedForward, feedback) { - // @ts-ignore - return this._context.createIIRFilter(feedForward, feedback); - } - createPanner() { - return this._context.createPanner(); - } - createPeriodicWave(real, imag, constraints) { - return this._context.createPeriodicWave(real, imag, constraints); - } - createStereoPanner() { - return this._context.createStereoPanner(); - } - createWaveShaper() { - return this._context.createWaveShaper(); - } - createMediaStreamSource(stream) { - assert(isAudioContext(this._context), "Not available if OfflineAudioContext"); - const context = this._context; - return context.createMediaStreamSource(stream); - } - createMediaElementSource(element) { - assert(isAudioContext(this._context), "Not available if OfflineAudioContext"); - const context = this._context; - return context.createMediaElementSource(element); - } - createMediaStreamDestination() { - assert(isAudioContext(this._context), "Not available if OfflineAudioContext"); - const context = this._context; - return context.createMediaStreamDestination(); - } - decodeAudioData(audioData) { - return this._context.decodeAudioData(audioData); - } - /** - * The current time in seconds of the AudioContext. - */ - get currentTime() { - return this._context.currentTime; - } - /** - * The current time in seconds of the AudioContext. - */ - get state() { - return this._context.state; - } - /** - * The current time in seconds of the AudioContext. - */ - get sampleRate() { - return this._context.sampleRate; - } - /** - * The listener - */ - get listener() { - this.initialize(); - return this._listener; - } - set listener(l) { - assert(!this._initialized, "The listener cannot be set after initialization."); - this._listener = l; - } - /** - * There is only one Transport per Context. It is created on initialization. - */ - get transport() { - this.initialize(); - return this._transport; - } - set transport(t) { - assert(!this._initialized, "The transport cannot be set after initialization."); - this._transport = t; - } - /** - * This is the Draw object for the context which is useful for synchronizing the draw frame with the Tone.js clock. - */ - get draw() { - this.initialize(); - return this._draw; - } - set draw(d) { - assert(!this._initialized, "Draw cannot be set after initialization."); - this._draw = d; - } - /** - * A reference to the Context's destination node. - */ - get destination() { - this.initialize(); - return this._destination; - } - set destination(d) { - assert(!this._initialized, "The destination cannot be set after initialization."); - this._destination = d; - } - /** - * Create an audio worklet node from a name and options. The module - * must first be loaded using [[addAudioWorkletModule]]. - */ - createAudioWorkletNode(name, options) { - return createAudioWorkletNode(this.rawContext, name, options); - } - /** - * Add an AudioWorkletProcessor module - * @param url The url of the module - * @param name The name of the module - */ - addAudioWorkletModule(url, name) { - return __awaiter(this, void 0, void 0, function* () { - assert(isDefined(this.rawContext.audioWorklet), "AudioWorkletNode is only available in a secure context (https or localhost)"); - if (!this._workletModules.has(name)) { - this._workletModules.set(name, this.rawContext.audioWorklet.addModule(url)); - } - yield this._workletModules.get(name); - }); - } - /** - * Returns a promise which resolves when all of the worklets have been loaded on this context - */ - workletsAreReady() { - return __awaiter(this, void 0, void 0, function* () { - const promises = []; - this._workletModules.forEach((promise) => promises.push(promise)); - yield Promise.all(promises); - }); - } - //--------------------------- - // TICKER - //--------------------------- - /** - * How often the interval callback is invoked. - * This number corresponds to how responsive the scheduling - * can be. context.updateInterval + context.lookAhead gives you the - * total latency between scheduling an event and hearing it. - */ - get updateInterval() { - return this._ticker.updateInterval; - } - set updateInterval(interval) { - this._ticker.updateInterval = interval; - } - /** - * What the source of the clock is, either "worker" (default), - * "timeout", or "offline" (none). - */ - get clockSource() { - return this._ticker.type; - } - set clockSource(type) { - this._ticker.type = type; - } - /** - * The type of playback, which affects tradeoffs between audio - * output latency and responsiveness. - * In addition to setting the value in seconds, the latencyHint also - * accepts the strings "interactive" (prioritizes low latency), - * "playback" (prioritizes sustained playback), "balanced" (balances - * latency and performance). - * @example - * // prioritize sustained playback - * const context = new Tone.Context({ latencyHint: "playback" }); - * // set this context as the global Context - * Tone.setContext(context); - * // the global context is gettable with Tone.getContext() - * console.log(Tone.getContext().latencyHint); - */ - get latencyHint() { - return this._latencyHint; - } - /** - * Update the lookAhead and updateInterval based on the latencyHint - */ - _setLatencyHint(hint) { - let lookAheadValue = 0; - this._latencyHint = hint; - if (isString(hint)) { - switch (hint) { - case "interactive": - lookAheadValue = 0.1; - break; - case "playback": - lookAheadValue = 0.5; - break; - case "balanced": - lookAheadValue = 0.25; - break; - } - } - this.lookAhead = lookAheadValue; - this.updateInterval = lookAheadValue / 2; - } - /** - * The unwrapped AudioContext or OfflineAudioContext - */ - get rawContext() { - return this._context; - } - /** - * The current audio context time plus a short [[lookAhead]]. - */ - now() { - return this._context.currentTime + this.lookAhead; - } - /** - * The current audio context time without the [[lookAhead]]. - * In most cases it is better to use [[now]] instead of [[immediate]] since - * with [[now]] the [[lookAhead]] is applied equally to _all_ components including internal components, - * to making sure that everything is scheduled in sync. Mixing [[now]] and [[immediate]] - * can cause some timing issues. If no lookAhead is desired, you can set the [[lookAhead]] to `0`. - */ - immediate() { - return this._context.currentTime; - } - /** - * Starts the audio context from a suspended state. This is required - * to initially start the AudioContext. See [[Tone.start]] - */ - resume() { - if (isAudioContext(this._context)) { - return this._context.resume(); - } - else { - return Promise.resolve(); - } - } - /** - * Close the context. Once closed, the context can no longer be used and - * any AudioNodes created from the context will be silent. - */ - close() { - return __awaiter(this, void 0, void 0, function* () { - if (isAudioContext(this._context)) { - yield this._context.close(); - } - if (this._initialized) { - closeContext(this); - } - }); - } - /** - * **Internal** Generate a looped buffer at some constant value. - */ - getConstant(val) { - if (this._constants.has(val)) { - return this._constants.get(val); - } - else { - const buffer = this._context.createBuffer(1, 128, this._context.sampleRate); - const arr = buffer.getChannelData(0); - for (let i = 0; i < arr.length; i++) { - arr[i] = val; - } - const constant = this._context.createBufferSource(); - constant.channelCount = 1; - constant.channelCountMode = "explicit"; - constant.buffer = buffer; - constant.loop = true; - constant.start(0); - this._constants.set(val, constant); - return constant; - } - } - /** - * Clean up. Also closes the audio context. - */ - dispose() { - super.dispose(); - this._ticker.dispose(); - this._timeouts.dispose(); - Object.keys(this._constants).map((val) => this._constants[val].disconnect()); - return this; - } - //--------------------------- - // TIMEOUTS - //--------------------------- - /** - * The private loop which keeps track of the context scheduled timeouts - * Is invoked from the clock source - */ - _timeoutLoop() { - const now = this.now(); - let firstEvent = this._timeouts.peek(); - while (this._timeouts.length && firstEvent && firstEvent.time <= now) { - // invoke the callback - firstEvent.callback(); - // shift the first event off - this._timeouts.shift(); - // get the next one - firstEvent = this._timeouts.peek(); - } - } - /** - * A setTimeout which is guaranteed by the clock source. - * Also runs in the offline context. - * @param fn The callback to invoke - * @param timeout The timeout in seconds - * @returns ID to use when invoking Context.clearTimeout - */ - setTimeout(fn, timeout) { - this._timeoutIds++; - const now = this.now(); - this._timeouts.add({ - callback: fn, - id: this._timeoutIds, - time: now + timeout, - }); - return this._timeoutIds; - } - /** - * Clears a previously scheduled timeout with Tone.context.setTimeout - * @param id The ID returned from setTimeout - */ - clearTimeout(id) { - this._timeouts.forEach((event) => { - if (event.id === id) { - this._timeouts.remove(event); - } - }); - return this; - } - /** - * Clear the function scheduled by [[setInterval]] - */ - clearInterval(id) { - return this.clearTimeout(id); - } - /** - * Adds a repeating event to the context's callback clock - */ - setInterval(fn, interval) { - const id = ++this._timeoutIds; - const intervalFn = () => { - const now = this.now(); - this._timeouts.add({ - callback: () => { - // invoke the callback - fn(); - // invoke the event to repeat it - intervalFn(); - }, - id, - time: now + interval, - }); - }; - // kick it off - intervalFn(); - return id; - } -} - -class DummyContext extends BaseContext { - constructor() { - super(...arguments); - this.lookAhead = 0; - this.latencyHint = 0; - this.isOffline = false; - } - //--------------------------- - // BASE AUDIO CONTEXT METHODS - //--------------------------- - createAnalyser() { - return {}; - } - createOscillator() { - return {}; - } - createBufferSource() { - return {}; - } - createBiquadFilter() { - return {}; - } - createBuffer(_numberOfChannels, _length, _sampleRate) { - return {}; - } - createChannelMerger(_numberOfInputs) { - return {}; - } - createChannelSplitter(_numberOfOutputs) { - return {}; - } - createConstantSource() { - return {}; - } - createConvolver() { - return {}; - } - createDelay(_maxDelayTime) { - return {}; - } - createDynamicsCompressor() { - return {}; - } - createGain() { - return {}; - } - createIIRFilter(_feedForward, _feedback) { - return {}; - } - createPanner() { - return {}; - } - createPeriodicWave(_real, _imag, _constraints) { - return {}; - } - createStereoPanner() { - return {}; - } - createWaveShaper() { - return {}; - } - createMediaStreamSource(_stream) { - return {}; - } - createMediaElementSource(_element) { - return {}; - } - createMediaStreamDestination() { - return {}; - } - decodeAudioData(_audioData) { - return Promise.resolve({}); - } - //--------------------------- - // TONE AUDIO CONTEXT METHODS - //--------------------------- - createAudioWorkletNode(_name, _options) { - return {}; - } - get rawContext() { - return {}; - } - addAudioWorkletModule(_url, _name) { - return __awaiter(this, void 0, void 0, function* () { - return Promise.resolve(); - }); - } - resume() { - return Promise.resolve(); - } - setTimeout(_fn, _timeout) { - return 0; - } - clearTimeout(_id) { - return this; - } - setInterval(_fn, _interval) { - return 0; - } - clearInterval(_id) { - return this; - } - getConstant(_val) { - return {}; - } - get currentTime() { - return 0; - } - get state() { - return {}; - } - get sampleRate() { - return 0; - } - get listener() { - return {}; - } - get transport() { - return {}; - } - get draw() { - return {}; - } - set draw(_d) { } - get destination() { - return {}; - } - set destination(_d) { } - now() { - return 0; - } - immediate() { - return 0; - } -} - -/** - * Make the property not writable using `defineProperty`. Internal use only. - */ -function readOnly(target, property) { - if (isArray(property)) { - property.forEach(str => readOnly(target, str)); - } - else { - Object.defineProperty(target, property, { - enumerable: true, - writable: false, - }); - } -} -/** - * Make an attribute writeable. Internal use only. - */ -function writable(target, property) { - if (isArray(property)) { - property.forEach(str => writable(target, str)); - } - else { - Object.defineProperty(target, property, { - writable: true, - }); - } -} -const noOp = () => { - // no operation here! -}; - -/** - * AudioBuffer loading and storage. ToneAudioBuffer is used internally by all - * classes that make requests for audio files such as Tone.Player, - * Tone.Sampler and Tone.Convolver. - * @example - * const buffer = new Tone.ToneAudioBuffer("https://tonejs.github.io/audio/casio/A1.mp3", () => { - * console.log("loaded"); - * }); - * @category Core - */ -class ToneAudioBuffer extends Tone { - constructor() { - super(); - this.name = "ToneAudioBuffer"; - /** - * Callback when the buffer is loaded. - */ - this.onload = noOp; - const options = optionsFromArguments(ToneAudioBuffer.getDefaults(), arguments, ["url", "onload", "onerror"]); - this.reverse = options.reverse; - this.onload = options.onload; - if (options.url && isAudioBuffer(options.url) || options.url instanceof ToneAudioBuffer) { - this.set(options.url); - } - else if (isString(options.url)) { - // initiate the download - this.load(options.url).catch(options.onerror); - } - } - static getDefaults() { - return { - onerror: noOp, - onload: noOp, - reverse: false, - }; - } - /** - * The sample rate of the AudioBuffer - */ - get sampleRate() { - if (this._buffer) { - return this._buffer.sampleRate; - } - else { - return getContext().sampleRate; - } - } - /** - * Pass in an AudioBuffer or ToneAudioBuffer to set the value of this buffer. - */ - set(buffer) { - if (buffer instanceof ToneAudioBuffer) { - // if it's loaded, set it - if (buffer.loaded) { - this._buffer = buffer.get(); - } - else { - // otherwise when it's loaded, invoke it's callback - buffer.onload = () => { - this.set(buffer); - this.onload(this); - }; - } - } - else { - this._buffer = buffer; - } - // reverse it initially - if (this._reversed) { - this._reverse(); - } - return this; - } - /** - * The audio buffer stored in the object. - */ - get() { - return this._buffer; - } - /** - * Makes an fetch request for the selected url then decodes the file as an audio buffer. - * Invokes the callback once the audio buffer loads. - * @param url The url of the buffer to load. filetype support depends on the browser. - * @returns A Promise which resolves with this ToneAudioBuffer - */ - load(url) { - return __awaiter(this, void 0, void 0, function* () { - const doneLoading = ToneAudioBuffer.load(url).then(audioBuffer => { - this.set(audioBuffer); - // invoke the onload method - this.onload(this); - }); - ToneAudioBuffer.downloads.push(doneLoading); - try { - yield doneLoading; - } - finally { - // remove the downloaded file - const index = ToneAudioBuffer.downloads.indexOf(doneLoading); - ToneAudioBuffer.downloads.splice(index, 1); - } - return this; - }); - } - /** - * clean up - */ - dispose() { - super.dispose(); - this._buffer = undefined; - return this; - } - /** - * Set the audio buffer from the array. - * To create a multichannel AudioBuffer, pass in a multidimensional array. - * @param array The array to fill the audio buffer - */ - fromArray(array) { - const isMultidimensional = isArray(array) && array[0].length > 0; - const channels = isMultidimensional ? array.length : 1; - const len = isMultidimensional ? array[0].length : array.length; - const context = getContext(); - const buffer = context.createBuffer(channels, len, context.sampleRate); - const multiChannelArray = !isMultidimensional && channels === 1 ? - [array] : array; - for (let c = 0; c < channels; c++) { - buffer.copyToChannel(multiChannelArray[c], c); - } - this._buffer = buffer; - return this; - } - /** - * Sums multiple channels into 1 channel - * @param chanNum Optionally only copy a single channel from the array. - */ - toMono(chanNum) { - if (isNumber(chanNum)) { - this.fromArray(this.toArray(chanNum)); - } - else { - let outputArray = new Float32Array(this.length); - const numChannels = this.numberOfChannels; - for (let channel = 0; channel < numChannels; channel++) { - const channelArray = this.toArray(channel); - for (let i = 0; i < channelArray.length; i++) { - outputArray[i] += channelArray[i]; - } - } - // divide by the number of channels - outputArray = outputArray.map(sample => sample / numChannels); - this.fromArray(outputArray); - } - return this; - } - /** - * Get the buffer as an array. Single channel buffers will return a 1-dimensional - * Float32Array, and multichannel buffers will return multidimensional arrays. - * @param channel Optionally only copy a single channel from the array. - */ - toArray(channel) { - if (isNumber(channel)) { - return this.getChannelData(channel); - } - else if (this.numberOfChannels === 1) { - return this.toArray(0); - } - else { - const ret = []; - for (let c = 0; c < this.numberOfChannels; c++) { - ret[c] = this.getChannelData(c); - } - return ret; - } - } - /** - * Returns the Float32Array representing the PCM audio data for the specific channel. - * @param channel The channel number to return - * @return The audio as a TypedArray - */ - getChannelData(channel) { - if (this._buffer) { - return this._buffer.getChannelData(channel); - } - else { - return new Float32Array(0); - } - } - /** - * Cut a subsection of the array and return a buffer of the - * subsection. Does not modify the original buffer - * @param start The time to start the slice - * @param end The end time to slice. If none is given will default to the end of the buffer - */ - slice(start, end = this.duration) { - const startSamples = Math.floor(start * this.sampleRate); - const endSamples = Math.floor(end * this.sampleRate); - assert(startSamples < endSamples, "The start time must be less than the end time"); - const length = endSamples - startSamples; - const retBuffer = getContext().createBuffer(this.numberOfChannels, length, this.sampleRate); - for (let channel = 0; channel < this.numberOfChannels; channel++) { - retBuffer.copyToChannel(this.getChannelData(channel).subarray(startSamples, endSamples), channel); - } - return new ToneAudioBuffer(retBuffer); - } - /** - * Reverse the buffer. - */ - _reverse() { - if (this.loaded) { - for (let i = 0; i < this.numberOfChannels; i++) { - this.getChannelData(i).reverse(); - } - } - return this; - } - /** - * If the buffer is loaded or not - */ - get loaded() { - return this.length > 0; - } - /** - * The duration of the buffer in seconds. - */ - get duration() { - if (this._buffer) { - return this._buffer.duration; - } - else { - return 0; - } - } - /** - * The length of the buffer in samples - */ - get length() { - if (this._buffer) { - return this._buffer.length; - } - else { - return 0; - } - } - /** - * The number of discrete audio channels. Returns 0 if no buffer is loaded. - */ - get numberOfChannels() { - if (this._buffer) { - return this._buffer.numberOfChannels; - } - else { - return 0; - } - } - /** - * Reverse the buffer. - */ - get reverse() { - return this._reversed; - } - set reverse(rev) { - if (this._reversed !== rev) { - this._reversed = rev; - this._reverse(); - } - } - /** - * Create a ToneAudioBuffer from the array. To create a multichannel AudioBuffer, - * pass in a multidimensional array. - * @param array The array to fill the audio buffer - * @return A ToneAudioBuffer created from the array - */ - static fromArray(array) { - return (new ToneAudioBuffer()).fromArray(array); - } - /** - * Creates a ToneAudioBuffer from a URL, returns a promise which resolves to a ToneAudioBuffer - * @param url The url to load. - * @return A promise which resolves to a ToneAudioBuffer - */ - static fromUrl(url) { - return __awaiter(this, void 0, void 0, function* () { - const buffer = new ToneAudioBuffer(); - return yield buffer.load(url); - }); - } - /** - * Loads a url using fetch and returns the AudioBuffer. - */ - static load(url) { - return __awaiter(this, void 0, void 0, function* () { - // test if the url contains multiple extensions - const matches = url.match(/\[([^\]\[]+\|.+)\]$/); - if (matches) { - const extensions = matches[1].split("|"); - let extension = extensions[0]; - for (const ext of extensions) { - if (ToneAudioBuffer.supportsType(ext)) { - extension = ext; - break; - } - } - url = url.replace(matches[0], extension); - } - // make sure there is a slash between the baseUrl and the url - const baseUrl = ToneAudioBuffer.baseUrl === "" || ToneAudioBuffer.baseUrl.endsWith("/") ? ToneAudioBuffer.baseUrl : ToneAudioBuffer.baseUrl + "/"; - const response = yield fetch(baseUrl + url); - if (!response.ok) { - throw new Error(`could not load url: ${url}`); - } - const arrayBuffer = yield response.arrayBuffer(); - const audioBuffer = yield getContext().decodeAudioData(arrayBuffer); - return audioBuffer; - }); - } - /** - * Checks a url's extension to see if the current browser can play that file type. - * @param url The url/extension to test - * @return If the file extension can be played - * @static - * @example - * Tone.ToneAudioBuffer.supportsType("wav"); // returns true - * Tone.ToneAudioBuffer.supportsType("path/to/file.wav"); // returns true - */ - static supportsType(url) { - const extensions = url.split("."); - const extension = extensions[extensions.length - 1]; - const response = document.createElement("audio").canPlayType("audio/" + extension); - return response !== ""; - } - /** - * Returns a Promise which resolves when all of the buffers have loaded - */ - static loaded() { - return __awaiter(this, void 0, void 0, function* () { - // this makes sure that the function is always async - yield Promise.resolve(); - while (ToneAudioBuffer.downloads.length) { - yield ToneAudioBuffer.downloads[0]; - } - }); - } -} -//------------------------------------- -// STATIC METHODS -//------------------------------------- -/** - * A path which is prefixed before every url. - */ -ToneAudioBuffer.baseUrl = ""; -/** - * All of the downloads - */ -ToneAudioBuffer.downloads = []; - -/** - * Wrapper around the OfflineAudioContext - * @category Core - * @example - * // generate a single channel, 0.5 second buffer - * const context = new Tone.OfflineContext(1, 0.5, 44100); - * const osc = new Tone.Oscillator({ context }); - * context.render().then(buffer => { - * console.log(buffer.numberOfChannels, buffer.duration); - * }); - */ -class OfflineContext extends Context { - constructor() { - super({ - clockSource: "offline", - context: isOfflineAudioContext(arguments[0]) ? - arguments[0] : createOfflineAudioContext(arguments[0], arguments[1] * arguments[2], arguments[2]), - lookAhead: 0, - updateInterval: isOfflineAudioContext(arguments[0]) ? - 128 / arguments[0].sampleRate : 128 / arguments[2], - }); - this.name = "OfflineContext"; - /** - * An artificial clock source - */ - this._currentTime = 0; - this.isOffline = true; - this._duration = isOfflineAudioContext(arguments[0]) ? - arguments[0].length / arguments[0].sampleRate : arguments[1]; - } - /** - * Override the now method to point to the internal clock time - */ - now() { - return this._currentTime; - } - /** - * Same as this.now() - */ - get currentTime() { - return this._currentTime; - } - /** - * Render just the clock portion of the audio context. - */ - _renderClock(asynchronous) { - return __awaiter(this, void 0, void 0, function* () { - let index = 0; - while (this._duration - this._currentTime >= 0) { - // invoke all the callbacks on that time - this.emit("tick"); - // increment the clock in block-sized chunks - this._currentTime += 128 / this.sampleRate; - // yield once a second of audio - index++; - const yieldEvery = Math.floor(this.sampleRate / 128); - if (asynchronous && index % yieldEvery === 0) { - yield new Promise(done => setTimeout(done, 1)); - } - } - }); - } - /** - * Render the output of the OfflineContext - * @param asynchronous If the clock should be rendered asynchronously, which will not block the main thread, but be slightly slower. - */ - render(asynchronous = true) { - return __awaiter(this, void 0, void 0, function* () { - yield this.workletsAreReady(); - yield this._renderClock(asynchronous); - const buffer = yield this._context.startRendering(); - return new ToneAudioBuffer(buffer); - }); - } - /** - * Close the context - */ - close() { - return Promise.resolve(); - } -} - -/** - * This dummy context is used to avoid throwing immediate errors when importing in Node.js - */ -const dummyContext = new DummyContext(); -/** - * The global audio context which is getable and assignable through - * getContext and setContext - */ -let globalContext = dummyContext; -/** - * Returns the default system-wide [[Context]] - * @category Core - */ -function getContext() { - if (globalContext === dummyContext && hasAudioContext) { - setContext(new Context()); - } - return globalContext; -} -/** - * Set the default audio context - * @category Core - */ -function setContext(context) { - if (isAudioContext(context)) { - globalContext = new Context(context); - } - else if (isOfflineAudioContext(context)) { - globalContext = new OfflineContext(context); - } - else { - globalContext = context; - } -} -/** - * Most browsers will not play _any_ audio until a user - * clicks something (like a play button). Invoke this method - * on a click or keypress event handler to start the audio context. - * More about the Autoplay policy - * [here](https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio) - * @example - * document.querySelector("button").addEventListener("click", async () => { - * await Tone.start(); - * console.log("context started"); - * }); - * @category Core - */ -function start() { - return globalContext.resume(); -} -/** - * Log Tone.js + version in the console. - */ -if (theWindow && !theWindow.TONE_SILENCE_LOGGING) { - let prefix = "v"; - const printString = ` * Tone.js ${prefix}${version} * `; - // eslint-disable-next-line no-console - console.log(`%c${printString}`, "background: #000; color: #fff"); -} - -/** - * Equal power gain scale. Good for cross-fading. - * @param percent (0-1) - */ -/** - * Convert decibels into gain. - */ -function dbToGain(db) { - return Math.pow(10, db / 20); -} -/** - * Convert gain to decibels. - */ -function gainToDb(gain) { - return 20 * (Math.log(gain) / Math.LN10); -} -/** - * Convert an interval (in semitones) to a frequency ratio. - * @param interval the number of semitones above the base note - * @example - * Tone.intervalToFrequencyRatio(0); // 1 - * Tone.intervalToFrequencyRatio(12); // 2 - * Tone.intervalToFrequencyRatio(-12); // 0.5 - */ -function intervalToFrequencyRatio(interval) { - return Math.pow(2, (interval / 12)); -} -/** - * The Global [concert tuning pitch](https://en.wikipedia.org/wiki/Concert_pitch) which is used - * to generate all the other pitch values from notes. A4's values in Hertz. - */ -let A4 = 440; -function getA4() { - return A4; -} -function setA4(freq) { - A4 = freq; -} -/** - * Convert a frequency value to a MIDI note. - * @param frequency The value to frequency value to convert. - * @example - * Tone.ftom(440); // returns 69 - */ -function ftom(frequency) { - return Math.round(ftomf(frequency)); -} -/** - * Convert a frequency to a floating point midi value - */ -function ftomf(frequency) { - return 69 + 12 * Math.log2(frequency / A4); -} -/** - * Convert a MIDI note to frequency value. - * @param midi The midi number to convert. - * @return The corresponding frequency value - * @example - * Tone.mtof(69); // 440 - */ -function mtof(midi) { - return A4 * Math.pow(2, (midi - 69) / 12); -} - -/** - * TimeBase is a flexible encoding of time which can be evaluated to and from a string. - */ -class TimeBaseClass extends Tone { - /** - * @param context The context associated with the time value. Used to compute - * Transport and context-relative timing. - * @param value The time value as a number, string or object - * @param units Unit values - */ - constructor(context, value, units) { - super(); - /** - * The default units - */ - this.defaultUnits = "s"; - this._val = value; - this._units = units; - this.context = context; - this._expressions = this._getExpressions(); - } - /** - * All of the time encoding expressions - */ - _getExpressions() { - return { - hz: { - method: (value) => { - return this._frequencyToUnits(parseFloat(value)); - }, - regexp: /^(\d+(?:\.\d+)?)hz$/i, - }, - i: { - method: (value) => { - return this._ticksToUnits(parseInt(value, 10)); - }, - regexp: /^(\d+)i$/i, - }, - m: { - method: (value) => { - return this._beatsToUnits(parseInt(value, 10) * this._getTimeSignature()); - }, - regexp: /^(\d+)m$/i, - }, - n: { - method: (value, dot) => { - const numericValue = parseInt(value, 10); - const scalar = dot === "." ? 1.5 : 1; - if (numericValue === 1) { - return this._beatsToUnits(this._getTimeSignature()) * scalar; - } - else { - return this._beatsToUnits(4 / numericValue) * scalar; - } - }, - regexp: /^(\d+)n(\.?)$/i, - }, - number: { - method: (value) => { - return this._expressions[this.defaultUnits].method.call(this, value); - }, - regexp: /^(\d+(?:\.\d+)?)$/, - }, - s: { - method: (value) => { - return this._secondsToUnits(parseFloat(value)); - }, - regexp: /^(\d+(?:\.\d+)?)s$/, - }, - samples: { - method: (value) => { - return parseInt(value, 10) / this.context.sampleRate; - }, - regexp: /^(\d+)samples$/, - }, - t: { - method: (value) => { - const numericValue = parseInt(value, 10); - return this._beatsToUnits(8 / (Math.floor(numericValue) * 3)); - }, - regexp: /^(\d+)t$/i, - }, - tr: { - method: (m, q, s) => { - let total = 0; - if (m && m !== "0") { - total += this._beatsToUnits(this._getTimeSignature() * parseFloat(m)); - } - if (q && q !== "0") { - total += this._beatsToUnits(parseFloat(q)); - } - if (s && s !== "0") { - total += this._beatsToUnits(parseFloat(s) / 4); - } - return total; - }, - regexp: /^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?$/, - }, - }; - } - //------------------------------------- - // VALUE OF - //------------------------------------- - /** - * Evaluate the time value. Returns the time in seconds. - */ - valueOf() { - if (this._val instanceof TimeBaseClass) { - this.fromType(this._val); - } - if (isUndef(this._val)) { - return this._noArg(); - } - else if (isString(this._val) && isUndef(this._units)) { - for (const units in this._expressions) { - if (this._expressions[units].regexp.test(this._val.trim())) { - this._units = units; - break; - } - } - } - else if (isObject(this._val)) { - let total = 0; - for (const typeName in this._val) { - if (isDefined(this._val[typeName])) { - const quantity = this._val[typeName]; - // @ts-ignore - const time = (new this.constructor(this.context, typeName)).valueOf() * quantity; - total += time; - } - } - return total; - } - if (isDefined(this._units)) { - const expr = this._expressions[this._units]; - const matching = this._val.toString().trim().match(expr.regexp); - if (matching) { - return expr.method.apply(this, matching.slice(1)); - } - else { - return expr.method.call(this, this._val); - } - } - else if (isString(this._val)) { - return parseFloat(this._val); - } - else { - return this._val; - } - } - //------------------------------------- - // UNIT CONVERSIONS - //------------------------------------- - /** - * Returns the value of a frequency in the current units - */ - _frequencyToUnits(freq) { - return 1 / freq; - } - /** - * Return the value of the beats in the current units - */ - _beatsToUnits(beats) { - return (60 / this._getBpm()) * beats; - } - /** - * Returns the value of a second in the current units - */ - _secondsToUnits(seconds) { - return seconds; - } - /** - * Returns the value of a tick in the current time units - */ - _ticksToUnits(ticks) { - return (ticks * (this._beatsToUnits(1)) / this._getPPQ()); - } - /** - * With no arguments, return 'now' - */ - _noArg() { - return this._now(); - } - //------------------------------------- - // TEMPO CONVERSIONS - //------------------------------------- - /** - * Return the bpm - */ - _getBpm() { - return this.context.transport.bpm.value; - } - /** - * Return the timeSignature - */ - _getTimeSignature() { - return this.context.transport.timeSignature; - } - /** - * Return the PPQ or 192 if Transport is not available - */ - _getPPQ() { - return this.context.transport.PPQ; - } - //------------------------------------- - // CONVERSION INTERFACE - //------------------------------------- - /** - * Coerce a time type into this units type. - * @param type Any time type units - */ - fromType(type) { - this._units = undefined; - switch (this.defaultUnits) { - case "s": - this._val = type.toSeconds(); - break; - case "i": - this._val = type.toTicks(); - break; - case "hz": - this._val = type.toFrequency(); - break; - case "midi": - this._val = type.toMidi(); - break; - } - return this; - } - /** - * Return the value in hertz - */ - toFrequency() { - return 1 / this.toSeconds(); - } - /** - * Return the time in samples - */ - toSamples() { - return this.toSeconds() * this.context.sampleRate; - } - /** - * Return the time in milliseconds. - */ - toMilliseconds() { - return this.toSeconds() * 1000; - } -} - -/** - * TimeClass is a primitive type for encoding and decoding Time values. - * TimeClass can be passed into the parameter of any method which takes time as an argument. - * @param val The time value. - * @param units The units of the value. - * @example - * const time = Tone.Time("4n"); // a quarter note - * @category Unit - */ -class TimeClass extends TimeBaseClass { - constructor() { - super(...arguments); - this.name = "TimeClass"; - } - _getExpressions() { - return Object.assign(super._getExpressions(), { - now: { - method: (capture) => { - return this._now() + new this.constructor(this.context, capture).valueOf(); - }, - regexp: /^\+(.+)/, - }, - quantize: { - method: (capture) => { - const quantTo = new TimeClass(this.context, capture).valueOf(); - return this._secondsToUnits(this.context.transport.nextSubdivision(quantTo)); - }, - regexp: /^@(.+)/, - }, - }); - } - /** - * Quantize the time by the given subdivision. Optionally add a - * percentage which will move the time value towards the ideal - * quantized value by that percentage. - * @param subdiv The subdivision to quantize to - * @param percent Move the time value towards the quantized value by a percentage. - * @example - * Tone.Time(21).quantize(2); // returns 22 - * Tone.Time(0.6).quantize("4n", 0.5); // returns 0.55 - */ - quantize(subdiv, percent = 1) { - const subdivision = new this.constructor(this.context, subdiv).valueOf(); - const value = this.valueOf(); - const multiple = Math.round(value / subdivision); - const ideal = multiple * subdivision; - const diff = ideal - value; - return value + diff * percent; - } - //------------------------------------- - // CONVERSIONS - //------------------------------------- - /** - * Convert a Time to Notation. The notation values are will be the - * closest representation between 1m to 128th note. - * @return {Notation} - * @example - * // if the Transport is at 120bpm: - * Tone.Time(2).toNotation(); // returns "1m" - */ - toNotation() { - const time = this.toSeconds(); - const testNotations = ["1m"]; - for (let power = 1; power < 9; power++) { - const subdiv = Math.pow(2, power); - testNotations.push(subdiv + "n."); - testNotations.push(subdiv + "n"); - testNotations.push(subdiv + "t"); - } - testNotations.push("0"); - // find the closets notation representation - let closest = testNotations[0]; - let closestSeconds = new TimeClass(this.context, testNotations[0]).toSeconds(); - testNotations.forEach(notation => { - const notationSeconds = new TimeClass(this.context, notation).toSeconds(); - if (Math.abs(notationSeconds - time) < Math.abs(closestSeconds - time)) { - closest = notation; - closestSeconds = notationSeconds; - } - }); - return closest; - } - /** - * Return the time encoded as Bars:Beats:Sixteenths. - */ - toBarsBeatsSixteenths() { - const quarterTime = this._beatsToUnits(1); - let quarters = this.valueOf() / quarterTime; - quarters = parseFloat(quarters.toFixed(4)); - const measures = Math.floor(quarters / this._getTimeSignature()); - let sixteenths = (quarters % 1) * 4; - quarters = Math.floor(quarters) % this._getTimeSignature(); - const sixteenthString = sixteenths.toString(); - if (sixteenthString.length > 3) { - // the additional parseFloat removes insignificant trailing zeroes - sixteenths = parseFloat(parseFloat(sixteenthString).toFixed(3)); - } - const progress = [measures, quarters, sixteenths]; - return progress.join(":"); - } - /** - * Return the time in ticks. - */ - toTicks() { - const quarterTime = this._beatsToUnits(1); - const quarters = this.valueOf() / quarterTime; - return Math.round(quarters * this._getPPQ()); - } - /** - * Return the time in seconds. - */ - toSeconds() { - return this.valueOf(); - } - /** - * Return the value as a midi note. - */ - toMidi() { - return ftom(this.toFrequency()); - } - _now() { - return this.context.now(); - } -} -/** - * Create a TimeClass from a time string or number. The time is computed against the - * global Tone.Context. To use a specific context, use [[TimeClass]] - * @param value A value which represents time - * @param units The value's units if they can't be inferred by the value. - * @category Unit - * @example - * const time = Tone.Time("4n").toSeconds(); - * console.log(time); - * @example - * const note = Tone.Time(1).toNotation(); - * console.log(note); - * @example - * const freq = Tone.Time(0.5).toFrequency(); - * console.log(freq); - */ -function Time(value, units) { - return new TimeClass(getContext(), value, units); -} - -/** - * Frequency is a primitive type for encoding Frequency values. - * Eventually all time values are evaluated to hertz using the `valueOf` method. - * @example - * Tone.Frequency("C3"); // 261 - * Tone.Frequency(38, "midi"); - * Tone.Frequency("C3").transpose(4); - * @category Unit - */ -class FrequencyClass extends TimeClass { - constructor() { - super(...arguments); - this.name = "Frequency"; - this.defaultUnits = "hz"; - } - /** - * The [concert tuning pitch](https://en.wikipedia.org/wiki/Concert_pitch) which is used - * to generate all the other pitch values from notes. A4's values in Hertz. - */ - static get A4() { - return getA4(); - } - static set A4(freq) { - setA4(freq); - } - //------------------------------------- - // AUGMENT BASE EXPRESSIONS - //------------------------------------- - _getExpressions() { - return Object.assign({}, super._getExpressions(), { - midi: { - regexp: /^(\d+(?:\.\d+)?midi)/, - method(value) { - if (this.defaultUnits === "midi") { - return value; - } - else { - return FrequencyClass.mtof(value); - } - }, - }, - note: { - regexp: /^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i, - method(pitch, octave) { - const index = noteToScaleIndex[pitch.toLowerCase()]; - const noteNumber = index + (parseInt(octave, 10) + 1) * 12; - if (this.defaultUnits === "midi") { - return noteNumber; - } - else { - return FrequencyClass.mtof(noteNumber); - } - }, - }, - tr: { - regexp: /^(\d+(?:\.\d+)?):(\d+(?:\.\d+)?):?(\d+(?:\.\d+)?)?/, - method(m, q, s) { - let total = 1; - if (m && m !== "0") { - total *= this._beatsToUnits(this._getTimeSignature() * parseFloat(m)); - } - if (q && q !== "0") { - total *= this._beatsToUnits(parseFloat(q)); - } - if (s && s !== "0") { - total *= this._beatsToUnits(parseFloat(s) / 4); - } - return total; - }, - }, - }); - } - //------------------------------------- - // EXPRESSIONS - //------------------------------------- - /** - * Transposes the frequency by the given number of semitones. - * @return A new transposed frequency - * @example - * Tone.Frequency("A4").transpose(3); // "C5" - */ - transpose(interval) { - return new FrequencyClass(this.context, this.valueOf() * intervalToFrequencyRatio(interval)); - } - /** - * Takes an array of semitone intervals and returns - * an array of frequencies transposed by those intervals. - * @return Returns an array of Frequencies - * @example - * Tone.Frequency("A4").harmonize([0, 3, 7]); // ["A4", "C5", "E5"] - */ - harmonize(intervals) { - return intervals.map(interval => { - return this.transpose(interval); - }); - } - //------------------------------------- - // UNIT CONVERSIONS - //------------------------------------- - /** - * Return the value of the frequency as a MIDI note - * @example - * Tone.Frequency("C4").toMidi(); // 60 - */ - toMidi() { - return ftom(this.valueOf()); - } - /** - * Return the value of the frequency in Scientific Pitch Notation - * @example - * Tone.Frequency(69, "midi").toNote(); // "A4" - */ - toNote() { - const freq = this.toFrequency(); - const log = Math.log2(freq / FrequencyClass.A4); - let noteNumber = Math.round(12 * log) + 57; - const octave = Math.floor(noteNumber / 12); - if (octave < 0) { - noteNumber += -12 * octave; - } - const noteName = scaleIndexToNote[noteNumber % 12]; - return noteName + octave.toString(); - } - /** - * Return the duration of one cycle in seconds. - */ - toSeconds() { - return 1 / super.toSeconds(); - } - /** - * Return the duration of one cycle in ticks - */ - toTicks() { - const quarterTime = this._beatsToUnits(1); - const quarters = this.valueOf() / quarterTime; - return Math.floor(quarters * this._getPPQ()); - } - //------------------------------------- - // UNIT CONVERSIONS HELPERS - //------------------------------------- - /** - * With no arguments, return 0 - */ - _noArg() { - return 0; - } - /** - * Returns the value of a frequency in the current units - */ - _frequencyToUnits(freq) { - return freq; - } - /** - * Returns the value of a tick in the current time units - */ - _ticksToUnits(ticks) { - return 1 / ((ticks * 60) / (this._getBpm() * this._getPPQ())); - } - /** - * Return the value of the beats in the current units - */ - _beatsToUnits(beats) { - return 1 / super._beatsToUnits(beats); - } - /** - * Returns the value of a second in the current units - */ - _secondsToUnits(seconds) { - return 1 / seconds; - } - /** - * Convert a MIDI note to frequency value. - * @param midi The midi number to convert. - * @return The corresponding frequency value - */ - static mtof(midi) { - return mtof(midi); - } - /** - * Convert a frequency value to a MIDI note. - * @param frequency The value to frequency value to convert. - */ - static ftom(frequency) { - return ftom(frequency); - } -} -//------------------------------------- -// FREQUENCY CONVERSIONS -//------------------------------------- -/** - * Note to scale index. - * @hidden - */ -const noteToScaleIndex = { - cbb: -2, cb: -1, c: 0, "c#": 1, cx: 2, - dbb: 0, db: 1, d: 2, "d#": 3, dx: 4, - ebb: 2, eb: 3, e: 4, "e#": 5, ex: 6, - fbb: 3, fb: 4, f: 5, "f#": 6, fx: 7, - gbb: 5, gb: 6, g: 7, "g#": 8, gx: 9, - abb: 7, ab: 8, a: 9, "a#": 10, ax: 11, - bbb: 9, bb: 10, b: 11, "b#": 12, bx: 13, -}; -/** - * scale index to note (sharps) - * @hidden - */ -const scaleIndexToNote = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"]; -/** - * Convert a value into a FrequencyClass object. - * @category Unit - * @example - * const midi = Tone.Frequency("C3").toMidi(); - * console.log(midi); - * @example - * const hertz = Tone.Frequency(38, "midi").toFrequency(); - * console.log(hertz); - */ -function Frequency(value, units) { - return new FrequencyClass(getContext(), value, units); -} - -/** - * TransportTime is a the time along the Transport's - * timeline. It is similar to Tone.Time, but instead of evaluating - * against the AudioContext's clock, it is evaluated against - * the Transport's position. See [TransportTime wiki](https://github.com/Tonejs/Tone.js/wiki/TransportTime). - * @category Unit - */ -class TransportTimeClass extends TimeClass { - constructor() { - super(...arguments); - this.name = "TransportTime"; - } - /** - * Return the current time in whichever context is relevant - */ - _now() { - return this.context.transport.seconds; - } -} -/** - * TransportTime is a the time along the Transport's - * timeline. It is similar to [[Time]], but instead of evaluating - * against the AudioContext's clock, it is evaluated against - * the Transport's position. See [TransportTime wiki](https://github.com/Tonejs/Tone.js/wiki/TransportTime). - * @category Unit - */ -function TransportTime(value, units) { - return new TransportTimeClass(getContext(), value, units); -} - -/** - * The Base class for all nodes that have an AudioContext. - */ -class ToneWithContext extends Tone { - constructor() { - super(); - const options = optionsFromArguments(ToneWithContext.getDefaults(), arguments, ["context"]); - if (this.defaultContext) { - this.context = this.defaultContext; - } - else { - this.context = options.context; - } - } - static getDefaults() { - return { - context: getContext(), - }; - } - /** - * Return the current time of the Context clock plus the lookAhead. - * @example - * setInterval(() => { - * console.log(Tone.now()); - * }, 100); - */ - now() { - return this.context.currentTime + this.context.lookAhead; - } - /** - * Return the current time of the Context clock without any lookAhead. - * @example - * setInterval(() => { - * console.log(Tone.immediate()); - * }, 100); - */ - immediate() { - return this.context.currentTime; - } - /** - * The duration in seconds of one sample. - * @example - * console.log(Tone.Transport.sampleTime); - */ - get sampleTime() { - return 1 / this.context.sampleRate; - } - /** - * The number of seconds of 1 processing block (128 samples) - * @example - * console.log(Tone.Destination.blockTime); - */ - get blockTime() { - return 128 / this.context.sampleRate; - } - /** - * Convert the incoming time to seconds. - * This is calculated against the current [[Tone.Transport]] bpm - * @example - * const gain = new Tone.Gain(); - * setInterval(() => console.log(gain.toSeconds("4n")), 100); - * // ramp the tempo to 60 bpm over 30 seconds - * Tone.getTransport().bpm.rampTo(60, 30); - */ - toSeconds(time) { - return new TimeClass(this.context, time).toSeconds(); - } - /** - * Convert the input to a frequency number - * @example - * const gain = new Tone.Gain(); - * console.log(gain.toFrequency("4n")); - */ - toFrequency(freq) { - return new FrequencyClass(this.context, freq).toFrequency(); - } - /** - * Convert the input time into ticks - * @example - * const gain = new Tone.Gain(); - * console.log(gain.toTicks("4n")); - */ - toTicks(time) { - return new TransportTimeClass(this.context, time).toTicks(); - } - //------------------------------------- - // GET/SET - //------------------------------------- - /** - * Get a subset of the properties which are in the partial props - */ - _getPartialProperties(props) { - const options = this.get(); - // remove attributes from the prop that are not in the partial - Object.keys(options).forEach(name => { - if (isUndef(props[name])) { - delete options[name]; - } - }); - return options; - } - /** - * Get the object's attributes. - * @example - * const osc = new Tone.Oscillator(); - * console.log(osc.get()); - */ - get() { - const defaults = getDefaultsFromInstance(this); - Object.keys(defaults).forEach(attribute => { - if (Reflect.has(this, attribute)) { - const member = this[attribute]; - if (isDefined(member) && isDefined(member.value) && isDefined(member.setValueAtTime)) { - defaults[attribute] = member.value; - } - else if (member instanceof ToneWithContext) { - defaults[attribute] = member._getPartialProperties(defaults[attribute]); - // otherwise make sure it's a serializable type - } - else if (isArray(member) || isNumber(member) || isString(member) || isBoolean(member)) { - defaults[attribute] = member; - } - else { - // remove all undefined and unserializable attributes - delete defaults[attribute]; - } - } - }); - return defaults; - } - /** - * Set multiple properties at once with an object. - * @example - * const filter = new Tone.Filter().toDestination(); - * // set values using an object - * filter.set({ - * frequency: "C6", - * type: "highpass" - * }); - * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/Analogsynth_octaves_highmid.mp3").connect(filter); - * player.autostart = true; - */ - set(props) { - Object.keys(props).forEach(attribute => { - if (Reflect.has(this, attribute) && isDefined(this[attribute])) { - if (this[attribute] && isDefined(this[attribute].value) && isDefined(this[attribute].setValueAtTime)) { - // small optimization - if (this[attribute].value !== props[attribute]) { - this[attribute].value = props[attribute]; - } - } - else if (this[attribute] instanceof ToneWithContext) { - this[attribute].set(props[attribute]); - } - else { - this[attribute] = props[attribute]; - } - } - }); - return this; - } -} - -/** - * A Timeline State. Provides the methods: `setStateAtTime("state", time)` and `getValueAtTime(time)` - * @param initial The initial state of the StateTimeline. Defaults to `undefined` - */ -class StateTimeline extends Timeline { - constructor(initial = "stopped") { - super(); - this.name = "StateTimeline"; - this._initial = initial; - this.setStateAtTime(this._initial, 0); - } - /** - * Returns the scheduled state scheduled before or at - * the given time. - * @param time The time to query. - * @return The name of the state input in setStateAtTime. - */ - getValueAtTime(time) { - const event = this.get(time); - if (event !== null) { - return event.state; - } - else { - return this._initial; - } - } - /** - * Add a state to the timeline. - * @param state The name of the state to set. - * @param time The time to query. - * @param options Any additional options that are needed in the timeline. - */ - setStateAtTime(state, time, options) { - assertRange(time, 0); - this.add(Object.assign({}, options, { - state, - time, - })); - return this; - } - /** - * Return the event before the time with the given state - * @param state The state to look for - * @param time When to check before - * @return The event with the given state before the time - */ - getLastState(state, time) { - // time = this.toSeconds(time); - const index = this._search(time); - for (let i = index; i >= 0; i--) { - const event = this._timeline[i]; - if (event.state === state) { - return event; - } - } - } - /** - * Return the event after the time with the given state - * @param state The state to look for - * @param time When to check from - * @return The event with the given state after the time - */ - getNextState(state, time) { - // time = this.toSeconds(time); - const index = this._search(time); - if (index !== -1) { - for (let i = index; i < this._timeline.length; i++) { - const event = this._timeline[i]; - if (event.state === state) { - return event; - } - } - } - } -} - -/** - * Param wraps the native Web Audio's AudioParam to provide - * additional unit conversion functionality. It also - * serves as a base-class for classes which have a single, - * automatable parameter. - * @category Core - */ -class Param extends ToneWithContext { - constructor() { - super(optionsFromArguments(Param.getDefaults(), arguments, ["param", "units", "convert"])); - this.name = "Param"; - this.overridden = false; - /** - * The minimum output value - */ - this._minOutput = 1e-7; - const options = optionsFromArguments(Param.getDefaults(), arguments, ["param", "units", "convert"]); - assert(isDefined(options.param) && - (isAudioParam(options.param) || options.param instanceof Param), "param must be an AudioParam"); - while (!isAudioParam(options.param)) { - options.param = options.param._param; - } - this._swappable = isDefined(options.swappable) ? options.swappable : false; - if (this._swappable) { - this.input = this.context.createGain(); - // initialize - this._param = options.param; - this.input.connect(this._param); - } - else { - this._param = this.input = options.param; - } - this._events = new Timeline(1000); - this._initialValue = this._param.defaultValue; - this.units = options.units; - this.convert = options.convert; - this._minValue = options.minValue; - this._maxValue = options.maxValue; - // if the value is defined, set it immediately - if (isDefined(options.value) && options.value !== this._toType(this._initialValue)) { - this.setValueAtTime(options.value, 0); - } - } - static getDefaults() { - return Object.assign(ToneWithContext.getDefaults(), { - convert: true, - units: "number", - }); - } - get value() { - const now = this.now(); - return this.getValueAtTime(now); - } - set value(value) { - this.cancelScheduledValues(this.now()); - this.setValueAtTime(value, this.now()); - } - get minValue() { - // if it's not the default minValue, return it - if (isDefined(this._minValue)) { - return this._minValue; - } - else if (this.units === "time" || this.units === "frequency" || - this.units === "normalRange" || this.units === "positive" || - this.units === "transportTime" || this.units === "ticks" || - this.units === "bpm" || this.units === "hertz" || this.units === "samples") { - return 0; - } - else if (this.units === "audioRange") { - return -1; - } - else if (this.units === "decibels") { - return -Infinity; - } - else { - return this._param.minValue; - } - } - get maxValue() { - if (isDefined(this._maxValue)) { - return this._maxValue; - } - else if (this.units === "normalRange" || - this.units === "audioRange") { - return 1; - } - else { - return this._param.maxValue; - } - } - /** - * Type guard based on the unit name - */ - _is(arg, type) { - return this.units === type; - } - /** - * Make sure the value is always in the defined range - */ - _assertRange(value) { - if (isDefined(this.maxValue) && isDefined(this.minValue)) { - assertRange(value, this._fromType(this.minValue), this._fromType(this.maxValue)); - } - return value; - } - /** - * Convert the given value from the type specified by Param.units - * into the destination value (such as Gain or Frequency). - */ - _fromType(val) { - if (this.convert && !this.overridden) { - if (this._is(val, "time")) { - return this.toSeconds(val); - } - else if (this._is(val, "decibels")) { - return dbToGain(val); - } - else if (this._is(val, "frequency")) { - return this.toFrequency(val); - } - else { - return val; - } - } - else if (this.overridden) { - // if it's overridden, should only schedule 0s - return 0; - } - else { - return val; - } - } - /** - * Convert the parameters value into the units specified by Param.units. - */ - _toType(val) { - if (this.convert && this.units === "decibels") { - return gainToDb(val); - } - else { - return val; - } - } - //------------------------------------- - // ABSTRACT PARAM INTERFACE - // all docs are generated from ParamInterface.ts - //------------------------------------- - setValueAtTime(value, time) { - const computedTime = this.toSeconds(time); - const numericValue = this._fromType(value); - assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to setValueAtTime: ${JSON.stringify(value)}, ${JSON.stringify(time)}`); - this._assertRange(numericValue); - this.log(this.units, "setValueAtTime", value, computedTime); - this._events.add({ - time: computedTime, - type: "setValueAtTime", - value: numericValue, - }); - this._param.setValueAtTime(numericValue, computedTime); - return this; - } - getValueAtTime(time) { - const computedTime = Math.max(this.toSeconds(time), 0); - const after = this._events.getAfter(computedTime); - const before = this._events.get(computedTime); - let value = this._initialValue; - // if it was set by - if (before === null) { - value = this._initialValue; - } - else if (before.type === "setTargetAtTime" && (after === null || after.type === "setValueAtTime")) { - const previous = this._events.getBefore(before.time); - let previousVal; - if (previous === null) { - previousVal = this._initialValue; - } - else { - previousVal = previous.value; - } - if (before.type === "setTargetAtTime") { - value = this._exponentialApproach(before.time, previousVal, before.value, before.constant, computedTime); - } - } - else if (after === null) { - value = before.value; - } - else if (after.type === "linearRampToValueAtTime" || after.type === "exponentialRampToValueAtTime") { - let beforeValue = before.value; - if (before.type === "setTargetAtTime") { - const previous = this._events.getBefore(before.time); - if (previous === null) { - beforeValue = this._initialValue; - } - else { - beforeValue = previous.value; - } - } - if (after.type === "linearRampToValueAtTime") { - value = this._linearInterpolate(before.time, beforeValue, after.time, after.value, computedTime); - } - else { - value = this._exponentialInterpolate(before.time, beforeValue, after.time, after.value, computedTime); - } - } - else { - value = before.value; - } - return this._toType(value); - } - setRampPoint(time) { - time = this.toSeconds(time); - let currentVal = this.getValueAtTime(time); - this.cancelAndHoldAtTime(time); - if (this._fromType(currentVal) === 0) { - currentVal = this._toType(this._minOutput); - } - this.setValueAtTime(currentVal, time); - return this; - } - linearRampToValueAtTime(value, endTime) { - const numericValue = this._fromType(value); - const computedTime = this.toSeconds(endTime); - assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to linearRampToValueAtTime: ${JSON.stringify(value)}, ${JSON.stringify(endTime)}`); - this._assertRange(numericValue); - this._events.add({ - time: computedTime, - type: "linearRampToValueAtTime", - value: numericValue, - }); - this.log(this.units, "linearRampToValueAtTime", value, computedTime); - this._param.linearRampToValueAtTime(numericValue, computedTime); - return this; - } - exponentialRampToValueAtTime(value, endTime) { - let numericValue = this._fromType(value); - // the value can't be 0 - numericValue = EQ(numericValue, 0) ? this._minOutput : numericValue; - this._assertRange(numericValue); - const computedTime = this.toSeconds(endTime); - assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to exponentialRampToValueAtTime: ${JSON.stringify(value)}, ${JSON.stringify(endTime)}`); - // store the event - this._events.add({ - time: computedTime, - type: "exponentialRampToValueAtTime", - value: numericValue, - }); - this.log(this.units, "exponentialRampToValueAtTime", value, computedTime); - this._param.exponentialRampToValueAtTime(numericValue, computedTime); - return this; - } - exponentialRampTo(value, rampTime, startTime) { - startTime = this.toSeconds(startTime); - this.setRampPoint(startTime); - this.exponentialRampToValueAtTime(value, startTime + this.toSeconds(rampTime)); - return this; - } - linearRampTo(value, rampTime, startTime) { - startTime = this.toSeconds(startTime); - this.setRampPoint(startTime); - this.linearRampToValueAtTime(value, startTime + this.toSeconds(rampTime)); - return this; - } - targetRampTo(value, rampTime, startTime) { - startTime = this.toSeconds(startTime); - this.setRampPoint(startTime); - this.exponentialApproachValueAtTime(value, startTime, rampTime); - return this; - } - exponentialApproachValueAtTime(value, time, rampTime) { - time = this.toSeconds(time); - rampTime = this.toSeconds(rampTime); - const timeConstant = Math.log(rampTime + 1) / Math.log(200); - this.setTargetAtTime(value, time, timeConstant); - // at 90% start a linear ramp to the final value - this.cancelAndHoldAtTime(time + rampTime * 0.9); - this.linearRampToValueAtTime(value, time + rampTime); - return this; - } - setTargetAtTime(value, startTime, timeConstant) { - const numericValue = this._fromType(value); - // The value will never be able to approach without timeConstant > 0. - assert(isFinite(timeConstant) && timeConstant > 0, "timeConstant must be a number greater than 0"); - const computedTime = this.toSeconds(startTime); - this._assertRange(numericValue); - assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to setTargetAtTime: ${JSON.stringify(value)}, ${JSON.stringify(startTime)}`); - this._events.add({ - constant: timeConstant, - time: computedTime, - type: "setTargetAtTime", - value: numericValue, - }); - this.log(this.units, "setTargetAtTime", value, computedTime, timeConstant); - this._param.setTargetAtTime(numericValue, computedTime, timeConstant); - return this; - } - setValueCurveAtTime(values, startTime, duration, scaling = 1) { - duration = this.toSeconds(duration); - startTime = this.toSeconds(startTime); - const startingValue = this._fromType(values[0]) * scaling; - this.setValueAtTime(this._toType(startingValue), startTime); - const segTime = duration / (values.length - 1); - for (let i = 1; i < values.length; i++) { - const numericValue = this._fromType(values[i]) * scaling; - this.linearRampToValueAtTime(this._toType(numericValue), startTime + i * segTime); - } - return this; - } - cancelScheduledValues(time) { - const computedTime = this.toSeconds(time); - assert(isFinite(computedTime), `Invalid argument to cancelScheduledValues: ${JSON.stringify(time)}`); - this._events.cancel(computedTime); - this._param.cancelScheduledValues(computedTime); - this.log(this.units, "cancelScheduledValues", computedTime); - return this; - } - cancelAndHoldAtTime(time) { - const computedTime = this.toSeconds(time); - const valueAtTime = this._fromType(this.getValueAtTime(computedTime)); - // remove the schedule events - assert(isFinite(computedTime), `Invalid argument to cancelAndHoldAtTime: ${JSON.stringify(time)}`); - this.log(this.units, "cancelAndHoldAtTime", computedTime, "value=" + valueAtTime); - // if there is an event at the given computedTime - // and that even is not a "set" - const before = this._events.get(computedTime); - const after = this._events.getAfter(computedTime); - if (before && EQ(before.time, computedTime)) { - // remove everything after - if (after) { - this._param.cancelScheduledValues(after.time); - this._events.cancel(after.time); - } - else { - this._param.cancelAndHoldAtTime(computedTime); - this._events.cancel(computedTime + this.sampleTime); - } - } - else if (after) { - this._param.cancelScheduledValues(after.time); - // cancel the next event(s) - this._events.cancel(after.time); - if (after.type === "linearRampToValueAtTime") { - this.linearRampToValueAtTime(this._toType(valueAtTime), computedTime); - } - else if (after.type === "exponentialRampToValueAtTime") { - this.exponentialRampToValueAtTime(this._toType(valueAtTime), computedTime); - } - } - // set the value at the given time - this._events.add({ - time: computedTime, - type: "setValueAtTime", - value: valueAtTime, - }); - this._param.setValueAtTime(valueAtTime, computedTime); - return this; - } - rampTo(value, rampTime = 0.1, startTime) { - if (this.units === "frequency" || this.units === "bpm" || this.units === "decibels") { - this.exponentialRampTo(value, rampTime, startTime); - } - else { - this.linearRampTo(value, rampTime, startTime); - } - return this; - } - /** - * Apply all of the previously scheduled events to the passed in Param or AudioParam. - * The applied values will start at the context's current time and schedule - * all of the events which are scheduled on this Param onto the passed in param. - */ - apply(param) { - const now = this.context.currentTime; - // set the param's value at the current time and schedule everything else - param.setValueAtTime(this.getValueAtTime(now), now); - // if the previous event was a curve, then set the rest of it - const previousEvent = this._events.get(now); - if (previousEvent && previousEvent.type === "setTargetAtTime") { - // approx it until the next event with linear ramps - const nextEvent = this._events.getAfter(previousEvent.time); - // or for 2 seconds if there is no event - const endTime = nextEvent ? nextEvent.time : now + 2; - const subdivisions = (endTime - now) / 10; - for (let i = now; i < endTime; i += subdivisions) { - param.linearRampToValueAtTime(this.getValueAtTime(i), i); - } - } - this._events.forEachAfter(this.context.currentTime, event => { - if (event.type === "cancelScheduledValues") { - param.cancelScheduledValues(event.time); - } - else if (event.type === "setTargetAtTime") { - param.setTargetAtTime(event.value, event.time, event.constant); - } - else { - param[event.type](event.value, event.time); - } - }); - return this; - } - /** - * Replace the Param's internal AudioParam. Will apply scheduled curves - * onto the parameter and replace the connections. - */ - setParam(param) { - assert(this._swappable, "The Param must be assigned as 'swappable' in the constructor"); - const input = this.input; - input.disconnect(this._param); - this.apply(param); - this._param = param; - input.connect(this._param); - return this; - } - dispose() { - super.dispose(); - this._events.dispose(); - return this; - } - get defaultValue() { - return this._toType(this._param.defaultValue); - } - //------------------------------------- - // AUTOMATION CURVE CALCULATIONS - // MIT License, copyright (c) 2014 Jordan Santell - //------------------------------------- - // Calculates the the value along the curve produced by setTargetAtTime - _exponentialApproach(t0, v0, v1, timeConstant, t) { - return v1 + (v0 - v1) * Math.exp(-(t - t0) / timeConstant); - } - // Calculates the the value along the curve produced by linearRampToValueAtTime - _linearInterpolate(t0, v0, t1, v1, t) { - return v0 + (v1 - v0) * ((t - t0) / (t1 - t0)); - } - // Calculates the the value along the curve produced by exponentialRampToValueAtTime - _exponentialInterpolate(t0, v0, t1, v1, t) { - return v0 * Math.pow(v1 / v0, (t - t0) / (t1 - t0)); - } -} - -/** - * ToneAudioNode is the base class for classes which process audio. - */ -class ToneAudioNode extends ToneWithContext { - constructor() { - super(...arguments); - /** - * The name of the class - */ - this.name = "ToneAudioNode"; - /** - * List all of the node that must be set to match the ChannelProperties - */ - this._internalChannels = []; - } - /** - * The number of inputs feeding into the AudioNode. - * For source nodes, this will be 0. - * @example - * const node = new Tone.Gain(); - * console.log(node.numberOfInputs); - */ - get numberOfInputs() { - if (isDefined(this.input)) { - if (isAudioParam(this.input) || this.input instanceof Param) { - return 1; - } - else { - return this.input.numberOfInputs; - } - } - else { - return 0; - } - } - /** - * The number of outputs of the AudioNode. - * @example - * const node = new Tone.Gain(); - * console.log(node.numberOfOutputs); - */ - get numberOfOutputs() { - if (isDefined(this.output)) { - return this.output.numberOfOutputs; - } - else { - return 0; - } - } - //------------------------------------- - // AUDIO PROPERTIES - //------------------------------------- - /** - * Used to decide which nodes to get/set properties on - */ - _isAudioNode(node) { - return isDefined(node) && (node instanceof ToneAudioNode || isAudioNode$1(node)); - } - /** - * Get all of the audio nodes (either internal or input/output) which together - * make up how the class node responds to channel input/output - */ - _getInternalNodes() { - const nodeList = this._internalChannels.slice(0); - if (this._isAudioNode(this.input)) { - nodeList.push(this.input); - } - if (this._isAudioNode(this.output)) { - if (this.input !== this.output) { - nodeList.push(this.output); - } - } - return nodeList; - } - /** - * Set the audio options for this node such as channelInterpretation - * channelCount, etc. - * @param options - */ - _setChannelProperties(options) { - const nodeList = this._getInternalNodes(); - nodeList.forEach(node => { - node.channelCount = options.channelCount; - node.channelCountMode = options.channelCountMode; - node.channelInterpretation = options.channelInterpretation; - }); - } - /** - * Get the current audio options for this node such as channelInterpretation - * channelCount, etc. - */ - _getChannelProperties() { - const nodeList = this._getInternalNodes(); - assert(nodeList.length > 0, "ToneAudioNode does not have any internal nodes"); - // use the first node to get properties - // they should all be the same - const node = nodeList[0]; - return { - channelCount: node.channelCount, - channelCountMode: node.channelCountMode, - channelInterpretation: node.channelInterpretation, - }; - } - /** - * channelCount is the number of channels used when up-mixing and down-mixing - * connections to any inputs to the node. The default value is 2 except for - * specific nodes where its value is specially determined. - */ - get channelCount() { - return this._getChannelProperties().channelCount; - } - set channelCount(channelCount) { - const props = this._getChannelProperties(); - // merge it with the other properties - this._setChannelProperties(Object.assign(props, { channelCount })); - } - /** - * channelCountMode determines how channels will be counted when up-mixing and - * down-mixing connections to any inputs to the node. - * The default value is "max". This attribute has no effect for nodes with no inputs. - * * "max" - computedNumberOfChannels is the maximum of the number of channels of all connections to an input. In this mode channelCount is ignored. - * * "clamped-max" - computedNumberOfChannels is determined as for "max" and then clamped to a maximum value of the given channelCount. - * * "explicit" - computedNumberOfChannels is the exact value as specified by the channelCount. - */ - get channelCountMode() { - return this._getChannelProperties().channelCountMode; - } - set channelCountMode(channelCountMode) { - const props = this._getChannelProperties(); - // merge it with the other properties - this._setChannelProperties(Object.assign(props, { channelCountMode })); - } - /** - * channelInterpretation determines how individual channels will be treated - * when up-mixing and down-mixing connections to any inputs to the node. - * The default value is "speakers". - */ - get channelInterpretation() { - return this._getChannelProperties().channelInterpretation; - } - set channelInterpretation(channelInterpretation) { - const props = this._getChannelProperties(); - // merge it with the other properties - this._setChannelProperties(Object.assign(props, { channelInterpretation })); - } - //------------------------------------- - // CONNECTIONS - //------------------------------------- - /** - * connect the output of a ToneAudioNode to an AudioParam, AudioNode, or ToneAudioNode - * @param destination The output to connect to - * @param outputNum The output to connect from - * @param inputNum The input to connect to - */ - connect(destination, outputNum = 0, inputNum = 0) { - connect(this, destination, outputNum, inputNum); - return this; - } - /** - * Connect the output to the context's destination node. - * @example - * const osc = new Tone.Oscillator("C2").start(); - * osc.toDestination(); - */ - toDestination() { - this.connect(this.context.destination); - return this; - } - /** - * Connect the output to the context's destination node. - * See [[toDestination]] - * @deprecated - */ - toMaster() { - warn("toMaster() has been renamed toDestination()"); - return this.toDestination(); - } - /** - * disconnect the output - */ - disconnect(destination, outputNum = 0, inputNum = 0) { - disconnect(this, destination, outputNum, inputNum); - return this; - } - /** - * Connect the output of this node to the rest of the nodes in series. - * @example - * const player = new Tone.Player("https://tonejs.github.io/audio/drum-samples/handdrum-loop.mp3"); - * player.autostart = true; - * const filter = new Tone.AutoFilter(4).start(); - * const distortion = new Tone.Distortion(0.5); - * // connect the player to the filter, distortion and then to the master output - * player.chain(filter, distortion, Tone.Destination); - */ - chain(...nodes) { - connectSeries(this, ...nodes); - return this; - } - /** - * connect the output of this node to the rest of the nodes in parallel. - * @example - * const player = new Tone.Player("https://tonejs.github.io/audio/drum-samples/conga-rhythm.mp3"); - * player.autostart = true; - * const pitchShift = new Tone.PitchShift(4).toDestination(); - * const filter = new Tone.Filter("G5").toDestination(); - * // connect a node to the pitch shift and filter in parallel - * player.fan(pitchShift, filter); - */ - fan(...nodes) { - nodes.forEach(node => this.connect(node)); - return this; - } - /** - * Dispose and disconnect - */ - dispose() { - super.dispose(); - if (isDefined(this.input)) { - if (this.input instanceof ToneAudioNode) { - this.input.dispose(); - } - else if (isAudioNode$1(this.input)) { - this.input.disconnect(); - } - } - if (isDefined(this.output)) { - if (this.output instanceof ToneAudioNode) { - this.output.dispose(); - } - else if (isAudioNode$1(this.output)) { - this.output.disconnect(); - } - } - this._internalChannels = []; - return this; - } -} -//------------------------------------- -// CONNECTIONS -//------------------------------------- -/** - * connect together all of the arguments in series - * @param nodes - */ -function connectSeries(...nodes) { - const first = nodes.shift(); - nodes.reduce((prev, current) => { - if (prev instanceof ToneAudioNode) { - prev.connect(current); - } - else if (isAudioNode$1(prev)) { - connect(prev, current); - } - return current; - }, first); -} -/** - * Connect two nodes together so that signal flows from the - * first node to the second. Optionally specify the input and output channels. - * @param srcNode The source node - * @param dstNode The destination node - * @param outputNumber The output channel of the srcNode - * @param inputNumber The input channel of the dstNode - */ -function connect(srcNode, dstNode, outputNumber = 0, inputNumber = 0) { - assert(isDefined(srcNode), "Cannot connect from undefined node"); - assert(isDefined(dstNode), "Cannot connect to undefined node"); - if (dstNode instanceof ToneAudioNode || isAudioNode$1(dstNode)) { - assert(dstNode.numberOfInputs > 0, "Cannot connect to node with no inputs"); - } - assert(srcNode.numberOfOutputs > 0, "Cannot connect from node with no outputs"); - // resolve the input of the dstNode - while ((dstNode instanceof ToneAudioNode || dstNode instanceof Param)) { - if (isDefined(dstNode.input)) { - dstNode = dstNode.input; - } - } - while (srcNode instanceof ToneAudioNode) { - if (isDefined(srcNode.output)) { - srcNode = srcNode.output; - } - } - // make the connection - if (isAudioParam(dstNode)) { - srcNode.connect(dstNode, outputNumber); - } - else { - srcNode.connect(dstNode, outputNumber, inputNumber); - } -} -/** - * Disconnect a node from all nodes or optionally include a destination node and input/output channels. - * @param srcNode The source node - * @param dstNode The destination node - * @param outputNumber The output channel of the srcNode - * @param inputNumber The input channel of the dstNode - */ -function disconnect(srcNode, dstNode, outputNumber = 0, inputNumber = 0) { - // resolve the destination node - if (isDefined(dstNode)) { - while (dstNode instanceof ToneAudioNode) { - dstNode = dstNode.input; - } - } - // resolve the src node - while (!(isAudioNode$1(srcNode))) { - if (isDefined(srcNode.output)) { - srcNode = srcNode.output; - } - } - if (isAudioParam(dstNode)) { - srcNode.disconnect(dstNode, outputNumber); - } - else if (isAudioNode$1(dstNode)) { - srcNode.disconnect(dstNode, outputNumber, inputNumber); - } - else { - srcNode.disconnect(); - } -} - -/** - * A thin wrapper around the Native Web Audio GainNode. - * The GainNode is a basic building block of the Web Audio - * API and is useful for routing audio and adjusting gains. - * @category Core - * @example - * return Tone.Offline(() => { - * const gainNode = new Tone.Gain(0).toDestination(); - * const osc = new Tone.Oscillator(30).connect(gainNode).start(); - * gainNode.gain.rampTo(1, 0.1); - * gainNode.gain.rampTo(0, 0.4, 0.2); - * }, 0.7, 1); - */ -class Gain extends ToneAudioNode { - constructor() { - super(optionsFromArguments(Gain.getDefaults(), arguments, ["gain", "units"])); - this.name = "Gain"; - /** - * The wrapped GainNode. - */ - this._gainNode = this.context.createGain(); - // input = output - this.input = this._gainNode; - this.output = this._gainNode; - const options = optionsFromArguments(Gain.getDefaults(), arguments, ["gain", "units"]); - this.gain = new Param({ - context: this.context, - convert: options.convert, - param: this._gainNode.gain, - units: options.units, - value: options.gain, - minValue: options.minValue, - maxValue: options.maxValue, - }); - readOnly(this, "gain"); - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - convert: true, - gain: 1, - units: "gain", - }); - } - /** - * Clean up. - */ - dispose() { - super.dispose(); - this._gainNode.disconnect(); - this.gain.dispose(); - return this; - } -} - -/** - * Base class for fire-and-forget nodes - */ -class OneShotSource extends ToneAudioNode { - constructor(options) { - super(options); - /** - * The callback to invoke after the - * source is done playing. - */ - this.onended = noOp; - /** - * The start time - */ - this._startTime = -1; - /** - * The stop time - */ - this._stopTime = -1; - /** - * The id of the timeout - */ - this._timeout = -1; - /** - * The public output node - */ - this.output = new Gain({ - context: this.context, - gain: 0, - }); - /** - * The output gain node. - */ - this._gainNode = this.output; - /** - * Get the playback state at the given time - */ - this.getStateAtTime = function (time) { - const computedTime = this.toSeconds(time); - if (this._startTime !== -1 && - computedTime >= this._startTime && - (this._stopTime === -1 || computedTime <= this._stopTime)) { - return "started"; - } - else { - return "stopped"; - } - }; - this._fadeIn = options.fadeIn; - this._fadeOut = options.fadeOut; - this._curve = options.curve; - this.onended = options.onended; - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - curve: "linear", - fadeIn: 0, - fadeOut: 0, - onended: noOp, - }); - } - /** - * Start the source at the given time - * @param time When to start the source - */ - _startGain(time, gain = 1) { - assert(this._startTime === -1, "Source cannot be started more than once"); - // apply a fade in envelope - const fadeInTime = this.toSeconds(this._fadeIn); - // record the start time - this._startTime = time + fadeInTime; - this._startTime = Math.max(this._startTime, this.context.currentTime); - // schedule the envelope - if (fadeInTime > 0) { - this._gainNode.gain.setValueAtTime(0, time); - if (this._curve === "linear") { - this._gainNode.gain.linearRampToValueAtTime(gain, time + fadeInTime); - } - else { - this._gainNode.gain.exponentialApproachValueAtTime(gain, time, fadeInTime); - } - } - else { - this._gainNode.gain.setValueAtTime(gain, time); - } - return this; - } - /** - * Stop the source node at the given time. - * @param time When to stop the source - */ - stop(time) { - this.log("stop", time); - this._stopGain(this.toSeconds(time)); - return this; - } - /** - * Stop the source at the given time - * @param time When to stop the source - */ - _stopGain(time) { - assert(this._startTime !== -1, "'start' must be called before 'stop'"); - // cancel the previous stop - this.cancelStop(); - // the fadeOut time - const fadeOutTime = this.toSeconds(this._fadeOut); - // schedule the stop callback - this._stopTime = this.toSeconds(time) + fadeOutTime; - this._stopTime = Math.max(this._stopTime, this.context.currentTime); - if (fadeOutTime > 0) { - // start the fade out curve at the given time - if (this._curve === "linear") { - this._gainNode.gain.linearRampTo(0, fadeOutTime, time); - } - else { - this._gainNode.gain.targetRampTo(0, fadeOutTime, time); - } - } - else { - // stop any ongoing ramps, and set the value to 0 - this._gainNode.gain.cancelAndHoldAtTime(time); - this._gainNode.gain.setValueAtTime(0, time); - } - this.context.clearTimeout(this._timeout); - this._timeout = this.context.setTimeout(() => { - // allow additional time for the exponential curve to fully decay - const additionalTail = this._curve === "exponential" ? fadeOutTime * 2 : 0; - this._stopSource(this.now() + additionalTail); - this._onended(); - }, this._stopTime - this.context.currentTime); - return this; - } - /** - * Invoke the onended callback - */ - _onended() { - if (this.onended !== noOp) { - this.onended(this); - // overwrite onended to make sure it only is called once - this.onended = noOp; - // dispose when it's ended to free up for garbage collection only in the online context - if (!this.context.isOffline) { - const disposeCallback = () => this.dispose(); - // @ts-ignore - if (typeof window.requestIdleCallback !== "undefined") { - // @ts-ignore - window.requestIdleCallback(disposeCallback); - } - else { - setTimeout(disposeCallback, 1000); - } - } - } - } - /** - * Get the playback state at the current time - */ - get state() { - return this.getStateAtTime(this.now()); - } - /** - * Cancel a scheduled stop event - */ - cancelStop() { - this.log("cancelStop"); - assert(this._startTime !== -1, "Source is not started"); - // cancel the stop envelope - this._gainNode.gain.cancelScheduledValues(this._startTime + this.sampleTime); - this.context.clearTimeout(this._timeout); - this._stopTime = -1; - return this; - } - dispose() { - super.dispose(); - this._gainNode.disconnect(); - return this; - } -} - -/** - * Wrapper around the native fire-and-forget ConstantSource. - * Adds the ability to reschedule the stop method. - * @category Signal - */ -class ToneConstantSource extends OneShotSource { - constructor() { - super(optionsFromArguments(ToneConstantSource.getDefaults(), arguments, ["offset"])); - this.name = "ToneConstantSource"; - /** - * The signal generator - */ - this._source = this.context.createConstantSource(); - const options = optionsFromArguments(ToneConstantSource.getDefaults(), arguments, ["offset"]); - connect(this._source, this._gainNode); - this.offset = new Param({ - context: this.context, - convert: options.convert, - param: this._source.offset, - units: options.units, - value: options.offset, - minValue: options.minValue, - maxValue: options.maxValue, - }); - } - static getDefaults() { - return Object.assign(OneShotSource.getDefaults(), { - convert: true, - offset: 1, - units: "number", - }); - } - /** - * Start the source node at the given time - * @param time When to start the source - */ - start(time) { - const computedTime = this.toSeconds(time); - this.log("start", computedTime); - this._startGain(computedTime); - this._source.start(computedTime); - return this; - } - _stopSource(time) { - this._source.stop(time); - } - dispose() { - super.dispose(); - if (this.state === "started") { - this.stop(); - } - this._source.disconnect(); - this.offset.dispose(); - return this; - } -} - -/** - * A signal is an audio-rate value. Tone.Signal is a core component of the library. - * Unlike a number, Signals can be scheduled with sample-level accuracy. Tone.Signal - * has all of the methods available to native Web Audio - * [AudioParam](http://webaudio.github.io/web-audio-api/#the-audioparam-interface) - * as well as additional conveniences. Read more about working with signals - * [here](https://github.com/Tonejs/Tone.js/wiki/Signals). - * - * @example - * const osc = new Tone.Oscillator().toDestination().start(); - * // a scheduleable signal which can be connected to control an AudioParam or another Signal - * const signal = new Tone.Signal({ - * value: "C4", - * units: "frequency" - * }).connect(osc.frequency); - * // the scheduled ramp controls the connected signal - * signal.rampTo("C2", 4, "+0.5"); - * @category Signal - */ -class Signal extends ToneAudioNode { - constructor() { - super(optionsFromArguments(Signal.getDefaults(), arguments, ["value", "units"])); - this.name = "Signal"; - /** - * Indicates if the value should be overridden on connection. - */ - this.override = true; - const options = optionsFromArguments(Signal.getDefaults(), arguments, ["value", "units"]); - this.output = this._constantSource = new ToneConstantSource({ - context: this.context, - convert: options.convert, - offset: options.value, - units: options.units, - minValue: options.minValue, - maxValue: options.maxValue, - }); - this._constantSource.start(0); - this.input = this._param = this._constantSource.offset; - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - convert: true, - units: "number", - value: 0, - }); - } - connect(destination, outputNum = 0, inputNum = 0) { - // start it only when connected to something - connectSignal(this, destination, outputNum, inputNum); - return this; - } - dispose() { - super.dispose(); - this._param.dispose(); - this._constantSource.dispose(); - return this; - } - //------------------------------------- - // ABSTRACT PARAM INTERFACE - // just a proxy for the ConstantSourceNode's offset AudioParam - // all docs are generated from AbstractParam.ts - //------------------------------------- - setValueAtTime(value, time) { - this._param.setValueAtTime(value, time); - return this; - } - getValueAtTime(time) { - return this._param.getValueAtTime(time); - } - setRampPoint(time) { - this._param.setRampPoint(time); - return this; - } - linearRampToValueAtTime(value, time) { - this._param.linearRampToValueAtTime(value, time); - return this; - } - exponentialRampToValueAtTime(value, time) { - this._param.exponentialRampToValueAtTime(value, time); - return this; - } - exponentialRampTo(value, rampTime, startTime) { - this._param.exponentialRampTo(value, rampTime, startTime); - return this; - } - linearRampTo(value, rampTime, startTime) { - this._param.linearRampTo(value, rampTime, startTime); - return this; - } - targetRampTo(value, rampTime, startTime) { - this._param.targetRampTo(value, rampTime, startTime); - return this; - } - exponentialApproachValueAtTime(value, time, rampTime) { - this._param.exponentialApproachValueAtTime(value, time, rampTime); - return this; - } - setTargetAtTime(value, startTime, timeConstant) { - this._param.setTargetAtTime(value, startTime, timeConstant); - return this; - } - setValueCurveAtTime(values, startTime, duration, scaling) { - this._param.setValueCurveAtTime(values, startTime, duration, scaling); - return this; - } - cancelScheduledValues(time) { - this._param.cancelScheduledValues(time); - return this; - } - cancelAndHoldAtTime(time) { - this._param.cancelAndHoldAtTime(time); - return this; - } - rampTo(value, rampTime, startTime) { - this._param.rampTo(value, rampTime, startTime); - return this; - } - get value() { - return this._param.value; - } - set value(value) { - this._param.value = value; - } - get convert() { - return this._param.convert; - } - set convert(convert) { - this._param.convert = convert; - } - get units() { - return this._param.units; - } - get overridden() { - return this._param.overridden; - } - set overridden(overridden) { - this._param.overridden = overridden; - } - get maxValue() { - return this._param.maxValue; - } - get minValue() { - return this._param.minValue; - } - /** - * See [[Param.apply]]. - */ - apply(param) { - this._param.apply(param); - return this; - } -} -/** - * When connecting from a signal, it's necessary to zero out the node destination - * node if that node is also a signal. If the destination is not 0, then the values - * will be summed. This method insures that the output of the destination signal will - * be the same as the source signal, making the destination signal a pass through node. - * @param signal The output signal to connect from - * @param destination the destination to connect to - * @param outputNum the optional output number - * @param inputNum the input number - */ -function connectSignal(signal, destination, outputNum, inputNum) { - if (destination instanceof Param || isAudioParam(destination) || - (destination instanceof Signal && destination.override)) { - // cancel changes - destination.cancelScheduledValues(0); - // reset the value - destination.setValueAtTime(0, 0); - // mark the value as overridden - if (destination instanceof Signal) { - destination.overridden = true; - } - } - connect(signal, destination, outputNum, inputNum); -} - -/** - * A Param class just for computing ticks. Similar to the [[Param]] class, - * but offers conversion to BPM values as well as ability to compute tick - * duration and elapsed ticks - */ -class TickParam extends Param { - constructor() { - super(optionsFromArguments(TickParam.getDefaults(), arguments, ["value"])); - this.name = "TickParam"; - /** - * The timeline which tracks all of the automations. - */ - this._events = new Timeline(Infinity); - /** - * The internal holder for the multiplier value - */ - this._multiplier = 1; - const options = optionsFromArguments(TickParam.getDefaults(), arguments, ["value"]); - // set the multiplier - this._multiplier = options.multiplier; - // clear the ticks from the beginning - this._events.cancel(0); - // set an initial event - this._events.add({ - ticks: 0, - time: 0, - type: "setValueAtTime", - value: this._fromType(options.value), - }); - this.setValueAtTime(options.value, 0); - } - static getDefaults() { - return Object.assign(Param.getDefaults(), { - multiplier: 1, - units: "hertz", - value: 1, - }); - } - setTargetAtTime(value, time, constant) { - // approximate it with multiple linear ramps - time = this.toSeconds(time); - this.setRampPoint(time); - const computedValue = this._fromType(value); - // start from previously scheduled value - const prevEvent = this._events.get(time); - const segments = Math.round(Math.max(1 / constant, 1)); - for (let i = 0; i <= segments; i++) { - const segTime = constant * i + time; - const rampVal = this._exponentialApproach(prevEvent.time, prevEvent.value, computedValue, constant, segTime); - this.linearRampToValueAtTime(this._toType(rampVal), segTime); - } - return this; - } - setValueAtTime(value, time) { - const computedTime = this.toSeconds(time); - super.setValueAtTime(value, time); - const event = this._events.get(computedTime); - const previousEvent = this._events.previousEvent(event); - const ticksUntilTime = this._getTicksUntilEvent(previousEvent, computedTime); - event.ticks = Math.max(ticksUntilTime, 0); - return this; - } - linearRampToValueAtTime(value, time) { - const computedTime = this.toSeconds(time); - super.linearRampToValueAtTime(value, time); - const event = this._events.get(computedTime); - const previousEvent = this._events.previousEvent(event); - const ticksUntilTime = this._getTicksUntilEvent(previousEvent, computedTime); - event.ticks = Math.max(ticksUntilTime, 0); - return this; - } - exponentialRampToValueAtTime(value, time) { - // aproximate it with multiple linear ramps - time = this.toSeconds(time); - const computedVal = this._fromType(value); - // start from previously scheduled value - const prevEvent = this._events.get(time); - // approx 10 segments per second - const segments = Math.round(Math.max((time - prevEvent.time) * 10, 1)); - const segmentDur = ((time - prevEvent.time) / segments); - for (let i = 0; i <= segments; i++) { - const segTime = segmentDur * i + prevEvent.time; - const rampVal = this._exponentialInterpolate(prevEvent.time, prevEvent.value, time, computedVal, segTime); - this.linearRampToValueAtTime(this._toType(rampVal), segTime); - } - return this; - } - /** - * Returns the tick value at the time. Takes into account - * any automation curves scheduled on the signal. - * @param event The time to get the tick count at - * @return The number of ticks which have elapsed at the time given any automations. - */ - _getTicksUntilEvent(event, time) { - if (event === null) { - event = { - ticks: 0, - time: 0, - type: "setValueAtTime", - value: 0, - }; - } - else if (isUndef(event.ticks)) { - const previousEvent = this._events.previousEvent(event); - event.ticks = this._getTicksUntilEvent(previousEvent, event.time); - } - const val0 = this._fromType(this.getValueAtTime(event.time)); - let val1 = this._fromType(this.getValueAtTime(time)); - // if it's right on the line, take the previous value - const onTheLineEvent = this._events.get(time); - if (onTheLineEvent && onTheLineEvent.time === time && onTheLineEvent.type === "setValueAtTime") { - val1 = this._fromType(this.getValueAtTime(time - this.sampleTime)); - } - return 0.5 * (time - event.time) * (val0 + val1) + event.ticks; - } - /** - * Returns the tick value at the time. Takes into account - * any automation curves scheduled on the signal. - * @param time The time to get the tick count at - * @return The number of ticks which have elapsed at the time given any automations. - */ - getTicksAtTime(time) { - const computedTime = this.toSeconds(time); - const event = this._events.get(computedTime); - return Math.max(this._getTicksUntilEvent(event, computedTime), 0); - } - /** - * Return the elapsed time of the number of ticks from the given time - * @param ticks The number of ticks to calculate - * @param time The time to get the next tick from - * @return The duration of the number of ticks from the given time in seconds - */ - getDurationOfTicks(ticks, time) { - const computedTime = this.toSeconds(time); - const currentTick = this.getTicksAtTime(time); - return this.getTimeOfTick(currentTick + ticks) - computedTime; - } - /** - * Given a tick, returns the time that tick occurs at. - * @return The time that the tick occurs. - */ - getTimeOfTick(tick) { - const before = this._events.get(tick, "ticks"); - const after = this._events.getAfter(tick, "ticks"); - if (before && before.ticks === tick) { - return before.time; - } - else if (before && after && - after.type === "linearRampToValueAtTime" && - before.value !== after.value) { - const val0 = this._fromType(this.getValueAtTime(before.time)); - const val1 = this._fromType(this.getValueAtTime(after.time)); - const delta = (val1 - val0) / (after.time - before.time); - const k = Math.sqrt(Math.pow(val0, 2) - 2 * delta * (before.ticks - tick)); - const sol1 = (-val0 + k) / delta; - const sol2 = (-val0 - k) / delta; - return (sol1 > 0 ? sol1 : sol2) + before.time; - } - else if (before) { - if (before.value === 0) { - return Infinity; - } - else { - return before.time + (tick - before.ticks) / before.value; - } - } - else { - return tick / this._initialValue; - } - } - /** - * Convert some number of ticks their the duration in seconds accounting - * for any automation curves starting at the given time. - * @param ticks The number of ticks to convert to seconds. - * @param when When along the automation timeline to convert the ticks. - * @return The duration in seconds of the ticks. - */ - ticksToTime(ticks, when) { - return this.getDurationOfTicks(ticks, when); - } - /** - * The inverse of [[ticksToTime]]. Convert a duration in - * seconds to the corresponding number of ticks accounting for any - * automation curves starting at the given time. - * @param duration The time interval to convert to ticks. - * @param when When along the automation timeline to convert the ticks. - * @return The duration in ticks. - */ - timeToTicks(duration, when) { - const computedTime = this.toSeconds(when); - const computedDuration = this.toSeconds(duration); - const startTicks = this.getTicksAtTime(computedTime); - const endTicks = this.getTicksAtTime(computedTime + computedDuration); - return endTicks - startTicks; - } - /** - * Convert from the type when the unit value is BPM - */ - _fromType(val) { - if (this.units === "bpm" && this.multiplier) { - return 1 / (60 / val / this.multiplier); - } - else { - return super._fromType(val); - } - } - /** - * Special case of type conversion where the units === "bpm" - */ - _toType(val) { - if (this.units === "bpm" && this.multiplier) { - return (val / this.multiplier) * 60; - } - else { - return super._toType(val); - } - } - /** - * A multiplier on the bpm value. Useful for setting a PPQ relative to the base frequency value. - */ - get multiplier() { - return this._multiplier; - } - set multiplier(m) { - // get and reset the current value with the new multiplier - // might be necessary to clear all the previous values - const currentVal = this.value; - this._multiplier = m; - this.cancelScheduledValues(0); - this.setValueAtTime(currentVal, 0); - } -} - -/** - * TickSignal extends Tone.Signal, but adds the capability - * to calculate the number of elapsed ticks. exponential and target curves - * are approximated with multiple linear ramps. - * - * Thank you Bruno Dias, H. Sofia Pinto, and David M. Matos, - * for your [WAC paper](https://smartech.gatech.edu/bitstream/handle/1853/54588/WAC2016-49.pdf) - * describing integrating timing functions for tempo calculations. - */ -class TickSignal extends Signal { - constructor() { - super(optionsFromArguments(TickSignal.getDefaults(), arguments, ["value"])); - this.name = "TickSignal"; - const options = optionsFromArguments(TickSignal.getDefaults(), arguments, ["value"]); - this.input = this._param = new TickParam({ - context: this.context, - convert: options.convert, - multiplier: options.multiplier, - param: this._constantSource.offset, - units: options.units, - value: options.value, - }); - } - static getDefaults() { - return Object.assign(Signal.getDefaults(), { - multiplier: 1, - units: "hertz", - value: 1, - }); - } - ticksToTime(ticks, when) { - return this._param.ticksToTime(ticks, when); - } - timeToTicks(duration, when) { - return this._param.timeToTicks(duration, when); - } - getTimeOfTick(tick) { - return this._param.getTimeOfTick(tick); - } - getDurationOfTicks(ticks, time) { - return this._param.getDurationOfTicks(ticks, time); - } - getTicksAtTime(time) { - return this._param.getTicksAtTime(time); - } - /** - * A multiplier on the bpm value. Useful for setting a PPQ relative to the base frequency value. - */ - get multiplier() { - return this._param.multiplier; - } - set multiplier(m) { - this._param.multiplier = m; - } - dispose() { - super.dispose(); - this._param.dispose(); - return this; - } -} - -/** - * Uses [TickSignal](TickSignal) to track elapsed ticks with complex automation curves. - */ -class TickSource extends ToneWithContext { - constructor() { - super(optionsFromArguments(TickSource.getDefaults(), arguments, ["frequency"])); - this.name = "TickSource"; - /** - * The state timeline - */ - this._state = new StateTimeline(); - /** - * The offset values of the ticks - */ - this._tickOffset = new Timeline(); - const options = optionsFromArguments(TickSource.getDefaults(), arguments, ["frequency"]); - this.frequency = new TickSignal({ - context: this.context, - units: options.units, - value: options.frequency, - }); - readOnly(this, "frequency"); - // set the initial state - this._state.setStateAtTime("stopped", 0); - // add the first event - this.setTicksAtTime(0, 0); - } - static getDefaults() { - return Object.assign({ - frequency: 1, - units: "hertz", - }, ToneWithContext.getDefaults()); - } - /** - * Returns the playback state of the source, either "started", "stopped" or "paused". - */ - get state() { - return this.getStateAtTime(this.now()); - } - /** - * Start the clock at the given time. Optionally pass in an offset - * of where to start the tick counter from. - * @param time The time the clock should start - * @param offset The number of ticks to start the source at - */ - start(time, offset) { - const computedTime = this.toSeconds(time); - if (this._state.getValueAtTime(computedTime) !== "started") { - this._state.setStateAtTime("started", computedTime); - if (isDefined(offset)) { - this.setTicksAtTime(offset, computedTime); - } - } - return this; - } - /** - * Stop the clock. Stopping the clock resets the tick counter to 0. - * @param time The time when the clock should stop. - */ - stop(time) { - const computedTime = this.toSeconds(time); - // cancel the previous stop - if (this._state.getValueAtTime(computedTime) === "stopped") { - const event = this._state.get(computedTime); - if (event && event.time > 0) { - this._tickOffset.cancel(event.time); - this._state.cancel(event.time); - } - } - this._state.cancel(computedTime); - this._state.setStateAtTime("stopped", computedTime); - this.setTicksAtTime(0, computedTime); - return this; - } - /** - * Pause the clock. Pausing does not reset the tick counter. - * @param time The time when the clock should stop. - */ - pause(time) { - const computedTime = this.toSeconds(time); - if (this._state.getValueAtTime(computedTime) === "started") { - this._state.setStateAtTime("paused", computedTime); - } - return this; - } - /** - * Cancel start/stop/pause and setTickAtTime events scheduled after the given time. - * @param time When to clear the events after - */ - cancel(time) { - time = this.toSeconds(time); - this._state.cancel(time); - this._tickOffset.cancel(time); - return this; - } - /** - * Get the elapsed ticks at the given time - * @param time When to get the tick value - * @return The number of ticks - */ - getTicksAtTime(time) { - const computedTime = this.toSeconds(time); - const stopEvent = this._state.getLastState("stopped", computedTime); - // this event allows forEachBetween to iterate until the current time - const tmpEvent = { state: "paused", time: computedTime }; - this._state.add(tmpEvent); - // keep track of the previous offset event - let lastState = stopEvent; - let elapsedTicks = 0; - // iterate through all the events since the last stop - this._state.forEachBetween(stopEvent.time, computedTime + this.sampleTime, e => { - let periodStartTime = lastState.time; - // if there is an offset event in this period use that - const offsetEvent = this._tickOffset.get(e.time); - if (offsetEvent && offsetEvent.time >= lastState.time) { - elapsedTicks = offsetEvent.ticks; - periodStartTime = offsetEvent.time; - } - if (lastState.state === "started" && e.state !== "started") { - elapsedTicks += this.frequency.getTicksAtTime(e.time) - this.frequency.getTicksAtTime(periodStartTime); - } - lastState = e; - }); - // remove the temporary event - this._state.remove(tmpEvent); - // return the ticks - return elapsedTicks; - } - /** - * The number of times the callback was invoked. Starts counting at 0 - * and increments after the callback was invoked. Returns -1 when stopped. - */ - get ticks() { - return this.getTicksAtTime(this.now()); - } - set ticks(t) { - this.setTicksAtTime(t, this.now()); - } - /** - * The time since ticks=0 that the TickSource has been running. Accounts - * for tempo curves - */ - get seconds() { - return this.getSecondsAtTime(this.now()); - } - set seconds(s) { - const now = this.now(); - const ticks = this.frequency.timeToTicks(s, now); - this.setTicksAtTime(ticks, now); - } - /** - * Return the elapsed seconds at the given time. - * @param time When to get the elapsed seconds - * @return The number of elapsed seconds - */ - getSecondsAtTime(time) { - time = this.toSeconds(time); - const stopEvent = this._state.getLastState("stopped", time); - // this event allows forEachBetween to iterate until the current time - const tmpEvent = { state: "paused", time }; - this._state.add(tmpEvent); - // keep track of the previous offset event - let lastState = stopEvent; - let elapsedSeconds = 0; - // iterate through all the events since the last stop - this._state.forEachBetween(stopEvent.time, time + this.sampleTime, e => { - let periodStartTime = lastState.time; - // if there is an offset event in this period use that - const offsetEvent = this._tickOffset.get(e.time); - if (offsetEvent && offsetEvent.time >= lastState.time) { - elapsedSeconds = offsetEvent.seconds; - periodStartTime = offsetEvent.time; - } - if (lastState.state === "started" && e.state !== "started") { - elapsedSeconds += e.time - periodStartTime; - } - lastState = e; - }); - // remove the temporary event - this._state.remove(tmpEvent); - // return the ticks - return elapsedSeconds; - } - /** - * Set the clock's ticks at the given time. - * @param ticks The tick value to set - * @param time When to set the tick value - */ - setTicksAtTime(ticks, time) { - time = this.toSeconds(time); - this._tickOffset.cancel(time); - this._tickOffset.add({ - seconds: this.frequency.getDurationOfTicks(ticks, time), - ticks, - time, - }); - return this; - } - /** - * Returns the scheduled state at the given time. - * @param time The time to query. - */ - getStateAtTime(time) { - time = this.toSeconds(time); - return this._state.getValueAtTime(time); - } - /** - * Get the time of the given tick. The second argument - * is when to test before. Since ticks can be set (with setTicksAtTime) - * there may be multiple times for a given tick value. - * @param tick The tick number. - * @param before When to measure the tick value from. - * @return The time of the tick - */ - getTimeOfTick(tick, before = this.now()) { - const offset = this._tickOffset.get(before); - const event = this._state.get(before); - const startTime = Math.max(offset.time, event.time); - const absoluteTicks = this.frequency.getTicksAtTime(startTime) + tick - offset.ticks; - return this.frequency.getTimeOfTick(absoluteTicks); - } - /** - * Invoke the callback event at all scheduled ticks between the - * start time and the end time - * @param startTime The beginning of the search range - * @param endTime The end of the search range - * @param callback The callback to invoke with each tick - */ - forEachTickBetween(startTime, endTime, callback) { - // only iterate through the sections where it is "started" - let lastStateEvent = this._state.get(startTime); - this._state.forEachBetween(startTime, endTime, event => { - if (lastStateEvent && lastStateEvent.state === "started" && event.state !== "started") { - this.forEachTickBetween(Math.max(lastStateEvent.time, startTime), event.time - this.sampleTime, callback); - } - lastStateEvent = event; - }); - let error = null; - if (lastStateEvent && lastStateEvent.state === "started") { - const maxStartTime = Math.max(lastStateEvent.time, startTime); - // figure out the difference between the frequency ticks and the - const startTicks = this.frequency.getTicksAtTime(maxStartTime); - const ticksAtStart = this.frequency.getTicksAtTime(lastStateEvent.time); - const diff = startTicks - ticksAtStart; - let offset = Math.ceil(diff) - diff; - // guard against floating point issues - offset = EQ(offset, 1) ? 0 : offset; - let nextTickTime = this.frequency.getTimeOfTick(startTicks + offset); - while (nextTickTime < endTime) { - try { - callback(nextTickTime, Math.round(this.getTicksAtTime(nextTickTime))); - } - catch (e) { - error = e; - break; - } - nextTickTime += this.frequency.getDurationOfTicks(1, nextTickTime); - } - } - if (error) { - throw error; - } - return this; - } - /** - * Clean up - */ - dispose() { - super.dispose(); - this._state.dispose(); - this._tickOffset.dispose(); - this.frequency.dispose(); - return this; - } -} - -/** - * A sample accurate clock which provides a callback at the given rate. - * While the callback is not sample-accurate (it is still susceptible to - * loose JS timing), the time passed in as the argument to the callback - * is precise. For most applications, it is better to use Tone.Transport - * instead of the Clock by itself since you can synchronize multiple callbacks. - * @example - * // the callback will be invoked approximately once a second - * // and will print the time exactly once a second apart. - * const clock = new Tone.Clock(time => { - * console.log(time); - * }, 1); - * clock.start(); - * @category Core - */ -class Clock extends ToneWithContext { - constructor() { - super(optionsFromArguments(Clock.getDefaults(), arguments, ["callback", "frequency"])); - this.name = "Clock"; - /** - * The callback function to invoke at the scheduled tick. - */ - this.callback = noOp; - /** - * The last time the loop callback was invoked - */ - this._lastUpdate = 0; - /** - * Keep track of the playback state - */ - this._state = new StateTimeline("stopped"); - /** - * Context bound reference to the _loop method - * This is necessary to remove the event in the end. - */ - this._boundLoop = this._loop.bind(this); - const options = optionsFromArguments(Clock.getDefaults(), arguments, ["callback", "frequency"]); - this.callback = options.callback; - this._tickSource = new TickSource({ - context: this.context, - frequency: options.frequency, - units: options.units, - }); - this._lastUpdate = 0; - this.frequency = this._tickSource.frequency; - readOnly(this, "frequency"); - // add an initial state - this._state.setStateAtTime("stopped", 0); - // bind a callback to the worker thread - this.context.on("tick", this._boundLoop); - } - static getDefaults() { - return Object.assign(ToneWithContext.getDefaults(), { - callback: noOp, - frequency: 1, - units: "hertz", - }); - } - /** - * Returns the playback state of the source, either "started", "stopped" or "paused". - */ - get state() { - return this._state.getValueAtTime(this.now()); - } - /** - * Start the clock at the given time. Optionally pass in an offset - * of where to start the tick counter from. - * @param time The time the clock should start - * @param offset Where the tick counter starts counting from. - */ - start(time, offset) { - // make sure the context is running - assertContextRunning(this.context); - // start the loop - const computedTime = this.toSeconds(time); - this.log("start", computedTime); - if (this._state.getValueAtTime(computedTime) !== "started") { - this._state.setStateAtTime("started", computedTime); - this._tickSource.start(computedTime, offset); - if (computedTime < this._lastUpdate) { - this.emit("start", computedTime, offset); - } - } - return this; - } - /** - * Stop the clock. Stopping the clock resets the tick counter to 0. - * @param time The time when the clock should stop. - * @example - * const clock = new Tone.Clock(time => { - * console.log(time); - * }, 1); - * clock.start(); - * // stop the clock after 10 seconds - * clock.stop("+10"); - */ - stop(time) { - const computedTime = this.toSeconds(time); - this.log("stop", computedTime); - this._state.cancel(computedTime); - this._state.setStateAtTime("stopped", computedTime); - this._tickSource.stop(computedTime); - if (computedTime < this._lastUpdate) { - this.emit("stop", computedTime); - } - return this; - } - /** - * Pause the clock. Pausing does not reset the tick counter. - * @param time The time when the clock should stop. - */ - pause(time) { - const computedTime = this.toSeconds(time); - if (this._state.getValueAtTime(computedTime) === "started") { - this._state.setStateAtTime("paused", computedTime); - this._tickSource.pause(computedTime); - if (computedTime < this._lastUpdate) { - this.emit("pause", computedTime); - } - } - return this; - } - /** - * The number of times the callback was invoked. Starts counting at 0 - * and increments after the callback was invoked. - */ - get ticks() { - return Math.ceil(this.getTicksAtTime(this.now())); - } - set ticks(t) { - this._tickSource.ticks = t; - } - /** - * The time since ticks=0 that the Clock has been running. Accounts for tempo curves - */ - get seconds() { - return this._tickSource.seconds; - } - set seconds(s) { - this._tickSource.seconds = s; - } - /** - * Return the elapsed seconds at the given time. - * @param time When to get the elapsed seconds - * @return The number of elapsed seconds - */ - getSecondsAtTime(time) { - return this._tickSource.getSecondsAtTime(time); - } - /** - * Set the clock's ticks at the given time. - * @param ticks The tick value to set - * @param time When to set the tick value - */ - setTicksAtTime(ticks, time) { - this._tickSource.setTicksAtTime(ticks, time); - return this; - } - /** - * Get the time of the given tick. The second argument - * is when to test before. Since ticks can be set (with setTicksAtTime) - * there may be multiple times for a given tick value. - * @param tick The tick number. - * @param before When to measure the tick value from. - * @return The time of the tick - */ - getTimeOfTick(tick, before = this.now()) { - return this._tickSource.getTimeOfTick(tick, before); - } - /** - * Get the clock's ticks at the given time. - * @param time When to get the tick value - * @return The tick value at the given time. - */ - getTicksAtTime(time) { - return this._tickSource.getTicksAtTime(time); - } - /** - * Get the time of the next tick - * @param offset The tick number. - */ - nextTickTime(offset, when) { - const computedTime = this.toSeconds(when); - const currentTick = this.getTicksAtTime(computedTime); - return this._tickSource.getTimeOfTick(currentTick + offset, computedTime); - } - /** - * The scheduling loop. - */ - _loop() { - const startTime = this._lastUpdate; - const endTime = this.now(); - this._lastUpdate = endTime; - this.log("loop", startTime, endTime); - if (startTime !== endTime) { - // the state change events - this._state.forEachBetween(startTime, endTime, e => { - switch (e.state) { - case "started": - const offset = this._tickSource.getTicksAtTime(e.time); - this.emit("start", e.time, offset); - break; - case "stopped": - if (e.time !== 0) { - this.emit("stop", e.time); - } - break; - case "paused": - this.emit("pause", e.time); - break; - } - }); - // the tick callbacks - this._tickSource.forEachTickBetween(startTime, endTime, (time, ticks) => { - this.callback(time, ticks); - }); - } - } - /** - * Returns the scheduled state at the given time. - * @param time The time to query. - * @return The name of the state input in setStateAtTime. - * @example - * const clock = new Tone.Clock(); - * clock.start("+0.1"); - * clock.getStateAtTime("+0.1"); // returns "started" - */ - getStateAtTime(time) { - const computedTime = this.toSeconds(time); - return this._state.getValueAtTime(computedTime); - } - /** - * Clean up - */ - dispose() { - super.dispose(); - this.context.off("tick", this._boundLoop); - this._tickSource.dispose(); - this._state.dispose(); - return this; - } -} -Emitter.mixin(Clock); +import { T as ToneAudioNode, o as optionsFromArguments, P as Param, r as readOnly, g as getContext, _ as __awaiter, O as OfflineContext, s as setContext, c as ToneAudioBuffer, d as Source, e as assert, b as ToneBufferSource, V as Volume, f as isNumber, h as isDefined, j as connect, k as Signal, G as Gain, l as connectSeries, m as SignalOperator, n as Multiply, p as disconnect, q as Oscillator, A as AudioToGain, t as connectSignal, a as ToneAudioBuffers, u as noOp, v as Player, C as Clock, w as intervalToFrequencyRatio, x as assertRange, y as defaultArg, W as WaveShaper, z as ToneConstantSource, B as TransportTimeClass, D as Monophonic, E as Synth, H as omitFromObject, I as OmniOscillator, J as Envelope, K as writable, L as AmplitudeEnvelope, N as deepMerge, Q as FMOscillator, R as Instrument, U as getWorkletGlobalScope, X as workletName, Y as warn, Z as MidiClass, $ as isArray, a0 as ToneWithContext, a1 as StateTimeline, a2 as TicksClass, a3 as isBoolean, a4 as isObject, a5 as isUndef, a6 as clamp, i as isString, a7 as Panner, a8 as gainToDb, a9 as dbToGain, aa as workletName$1, ab as ToneOscillatorNode, ac as theWindow } from './common/index-b6fc655f.js'; +export { aL as AMOscillator, L as AmplitudeEnvelope, A as AudioToGain, aB as BaseContext, as as Buffer, au as BufferSource, at as Buffers, aP as Channel, C as Clock, aA as Context, ak as Destination, ao as Draw, aH as Emitter, J as Envelope, Q as FMOscillator, aN as FatOscillator, F as Frequency, aC as FrequencyClass, G as Gain, aI as IntervalTimeline, am as Listener, al as Master, ae as MembraneSynth, M as Midi, Z as MidiClass, n as Multiply, O as OfflineContext, I as OmniOscillator, q as Oscillator, aO as PWMOscillator, aQ as PanVol, a7 as Panner, P as Param, v as Player, aM as PulseOscillator, S as Sampler, k as Signal, aR as Solo, a1 as StateTimeline, E as Synth, aF as Ticks, a2 as TicksClass, aE as Time, aD as TimeClass, aJ as Timeline, c as ToneAudioBuffer, a as ToneAudioBuffers, T as ToneAudioNode, b as ToneBufferSource, ab as ToneOscillatorNode, ai as Transport, aG as TransportTime, B as TransportTimeClass, V as Volume, W as WaveShaper, j as connect, l as connectSeries, t as connectSignal, aq as context, a9 as dbToGain, ax as debug, y as defaultArg, p as disconnect, ay as ftom, a8 as gainToDb, g as getContext, af as getDestination, ap as getDraw, an as getListener, aj as getTransport, ah as immediate, w as intervalToFrequencyRatio, $ as isArray, a3 as isBoolean, h as isDefined, aK as isFunction, ad as isNote, f as isNumber, a4 as isObject, i as isString, a5 as isUndef, ar as loaded, az as mtof, ag as now, o as optionsFromArguments, s as setContext, av as start, aw as supported, aS as version } from './common/index-b6fc655f.js'; /** * Wrapper around Web Audio's native [DelayNode](http://webaudio.github.io/web-audio-api/#the-delaynode-interface). @@ -13470,2269 +107,10 @@ function Offline(callback, duration, channels = 2, sampleRate = getContext().sam }); } -/** - * A data structure for holding multiple buffers in a Map-like datastructure. - * - * @example - * const pianoSamples = new Tone.ToneAudioBuffers({ - * A1: "https://tonejs.github.io/audio/casio/A1.mp3", - * A2: "https://tonejs.github.io/audio/casio/A2.mp3", - * }, () => { - * const player = new Tone.Player().toDestination(); - * // play one of the samples when they all load - * player.buffer = pianoSamples.get("A2"); - * player.start(); - * }); - * @example - * // To pass in additional parameters in the second parameter - * const buffers = new Tone.ToneAudioBuffers({ - * urls: { - * A1: "A1.mp3", - * A2: "A2.mp3", - * }, - * onload: () => console.log("loaded"), - * baseUrl: "https://tonejs.github.io/audio/casio/" - * }); - * @category Core - */ -class ToneAudioBuffers extends Tone { - constructor() { - super(); - this.name = "ToneAudioBuffers"; - /** - * All of the buffers - */ - this._buffers = new Map(); - /** - * Keep track of the number of loaded buffers - */ - this._loadingCount = 0; - const options = optionsFromArguments(ToneAudioBuffers.getDefaults(), arguments, ["urls", "onload", "baseUrl"], "urls"); - this.baseUrl = options.baseUrl; - // add each one - Object.keys(options.urls).forEach(name => { - this._loadingCount++; - const url = options.urls[name]; - this.add(name, url, this._bufferLoaded.bind(this, options.onload), options.onerror); - }); - } - static getDefaults() { - return { - baseUrl: "", - onerror: noOp, - onload: noOp, - urls: {}, - }; - } - /** - * True if the buffers object has a buffer by that name. - * @param name The key or index of the buffer. - */ - has(name) { - return this._buffers.has(name.toString()); - } - /** - * Get a buffer by name. If an array was loaded, - * then use the array index. - * @param name The key or index of the buffer. - */ - get(name) { - assert(this.has(name), `ToneAudioBuffers has no buffer named: ${name}`); - return this._buffers.get(name.toString()); - } - /** - * A buffer was loaded. decrement the counter. - */ - _bufferLoaded(callback) { - this._loadingCount--; - if (this._loadingCount === 0 && callback) { - callback(); - } - } - /** - * If the buffers are loaded or not - */ - get loaded() { - return Array.from(this._buffers).every(([_, buffer]) => buffer.loaded); - } - /** - * Add a buffer by name and url to the Buffers - * @param name A unique name to give the buffer - * @param url Either the url of the bufer, or a buffer which will be added with the given name. - * @param callback The callback to invoke when the url is loaded. - * @param onerror Invoked if the buffer can't be loaded - */ - add(name, url, callback = noOp, onerror = noOp) { - if (isString(url)) { - this._buffers.set(name.toString(), new ToneAudioBuffer(this.baseUrl + url, callback, onerror)); - } - else { - this._buffers.set(name.toString(), new ToneAudioBuffer(url, callback, onerror)); - } - return this; - } - dispose() { - super.dispose(); - this._buffers.forEach(buffer => buffer.dispose()); - this._buffers.clear(); - return this; - } -} - -/** - * Midi is a primitive type for encoding Time values. - * Midi can be constructed with or without the `new` keyword. Midi can be passed - * into the parameter of any method which takes time as an argument. - * @category Unit - */ -class MidiClass extends FrequencyClass { - constructor() { - super(...arguments); - this.name = "MidiClass"; - this.defaultUnits = "midi"; - } - /** - * Returns the value of a frequency in the current units - */ - _frequencyToUnits(freq) { - return ftom(super._frequencyToUnits(freq)); - } - /** - * Returns the value of a tick in the current time units - */ - _ticksToUnits(ticks) { - return ftom(super._ticksToUnits(ticks)); - } - /** - * Return the value of the beats in the current units - */ - _beatsToUnits(beats) { - return ftom(super._beatsToUnits(beats)); - } - /** - * Returns the value of a second in the current units - */ - _secondsToUnits(seconds) { - return ftom(super._secondsToUnits(seconds)); - } - /** - * Return the value of the frequency as a MIDI note - * @example - * Tone.Midi(60).toMidi(); // 60 - */ - toMidi() { - return this.valueOf(); - } - /** - * Return the value of the frequency as a MIDI note - * @example - * Tone.Midi(60).toFrequency(); // 261.6255653005986 - */ - toFrequency() { - return mtof(this.toMidi()); - } - /** - * Transposes the frequency by the given number of semitones. - * @return A new transposed MidiClass - * @example - * Tone.Midi("A4").transpose(3); // "C5" - */ - transpose(interval) { - return new MidiClass(this.context, this.toMidi() + interval); - } -} -/** - * Convert a value into a FrequencyClass object. - * @category Unit - */ -function Midi(value, units) { - return new MidiClass(getContext(), value, units); -} - -/** - * Ticks is a primitive type for encoding Time values. - * Ticks can be constructed with or without the `new` keyword. Ticks can be passed - * into the parameter of any method which takes time as an argument. - * @example - * const t = Tone.Ticks("4n"); // a quarter note as ticks - * @category Unit - */ -class TicksClass extends TransportTimeClass { - constructor() { - super(...arguments); - this.name = "Ticks"; - this.defaultUnits = "i"; - } - /** - * Get the current time in the given units - */ - _now() { - return this.context.transport.ticks; - } - /** - * Return the value of the beats in the current units - */ - _beatsToUnits(beats) { - return this._getPPQ() * beats; - } - /** - * Returns the value of a second in the current units - */ - _secondsToUnits(seconds) { - return Math.floor(seconds / (60 / this._getBpm()) * this._getPPQ()); - } - /** - * Returns the value of a tick in the current time units - */ - _ticksToUnits(ticks) { - return ticks; - } - /** - * Return the time in ticks - */ - toTicks() { - return this.valueOf(); - } - /** - * Return the time in seconds - */ - toSeconds() { - return (this.valueOf() / this._getPPQ()) * (60 / this._getBpm()); - } -} -/** - * Convert a time representation to ticks - * @category Unit - */ -function Ticks(value, units) { - return new TicksClass(getContext(), value, units); -} - -/** - * Draw is useful for synchronizing visuals and audio events. - * Callbacks from Tone.Transport or any of the Tone.Event classes - * always happen _before_ the scheduled time and are not synchronized - * to the animation frame so they are not good for triggering tightly - * synchronized visuals and sound. Draw makes it easy to schedule - * callbacks using the AudioContext time and uses requestAnimationFrame. - * @example - * Tone.Transport.schedule((time) => { - * // use the time argument to schedule a callback with Draw - * Tone.Draw.schedule(() => { - * // do drawing or DOM manipulation here - * console.log(time); - * }, time); - * }, "+0.5"); - * Tone.Transport.start(); - * @category Core - */ -class Draw extends ToneWithContext { - constructor() { - super(...arguments); - this.name = "Draw"; - /** - * The duration after which events are not invoked. - */ - this.expiration = 0.25; - /** - * The amount of time before the scheduled time - * that the callback can be invoked. Default is - * half the time of an animation frame (0.008 seconds). - */ - this.anticipation = 0.008; - /** - * All of the events. - */ - this._events = new Timeline(); - /** - * The draw loop - */ - this._boundDrawLoop = this._drawLoop.bind(this); - /** - * The animation frame id - */ - this._animationFrame = -1; - } - /** - * Schedule a function at the given time to be invoked - * on the nearest animation frame. - * @param callback Callback is invoked at the given time. - * @param time The time relative to the AudioContext time to invoke the callback. - * @example - * Tone.Transport.scheduleRepeat(time => { - * Tone.Draw.schedule(() => console.log(time), time); - * }, 1); - * Tone.Transport.start(); - */ - schedule(callback, time) { - this._events.add({ - callback, - time: this.toSeconds(time), - }); - // start the draw loop on the first event - if (this._events.length === 1) { - this._animationFrame = requestAnimationFrame(this._boundDrawLoop); - } - return this; - } - /** - * Cancel events scheduled after the given time - * @param after Time after which scheduled events will be removed from the scheduling timeline. - */ - cancel(after) { - this._events.cancel(this.toSeconds(after)); - return this; - } - /** - * The draw loop - */ - _drawLoop() { - const now = this.context.currentTime; - while (this._events.length && this._events.peek().time - this.anticipation <= now) { - const event = this._events.shift(); - if (event && now - event.time <= this.expiration) { - event.callback(); - } - } - if (this._events.length > 0) { - this._animationFrame = requestAnimationFrame(this._boundDrawLoop); - } - } - dispose() { - super.dispose(); - this._events.dispose(); - cancelAnimationFrame(this._animationFrame); - return this; - } -} -//------------------------------------- -// INITIALIZATION -//------------------------------------- -onContextInit(context => { - context.draw = new Draw({ context }); -}); -onContextClose(context => { - context.draw.dispose(); -}); - -/** - * Similar to Tone.Timeline, but all events represent - * intervals with both "time" and "duration" times. The - * events are placed in a tree structure optimized - * for querying an intersection point with the timeline - * events. Internally uses an [Interval Tree](https://en.wikipedia.org/wiki/Interval_tree) - * to represent the data. - */ -class IntervalTimeline extends Tone { - constructor() { - super(...arguments); - this.name = "IntervalTimeline"; - /** - * The root node of the inteval tree - */ - this._root = null; - /** - * Keep track of the length of the timeline. - */ - this._length = 0; - } - /** - * The event to add to the timeline. All events must - * have a time and duration value - * @param event The event to add to the timeline - */ - add(event) { - assert(isDefined(event.time), "Events must have a time property"); - assert(isDefined(event.duration), "Events must have a duration parameter"); - event.time = event.time.valueOf(); - let node = new IntervalNode(event.time, event.time + event.duration, event); - if (this._root === null) { - this._root = node; - } - else { - this._root.insert(node); - } - this._length++; - // Restructure tree to be balanced - while (node !== null) { - node.updateHeight(); - node.updateMax(); - this._rebalance(node); - node = node.parent; - } - return this; - } - /** - * Remove an event from the timeline. - * @param event The event to remove from the timeline - */ - remove(event) { - if (this._root !== null) { - const results = []; - this._root.search(event.time, results); - for (const node of results) { - if (node.event === event) { - this._removeNode(node); - this._length--; - break; - } - } - } - return this; - } - /** - * The number of items in the timeline. - * @readOnly - */ - get length() { - return this._length; - } - /** - * Remove events whose time time is after the given time - * @param after The time to query. - */ - cancel(after) { - this.forEachFrom(after, event => this.remove(event)); - return this; - } - /** - * Set the root node as the given node - */ - _setRoot(node) { - this._root = node; - if (this._root !== null) { - this._root.parent = null; - } - } - /** - * Replace the references to the node in the node's parent - * with the replacement node. - */ - _replaceNodeInParent(node, replacement) { - if (node.parent !== null) { - if (node.isLeftChild()) { - node.parent.left = replacement; - } - else { - node.parent.right = replacement; - } - this._rebalance(node.parent); - } - else { - this._setRoot(replacement); - } - } - /** - * Remove the node from the tree and replace it with - * a successor which follows the schema. - */ - _removeNode(node) { - if (node.left === null && node.right === null) { - this._replaceNodeInParent(node, null); - } - else if (node.right === null) { - this._replaceNodeInParent(node, node.left); - } - else if (node.left === null) { - this._replaceNodeInParent(node, node.right); - } - else { - const balance = node.getBalance(); - let replacement; - let temp = null; - if (balance > 0) { - if (node.left.right === null) { - replacement = node.left; - replacement.right = node.right; - temp = replacement; - } - else { - replacement = node.left.right; - while (replacement.right !== null) { - replacement = replacement.right; - } - if (replacement.parent) { - replacement.parent.right = replacement.left; - temp = replacement.parent; - replacement.left = node.left; - replacement.right = node.right; - } - } - } - else if (node.right.left === null) { - replacement = node.right; - replacement.left = node.left; - temp = replacement; - } - else { - replacement = node.right.left; - while (replacement.left !== null) { - replacement = replacement.left; - } - if (replacement.parent) { - replacement.parent.left = replacement.right; - temp = replacement.parent; - replacement.left = node.left; - replacement.right = node.right; - } - } - if (node.parent !== null) { - if (node.isLeftChild()) { - node.parent.left = replacement; - } - else { - node.parent.right = replacement; - } - } - else { - this._setRoot(replacement); - } - if (temp) { - this._rebalance(temp); - } - } - node.dispose(); - } - /** - * Rotate the tree to the left - */ - _rotateLeft(node) { - const parent = node.parent; - const isLeftChild = node.isLeftChild(); - // Make node.right the new root of this sub tree (instead of node) - const pivotNode = node.right; - if (pivotNode) { - node.right = pivotNode.left; - pivotNode.left = node; - } - if (parent !== null) { - if (isLeftChild) { - parent.left = pivotNode; - } - else { - parent.right = pivotNode; - } - } - else { - this._setRoot(pivotNode); - } - } - /** - * Rotate the tree to the right - */ - _rotateRight(node) { - const parent = node.parent; - const isLeftChild = node.isLeftChild(); - // Make node.left the new root of this sub tree (instead of node) - const pivotNode = node.left; - if (pivotNode) { - node.left = pivotNode.right; - pivotNode.right = node; - } - if (parent !== null) { - if (isLeftChild) { - parent.left = pivotNode; - } - else { - parent.right = pivotNode; - } - } - else { - this._setRoot(pivotNode); - } - } - /** - * Balance the BST - */ - _rebalance(node) { - const balance = node.getBalance(); - if (balance > 1 && node.left) { - if (node.left.getBalance() < 0) { - this._rotateLeft(node.left); - } - else { - this._rotateRight(node); - } - } - else if (balance < -1 && node.right) { - if (node.right.getBalance() > 0) { - this._rotateRight(node.right); - } - else { - this._rotateLeft(node); - } - } - } - /** - * Get an event whose time and duration span the give time. Will - * return the match whose "time" value is closest to the given time. - * @return The event which spans the desired time - */ - get(time) { - if (this._root !== null) { - const results = []; - this._root.search(time, results); - if (results.length > 0) { - let max = results[0]; - for (let i = 1; i < results.length; i++) { - if (results[i].low > max.low) { - max = results[i]; - } - } - return max.event; - } - } - return null; - } - /** - * Iterate over everything in the timeline. - * @param callback The callback to invoke with every item - */ - forEach(callback) { - if (this._root !== null) { - const allNodes = []; - this._root.traverse(node => allNodes.push(node)); - allNodes.forEach(node => { - if (node.event) { - callback(node.event); - } - }); - } - return this; - } - /** - * Iterate over everything in the array in which the given time - * overlaps with the time and duration time of the event. - * @param time The time to check if items are overlapping - * @param callback The callback to invoke with every item - */ - forEachAtTime(time, callback) { - if (this._root !== null) { - const results = []; - this._root.search(time, results); - results.forEach(node => { - if (node.event) { - callback(node.event); - } - }); - } - return this; - } - /** - * Iterate over everything in the array in which the time is greater - * than or equal to the given time. - * @param time The time to check if items are before - * @param callback The callback to invoke with every item - */ - forEachFrom(time, callback) { - if (this._root !== null) { - const results = []; - this._root.searchAfter(time, results); - results.forEach(node => { - if (node.event) { - callback(node.event); - } - }); - } - return this; - } - /** - * Clean up - */ - dispose() { - super.dispose(); - if (this._root !== null) { - this._root.traverse(node => node.dispose()); - } - this._root = null; - return this; - } -} -//------------------------------------- -// INTERVAL NODE HELPER -//------------------------------------- -/** - * Represents a node in the binary search tree, with the addition - * of a "high" value which keeps track of the highest value of - * its children. - * References: - * https://brooknovak.wordpress.com/2013/12/07/augmented-interval-tree-in-c/ - * http://www.mif.vu.lt/~valdas/ALGORITMAI/LITERATURA/Cormen/Cormen.pdf - * @param low - * @param high - */ -class IntervalNode { - constructor(low, high, event) { - // the nodes to the left - this._left = null; - // the nodes to the right - this._right = null; - // the parent node - this.parent = null; - // the number of child nodes - this.height = 0; - this.event = event; - // the low value - this.low = low; - // the high value - this.high = high; - // the high value for this and all child nodes - this.max = this.high; - } - /** - * Insert a node into the correct spot in the tree - */ - insert(node) { - if (node.low <= this.low) { - if (this.left === null) { - this.left = node; - } - else { - this.left.insert(node); - } - } - else if (this.right === null) { - this.right = node; - } - else { - this.right.insert(node); - } - } - /** - * Search the tree for nodes which overlap - * with the given point - * @param point The point to query - * @param results The array to put the results - */ - search(point, results) { - // If p is to the right of the rightmost point of any interval - // in this node and all children, there won't be any matches. - if (point > this.max) { - return; - } - // Search left children - if (this.left !== null) { - this.left.search(point, results); - } - // Check this node - if (this.low <= point && this.high > point) { - results.push(this); - } - // If p is to the left of the time of this interval, - // then it can't be in any child to the right. - if (this.low > point) { - return; - } - // Search right children - if (this.right !== null) { - this.right.search(point, results); - } - } - /** - * Search the tree for nodes which are less - * than the given point - * @param point The point to query - * @param results The array to put the results - */ - searchAfter(point, results) { - // Check this node - if (this.low >= point) { - results.push(this); - if (this.left !== null) { - this.left.searchAfter(point, results); - } - } - // search the right side - if (this.right !== null) { - this.right.searchAfter(point, results); - } - } - /** - * Invoke the callback on this element and both it's branches - * @param {Function} callback - */ - traverse(callback) { - callback(this); - if (this.left !== null) { - this.left.traverse(callback); - } - if (this.right !== null) { - this.right.traverse(callback); - } - } - /** - * Update the height of the node - */ - updateHeight() { - if (this.left !== null && this.right !== null) { - this.height = Math.max(this.left.height, this.right.height) + 1; - } - else if (this.right !== null) { - this.height = this.right.height + 1; - } - else if (this.left !== null) { - this.height = this.left.height + 1; - } - else { - this.height = 0; - } - } - /** - * Update the height of the node - */ - updateMax() { - this.max = this.high; - if (this.left !== null) { - this.max = Math.max(this.max, this.left.max); - } - if (this.right !== null) { - this.max = Math.max(this.max, this.right.max); - } - } - /** - * The balance is how the leafs are distributed on the node - * @return Negative numbers are balanced to the right - */ - getBalance() { - let balance = 0; - if (this.left !== null && this.right !== null) { - balance = this.left.height - this.right.height; - } - else if (this.left !== null) { - balance = this.left.height + 1; - } - else if (this.right !== null) { - balance = -(this.right.height + 1); - } - return balance; - } - /** - * @returns true if this node is the left child of its parent - */ - isLeftChild() { - return this.parent !== null && this.parent.left === this; - } - /** - * get/set the left node - */ - get left() { - return this._left; - } - set left(node) { - this._left = node; - if (node !== null) { - node.parent = this; - } - this.updateHeight(); - this.updateMax(); - } - /** - * get/set the right node - */ - get right() { - return this._right; - } - set right(node) { - this._right = node; - if (node !== null) { - node.parent = this; - } - this.updateHeight(); - this.updateMax(); - } - /** - * null out references. - */ - dispose() { - this.parent = null; - this._left = null; - this._right = null; - this.event = null; - } -} - var Units = /*#__PURE__*/Object.freeze({ __proto__: null }); -/** - * Volume is a simple volume node, useful for creating a volume fader. - * - * @example - * const vol = new Tone.Volume(-12).toDestination(); - * const osc = new Tone.Oscillator().connect(vol).start(); - * @category Component - */ -class Volume extends ToneAudioNode { - constructor() { - super(optionsFromArguments(Volume.getDefaults(), arguments, ["volume"])); - this.name = "Volume"; - const options = optionsFromArguments(Volume.getDefaults(), arguments, ["volume"]); - this.input = this.output = new Gain({ - context: this.context, - gain: options.volume, - units: "decibels", - }); - this.volume = this.output.gain; - readOnly(this, "volume"); - this._unmutedVolume = options.volume; - // set the mute initially - this.mute = options.mute; - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - mute: false, - volume: 0, - }); - } - /** - * Mute the output. - * @example - * const vol = new Tone.Volume(-12).toDestination(); - * const osc = new Tone.Oscillator().connect(vol).start(); - * // mute the output - * vol.mute = true; - */ - get mute() { - return this.volume.value === -Infinity; - } - set mute(mute) { - if (!this.mute && mute) { - this._unmutedVolume = this.volume.value; - // maybe it should ramp here? - this.volume.value = -Infinity; - } - else if (this.mute && !mute) { - this.volume.value = this._unmutedVolume; - } - } - /** - * clean up - */ - dispose() { - super.dispose(); - this.input.dispose(); - this.volume.dispose(); - return this; - } -} - -/** - * A single master output which is connected to the - * AudioDestinationNode (aka your speakers). - * It provides useful conveniences such as the ability - * to set the volume and mute the entire application. - * It also gives you the ability to apply master effects to your application. - * - * @example - * const oscillator = new Tone.Oscillator().start(); - * // the audio will go from the oscillator to the speakers - * oscillator.connect(Tone.getDestination()); - * // a convenience for connecting to the master output is also provided: - * oscillator.toDestination(); - * @category Core - */ -class Destination extends ToneAudioNode { - constructor() { - super(optionsFromArguments(Destination.getDefaults(), arguments)); - this.name = "Destination"; - this.input = new Volume({ context: this.context }); - this.output = new Gain({ context: this.context }); - /** - * The volume of the master output in decibels. -Infinity is silent, and 0 is no change. - * @example - * const osc = new Tone.Oscillator().toDestination(); - * osc.start(); - * // ramp the volume down to silent over 10 seconds - * Tone.getDestination().volume.rampTo(-Infinity, 10); - */ - this.volume = this.input.volume; - const options = optionsFromArguments(Destination.getDefaults(), arguments); - connectSeries(this.input, this.output, this.context.rawContext.destination); - this.mute = options.mute; - this._internalChannels = [this.input, this.context.rawContext.destination, this.output]; - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - mute: false, - volume: 0, - }); - } - /** - * Mute the output. - * @example - * const oscillator = new Tone.Oscillator().start().toDestination(); - * setTimeout(() => { - * // mute the output - * Tone.Destination.mute = true; - * }, 1000); - */ - get mute() { - return this.input.mute; - } - set mute(mute) { - this.input.mute = mute; - } - /** - * Add a master effects chain. NOTE: this will disconnect any nodes which were previously - * chained in the master effects chain. - * @param args All arguments will be connected in a row and the Master will be routed through it. - * @example - * // route all audio through a filter and compressor - * const lowpass = new Tone.Filter(800, "lowpass"); - * const compressor = new Tone.Compressor(-18); - * Tone.Destination.chain(lowpass, compressor); - */ - chain(...args) { - this.input.disconnect(); - args.unshift(this.input); - args.push(this.output); - connectSeries(...args); - return this; - } - /** - * The maximum number of channels the system can output - * @example - * console.log(Tone.Destination.maxChannelCount); - */ - get maxChannelCount() { - return this.context.rawContext.destination.maxChannelCount; - } - /** - * Clean up - */ - dispose() { - super.dispose(); - this.volume.dispose(); - return this; - } -} -//------------------------------------- -// INITIALIZATION -//------------------------------------- -onContextInit(context => { - context.destination = new Destination({ context }); -}); -onContextClose(context => { - context.destination.dispose(); -}); - -/** - * Represents a single value which is gettable and settable in a timed way - */ -class TimelineValue extends Tone { - /** - * @param initialValue The value to return if there is no scheduled values - */ - constructor(initialValue) { - super(); - this.name = "TimelineValue"; - /** - * The timeline which stores the values - */ - this._timeline = new Timeline({ memory: 10 }); - this._initialValue = initialValue; - } - /** - * Set the value at the given time - */ - set(value, time) { - this._timeline.add({ - value, time - }); - return this; - } - /** - * Get the value at the given time - */ - get(time) { - const event = this._timeline.get(time); - if (event) { - return event.value; - } - else { - return this._initialValue; - } - } -} - -/** - * TransportEvent is an internal class used by [[Transport]] - * to schedule events. Do no invoke this class directly, it is - * handled from within Tone.Transport. - */ -class TransportEvent { - /** - * @param transport The transport object which the event belongs to - */ - constructor(transport, opts) { - /** - * The unique id of the event - */ - this.id = TransportEvent._eventId++; - const options = Object.assign(TransportEvent.getDefaults(), opts); - this.transport = transport; - this.callback = options.callback; - this._once = options.once; - this.time = options.time; - } - static getDefaults() { - return { - callback: noOp, - once: false, - time: 0, - }; - } - /** - * Invoke the event callback. - * @param time The AudioContext time in seconds of the event - */ - invoke(time) { - if (this.callback) { - this.callback(time); - if (this._once) { - this.transport.clear(this.id); - } - } - } - /** - * Clean up - */ - dispose() { - this.callback = undefined; - return this; - } -} -/** - * Current ID counter - */ -TransportEvent._eventId = 0; - -/** - * TransportRepeatEvent is an internal class used by Tone.Transport - * to schedule repeat events. This class should not be instantiated directly. - */ -class TransportRepeatEvent extends TransportEvent { - /** - * @param transport The transport object which the event belongs to - */ - constructor(transport, opts) { - super(transport, opts); - /** - * The ID of the current timeline event - */ - this._currentId = -1; - /** - * The ID of the next timeline event - */ - this._nextId = -1; - /** - * The time of the next event - */ - this._nextTick = this.time; - /** - * a reference to the bound start method - */ - this._boundRestart = this._restart.bind(this); - const options = Object.assign(TransportRepeatEvent.getDefaults(), opts); - this.duration = new TicksClass(transport.context, options.duration).valueOf(); - this._interval = new TicksClass(transport.context, options.interval).valueOf(); - this._nextTick = options.time; - this.transport.on("start", this._boundRestart); - this.transport.on("loopStart", this._boundRestart); - this.context = this.transport.context; - this._restart(); - } - static getDefaults() { - return Object.assign({}, TransportEvent.getDefaults(), { - duration: Infinity, - interval: 1, - once: false, - }); - } - /** - * Invoke the callback. Returns the tick time which - * the next event should be scheduled at. - * @param time The AudioContext time in seconds of the event - */ - invoke(time) { - // create more events if necessary - this._createEvents(time); - // call the super class - super.invoke(time); - } - /** - * Push more events onto the timeline to keep up with the position of the timeline - */ - _createEvents(time) { - // schedule the next event - const ticks = this.transport.getTicksAtTime(time); - if (ticks >= this.time && ticks >= this._nextTick && this._nextTick + this._interval < this.time + this.duration) { - this._nextTick += this._interval; - this._currentId = this._nextId; - this._nextId = this.transport.scheduleOnce(this.invoke.bind(this), new TicksClass(this.context, this._nextTick).toSeconds()); - } - } - /** - * Push more events onto the timeline to keep up with the position of the timeline - */ - _restart(time) { - this.transport.clear(this._currentId); - this.transport.clear(this._nextId); - this._nextTick = this.time; - const ticks = this.transport.getTicksAtTime(time); - if (ticks > this.time) { - this._nextTick = this.time + Math.ceil((ticks - this.time) / this._interval) * this._interval; - } - this._currentId = this.transport.scheduleOnce(this.invoke.bind(this), new TicksClass(this.context, this._nextTick).toSeconds()); - this._nextTick += this._interval; - this._nextId = this.transport.scheduleOnce(this.invoke.bind(this), new TicksClass(this.context, this._nextTick).toSeconds()); - } - /** - * Clean up - */ - dispose() { - super.dispose(); - this.transport.clear(this._currentId); - this.transport.clear(this._nextId); - this.transport.off("start", this._boundRestart); - this.transport.off("loopStart", this._boundRestart); - return this; - } -} - -/** - * Transport for timing musical events. - * Supports tempo curves and time changes. Unlike browser-based timing (setInterval, requestAnimationFrame) - * Transport timing events pass in the exact time of the scheduled event - * in the argument of the callback function. Pass that time value to the object - * you're scheduling.

- * A single transport is created for you when the library is initialized. - *

- * The transport emits the events: "start", "stop", "pause", and "loop" which are - * called with the time of that event as the argument. - * - * @example - * const osc = new Tone.Oscillator().toDestination(); - * // repeated event every 8th note - * Tone.Transport.scheduleRepeat((time) => { - * // use the callback time to schedule events - * osc.start(time).stop(time + 0.1); - * }, "8n"); - * // transport must be started before it starts invoking events - * Tone.Transport.start(); - * @category Core - */ -class Transport extends ToneWithContext { - constructor() { - super(optionsFromArguments(Transport.getDefaults(), arguments)); - this.name = "Transport"; - //------------------------------------- - // LOOPING - //------------------------------------- - /** - * If the transport loops or not. - */ - this._loop = new TimelineValue(false); - /** - * The loop start position in ticks - */ - this._loopStart = 0; - /** - * The loop end position in ticks - */ - this._loopEnd = 0; - //------------------------------------- - // TIMELINE EVENTS - //------------------------------------- - /** - * All the events in an object to keep track by ID - */ - this._scheduledEvents = {}; - /** - * The scheduled events. - */ - this._timeline = new Timeline(); - /** - * Repeated events - */ - this._repeatedEvents = new IntervalTimeline(); - /** - * All of the synced Signals - */ - this._syncedSignals = []; - /** - * The swing amount - */ - this._swingAmount = 0; - const options = optionsFromArguments(Transport.getDefaults(), arguments); - // CLOCK/TEMPO - this._ppq = options.ppq; - this._clock = new Clock({ - callback: this._processTick.bind(this), - context: this.context, - frequency: 0, - units: "bpm", - }); - this._bindClockEvents(); - this.bpm = this._clock.frequency; - this._clock.frequency.multiplier = options.ppq; - this.bpm.setValueAtTime(options.bpm, 0); - readOnly(this, "bpm"); - this._timeSignature = options.timeSignature; - // SWING - this._swingTicks = options.ppq / 2; // 8n - } - static getDefaults() { - return Object.assign(ToneWithContext.getDefaults(), { - bpm: 120, - loopEnd: "4m", - loopStart: 0, - ppq: 192, - swing: 0, - swingSubdivision: "8n", - timeSignature: 4, - }); - } - //------------------------------------- - // TICKS - //------------------------------------- - /** - * called on every tick - * @param tickTime clock relative tick time - */ - _processTick(tickTime, ticks) { - // do the loop test - if (this._loop.get(tickTime)) { - if (ticks >= this._loopEnd) { - this.emit("loopEnd", tickTime); - this._clock.setTicksAtTime(this._loopStart, tickTime); - ticks = this._loopStart; - this.emit("loopStart", tickTime, this._clock.getSecondsAtTime(tickTime)); - this.emit("loop", tickTime); - } - } - // handle swing - if (this._swingAmount > 0 && - ticks % this._ppq !== 0 && // not on a downbeat - ticks % (this._swingTicks * 2) !== 0) { - // add some swing - const progress = (ticks % (this._swingTicks * 2)) / (this._swingTicks * 2); - const amount = Math.sin((progress) * Math.PI) * this._swingAmount; - tickTime += new TicksClass(this.context, this._swingTicks * 2 / 3).toSeconds() * amount; - } - // invoke the timeline events scheduled on this tick - this._timeline.forEachAtTime(ticks, event => event.invoke(tickTime)); - } - //------------------------------------- - // SCHEDULABLE EVENTS - //------------------------------------- - /** - * Schedule an event along the timeline. - * @param callback The callback to be invoked at the time. - * @param time The time to invoke the callback at. - * @return The id of the event which can be used for canceling the event. - * @example - * // schedule an event on the 16th measure - * Tone.Transport.schedule((time) => { - * // invoked on measure 16 - * console.log("measure 16!"); - * }, "16:0:0"); - */ - schedule(callback, time) { - const event = new TransportEvent(this, { - callback, - time: new TransportTimeClass(this.context, time).toTicks(), - }); - return this._addEvent(event, this._timeline); - } - /** - * Schedule a repeated event along the timeline. The event will fire - * at the `interval` starting at the `startTime` and for the specified - * `duration`. - * @param callback The callback to invoke. - * @param interval The duration between successive callbacks. Must be a positive number. - * @param startTime When along the timeline the events should start being invoked. - * @param duration How long the event should repeat. - * @return The ID of the scheduled event. Use this to cancel the event. - * @example - * const osc = new Tone.Oscillator().toDestination().start(); - * // a callback invoked every eighth note after the first measure - * Tone.Transport.scheduleRepeat((time) => { - * osc.start(time).stop(time + 0.1); - * }, "8n", "1m"); - */ - scheduleRepeat(callback, interval, startTime, duration = Infinity) { - const event = new TransportRepeatEvent(this, { - callback, - duration: new TimeClass(this.context, duration).toTicks(), - interval: new TimeClass(this.context, interval).toTicks(), - time: new TransportTimeClass(this.context, startTime).toTicks(), - }); - // kick it off if the Transport is started - // @ts-ignore - return this._addEvent(event, this._repeatedEvents); - } - /** - * Schedule an event that will be removed after it is invoked. - * @param callback The callback to invoke once. - * @param time The time the callback should be invoked. - * @returns The ID of the scheduled event. - */ - scheduleOnce(callback, time) { - const event = new TransportEvent(this, { - callback, - once: true, - time: new TransportTimeClass(this.context, time).toTicks(), - }); - return this._addEvent(event, this._timeline); - } - /** - * Clear the passed in event id from the timeline - * @param eventId The id of the event. - */ - clear(eventId) { - if (this._scheduledEvents.hasOwnProperty(eventId)) { - const item = this._scheduledEvents[eventId.toString()]; - item.timeline.remove(item.event); - item.event.dispose(); - delete this._scheduledEvents[eventId.toString()]; - } - return this; - } - /** - * Add an event to the correct timeline. Keep track of the - * timeline it was added to. - * @returns the event id which was just added - */ - _addEvent(event, timeline) { - this._scheduledEvents[event.id.toString()] = { - event, - timeline, - }; - timeline.add(event); - return event.id; - } - /** - * Remove scheduled events from the timeline after - * the given time. Repeated events will be removed - * if their startTime is after the given time - * @param after Clear all events after this time. - */ - cancel(after = 0) { - const computedAfter = this.toTicks(after); - this._timeline.forEachFrom(computedAfter, event => this.clear(event.id)); - this._repeatedEvents.forEachFrom(computedAfter, event => this.clear(event.id)); - return this; - } - //------------------------------------- - // START/STOP/PAUSE - //------------------------------------- - /** - * Bind start/stop/pause events from the clock and emit them. - */ - _bindClockEvents() { - this._clock.on("start", (time, offset) => { - offset = new TicksClass(this.context, offset).toSeconds(); - this.emit("start", time, offset); - }); - this._clock.on("stop", (time) => { - this.emit("stop", time); - }); - this._clock.on("pause", (time) => { - this.emit("pause", time); - }); - } - /** - * Returns the playback state of the source, either "started", "stopped", or "paused" - */ - get state() { - return this._clock.getStateAtTime(this.now()); - } - /** - * Start the transport and all sources synced to the transport. - * @param time The time when the transport should start. - * @param offset The timeline offset to start the transport. - * @example - * // start the transport in one second starting at beginning of the 5th measure. - * Tone.Transport.start("+1", "4:0:0"); - */ - start(time, offset) { - let offsetTicks; - if (isDefined(offset)) { - offsetTicks = this.toTicks(offset); - } - // start the clock - this._clock.start(time, offsetTicks); - return this; - } - /** - * Stop the transport and all sources synced to the transport. - * @param time The time when the transport should stop. - * @example - * Tone.Transport.stop(); - */ - stop(time) { - this._clock.stop(time); - return this; - } - /** - * Pause the transport and all sources synced to the transport. - */ - pause(time) { - this._clock.pause(time); - return this; - } - /** - * Toggle the current state of the transport. If it is - * started, it will stop it, otherwise it will start the Transport. - * @param time The time of the event - */ - toggle(time) { - time = this.toSeconds(time); - if (this._clock.getStateAtTime(time) !== "started") { - this.start(time); - } - else { - this.stop(time); - } - return this; - } - //------------------------------------- - // SETTERS/GETTERS - //------------------------------------- - /** - * The time signature as just the numerator over 4. - * For example 4/4 would be just 4 and 6/8 would be 3. - * @example - * // common time - * Tone.Transport.timeSignature = 4; - * // 7/8 - * Tone.Transport.timeSignature = [7, 8]; - * // this will be reduced to a single number - * Tone.Transport.timeSignature; // returns 3.5 - */ - get timeSignature() { - return this._timeSignature; - } - set timeSignature(timeSig) { - if (isArray(timeSig)) { - timeSig = (timeSig[0] / timeSig[1]) * 4; - } - this._timeSignature = timeSig; - } - /** - * When the Transport.loop = true, this is the starting position of the loop. - */ - get loopStart() { - return new TimeClass(this.context, this._loopStart, "i").toSeconds(); - } - set loopStart(startPosition) { - this._loopStart = this.toTicks(startPosition); - } - /** - * When the Transport.loop = true, this is the ending position of the loop. - */ - get loopEnd() { - return new TimeClass(this.context, this._loopEnd, "i").toSeconds(); - } - set loopEnd(endPosition) { - this._loopEnd = this.toTicks(endPosition); - } - /** - * If the transport loops or not. - */ - get loop() { - return this._loop.get(this.now()); - } - set loop(loop) { - this._loop.set(loop, this.now()); - } - /** - * Set the loop start and stop at the same time. - * @example - * // loop over the first measure - * Tone.Transport.setLoopPoints(0, "1m"); - * Tone.Transport.loop = true; - */ - setLoopPoints(startPosition, endPosition) { - this.loopStart = startPosition; - this.loopEnd = endPosition; - return this; - } - /** - * The swing value. Between 0-1 where 1 equal to the note + half the subdivision. - */ - get swing() { - return this._swingAmount; - } - set swing(amount) { - // scale the values to a normal range - this._swingAmount = amount; - } - /** - * Set the subdivision which the swing will be applied to. - * The default value is an 8th note. Value must be less - * than a quarter note. - */ - get swingSubdivision() { - return new TicksClass(this.context, this._swingTicks).toNotation(); - } - set swingSubdivision(subdivision) { - this._swingTicks = this.toTicks(subdivision); - } - /** - * The Transport's position in Bars:Beats:Sixteenths. - * Setting the value will jump to that position right away. - */ - get position() { - const now = this.now(); - const ticks = this._clock.getTicksAtTime(now); - return new TicksClass(this.context, ticks).toBarsBeatsSixteenths(); - } - set position(progress) { - const ticks = this.toTicks(progress); - this.ticks = ticks; - } - /** - * The Transport's position in seconds - * Setting the value will jump to that position right away. - */ - get seconds() { - return this._clock.seconds; - } - set seconds(s) { - const now = this.now(); - const ticks = this._clock.frequency.timeToTicks(s, now); - this.ticks = ticks; - } - /** - * The Transport's loop position as a normalized value. Always - * returns 0 if the transport if loop is not true. - */ - get progress() { - if (this.loop) { - const now = this.now(); - const ticks = this._clock.getTicksAtTime(now); - return (ticks - this._loopStart) / (this._loopEnd - this._loopStart); - } - else { - return 0; - } - } - /** - * The transports current tick position. - */ - get ticks() { - return this._clock.ticks; - } - set ticks(t) { - if (this._clock.ticks !== t) { - const now = this.now(); - // stop everything synced to the transport - if (this.state === "started") { - const ticks = this._clock.getTicksAtTime(now); - // schedule to start on the next tick, #573 - const remainingTick = this._clock.frequency.getDurationOfTicks(Math.ceil(ticks) - ticks, now); - const time = now + remainingTick; - this.emit("stop", time); - this._clock.setTicksAtTime(t, time); - // restart it with the new time - this.emit("start", time, this._clock.getSecondsAtTime(time)); - } - else { - this._clock.setTicksAtTime(t, now); - } - } - } - /** - * Get the clock's ticks at the given time. - * @param time When to get the tick value - * @return The tick value at the given time. - */ - getTicksAtTime(time) { - return Math.round(this._clock.getTicksAtTime(time)); - } - /** - * Return the elapsed seconds at the given time. - * @param time When to get the elapsed seconds - * @return The number of elapsed seconds - */ - getSecondsAtTime(time) { - return this._clock.getSecondsAtTime(time); - } - /** - * Pulses Per Quarter note. This is the smallest resolution - * the Transport timing supports. This should be set once - * on initialization and not set again. Changing this value - * after other objects have been created can cause problems. - */ - get PPQ() { - return this._clock.frequency.multiplier; - } - set PPQ(ppq) { - this._clock.frequency.multiplier = ppq; - } - //------------------------------------- - // SYNCING - //------------------------------------- - /** - * Returns the time aligned to the next subdivision - * of the Transport. If the Transport is not started, - * it will return 0. - * Note: this will not work precisely during tempo ramps. - * @param subdivision The subdivision to quantize to - * @return The context time of the next subdivision. - * @example - * // the transport must be started, otherwise returns 0 - * Tone.Transport.start(); - * Tone.Transport.nextSubdivision("4n"); - */ - nextSubdivision(subdivision) { - subdivision = this.toTicks(subdivision); - if (this.state !== "started") { - // if the transport's not started, return 0 - return 0; - } - else { - const now = this.now(); - // the remainder of the current ticks and the subdivision - const transportPos = this.getTicksAtTime(now); - const remainingTicks = subdivision - transportPos % subdivision; - return this._clock.nextTickTime(remainingTicks, now); - } - } - /** - * Attaches the signal to the tempo control signal so that - * any changes in the tempo will change the signal in the same - * ratio. - * - * @param signal - * @param ratio Optionally pass in the ratio between the two signals. - * Otherwise it will be computed based on their current values. - */ - syncSignal(signal, ratio) { - if (!ratio) { - // get the sync ratio - const now = this.now(); - if (signal.getValueAtTime(now) !== 0) { - const bpm = this.bpm.getValueAtTime(now); - const computedFreq = 1 / (60 / bpm / this.PPQ); - ratio = signal.getValueAtTime(now) / computedFreq; - } - else { - ratio = 0; - } - } - const ratioSignal = new Gain(ratio); - // @ts-ignore - this.bpm.connect(ratioSignal); - // @ts-ignore - ratioSignal.connect(signal._param); - this._syncedSignals.push({ - initial: signal.value, - ratio: ratioSignal, - signal, - }); - signal.value = 0; - return this; - } - /** - * Unsyncs a previously synced signal from the transport's control. - * See Transport.syncSignal. - */ - unsyncSignal(signal) { - for (let i = this._syncedSignals.length - 1; i >= 0; i--) { - const syncedSignal = this._syncedSignals[i]; - if (syncedSignal.signal === signal) { - syncedSignal.ratio.dispose(); - syncedSignal.signal.value = syncedSignal.initial; - this._syncedSignals.splice(i, 1); - } - } - return this; - } - /** - * Clean up. - */ - dispose() { - super.dispose(); - this._clock.dispose(); - writable(this, "bpm"); - this._timeline.dispose(); - this._repeatedEvents.dispose(); - return this; - } -} -Emitter.mixin(Transport); -//------------------------------------- -// INITIALIZATION -//------------------------------------- -onContextInit(context => { - context.transport = new Transport({ context }); -}); -onContextClose(context => { - context.transport.dispose(); -}); - -/** - * Base class for sources. - * start/stop of this.context.transport. - * - * ``` - * // Multiple state change events can be chained together, - * // but must be set in the correct order and with ascending times - * // OK - * state.start().stop("+0.2"); - * // OK - * state.start().stop("+0.2").start("+0.4").stop("+0.7") - * // BAD - * state.stop("+0.2").start(); - * // BAD - * state.start("+0.3").stop("+0.2"); - * ``` - */ -class Source extends ToneAudioNode { - constructor(options) { - super(options); - /** - * Sources have no inputs - */ - this.input = undefined; - /** - * Keep track of the scheduled state. - */ - this._state = new StateTimeline("stopped"); - /** - * The synced `start` callback function from the transport - */ - this._synced = false; - /** - * Keep track of all of the scheduled event ids - */ - this._scheduled = []; - /** - * Placeholder functions for syncing/unsyncing to transport - */ - this._syncedStart = noOp; - this._syncedStop = noOp; - this._state.memory = 100; - this._state.increasing = true; - this._volume = this.output = new Volume({ - context: this.context, - mute: options.mute, - volume: options.volume, - }); - this.volume = this._volume.volume; - readOnly(this, "volume"); - this.onstop = options.onstop; - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - mute: false, - onstop: noOp, - volume: 0, - }); - } - /** - * Returns the playback state of the source, either "started" or "stopped". - * @example - * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/ahntone_c3.mp3", () => { - * player.start(); - * console.log(player.state); - * }).toDestination(); - */ - get state() { - if (this._synced) { - if (this.context.transport.state === "started") { - return this._state.getValueAtTime(this.context.transport.seconds); - } - else { - return "stopped"; - } - } - else { - return this._state.getValueAtTime(this.now()); - } - } - /** - * Mute the output. - * @example - * const osc = new Tone.Oscillator().toDestination().start(); - * // mute the output - * osc.mute = true; - */ - get mute() { - return this._volume.mute; - } - set mute(mute) { - this._volume.mute = mute; - } - /** - * Ensure that the scheduled time is not before the current time. - * Should only be used when scheduled unsynced. - */ - _clampToCurrentTime(time) { - if (this._synced) { - return time; - } - else { - return Math.max(time, this.context.currentTime); - } - } - /** - * Start the source at the specified time. If no time is given, - * start the source now. - * @param time When the source should be started. - * @example - * const source = new Tone.Oscillator().toDestination(); - * source.start("+0.5"); // starts the source 0.5 seconds from now - */ - start(time, offset, duration) { - let computedTime = isUndef(time) && this._synced ? this.context.transport.seconds : this.toSeconds(time); - computedTime = this._clampToCurrentTime(computedTime); - // if it's started, stop it and restart it - if (!this._synced && this._state.getValueAtTime(computedTime) === "started") { - // time should be strictly greater than the previous start time - assert(GT(computedTime, this._state.get(computedTime).time), "Start time must be strictly greater than previous start time"); - this._state.cancel(computedTime); - this._state.setStateAtTime("started", computedTime); - this.log("restart", computedTime); - this.restart(computedTime, offset, duration); - } - else { - this.log("start", computedTime); - this._state.setStateAtTime("started", computedTime); - if (this._synced) { - // add the offset time to the event - const event = this._state.get(computedTime); - if (event) { - event.offset = this.toSeconds(defaultArg(offset, 0)); - event.duration = duration ? this.toSeconds(duration) : undefined; - } - const sched = this.context.transport.schedule(t => { - this._start(t, offset, duration); - }, computedTime); - this._scheduled.push(sched); - // if the transport is already started - // and the time is greater than where the transport is - if (this.context.transport.state === "started" && - this.context.transport.getSecondsAtTime(this.immediate()) > computedTime) { - this._syncedStart(this.now(), this.context.transport.seconds); - } - } - else { - assertContextRunning(this.context); - this._start(computedTime, offset, duration); - } - } - return this; - } - /** - * Stop the source at the specified time. If no time is given, - * stop the source now. - * @param time When the source should be stopped. - * @example - * const source = new Tone.Oscillator().toDestination(); - * source.start(); - * source.stop("+0.5"); // stops the source 0.5 seconds from now - */ - stop(time) { - let computedTime = isUndef(time) && this._synced ? this.context.transport.seconds : this.toSeconds(time); - computedTime = this._clampToCurrentTime(computedTime); - if (this._state.getValueAtTime(computedTime) === "started" || isDefined(this._state.getNextState("started", computedTime))) { - this.log("stop", computedTime); - if (!this._synced) { - this._stop(computedTime); - } - else { - const sched = this.context.transport.schedule(this._stop.bind(this), computedTime); - this._scheduled.push(sched); - } - this._state.cancel(computedTime); - this._state.setStateAtTime("stopped", computedTime); - } - return this; - } - /** - * Restart the source. - */ - restart(time, offset, duration) { - time = this.toSeconds(time); - if (this._state.getValueAtTime(time) === "started") { - this._state.cancel(time); - this._restart(time, offset, duration); - } - return this; - } - /** - * Sync the source to the Transport so that all subsequent - * calls to `start` and `stop` are synced to the TransportTime - * instead of the AudioContext time. - * - * @example - * const osc = new Tone.Oscillator().toDestination(); - * // sync the source so that it plays between 0 and 0.3 on the Transport's timeline - * osc.sync().start(0).stop(0.3); - * // start the transport. - * Tone.Transport.start(); - * // set it to loop once a second - * Tone.Transport.loop = true; - * Tone.Transport.loopEnd = 1; - */ - sync() { - if (!this._synced) { - this._synced = true; - this._syncedStart = (time, offset) => { - if (offset > 0) { - // get the playback state at that time - const stateEvent = this._state.get(offset); - // listen for start events which may occur in the middle of the sync'ed time - if (stateEvent && stateEvent.state === "started" && stateEvent.time !== offset) { - // get the offset - const startOffset = offset - this.toSeconds(stateEvent.time); - let duration; - if (stateEvent.duration) { - duration = this.toSeconds(stateEvent.duration) - startOffset; - } - this._start(time, this.toSeconds(stateEvent.offset) + startOffset, duration); - } - } - }; - this._syncedStop = time => { - const seconds = this.context.transport.getSecondsAtTime(Math.max(time - this.sampleTime, 0)); - if (this._state.getValueAtTime(seconds) === "started") { - this._stop(time); - } - }; - this.context.transport.on("start", this._syncedStart); - this.context.transport.on("loopStart", this._syncedStart); - this.context.transport.on("stop", this._syncedStop); - this.context.transport.on("pause", this._syncedStop); - this.context.transport.on("loopEnd", this._syncedStop); - } - return this; - } - /** - * Unsync the source to the Transport. See Source.sync - */ - unsync() { - if (this._synced) { - this.context.transport.off("stop", this._syncedStop); - this.context.transport.off("pause", this._syncedStop); - this.context.transport.off("loopEnd", this._syncedStop); - this.context.transport.off("start", this._syncedStart); - this.context.transport.off("loopStart", this._syncedStart); - } - this._synced = false; - // clear all of the scheduled ids - this._scheduled.forEach(id => this.context.transport.clear(id)); - this._scheduled = []; - this._state.cancel(0); - // stop it also - this._stop(0); - return this; - } - /** - * Clean up. - */ - dispose() { - super.dispose(); - this.onstop = noOp; - this.unsync(); - this._volume.dispose(); - this._state.dispose(); - return this; - } -} - -/** - * Wrapper around the native BufferSourceNode. - * @category Source - */ -class ToneBufferSource extends OneShotSource { - constructor() { - super(optionsFromArguments(ToneBufferSource.getDefaults(), arguments, ["url", "onload"])); - this.name = "ToneBufferSource"; - /** - * The oscillator - */ - this._source = this.context.createBufferSource(); - this._internalChannels = [this._source]; - /** - * indicators if the source has started/stopped - */ - this._sourceStarted = false; - this._sourceStopped = false; - const options = optionsFromArguments(ToneBufferSource.getDefaults(), arguments, ["url", "onload"]); - connect(this._source, this._gainNode); - this._source.onended = () => this._stopSource(); - /** - * The playbackRate of the buffer - */ - this.playbackRate = new Param({ - context: this.context, - param: this._source.playbackRate, - units: "positive", - value: options.playbackRate, - }); - // set some values initially - this.loop = options.loop; - this.loopStart = options.loopStart; - this.loopEnd = options.loopEnd; - this._buffer = new ToneAudioBuffer(options.url, options.onload, options.onerror); - this._internalChannels.push(this._source); - } - static getDefaults() { - return Object.assign(OneShotSource.getDefaults(), { - url: new ToneAudioBuffer(), - loop: false, - loopEnd: 0, - loopStart: 0, - onload: noOp, - onerror: noOp, - playbackRate: 1, - }); - } - /** - * The fadeIn time of the amplitude envelope. - */ - get fadeIn() { - return this._fadeIn; - } - set fadeIn(t) { - this._fadeIn = t; - } - /** - * The fadeOut time of the amplitude envelope. - */ - get fadeOut() { - return this._fadeOut; - } - set fadeOut(t) { - this._fadeOut = t; - } - /** - * The curve applied to the fades, either "linear" or "exponential" - */ - get curve() { - return this._curve; - } - set curve(t) { - this._curve = t; - } - /** - * Start the buffer - * @param time When the player should start. - * @param offset The offset from the beginning of the sample to start at. - * @param duration How long the sample should play. If no duration is given, it will default to the full length of the sample (minus any offset) - * @param gain The gain to play the buffer back at. - */ - start(time, offset, duration, gain = 1) { - assert(this.buffer.loaded, "buffer is either not set or not loaded"); - const computedTime = this.toSeconds(time); - // apply the gain envelope - this._startGain(computedTime, gain); - // if it's a loop the default offset is the loopstart point - if (this.loop) { - offset = defaultArg(offset, this.loopStart); - } - else { - // otherwise the default offset is 0 - offset = defaultArg(offset, 0); - } - // make sure the offset is not less than 0 - let computedOffset = Math.max(this.toSeconds(offset), 0); - // start the buffer source - if (this.loop) { - // modify the offset if it's greater than the loop time - const loopEnd = this.toSeconds(this.loopEnd) || this.buffer.duration; - const loopStart = this.toSeconds(this.loopStart); - const loopDuration = loopEnd - loopStart; - // move the offset back - if (GTE(computedOffset, loopEnd)) { - computedOffset = ((computedOffset - loopStart) % loopDuration) + loopStart; - } - // when the offset is very close to the duration, set it to 0 - if (EQ(computedOffset, this.buffer.duration)) { - computedOffset = 0; - } - } - // this.buffer.loaded would have return false if the AudioBuffer was undefined - this._source.buffer = this.buffer.get(); - this._source.loopEnd = this.toSeconds(this.loopEnd) || this.buffer.duration; - if (LT(computedOffset, this.buffer.duration)) { - this._sourceStarted = true; - this._source.start(computedTime, computedOffset); - } - // if a duration is given, schedule a stop - if (isDefined(duration)) { - let computedDur = this.toSeconds(duration); - // make sure it's never negative - computedDur = Math.max(computedDur, 0); - this.stop(computedTime + computedDur); - } - return this; - } - _stopSource(time) { - if (!this._sourceStopped && this._sourceStarted) { - this._sourceStopped = true; - this._source.stop(this.toSeconds(time)); - this._onended(); - } - } - /** - * If loop is true, the loop will start at this position. - */ - get loopStart() { - return this._source.loopStart; - } - set loopStart(loopStart) { - this._source.loopStart = this.toSeconds(loopStart); - } - /** - * If loop is true, the loop will end at this position. - */ - get loopEnd() { - return this._source.loopEnd; - } - set loopEnd(loopEnd) { - this._source.loopEnd = this.toSeconds(loopEnd); - } - /** - * The audio buffer belonging to the player. - */ - get buffer() { - return this._buffer; - } - set buffer(buffer) { - this._buffer.set(buffer); - } - /** - * If the buffer should loop once it's over. - */ - get loop() { - return this._source.loop; - } - set loop(loop) { - this._source.loop = loop; - if (this._sourceStarted) { - this.cancelStop(); - } - } - /** - * Clean up. - */ - dispose() { - super.dispose(); - this._source.onended = null; - this._source.disconnect(); - this._buffer.dispose(); - this.playbackRate.dispose(); - return this; - } -} - /** * Noise is a noise generator. It uses looped noise buffers to save on performance. * Noise supports the noise types: "pink", "white", and "brown". Read more about @@ -16160,1797 +538,6 @@ class UserMedia extends ToneAudioNode { } } -/** - * Render a segment of the oscillator to an offline context and return the results as an array - */ -function generateWaveform(instance, length) { - return __awaiter(this, void 0, void 0, function* () { - const duration = length / instance.context.sampleRate; - const context = new OfflineContext(1, duration, instance.context.sampleRate); - const clone = new instance.constructor(Object.assign(instance.get(), { - // should do 2 iterations - frequency: 2 / duration, - // zero out the detune - detune: 0, - context - })).toDestination(); - clone.start(0); - const buffer = yield context.render(); - return buffer.getChannelData(0); - }); -} - -/** - * Wrapper around the native fire-and-forget OscillatorNode. - * Adds the ability to reschedule the stop method. - * ***[[Oscillator]] is better for most use-cases*** - * @category Source - */ -class ToneOscillatorNode extends OneShotSource { - constructor() { - super(optionsFromArguments(ToneOscillatorNode.getDefaults(), arguments, ["frequency", "type"])); - this.name = "ToneOscillatorNode"; - /** - * The oscillator - */ - this._oscillator = this.context.createOscillator(); - this._internalChannels = [this._oscillator]; - const options = optionsFromArguments(ToneOscillatorNode.getDefaults(), arguments, ["frequency", "type"]); - connect(this._oscillator, this._gainNode); - this.type = options.type; - this.frequency = new Param({ - context: this.context, - param: this._oscillator.frequency, - units: "frequency", - value: options.frequency, - }); - this.detune = new Param({ - context: this.context, - param: this._oscillator.detune, - units: "cents", - value: options.detune, - }); - readOnly(this, ["frequency", "detune"]); - } - static getDefaults() { - return Object.assign(OneShotSource.getDefaults(), { - detune: 0, - frequency: 440, - type: "sine", - }); - } - /** - * Start the oscillator node at the given time - * @param time When to start the oscillator - */ - start(time) { - const computedTime = this.toSeconds(time); - this.log("start", computedTime); - this._startGain(computedTime); - this._oscillator.start(computedTime); - return this; - } - _stopSource(time) { - this._oscillator.stop(time); - } - /** - * Sets an arbitrary custom periodic waveform given a PeriodicWave. - * @param periodicWave PeriodicWave should be created with context.createPeriodicWave - */ - setPeriodicWave(periodicWave) { - this._oscillator.setPeriodicWave(periodicWave); - return this; - } - /** - * The oscillator type. Either 'sine', 'sawtooth', 'square', or 'triangle' - */ - get type() { - return this._oscillator.type; - } - set type(type) { - this._oscillator.type = type; - } - /** - * Clean up. - */ - dispose() { - super.dispose(); - if (this.state === "started") { - this.stop(); - } - this._oscillator.disconnect(); - this.frequency.dispose(); - this.detune.dispose(); - return this; - } -} - -/** - * Oscillator supports a number of features including - * phase rotation, multiple oscillator types (see Oscillator.type), - * and Transport syncing (see Oscillator.syncFrequency). - * - * @example - * // make and start a 440hz sine tone - * const osc = new Tone.Oscillator(440, "sine").toDestination().start(); - * @category Source - */ -class Oscillator extends Source { - constructor() { - super(optionsFromArguments(Oscillator.getDefaults(), arguments, ["frequency", "type"])); - this.name = "Oscillator"; - /** - * the main oscillator - */ - this._oscillator = null; - const options = optionsFromArguments(Oscillator.getDefaults(), arguments, ["frequency", "type"]); - this.frequency = new Signal({ - context: this.context, - units: "frequency", - value: options.frequency, - }); - readOnly(this, "frequency"); - this.detune = new Signal({ - context: this.context, - units: "cents", - value: options.detune, - }); - readOnly(this, "detune"); - this._partials = options.partials; - this._partialCount = options.partialCount; - this._type = options.type; - if (options.partialCount && options.type !== "custom") { - this._type = this.baseType + options.partialCount.toString(); - } - this.phase = options.phase; - } - static getDefaults() { - return Object.assign(Source.getDefaults(), { - detune: 0, - frequency: 440, - partialCount: 0, - partials: [], - phase: 0, - type: "sine", - }); - } - /** - * start the oscillator - */ - _start(time) { - const computedTime = this.toSeconds(time); - // new oscillator with previous values - const oscillator = new ToneOscillatorNode({ - context: this.context, - onended: () => this.onstop(this), - }); - this._oscillator = oscillator; - if (this._wave) { - this._oscillator.setPeriodicWave(this._wave); - } - else { - this._oscillator.type = this._type; - } - // connect the control signal to the oscillator frequency & detune - this._oscillator.connect(this.output); - this.frequency.connect(this._oscillator.frequency); - this.detune.connect(this._oscillator.detune); - // start the oscillator - this._oscillator.start(computedTime); - } - /** - * stop the oscillator - */ - _stop(time) { - const computedTime = this.toSeconds(time); - if (this._oscillator) { - this._oscillator.stop(computedTime); - } - } - /** - * Restart the oscillator. Does not stop the oscillator, but instead - * just cancels any scheduled 'stop' from being invoked. - */ - _restart(time) { - const computedTime = this.toSeconds(time); - this.log("restart", computedTime); - if (this._oscillator) { - this._oscillator.cancelStop(); - } - this._state.cancel(computedTime); - return this; - } - /** - * Sync the signal to the Transport's bpm. Any changes to the transports bpm, - * will also affect the oscillators frequency. - * @example - * const osc = new Tone.Oscillator().toDestination().start(); - * osc.frequency.value = 440; - * // the ratio between the bpm and the frequency will be maintained - * osc.syncFrequency(); - * // double the tempo - * Tone.Transport.bpm.value *= 2; - * // the frequency of the oscillator is doubled to 880 - */ - syncFrequency() { - this.context.transport.syncSignal(this.frequency); - return this; - } - /** - * Unsync the oscillator's frequency from the Transport. - * See Oscillator.syncFrequency - */ - unsyncFrequency() { - this.context.transport.unsyncSignal(this.frequency); - return this; - } - /** - * Get a cached periodic wave. Avoids having to recompute - * the oscillator values when they have already been computed - * with the same values. - */ - _getCachedPeriodicWave() { - if (this._type === "custom") { - const oscProps = Oscillator._periodicWaveCache.find(description => { - return description.phase === this._phase && - deepEquals(description.partials, this._partials); - }); - return oscProps; - } - else { - const oscProps = Oscillator._periodicWaveCache.find(description => { - return description.type === this._type && - description.phase === this._phase; - }); - this._partialCount = oscProps ? oscProps.partialCount : this._partialCount; - return oscProps; - } - } - get type() { - return this._type; - } - set type(type) { - this._type = type; - const isBasicType = ["sine", "square", "sawtooth", "triangle"].indexOf(type) !== -1; - if (this._phase === 0 && isBasicType) { - this._wave = undefined; - this._partialCount = 0; - // just go with the basic approach - if (this._oscillator !== null) { - // already tested that it's a basic type - this._oscillator.type = type; - } - } - else { - // first check if the value is cached - const cache = this._getCachedPeriodicWave(); - if (isDefined(cache)) { - const { partials, wave } = cache; - this._wave = wave; - this._partials = partials; - if (this._oscillator !== null) { - this._oscillator.setPeriodicWave(this._wave); - } - } - else { - const [real, imag] = this._getRealImaginary(type, this._phase); - const periodicWave = this.context.createPeriodicWave(real, imag); - this._wave = periodicWave; - if (this._oscillator !== null) { - this._oscillator.setPeriodicWave(this._wave); - } - // set the cache - Oscillator._periodicWaveCache.push({ - imag, - partialCount: this._partialCount, - partials: this._partials, - phase: this._phase, - real, - type: this._type, - wave: this._wave, - }); - if (Oscillator._periodicWaveCache.length > 100) { - Oscillator._periodicWaveCache.shift(); - } - } - } - } - get baseType() { - return this._type.replace(this.partialCount.toString(), ""); - } - set baseType(baseType) { - if (this.partialCount && this._type !== "custom" && baseType !== "custom") { - this.type = baseType + this.partialCount; - } - else { - this.type = baseType; - } - } - get partialCount() { - return this._partialCount; - } - set partialCount(p) { - assertRange(p, 0); - let type = this._type; - const partial = /^(sine|triangle|square|sawtooth)(\d+)$/.exec(this._type); - if (partial) { - type = partial[1]; - } - if (this._type !== "custom") { - if (p === 0) { - this.type = type; - } - else { - this.type = type + p.toString(); - } - } - else { - // extend or shorten the partials array - const fullPartials = new Float32Array(p); - // copy over the partials array - this._partials.forEach((v, i) => fullPartials[i] = v); - this._partials = Array.from(fullPartials); - this.type = this._type; - } - } - /** - * Returns the real and imaginary components based - * on the oscillator type. - * @returns [real: Float32Array, imaginary: Float32Array] - */ - _getRealImaginary(type, phase) { - const fftSize = 4096; - let periodicWaveSize = fftSize / 2; - const real = new Float32Array(periodicWaveSize); - const imag = new Float32Array(periodicWaveSize); - let partialCount = 1; - if (type === "custom") { - partialCount = this._partials.length + 1; - this._partialCount = this._partials.length; - periodicWaveSize = partialCount; - // if the partial count is 0, don't bother doing any computation - if (this._partials.length === 0) { - return [real, imag]; - } - } - else { - const partial = /^(sine|triangle|square|sawtooth)(\d+)$/.exec(type); - if (partial) { - partialCount = parseInt(partial[2], 10) + 1; - this._partialCount = parseInt(partial[2], 10); - type = partial[1]; - partialCount = Math.max(partialCount, 2); - periodicWaveSize = partialCount; - } - else { - this._partialCount = 0; - } - this._partials = []; - } - for (let n = 1; n < periodicWaveSize; ++n) { - const piFactor = 2 / (n * Math.PI); - let b; - switch (type) { - case "sine": - b = (n <= partialCount) ? 1 : 0; - this._partials[n - 1] = b; - break; - case "square": - b = (n & 1) ? 2 * piFactor : 0; - this._partials[n - 1] = b; - break; - case "sawtooth": - b = piFactor * ((n & 1) ? 1 : -1); - this._partials[n - 1] = b; - break; - case "triangle": - if (n & 1) { - b = 2 * (piFactor * piFactor) * ((((n - 1) >> 1) & 1) ? -1 : 1); - } - else { - b = 0; - } - this._partials[n - 1] = b; - break; - case "custom": - b = this._partials[n - 1]; - break; - default: - throw new TypeError("Oscillator: invalid type: " + type); - } - if (b !== 0) { - real[n] = -b * Math.sin(phase * n); - imag[n] = b * Math.cos(phase * n); - } - else { - real[n] = 0; - imag[n] = 0; - } - } - return [real, imag]; - } - /** - * Compute the inverse FFT for a given phase. - */ - _inverseFFT(real, imag, phase) { - let sum = 0; - const len = real.length; - for (let i = 0; i < len; i++) { - sum += real[i] * Math.cos(i * phase) + imag[i] * Math.sin(i * phase); - } - return sum; - } - /** - * Returns the initial value of the oscillator when stopped. - * E.g. a "sine" oscillator with phase = 90 would return an initial value of -1. - */ - getInitialValue() { - const [real, imag] = this._getRealImaginary(this._type, 0); - let maxValue = 0; - const twoPi = Math.PI * 2; - const testPositions = 32; - // check for peaks in 16 places - for (let i = 0; i < testPositions; i++) { - maxValue = Math.max(this._inverseFFT(real, imag, (i / testPositions) * twoPi), maxValue); - } - return clamp(-this._inverseFFT(real, imag, this._phase) / maxValue, -1, 1); - } - get partials() { - return this._partials.slice(0, this.partialCount); - } - set partials(partials) { - this._partials = partials; - this._partialCount = this._partials.length; - if (partials.length) { - this.type = "custom"; - } - } - get phase() { - return this._phase * (180 / Math.PI); - } - set phase(phase) { - this._phase = phase * Math.PI / 180; - // reset the type - this.type = this._type; - } - asArray(length = 1024) { - return __awaiter(this, void 0, void 0, function* () { - return generateWaveform(this, length); - }); - } - dispose() { - super.dispose(); - if (this._oscillator !== null) { - this._oscillator.dispose(); - } - this._wave = undefined; - this.frequency.dispose(); - this.detune.dispose(); - return this; - } -} -/** - * Cache the periodic waves to avoid having to redo computations - */ -Oscillator._periodicWaveCache = []; - -/** - * A signal operator has an input and output and modifies the signal. - */ -class SignalOperator extends ToneAudioNode { - constructor() { - super(Object.assign(optionsFromArguments(SignalOperator.getDefaults(), arguments, ["context"]))); - } - connect(destination, outputNum = 0, inputNum = 0) { - connectSignal(this, destination, outputNum, inputNum); - return this; - } -} - -/** - * Wraps the native Web Audio API - * [WaveShaperNode](http://webaudio.github.io/web-audio-api/#the-waveshapernode-interface). - * - * @example - * const osc = new Tone.Oscillator().toDestination().start(); - * // multiply the output of the signal by 2 using the waveshaper's function - * const timesTwo = new Tone.WaveShaper((val) => val * 2, 2048).connect(osc.frequency); - * const signal = new Tone.Signal(440).connect(timesTwo); - * @category Signal - */ -class WaveShaper extends SignalOperator { - constructor() { - super(Object.assign(optionsFromArguments(WaveShaper.getDefaults(), arguments, ["mapping", "length"]))); - this.name = "WaveShaper"; - /** - * the waveshaper node - */ - this._shaper = this.context.createWaveShaper(); - /** - * The input to the waveshaper node. - */ - this.input = this._shaper; - /** - * The output from the waveshaper node - */ - this.output = this._shaper; - const options = optionsFromArguments(WaveShaper.getDefaults(), arguments, ["mapping", "length"]); - if (isArray(options.mapping) || options.mapping instanceof Float32Array) { - this.curve = Float32Array.from(options.mapping); - } - else if (isFunction(options.mapping)) { - this.setMap(options.mapping, options.length); - } - } - static getDefaults() { - return Object.assign(Signal.getDefaults(), { - length: 1024, - }); - } - /** - * Uses a mapping function to set the value of the curve. - * @param mapping The function used to define the values. - * The mapping function take two arguments: - * the first is the value at the current position - * which goes from -1 to 1 over the number of elements - * in the curve array. The second argument is the array position. - * @example - * const shaper = new Tone.WaveShaper(); - * // map the input signal from [-1, 1] to [0, 10] - * shaper.setMap((val, index) => (val + 1) * 5); - */ - setMap(mapping, length = 1024) { - const array = new Float32Array(length); - for (let i = 0, len = length; i < len; i++) { - const normalized = (i / (len - 1)) * 2 - 1; - array[i] = mapping(normalized, i); - } - this.curve = array; - return this; - } - /** - * The array to set as the waveshaper curve. For linear curves - * array length does not make much difference, but for complex curves - * longer arrays will provide smoother interpolation. - */ - get curve() { - return this._shaper.curve; - } - set curve(mapping) { - this._shaper.curve = mapping; - } - /** - * Specifies what type of oversampling (if any) should be used when - * applying the shaping curve. Can either be "none", "2x" or "4x". - */ - get oversample() { - return this._shaper.oversample; - } - set oversample(oversampling) { - const isOverSampleType = ["none", "2x", "4x"].some(str => str.includes(oversampling)); - assert(isOverSampleType, "oversampling must be either 'none', '2x', or '4x'"); - this._shaper.oversample = oversampling; - } - /** - * Clean up. - */ - dispose() { - super.dispose(); - this._shaper.disconnect(); - return this; - } -} - -/** - * AudioToGain converts an input in AudioRange [-1,1] to NormalRange [0,1]. - * See [[GainToAudio]]. - * @category Signal - */ -class AudioToGain extends SignalOperator { - constructor() { - super(...arguments); - this.name = "AudioToGain"; - /** - * The node which converts the audio ranges - */ - this._norm = new WaveShaper({ - context: this.context, - mapping: x => (x + 1) / 2, - }); - /** - * The AudioRange input [-1, 1] - */ - this.input = this._norm; - /** - * The GainRange output [0, 1] - */ - this.output = this._norm; - } - /** - * clean up - */ - dispose() { - super.dispose(); - this._norm.dispose(); - return this; - } -} - -/** - * Multiply two incoming signals. Or, if a number is given in the constructor, - * multiplies the incoming signal by that value. - * - * @example - * // multiply two signals - * const mult = new Tone.Multiply(); - * const sigA = new Tone.Signal(3); - * const sigB = new Tone.Signal(4); - * sigA.connect(mult); - * sigB.connect(mult.factor); - * // output of mult is 12. - * @example - * // multiply a signal and a number - * const mult = new Tone.Multiply(10); - * const sig = new Tone.Signal(2).connect(mult); - * // the output of mult is 20. - * @category Signal - */ -class Multiply extends Signal { - constructor() { - super(Object.assign(optionsFromArguments(Multiply.getDefaults(), arguments, ["value"]))); - this.name = "Multiply"; - /** - * Indicates if the value should be overridden on connection - */ - this.override = false; - const options = optionsFromArguments(Multiply.getDefaults(), arguments, ["value"]); - this._mult = this.input = this.output = new Gain({ - context: this.context, - minValue: options.minValue, - maxValue: options.maxValue, - }); - this.factor = this._param = this._mult.gain; - this.factor.setValueAtTime(options.value, 0); - } - static getDefaults() { - return Object.assign(Signal.getDefaults(), { - value: 0, - }); - } - dispose() { - super.dispose(); - this._mult.dispose(); - return this; - } -} - -/** - * An amplitude modulated oscillator node. It is implemented with - * two oscillators, one which modulators the other's amplitude - * through a gain node. - * ``` - * +-------------+ +----------+ - * | Carrier Osc +>------> GainNode | - * +-------------+ | +--->Output - * +---> gain | - * +---------------+ | +----------+ - * | Modulator Osc +>---+ - * +---------------+ - * ``` - * @example - * return Tone.Offline(() => { - * const amOsc = new Tone.AMOscillator(30, "sine", "square").toDestination().start(); - * }, 0.2, 1); - * @category Source - */ -class AMOscillator extends Source { - constructor() { - super(optionsFromArguments(AMOscillator.getDefaults(), arguments, ["frequency", "type", "modulationType"])); - this.name = "AMOscillator"; - /** - * convert the -1,1 output to 0,1 - */ - this._modulationScale = new AudioToGain({ context: this.context }); - /** - * the node where the modulation happens - */ - this._modulationNode = new Gain({ - context: this.context, - }); - const options = optionsFromArguments(AMOscillator.getDefaults(), arguments, ["frequency", "type", "modulationType"]); - this._carrier = new Oscillator({ - context: this.context, - detune: options.detune, - frequency: options.frequency, - onstop: () => this.onstop(this), - phase: options.phase, - type: options.type, - }); - this.frequency = this._carrier.frequency, - this.detune = this._carrier.detune; - this._modulator = new Oscillator({ - context: this.context, - phase: options.phase, - type: options.modulationType, - }); - this.harmonicity = new Multiply({ - context: this.context, - units: "positive", - value: options.harmonicity, - }); - // connections - this.frequency.chain(this.harmonicity, this._modulator.frequency); - this._modulator.chain(this._modulationScale, this._modulationNode.gain); - this._carrier.chain(this._modulationNode, this.output); - readOnly(this, ["frequency", "detune", "harmonicity"]); - } - static getDefaults() { - return Object.assign(Oscillator.getDefaults(), { - harmonicity: 1, - modulationType: "square", - }); - } - /** - * start the oscillator - */ - _start(time) { - this._modulator.start(time); - this._carrier.start(time); - } - /** - * stop the oscillator - */ - _stop(time) { - this._modulator.stop(time); - this._carrier.stop(time); - } - _restart(time) { - this._modulator.restart(time); - this._carrier.restart(time); - } - /** - * The type of the carrier oscillator - */ - get type() { - return this._carrier.type; - } - set type(type) { - this._carrier.type = type; - } - get baseType() { - return this._carrier.baseType; - } - set baseType(baseType) { - this._carrier.baseType = baseType; - } - get partialCount() { - return this._carrier.partialCount; - } - set partialCount(partialCount) { - this._carrier.partialCount = partialCount; - } - /** - * The type of the modulator oscillator - */ - get modulationType() { - return this._modulator.type; - } - set modulationType(type) { - this._modulator.type = type; - } - get phase() { - return this._carrier.phase; - } - set phase(phase) { - this._carrier.phase = phase; - this._modulator.phase = phase; - } - get partials() { - return this._carrier.partials; - } - set partials(partials) { - this._carrier.partials = partials; - } - asArray(length = 1024) { - return __awaiter(this, void 0, void 0, function* () { - return generateWaveform(this, length); - }); - } - /** - * Clean up. - */ - dispose() { - super.dispose(); - this.frequency.dispose(); - this.detune.dispose(); - this.harmonicity.dispose(); - this._carrier.dispose(); - this._modulator.dispose(); - this._modulationNode.dispose(); - this._modulationScale.dispose(); - return this; - } -} - -/** - * FMOscillator implements a frequency modulation synthesis - * ``` - * +-------------+ - * +---------------+ +-------------+ | Carrier Osc | - * | Modulator Osc +>-------> GainNode | | +--->Output - * +---------------+ | +>----> frequency | - * +--> gain | +-------------+ - * | +-------------+ - * +-----------------+ | - * | modulationIndex +>--+ - * +-----------------+ - * ``` - * - * @example - * return Tone.Offline(() => { - * const fmOsc = new Tone.FMOscillator({ - * frequency: 200, - * type: "square", - * modulationType: "triangle", - * harmonicity: 0.2, - * modulationIndex: 3 - * }).toDestination().start(); - * }, 0.1, 1); - * @category Source - */ -class FMOscillator extends Source { - constructor() { - super(optionsFromArguments(FMOscillator.getDefaults(), arguments, ["frequency", "type", "modulationType"])); - this.name = "FMOscillator"; - /** - * the node where the modulation happens - */ - this._modulationNode = new Gain({ - context: this.context, - gain: 0, - }); - const options = optionsFromArguments(FMOscillator.getDefaults(), arguments, ["frequency", "type", "modulationType"]); - this._carrier = new Oscillator({ - context: this.context, - detune: options.detune, - frequency: 0, - onstop: () => this.onstop(this), - phase: options.phase, - type: options.type, - }); - this.detune = this._carrier.detune; - this.frequency = new Signal({ - context: this.context, - units: "frequency", - value: options.frequency, - }); - this._modulator = new Oscillator({ - context: this.context, - phase: options.phase, - type: options.modulationType, - }); - this.harmonicity = new Multiply({ - context: this.context, - units: "positive", - value: options.harmonicity, - }); - this.modulationIndex = new Multiply({ - context: this.context, - units: "positive", - value: options.modulationIndex, - }); - // connections - this.frequency.connect(this._carrier.frequency); - this.frequency.chain(this.harmonicity, this._modulator.frequency); - this.frequency.chain(this.modulationIndex, this._modulationNode); - this._modulator.connect(this._modulationNode.gain); - this._modulationNode.connect(this._carrier.frequency); - this._carrier.connect(this.output); - this.detune.connect(this._modulator.detune); - readOnly(this, ["modulationIndex", "frequency", "detune", "harmonicity"]); - } - static getDefaults() { - return Object.assign(Oscillator.getDefaults(), { - harmonicity: 1, - modulationIndex: 2, - modulationType: "square", - }); - } - /** - * start the oscillator - */ - _start(time) { - this._modulator.start(time); - this._carrier.start(time); - } - /** - * stop the oscillator - */ - _stop(time) { - this._modulator.stop(time); - this._carrier.stop(time); - } - _restart(time) { - this._modulator.restart(time); - this._carrier.restart(time); - return this; - } - get type() { - return this._carrier.type; - } - set type(type) { - this._carrier.type = type; - } - get baseType() { - return this._carrier.baseType; - } - set baseType(baseType) { - this._carrier.baseType = baseType; - } - get partialCount() { - return this._carrier.partialCount; - } - set partialCount(partialCount) { - this._carrier.partialCount = partialCount; - } - /** - * The type of the modulator oscillator - */ - get modulationType() { - return this._modulator.type; - } - set modulationType(type) { - this._modulator.type = type; - } - get phase() { - return this._carrier.phase; - } - set phase(phase) { - this._carrier.phase = phase; - this._modulator.phase = phase; - } - get partials() { - return this._carrier.partials; - } - set partials(partials) { - this._carrier.partials = partials; - } - asArray(length = 1024) { - return __awaiter(this, void 0, void 0, function* () { - return generateWaveform(this, length); - }); - } - /** - * Clean up. - */ - dispose() { - super.dispose(); - this.frequency.dispose(); - this.harmonicity.dispose(); - this._carrier.dispose(); - this._modulator.dispose(); - this._modulationNode.dispose(); - this.modulationIndex.dispose(); - return this; - } -} - -/** - * PulseOscillator is an oscillator with control over pulse width, - * also known as the duty cycle. At 50% duty cycle (width = 0) the wave is - * a square wave. - * [Read more](https://wigglewave.wordpress.com/2014/08/16/pulse-waveforms-and-harmonics/). - * ``` - * width = -0.25 width = 0.0 width = 0.25 - * - * +-----+ +-------+ + +-------+ +-+ - * | | | | | | | - * | | | | | | | - * +-+ +-------+ + +-------+ +-----+ - * - * - * width = -0.5 width = 0.5 - * - * +---+ +-------+ +---+ - * | | | | - * | | | | - * +---+ +-------+ +---+ - * - * - * width = -0.75 width = 0.75 - * - * +-+ +-------+ +-----+ - * | | | | - * | | | | - * +-----+ +-------+ +-+ - * ``` - * @example - * return Tone.Offline(() => { - * const pulse = new Tone.PulseOscillator(50, 0.4).toDestination().start(); - * }, 0.1, 1); - * @category Source - */ -class PulseOscillator extends Source { - constructor() { - super(optionsFromArguments(PulseOscillator.getDefaults(), arguments, ["frequency", "width"])); - this.name = "PulseOscillator"; - /** - * gate the width amount - */ - this._widthGate = new Gain({ - context: this.context, - gain: 0, - }); - /** - * Threshold the signal to turn it into a square - */ - this._thresh = new WaveShaper({ - context: this.context, - mapping: val => val <= 0 ? -1 : 1, - }); - const options = optionsFromArguments(PulseOscillator.getDefaults(), arguments, ["frequency", "width"]); - this.width = new Signal({ - context: this.context, - units: "audioRange", - value: options.width, - }); - this._triangle = new Oscillator({ - context: this.context, - detune: options.detune, - frequency: options.frequency, - onstop: () => this.onstop(this), - phase: options.phase, - type: "triangle", - }); - this.frequency = this._triangle.frequency; - this.detune = this._triangle.detune; - // connections - this._triangle.chain(this._thresh, this.output); - this.width.chain(this._widthGate, this._thresh); - readOnly(this, ["width", "frequency", "detune"]); - } - static getDefaults() { - return Object.assign(Source.getDefaults(), { - detune: 0, - frequency: 440, - phase: 0, - type: "pulse", - width: 0.2, - }); - } - /** - * start the oscillator - */ - _start(time) { - time = this.toSeconds(time); - this._triangle.start(time); - this._widthGate.gain.setValueAtTime(1, time); - } - /** - * stop the oscillator - */ - _stop(time) { - time = this.toSeconds(time); - this._triangle.stop(time); - // the width is still connected to the output. - // that needs to be stopped also - this._widthGate.gain.cancelScheduledValues(time); - this._widthGate.gain.setValueAtTime(0, time); - } - _restart(time) { - this._triangle.restart(time); - this._widthGate.gain.cancelScheduledValues(time); - this._widthGate.gain.setValueAtTime(1, time); - } - /** - * The phase of the oscillator in degrees. - */ - get phase() { - return this._triangle.phase; - } - set phase(phase) { - this._triangle.phase = phase; - } - /** - * The type of the oscillator. Always returns "pulse". - */ - get type() { - return "pulse"; - } - /** - * The baseType of the oscillator. Always returns "pulse". - */ - get baseType() { - return "pulse"; - } - /** - * The partials of the waveform. Cannot set partials for this waveform type - */ - get partials() { - return []; - } - /** - * No partials for this waveform type. - */ - get partialCount() { - return 0; - } - /** - * *Internal use* The carrier oscillator type is fed through the - * waveshaper node to create the pulse. Using different carrier oscillators - * changes oscillator's behavior. - */ - set carrierType(type) { - this._triangle.type = type; - } - asArray(length = 1024) { - return __awaiter(this, void 0, void 0, function* () { - return generateWaveform(this, length); - }); - } - /** - * Clean up method. - */ - dispose() { - super.dispose(); - this._triangle.dispose(); - this.width.dispose(); - this._widthGate.dispose(); - this._thresh.dispose(); - return this; - } -} - -/** - * FatOscillator is an array of oscillators with detune spread between the oscillators - * @example - * const fatOsc = new Tone.FatOscillator("Ab3", "sawtooth", 40).toDestination().start(); - * @category Source - */ -class FatOscillator extends Source { - constructor() { - super(optionsFromArguments(FatOscillator.getDefaults(), arguments, ["frequency", "type", "spread"])); - this.name = "FatOscillator"; - /** - * The array of oscillators - */ - this._oscillators = []; - const options = optionsFromArguments(FatOscillator.getDefaults(), arguments, ["frequency", "type", "spread"]); - this.frequency = new Signal({ - context: this.context, - units: "frequency", - value: options.frequency, - }); - this.detune = new Signal({ - context: this.context, - units: "cents", - value: options.detune, - }); - this._spread = options.spread; - this._type = options.type; - this._phase = options.phase; - this._partials = options.partials; - this._partialCount = options.partialCount; - // set the count initially - this.count = options.count; - readOnly(this, ["frequency", "detune"]); - } - static getDefaults() { - return Object.assign(Oscillator.getDefaults(), { - count: 3, - spread: 20, - type: "sawtooth", - }); - } - /** - * start the oscillator - */ - _start(time) { - time = this.toSeconds(time); - this._forEach(osc => osc.start(time)); - } - /** - * stop the oscillator - */ - _stop(time) { - time = this.toSeconds(time); - this._forEach(osc => osc.stop(time)); - } - _restart(time) { - this._forEach(osc => osc.restart(time)); - } - /** - * Iterate over all of the oscillators - */ - _forEach(iterator) { - for (let i = 0; i < this._oscillators.length; i++) { - iterator(this._oscillators[i], i); - } - } - /** - * The type of the oscillator - */ - get type() { - return this._type; - } - set type(type) { - this._type = type; - this._forEach(osc => osc.type = type); - } - /** - * The detune spread between the oscillators. If "count" is - * set to 3 oscillators and the "spread" is set to 40, - * the three oscillators would be detuned like this: [-20, 0, 20] - * for a total detune spread of 40 cents. - * @example - * const fatOsc = new Tone.FatOscillator().toDestination().start(); - * fatOsc.spread = 70; - */ - get spread() { - return this._spread; - } - set spread(spread) { - this._spread = spread; - if (this._oscillators.length > 1) { - const start = -spread / 2; - const step = spread / (this._oscillators.length - 1); - this._forEach((osc, i) => osc.detune.value = start + step * i); - } - } - /** - * The number of detuned oscillators. Must be an integer greater than 1. - * @example - * const fatOsc = new Tone.FatOscillator("C#3", "sawtooth").toDestination().start(); - * // use 4 sawtooth oscillators - * fatOsc.count = 4; - */ - get count() { - return this._oscillators.length; - } - set count(count) { - assertRange(count, 1); - if (this._oscillators.length !== count) { - // dispose the previous oscillators - this._forEach(osc => osc.dispose()); - this._oscillators = []; - for (let i = 0; i < count; i++) { - const osc = new Oscillator({ - context: this.context, - volume: -6 - count * 1.1, - type: this._type, - phase: this._phase + (i / count) * 360, - partialCount: this._partialCount, - onstop: i === 0 ? () => this.onstop(this) : noOp, - }); - if (this.type === "custom") { - osc.partials = this._partials; - } - this.frequency.connect(osc.frequency); - this.detune.connect(osc.detune); - osc.detune.overridden = false; - osc.connect(this.output); - this._oscillators[i] = osc; - } - // set the spread - this.spread = this._spread; - if (this.state === "started") { - this._forEach(osc => osc.start()); - } - } - } - get phase() { - return this._phase; - } - set phase(phase) { - this._phase = phase; - this._forEach((osc, i) => osc.phase = this._phase + (i / this.count) * 360); - } - get baseType() { - return this._oscillators[0].baseType; - } - set baseType(baseType) { - this._forEach(osc => osc.baseType = baseType); - this._type = this._oscillators[0].type; - } - get partials() { - return this._oscillators[0].partials; - } - set partials(partials) { - this._partials = partials; - this._partialCount = this._partials.length; - if (partials.length) { - this._type = "custom"; - this._forEach(osc => osc.partials = partials); - } - } - get partialCount() { - return this._oscillators[0].partialCount; - } - set partialCount(partialCount) { - this._partialCount = partialCount; - this._forEach(osc => osc.partialCount = partialCount); - this._type = this._oscillators[0].type; - } - asArray(length = 1024) { - return __awaiter(this, void 0, void 0, function* () { - return generateWaveform(this, length); - }); - } - /** - * Clean up. - */ - dispose() { - super.dispose(); - this.frequency.dispose(); - this.detune.dispose(); - this._forEach(osc => osc.dispose()); - return this; - } -} - -/** - * PWMOscillator modulates the width of a Tone.PulseOscillator - * at the modulationFrequency. This has the effect of continuously - * changing the timbre of the oscillator by altering the harmonics - * generated. - * @example - * return Tone.Offline(() => { - * const pwm = new Tone.PWMOscillator(60, 0.3).toDestination().start(); - * }, 0.1, 1); - * @category Source - */ -class PWMOscillator extends Source { - constructor() { - super(optionsFromArguments(PWMOscillator.getDefaults(), arguments, ["frequency", "modulationFrequency"])); - this.name = "PWMOscillator"; - this.sourceType = "pwm"; - /** - * Scale the oscillator so it doesn't go silent - * at the extreme values. - */ - this._scale = new Multiply({ - context: this.context, - value: 2, - }); - const options = optionsFromArguments(PWMOscillator.getDefaults(), arguments, ["frequency", "modulationFrequency"]); - this._pulse = new PulseOscillator({ - context: this.context, - frequency: options.modulationFrequency, - }); - // change the pulse oscillator type - this._pulse.carrierType = "sine"; - this.modulationFrequency = this._pulse.frequency; - this._modulator = new Oscillator({ - context: this.context, - detune: options.detune, - frequency: options.frequency, - onstop: () => this.onstop(this), - phase: options.phase, - }); - this.frequency = this._modulator.frequency; - this.detune = this._modulator.detune; - // connections - this._modulator.chain(this._scale, this._pulse.width); - this._pulse.connect(this.output); - readOnly(this, ["modulationFrequency", "frequency", "detune"]); - } - static getDefaults() { - return Object.assign(Source.getDefaults(), { - detune: 0, - frequency: 440, - modulationFrequency: 0.4, - phase: 0, - type: "pwm", - }); - } - /** - * start the oscillator - */ - _start(time) { - time = this.toSeconds(time); - this._modulator.start(time); - this._pulse.start(time); - } - /** - * stop the oscillator - */ - _stop(time) { - time = this.toSeconds(time); - this._modulator.stop(time); - this._pulse.stop(time); - } - /** - * restart the oscillator - */ - _restart(time) { - this._modulator.restart(time); - this._pulse.restart(time); - } - /** - * The type of the oscillator. Always returns "pwm". - */ - get type() { - return "pwm"; - } - /** - * The baseType of the oscillator. Always returns "pwm". - */ - get baseType() { - return "pwm"; - } - /** - * The partials of the waveform. Cannot set partials for this waveform type - */ - get partials() { - return []; - } - /** - * No partials for this waveform type. - */ - get partialCount() { - return 0; - } - /** - * The phase of the oscillator in degrees. - */ - get phase() { - return this._modulator.phase; - } - set phase(phase) { - this._modulator.phase = phase; - } - asArray(length = 1024) { - return __awaiter(this, void 0, void 0, function* () { - return generateWaveform(this, length); - }); - } - /** - * Clean up. - */ - dispose() { - super.dispose(); - this._pulse.dispose(); - this._scale.dispose(); - this._modulator.dispose(); - return this; - } -} - -const OmniOscillatorSourceMap = { - am: AMOscillator, - fat: FatOscillator, - fm: FMOscillator, - oscillator: Oscillator, - pulse: PulseOscillator, - pwm: PWMOscillator, -}; -/** - * OmniOscillator aggregates all of the oscillator types into one. - * @example - * return Tone.Offline(() => { - * const omniOsc = new Tone.OmniOscillator("C#4", "pwm").toDestination().start(); - * }, 0.1, 1); - * @category Source - */ -class OmniOscillator extends Source { - constructor() { - super(optionsFromArguments(OmniOscillator.getDefaults(), arguments, ["frequency", "type"])); - this.name = "OmniOscillator"; - const options = optionsFromArguments(OmniOscillator.getDefaults(), arguments, ["frequency", "type"]); - this.frequency = new Signal({ - context: this.context, - units: "frequency", - value: options.frequency, - }); - this.detune = new Signal({ - context: this.context, - units: "cents", - value: options.detune, - }); - readOnly(this, ["frequency", "detune"]); - // set the options - this.set(options); - } - static getDefaults() { - return Object.assign(Oscillator.getDefaults(), FMOscillator.getDefaults(), AMOscillator.getDefaults(), FatOscillator.getDefaults(), PulseOscillator.getDefaults(), PWMOscillator.getDefaults()); - } - /** - * start the oscillator - */ - _start(time) { - this._oscillator.start(time); - } - /** - * start the oscillator - */ - _stop(time) { - this._oscillator.stop(time); - } - _restart(time) { - this._oscillator.restart(time); - return this; - } - /** - * The type of the oscillator. Can be any of the basic types: sine, square, triangle, sawtooth. Or - * prefix the basic types with "fm", "am", or "fat" to use the FMOscillator, AMOscillator or FatOscillator - * types. The oscillator could also be set to "pwm" or "pulse". All of the parameters of the - * oscillator's class are accessible when the oscillator is set to that type, but throws an error - * when it's not. - * @example - * const omniOsc = new Tone.OmniOscillator().toDestination().start(); - * omniOsc.type = "pwm"; - * // modulationFrequency is parameter which is available - * // only when the type is "pwm". - * omniOsc.modulationFrequency.value = 0.5; - */ - get type() { - let prefix = ""; - if (["am", "fm", "fat"].some(p => this._sourceType === p)) { - prefix = this._sourceType; - } - return prefix + this._oscillator.type; - } - set type(type) { - if (type.substr(0, 2) === "fm") { - this._createNewOscillator("fm"); - this._oscillator = this._oscillator; - this._oscillator.type = type.substr(2); - } - else if (type.substr(0, 2) === "am") { - this._createNewOscillator("am"); - this._oscillator = this._oscillator; - this._oscillator.type = type.substr(2); - } - else if (type.substr(0, 3) === "fat") { - this._createNewOscillator("fat"); - this._oscillator = this._oscillator; - this._oscillator.type = type.substr(3); - } - else if (type === "pwm") { - this._createNewOscillator("pwm"); - this._oscillator = this._oscillator; - } - else if (type === "pulse") { - this._createNewOscillator("pulse"); - } - else { - this._createNewOscillator("oscillator"); - this._oscillator = this._oscillator; - this._oscillator.type = type; - } - } - /** - * The value is an empty array when the type is not "custom". - * This is not available on "pwm" and "pulse" oscillator types. - * See [[Oscillator.partials]] - */ - get partials() { - return this._oscillator.partials; - } - set partials(partials) { - if (!this._getOscType(this._oscillator, "pulse") && !this._getOscType(this._oscillator, "pwm")) { - this._oscillator.partials = partials; - } - } - get partialCount() { - return this._oscillator.partialCount; - } - set partialCount(partialCount) { - if (!this._getOscType(this._oscillator, "pulse") && !this._getOscType(this._oscillator, "pwm")) { - this._oscillator.partialCount = partialCount; - } - } - set(props) { - // make sure the type is set first - if (Reflect.has(props, "type") && props.type) { - this.type = props.type; - } - // then set the rest - super.set(props); - return this; - } - /** - * connect the oscillator to the frequency and detune signals - */ - _createNewOscillator(oscType) { - if (oscType !== this._sourceType) { - this._sourceType = oscType; - const OscConstructor = OmniOscillatorSourceMap[oscType]; - // short delay to avoid clicks on the change - const now = this.now(); - if (this._oscillator) { - const oldOsc = this._oscillator; - oldOsc.stop(now); - // dispose the old one - this.context.setTimeout(() => oldOsc.dispose(), this.blockTime); - } - this._oscillator = new OscConstructor({ - context: this.context, - }); - this.frequency.connect(this._oscillator.frequency); - this.detune.connect(this._oscillator.detune); - this._oscillator.connect(this.output); - this._oscillator.onstop = () => this.onstop(this); - if (this.state === "started") { - this._oscillator.start(now); - } - } - } - get phase() { - return this._oscillator.phase; - } - set phase(phase) { - this._oscillator.phase = phase; - } - /** - * The source type of the oscillator. - * @example - * const omniOsc = new Tone.OmniOscillator(440, "fmsquare"); - * console.log(omniOsc.sourceType); // 'fm' - */ - get sourceType() { - return this._sourceType; - } - set sourceType(sType) { - // the basetype defaults to sine - let baseType = "sine"; - if (this._oscillator.type !== "pwm" && this._oscillator.type !== "pulse") { - baseType = this._oscillator.type; - } - // set the type - if (sType === "fm") { - this.type = "fm" + baseType; - } - else if (sType === "am") { - this.type = "am" + baseType; - } - else if (sType === "fat") { - this.type = "fat" + baseType; - } - else if (sType === "oscillator") { - this.type = baseType; - } - else if (sType === "pulse") { - this.type = "pulse"; - } - else if (sType === "pwm") { - this.type = "pwm"; - } - } - _getOscType(osc, sourceType) { - return osc instanceof OmniOscillatorSourceMap[sourceType]; - } - /** - * The base type of the oscillator. See [[Oscillator.baseType]] - * @example - * const omniOsc = new Tone.OmniOscillator(440, "fmsquare4"); - * console.log(omniOsc.sourceType, omniOsc.baseType, omniOsc.partialCount); - */ - get baseType() { - return this._oscillator.baseType; - } - set baseType(baseType) { - if (!this._getOscType(this._oscillator, "pulse") && - !this._getOscType(this._oscillator, "pwm") && - baseType !== "pulse" && baseType !== "pwm") { - this._oscillator.baseType = baseType; - } - } - /** - * The width of the oscillator when sourceType === "pulse". - * See [[PWMOscillator.width]] - */ - get width() { - if (this._getOscType(this._oscillator, "pulse")) { - return this._oscillator.width; - } - else { - return undefined; - } - } - /** - * The number of detuned oscillators when sourceType === "fat". - * See [[FatOscillator.count]] - */ - get count() { - if (this._getOscType(this._oscillator, "fat")) { - return this._oscillator.count; - } - else { - return undefined; - } - } - set count(count) { - if (this._getOscType(this._oscillator, "fat") && isNumber(count)) { - this._oscillator.count = count; - } - } - /** - * The detune spread between the oscillators when sourceType === "fat". - * See [[FatOscillator.count]] - */ - get spread() { - if (this._getOscType(this._oscillator, "fat")) { - return this._oscillator.spread; - } - else { - return undefined; - } - } - set spread(spread) { - if (this._getOscType(this._oscillator, "fat") && isNumber(spread)) { - this._oscillator.spread = spread; - } - } - /** - * The type of the modulator oscillator. Only if the oscillator is set to "am" or "fm" types. - * See [[AMOscillator]] or [[FMOscillator]] - */ - get modulationType() { - if (this._getOscType(this._oscillator, "fm") || this._getOscType(this._oscillator, "am")) { - return this._oscillator.modulationType; - } - else { - return undefined; - } - } - set modulationType(mType) { - if ((this._getOscType(this._oscillator, "fm") || this._getOscType(this._oscillator, "am")) && isString(mType)) { - this._oscillator.modulationType = mType; - } - } - /** - * The modulation index when the sourceType === "fm" - * See [[FMOscillator]]. - */ - get modulationIndex() { - if (this._getOscType(this._oscillator, "fm")) { - return this._oscillator.modulationIndex; - } - else { - return undefined; - } - } - /** - * Harmonicity is the frequency ratio between the carrier and the modulator oscillators. - * See [[AMOscillator]] or [[FMOscillator]] - */ - get harmonicity() { - if (this._getOscType(this._oscillator, "fm") || this._getOscType(this._oscillator, "am")) { - return this._oscillator.harmonicity; - } - else { - return undefined; - } - } - /** - * The modulationFrequency Signal of the oscillator when sourceType === "pwm" - * see [[PWMOscillator]] - * @min 0.1 - * @max 5 - */ - get modulationFrequency() { - if (this._getOscType(this._oscillator, "pwm")) { - return this._oscillator.modulationFrequency; - } - else { - return undefined; - } - } - asArray(length = 1024) { - return __awaiter(this, void 0, void 0, function* () { - return generateWaveform(this, length); - }); - } - dispose() { - super.dispose(); - this.detune.dispose(); - this.frequency.dispose(); - this._oscillator.dispose(); - return this; - } -} - /** * Add a signal and a number or two signals. When no value is * passed into the constructor, Tone.Add will sum input and `addend` @@ -18322,389 +909,6 @@ class LFO extends ToneAudioNode { } } -/** - * Assert that the number is in the given range. - */ -function range(min, max = Infinity) { - const valueMap = new WeakMap(); - return function (target, propertyKey) { - Reflect.defineProperty(target, propertyKey, { - configurable: true, - enumerable: true, - get: function () { - return valueMap.get(this); - }, - set: function (newValue) { - assertRange(newValue, min, max); - valueMap.set(this, newValue); - } - }); - }; -} -/** - * Convert the time to seconds and assert that the time is in between the two - * values when being set. - */ -function timeRange(min, max = Infinity) { - const valueMap = new WeakMap(); - return function (target, propertyKey) { - Reflect.defineProperty(target, propertyKey, { - configurable: true, - enumerable: true, - get: function () { - return valueMap.get(this); - }, - set: function (newValue) { - assertRange(this.toSeconds(newValue), min, max); - valueMap.set(this, newValue); - } - }); - }; -} - -/** - * Player is an audio file player with start, loop, and stop functions. - * @example - * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/gong_1.mp3").toDestination(); - * // play as soon as the buffer is loaded - * player.autostart = true; - * @category Source - */ -class Player extends Source { - constructor() { - super(optionsFromArguments(Player.getDefaults(), arguments, ["url", "onload"])); - this.name = "Player"; - /** - * All of the active buffer source nodes - */ - this._activeSources = new Set(); - const options = optionsFromArguments(Player.getDefaults(), arguments, ["url", "onload"]); - this._buffer = new ToneAudioBuffer({ - onload: this._onload.bind(this, options.onload), - onerror: options.onerror, - reverse: options.reverse, - url: options.url, - }); - this.autostart = options.autostart; - this._loop = options.loop; - this._loopStart = options.loopStart; - this._loopEnd = options.loopEnd; - this._playbackRate = options.playbackRate; - this.fadeIn = options.fadeIn; - this.fadeOut = options.fadeOut; - } - static getDefaults() { - return Object.assign(Source.getDefaults(), { - autostart: false, - fadeIn: 0, - fadeOut: 0, - loop: false, - loopEnd: 0, - loopStart: 0, - onload: noOp, - onerror: noOp, - playbackRate: 1, - reverse: false, - }); - } - /** - * Load the audio file as an audio buffer. - * Decodes the audio asynchronously and invokes - * the callback once the audio buffer loads. - * Note: this does not need to be called if a url - * was passed in to the constructor. Only use this - * if you want to manually load a new url. - * @param url The url of the buffer to load. Filetype support depends on the browser. - */ - load(url) { - return __awaiter(this, void 0, void 0, function* () { - yield this._buffer.load(url); - this._onload(); - return this; - }); - } - /** - * Internal callback when the buffer is loaded. - */ - _onload(callback = noOp) { - callback(); - if (this.autostart) { - this.start(); - } - } - /** - * Internal callback when the buffer is done playing. - */ - _onSourceEnd(source) { - // invoke the onstop function - this.onstop(this); - // delete the source from the active sources - this._activeSources.delete(source); - if (this._activeSources.size === 0 && !this._synced && - this._state.getValueAtTime(this.now()) === "started") { - // remove the 'implicitEnd' event and replace with an explicit end - this._state.cancel(this.now()); - this._state.setStateAtTime("stopped", this.now()); - } - } - /** - * Play the buffer at the given startTime. Optionally add an offset - * and/or duration which will play the buffer from a position - * within the buffer for the given duration. - * - * @param time When the player should start. - * @param offset The offset from the beginning of the sample to start at. - * @param duration How long the sample should play. If no duration is given, it will default to the full length of the sample (minus any offset) - */ - start(time, offset, duration) { - super.start(time, offset, duration); - return this; - } - /** - * Internal start method - */ - _start(startTime, offset, duration) { - // if it's a loop the default offset is the loopStart point - if (this._loop) { - offset = defaultArg(offset, this._loopStart); - } - else { - // otherwise the default offset is 0 - offset = defaultArg(offset, 0); - } - // compute the values in seconds - const computedOffset = this.toSeconds(offset); - // compute the duration which is either the passed in duration of the buffer.duration - offset - const origDuration = duration; - duration = defaultArg(duration, Math.max(this._buffer.duration - computedOffset, 0)); - let computedDuration = this.toSeconds(duration); - // scale it by the playback rate - computedDuration = computedDuration / this._playbackRate; - // get the start time - startTime = this.toSeconds(startTime); - // make the source - const source = new ToneBufferSource({ - url: this._buffer, - context: this.context, - fadeIn: this.fadeIn, - fadeOut: this.fadeOut, - loop: this._loop, - loopEnd: this._loopEnd, - loopStart: this._loopStart, - onended: this._onSourceEnd.bind(this), - playbackRate: this._playbackRate, - }).connect(this.output); - // set the looping properties - if (!this._loop && !this._synced) { - // cancel the previous stop - this._state.cancel(startTime + computedDuration); - // if it's not looping, set the state change at the end of the sample - this._state.setStateAtTime("stopped", startTime + computedDuration, { - implicitEnd: true, - }); - } - // add it to the array of active sources - this._activeSources.add(source); - // start it - if (this._loop && isUndef(origDuration)) { - source.start(startTime, computedOffset); - } - else { - // subtract the fade out time - source.start(startTime, computedOffset, computedDuration - this.toSeconds(this.fadeOut)); - } - } - /** - * Stop playback. - */ - _stop(time) { - const computedTime = this.toSeconds(time); - this._activeSources.forEach(source => source.stop(computedTime)); - } - /** - * Stop and then restart the player from the beginning (or offset) - * @param time When the player should start. - * @param offset The offset from the beginning of the sample to start at. - * @param duration How long the sample should play. If no duration is given, - * it will default to the full length of the sample (minus any offset) - */ - restart(time, offset, duration) { - super.restart(time, offset, duration); - return this; - } - _restart(time, offset, duration) { - this._stop(time); - this._start(time, offset, duration); - } - /** - * Seek to a specific time in the player's buffer. If the - * source is no longer playing at that time, it will stop. - * @param offset The time to seek to. - * @param when The time for the seek event to occur. - * @example - * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/gurgling_theremin_1.mp3", () => { - * player.start(); - * // seek to the offset in 1 second from now - * player.seek(0.4, "+1"); - * }).toDestination(); - */ - seek(offset, when) { - const computedTime = this.toSeconds(when); - if (this._state.getValueAtTime(computedTime) === "started") { - const computedOffset = this.toSeconds(offset); - // if it's currently playing, stop it - this._stop(computedTime); - // restart it at the given time - this._start(computedTime, computedOffset); - } - return this; - } - /** - * Set the loop start and end. Will only loop if loop is set to true. - * @param loopStart The loop start time - * @param loopEnd The loop end time - * @example - * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/malevoices_aa2_F3.mp3").toDestination(); - * // loop between the given points - * player.setLoopPoints(0.2, 0.3); - * player.loop = true; - * player.autostart = true; - */ - setLoopPoints(loopStart, loopEnd) { - this.loopStart = loopStart; - this.loopEnd = loopEnd; - return this; - } - /** - * If loop is true, the loop will start at this position. - */ - get loopStart() { - return this._loopStart; - } - set loopStart(loopStart) { - this._loopStart = loopStart; - if (this.buffer.loaded) { - assertRange(this.toSeconds(loopStart), 0, this.buffer.duration); - } - // get the current source - this._activeSources.forEach(source => { - source.loopStart = loopStart; - }); - } - /** - * If loop is true, the loop will end at this position. - */ - get loopEnd() { - return this._loopEnd; - } - set loopEnd(loopEnd) { - this._loopEnd = loopEnd; - if (this.buffer.loaded) { - assertRange(this.toSeconds(loopEnd), 0, this.buffer.duration); - } - // get the current source - this._activeSources.forEach(source => { - source.loopEnd = loopEnd; - }); - } - /** - * The audio buffer belonging to the player. - */ - get buffer() { - return this._buffer; - } - set buffer(buffer) { - this._buffer.set(buffer); - } - /** - * If the buffer should loop once it's over. - * @example - * const player = new Tone.Player("https://tonejs.github.io/audio/drum-samples/breakbeat.mp3").toDestination(); - * player.loop = true; - * player.autostart = true; - */ - get loop() { - return this._loop; - } - set loop(loop) { - // if no change, do nothing - if (this._loop === loop) { - return; - } - this._loop = loop; - // set the loop of all of the sources - this._activeSources.forEach(source => { - source.loop = loop; - }); - if (loop) { - // remove the next stopEvent - const stopEvent = this._state.getNextState("stopped", this.now()); - if (stopEvent) { - this._state.cancel(stopEvent.time); - } - } - } - /** - * Normal speed is 1. The pitch will change with the playback rate. - * @example - * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/femalevoices_aa2_A5.mp3").toDestination(); - * // play at 1/4 speed - * player.playbackRate = 0.25; - * // play as soon as the buffer is loaded - * player.autostart = true; - */ - get playbackRate() { - return this._playbackRate; - } - set playbackRate(rate) { - this._playbackRate = rate; - const now = this.now(); - // cancel the stop event since it's at a different time now - const stopEvent = this._state.getNextState("stopped", now); - if (stopEvent && stopEvent.implicitEnd) { - this._state.cancel(stopEvent.time); - this._activeSources.forEach(source => source.cancelStop()); - } - // set all the sources - this._activeSources.forEach(source => { - source.playbackRate.setValueAtTime(rate, now); - }); - } - /** - * If the buffer should be reversed - * @example - * const player = new Tone.Player("https://tonejs.github.io/audio/berklee/chime_1.mp3").toDestination(); - * player.autostart = true; - * player.reverse = true; - */ - get reverse() { - return this._buffer.reverse; - } - set reverse(rev) { - this._buffer.reverse = rev; - } - /** - * If the buffer is loaded - */ - get loaded() { - return this._buffer.loaded; - } - dispose() { - super.dispose(); - // disconnect all of the players - this._activeSources.forEach(source => source.dispose()); - this._activeSources.clear(); - this._buffer.dispose(); - return this; - } -} -__decorate([ - timeRange(0) -], Player.prototype, "fadeIn", void 0); -__decorate([ - timeRange(0) -], Player.prototype, "fadeOut", void 0); - /** * Players combines multiple [[Player]] objects. * @category Source @@ -19554,797 +1758,6 @@ class SyncedSignal extends Signal { } } -/** - * Envelope is an [ADSR](https://en.wikipedia.org/wiki/Synthesizer#ADSR_envelope) - * envelope generator. Envelope outputs a signal which - * can be connected to an AudioParam or Tone.Signal. - * ``` - * /\ - * / \ - * / \ - * / \ - * / \___________ - * / \ - * / \ - * / \ - * / \ - * ``` - * @example - * return Tone.Offline(() => { - * const env = new Tone.Envelope({ - * attack: 0.1, - * decay: 0.2, - * sustain: 0.5, - * release: 0.8, - * }).toDestination(); - * env.triggerAttackRelease(0.5); - * }, 1.5, 1); - * @category Component - */ -class Envelope extends ToneAudioNode { - constructor() { - super(optionsFromArguments(Envelope.getDefaults(), arguments, ["attack", "decay", "sustain", "release"])); - this.name = "Envelope"; - /** - * the signal which is output. - */ - this._sig = new Signal({ - context: this.context, - value: 0, - }); - /** - * The output signal of the envelope - */ - this.output = this._sig; - /** - * Envelope has no input - */ - this.input = undefined; - const options = optionsFromArguments(Envelope.getDefaults(), arguments, ["attack", "decay", "sustain", "release"]); - this.attack = options.attack; - this.decay = options.decay; - this.sustain = options.sustain; - this.release = options.release; - this.attackCurve = options.attackCurve; - this.releaseCurve = options.releaseCurve; - this.decayCurve = options.decayCurve; - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - attack: 0.01, - attackCurve: "linear", - decay: 0.1, - decayCurve: "exponential", - release: 1, - releaseCurve: "exponential", - sustain: 0.5, - }); - } - /** - * Read the current value of the envelope. Useful for - * synchronizing visual output to the envelope. - */ - get value() { - return this.getValueAtTime(this.now()); - } - /** - * Get the curve - * @param curve - * @param direction In/Out - * @return The curve name - */ - _getCurve(curve, direction) { - if (isString(curve)) { - return curve; - } - else { - // look up the name in the curves array - let curveName; - for (curveName in EnvelopeCurves) { - if (EnvelopeCurves[curveName][direction] === curve) { - return curveName; - } - } - // return the custom curve - return curve; - } - } - /** - * Assign a the curve to the given name using the direction - * @param name - * @param direction In/Out - * @param curve - */ - _setCurve(name, direction, curve) { - // check if it's a valid type - if (isString(curve) && Reflect.has(EnvelopeCurves, curve)) { - const curveDef = EnvelopeCurves[curve]; - if (isObject(curveDef)) { - if (name !== "_decayCurve") { - this[name] = curveDef[direction]; - } - } - else { - this[name] = curveDef; - } - } - else if (isArray(curve) && name !== "_decayCurve") { - this[name] = curve; - } - else { - throw new Error("Envelope: invalid curve: " + curve); - } - } - /** - * The shape of the attack. - * Can be any of these strings: - * * "linear" - * * "exponential" - * * "sine" - * * "cosine" - * * "bounce" - * * "ripple" - * * "step" - * - * Can also be an array which describes the curve. Values - * in the array are evenly subdivided and linearly - * interpolated over the duration of the attack. - * @example - * return Tone.Offline(() => { - * const env = new Tone.Envelope(0.4).toDestination(); - * env.attackCurve = "linear"; - * env.triggerAttack(); - * }, 1, 1); - */ - get attackCurve() { - return this._getCurve(this._attackCurve, "In"); - } - set attackCurve(curve) { - this._setCurve("_attackCurve", "In", curve); - } - /** - * The shape of the release. See the attack curve types. - * @example - * return Tone.Offline(() => { - * const env = new Tone.Envelope({ - * release: 0.8 - * }).toDestination(); - * env.triggerAttack(); - * // release curve could also be defined by an array - * env.releaseCurve = [1, 0.3, 0.4, 0.2, 0.7, 0]; - * env.triggerRelease(0.2); - * }, 1, 1); - */ - get releaseCurve() { - return this._getCurve(this._releaseCurve, "Out"); - } - set releaseCurve(curve) { - this._setCurve("_releaseCurve", "Out", curve); - } - /** - * The shape of the decay either "linear" or "exponential" - * @example - * return Tone.Offline(() => { - * const env = new Tone.Envelope({ - * sustain: 0.1, - * decay: 0.5 - * }).toDestination(); - * env.decayCurve = "linear"; - * env.triggerAttack(); - * }, 1, 1); - */ - get decayCurve() { - return this._decayCurve; - } - set decayCurve(curve) { - assert(["linear", "exponential"].some(c => c === curve), `Invalid envelope curve: ${curve}`); - this._decayCurve = curve; - } - /** - * Trigger the attack/decay portion of the ADSR envelope. - * @param time When the attack should start. - * @param velocity The velocity of the envelope scales the vales. - * number between 0-1 - * @example - * const env = new Tone.AmplitudeEnvelope().toDestination(); - * const osc = new Tone.Oscillator().connect(env).start(); - * // trigger the attack 0.5 seconds from now with a velocity of 0.2 - * env.triggerAttack("+0.5", 0.2); - */ - triggerAttack(time, velocity = 1) { - this.log("triggerAttack", time, velocity); - time = this.toSeconds(time); - const originalAttack = this.toSeconds(this.attack); - let attack = originalAttack; - const decay = this.toSeconds(this.decay); - // check if it's not a complete attack - const currentValue = this.getValueAtTime(time); - if (currentValue > 0) { - // subtract the current value from the attack time - const attackRate = 1 / attack; - const remainingDistance = 1 - currentValue; - // the attack is now the remaining time - attack = remainingDistance / attackRate; - } - // attack - if (attack < this.sampleTime) { - this._sig.cancelScheduledValues(time); - // case where the attack time is 0 should set instantly - this._sig.setValueAtTime(velocity, time); - } - else if (this._attackCurve === "linear") { - this._sig.linearRampTo(velocity, attack, time); - } - else if (this._attackCurve === "exponential") { - this._sig.targetRampTo(velocity, attack, time); - } - else { - this._sig.cancelAndHoldAtTime(time); - let curve = this._attackCurve; - // find the starting position in the curve - for (let i = 1; i < curve.length; i++) { - // the starting index is between the two values - if (curve[i - 1] <= currentValue && currentValue <= curve[i]) { - curve = this._attackCurve.slice(i); - // the first index is the current value - curve[0] = currentValue; - break; - } - } - this._sig.setValueCurveAtTime(curve, time, attack, velocity); - } - // decay - if (decay && this.sustain < 1) { - const decayValue = velocity * this.sustain; - const decayStart = time + attack; - this.log("decay", decayStart); - if (this._decayCurve === "linear") { - this._sig.linearRampToValueAtTime(decayValue, decay + decayStart); - } - else { - this._sig.exponentialApproachValueAtTime(decayValue, decayStart, decay); - } - } - return this; - } - /** - * Triggers the release of the envelope. - * @param time When the release portion of the envelope should start. - * @example - * const env = new Tone.AmplitudeEnvelope().toDestination(); - * const osc = new Tone.Oscillator({ - * type: "sawtooth" - * }).connect(env).start(); - * env.triggerAttack(); - * // trigger the release half a second after the attack - * env.triggerRelease("+0.5"); - */ - triggerRelease(time) { - this.log("triggerRelease", time); - time = this.toSeconds(time); - const currentValue = this.getValueAtTime(time); - if (currentValue > 0) { - const release = this.toSeconds(this.release); - if (release < this.sampleTime) { - this._sig.setValueAtTime(0, time); - } - else if (this._releaseCurve === "linear") { - this._sig.linearRampTo(0, release, time); - } - else if (this._releaseCurve === "exponential") { - this._sig.targetRampTo(0, release, time); - } - else { - assert(isArray(this._releaseCurve), "releaseCurve must be either 'linear', 'exponential' or an array"); - this._sig.cancelAndHoldAtTime(time); - this._sig.setValueCurveAtTime(this._releaseCurve, time, release, currentValue); - } - } - return this; - } - /** - * Get the scheduled value at the given time. This will - * return the unconverted (raw) value. - * @example - * const env = new Tone.Envelope(0.5, 1, 0.4, 2); - * env.triggerAttackRelease(2); - * setInterval(() => console.log(env.getValueAtTime(Tone.now())), 100); - */ - getValueAtTime(time) { - return this._sig.getValueAtTime(time); - } - /** - * triggerAttackRelease is shorthand for triggerAttack, then waiting - * some duration, then triggerRelease. - * @param duration The duration of the sustain. - * @param time When the attack should be triggered. - * @param velocity The velocity of the envelope. - * @example - * const env = new Tone.AmplitudeEnvelope().toDestination(); - * const osc = new Tone.Oscillator().connect(env).start(); - * // trigger the release 0.5 seconds after the attack - * env.triggerAttackRelease(0.5); - */ - triggerAttackRelease(duration, time, velocity = 1) { - time = this.toSeconds(time); - this.triggerAttack(time, velocity); - this.triggerRelease(time + this.toSeconds(duration)); - return this; - } - /** - * Cancels all scheduled envelope changes after the given time. - */ - cancel(after) { - this._sig.cancelScheduledValues(this.toSeconds(after)); - return this; - } - /** - * Connect the envelope to a destination node. - */ - connect(destination, outputNumber = 0, inputNumber = 0) { - connectSignal(this, destination, outputNumber, inputNumber); - return this; - } - /** - * Render the envelope curve to an array of the given length. - * Good for visualizing the envelope curve. Rescales the duration of the - * envelope to fit the length. - */ - asArray(length = 1024) { - return __awaiter(this, void 0, void 0, function* () { - const duration = length / this.context.sampleRate; - const context = new OfflineContext(1, duration, this.context.sampleRate); - // normalize the ADSR for the given duration with 20% sustain time - const attackPortion = this.toSeconds(this.attack) + this.toSeconds(this.decay); - const envelopeDuration = attackPortion + this.toSeconds(this.release); - const sustainTime = envelopeDuration * 0.1; - const totalDuration = envelopeDuration + sustainTime; - // @ts-ignore - const clone = new this.constructor(Object.assign(this.get(), { - attack: duration * this.toSeconds(this.attack) / totalDuration, - decay: duration * this.toSeconds(this.decay) / totalDuration, - release: duration * this.toSeconds(this.release) / totalDuration, - context - })); - clone._sig.toDestination(); - clone.triggerAttackRelease(duration * (attackPortion + sustainTime) / totalDuration, 0); - const buffer = yield context.render(); - return buffer.getChannelData(0); - }); - } - dispose() { - super.dispose(); - this._sig.dispose(); - return this; - } -} -__decorate([ - timeRange(0) -], Envelope.prototype, "attack", void 0); -__decorate([ - timeRange(0) -], Envelope.prototype, "decay", void 0); -__decorate([ - range(0, 1) -], Envelope.prototype, "sustain", void 0); -__decorate([ - timeRange(0) -], Envelope.prototype, "release", void 0); -/** - * Generate some complex envelope curves. - */ -const EnvelopeCurves = (() => { - const curveLen = 128; - let i; - let k; - // cosine curve - const cosineCurve = []; - for (i = 0; i < curveLen; i++) { - cosineCurve[i] = Math.sin((i / (curveLen - 1)) * (Math.PI / 2)); - } - // ripple curve - const rippleCurve = []; - const rippleCurveFreq = 6.4; - for (i = 0; i < curveLen - 1; i++) { - k = (i / (curveLen - 1)); - const sineWave = Math.sin(k * (Math.PI * 2) * rippleCurveFreq - Math.PI / 2) + 1; - rippleCurve[i] = sineWave / 10 + k * 0.83; - } - rippleCurve[curveLen - 1] = 1; - // stairs curve - const stairsCurve = []; - const steps = 5; - for (i = 0; i < curveLen; i++) { - stairsCurve[i] = Math.ceil((i / (curveLen - 1)) * steps) / steps; - } - // in-out easing curve - const sineCurve = []; - for (i = 0; i < curveLen; i++) { - k = i / (curveLen - 1); - sineCurve[i] = 0.5 * (1 - Math.cos(Math.PI * k)); - } - // a bounce curve - const bounceCurve = []; - for (i = 0; i < curveLen; i++) { - k = i / (curveLen - 1); - const freq = Math.pow(k, 3) * 4 + 0.2; - const val = Math.cos(freq * Math.PI * 2 * k); - bounceCurve[i] = Math.abs(val * (1 - k)); - } - /** - * Invert a value curve to make it work for the release - */ - function invertCurve(curve) { - const out = new Array(curve.length); - for (let j = 0; j < curve.length; j++) { - out[j] = 1 - curve[j]; - } - return out; - } - /** - * reverse the curve - */ - function reverseCurve(curve) { - return curve.slice(0).reverse(); - } - /** - * attack and release curve arrays - */ - return { - bounce: { - In: invertCurve(bounceCurve), - Out: bounceCurve, - }, - cosine: { - In: cosineCurve, - Out: reverseCurve(cosineCurve), - }, - exponential: "exponential", - linear: "linear", - ripple: { - In: rippleCurve, - Out: invertCurve(rippleCurve), - }, - sine: { - In: sineCurve, - Out: invertCurve(sineCurve), - }, - step: { - In: stairsCurve, - Out: invertCurve(stairsCurve), - }, - }; -})(); - -/** - * Base-class for all instruments - */ -class Instrument extends ToneAudioNode { - constructor() { - super(optionsFromArguments(Instrument.getDefaults(), arguments)); - /** - * Keep track of all events scheduled to the transport - * when the instrument is 'synced' - */ - this._scheduledEvents = []; - /** - * If the instrument is currently synced - */ - this._synced = false; - this._original_triggerAttack = this.triggerAttack; - this._original_triggerRelease = this.triggerRelease; - const options = optionsFromArguments(Instrument.getDefaults(), arguments); - this._volume = this.output = new Volume({ - context: this.context, - volume: options.volume, - }); - this.volume = this._volume.volume; - readOnly(this, "volume"); - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - volume: 0, - }); - } - /** - * Sync the instrument to the Transport. All subsequent calls of - * [[triggerAttack]] and [[triggerRelease]] will be scheduled along the transport. - * @example - * const fmSynth = new Tone.FMSynth().toDestination(); - * fmSynth.volume.value = -6; - * fmSynth.sync(); - * // schedule 3 notes when the transport first starts - * fmSynth.triggerAttackRelease("C4", "8n", 0); - * fmSynth.triggerAttackRelease("E4", "8n", "8n"); - * fmSynth.triggerAttackRelease("G4", "8n", "4n"); - * // start the transport to hear the notes - * Tone.Transport.start(); - */ - sync() { - if (this._syncState()) { - this._syncMethod("triggerAttack", 1); - this._syncMethod("triggerRelease", 0); - } - return this; - } - /** - * set _sync - */ - _syncState() { - let changed = false; - if (!this._synced) { - this._synced = true; - changed = true; - } - return changed; - } - /** - * Wrap the given method so that it can be synchronized - * @param method Which method to wrap and sync - * @param timePosition What position the time argument appears in - */ - _syncMethod(method, timePosition) { - const originalMethod = this["_original_" + method] = this[method]; - this[method] = (...args) => { - const time = args[timePosition]; - const id = this.context.transport.schedule((t) => { - args[timePosition] = t; - originalMethod.apply(this, args); - }, time); - this._scheduledEvents.push(id); - }; - } - /** - * Unsync the instrument from the Transport - */ - unsync() { - this._scheduledEvents.forEach(id => this.context.transport.clear(id)); - this._scheduledEvents = []; - if (this._synced) { - this._synced = false; - this.triggerAttack = this._original_triggerAttack; - this.triggerRelease = this._original_triggerRelease; - } - return this; - } - /** - * Trigger the attack and then the release after the duration. - * @param note The note to trigger. - * @param duration How long the note should be held for before - * triggering the release. This value must be greater than 0. - * @param time When the note should be triggered. - * @param velocity The velocity the note should be triggered at. - * @example - * const synth = new Tone.Synth().toDestination(); - * // trigger "C4" for the duration of an 8th note - * synth.triggerAttackRelease("C4", "8n"); - */ - triggerAttackRelease(note, duration, time, velocity) { - const computedTime = this.toSeconds(time); - const computedDuration = this.toSeconds(duration); - this.triggerAttack(note, computedTime, velocity); - this.triggerRelease(computedTime + computedDuration); - return this; - } - /** - * clean up - * @returns {Instrument} this - */ - dispose() { - super.dispose(); - this._volume.dispose(); - this.unsync(); - this._scheduledEvents = []; - return this; - } -} - -/** - * Abstract base class for other monophonic instruments to extend. - */ -class Monophonic extends Instrument { - constructor() { - super(optionsFromArguments(Monophonic.getDefaults(), arguments)); - const options = optionsFromArguments(Monophonic.getDefaults(), arguments); - this.portamento = options.portamento; - this.onsilence = options.onsilence; - } - static getDefaults() { - return Object.assign(Instrument.getDefaults(), { - detune: 0, - onsilence: noOp, - portamento: 0, - }); - } - /** - * Trigger the attack of the note optionally with a given velocity. - * @param note The note to trigger. - * @param time When the note should start. - * @param velocity The velocity scaler determines how "loud" the note will be triggered. - * @example - * const synth = new Tone.Synth().toDestination(); - * // trigger the note a half second from now at half velocity - * synth.triggerAttack("C4", "+0.5", 0.5); - */ - triggerAttack(note, time, velocity = 1) { - this.log("triggerAttack", note, time, velocity); - const seconds = this.toSeconds(time); - this._triggerEnvelopeAttack(seconds, velocity); - this.setNote(note, seconds); - return this; - } - /** - * Trigger the release portion of the envelope - * @param time If no time is given, the release happens immediatly - * @example - * const synth = new Tone.Synth().toDestination(); - * synth.triggerAttack("C4"); - * // trigger the release a second from now - * synth.triggerRelease("+1"); - */ - triggerRelease(time) { - this.log("triggerRelease", time); - const seconds = this.toSeconds(time); - this._triggerEnvelopeRelease(seconds); - return this; - } - /** - * Set the note at the given time. If no time is given, the note - * will set immediately. - * @param note The note to change to. - * @param time The time when the note should be set. - * @example - * const synth = new Tone.Synth().toDestination(); - * synth.triggerAttack("C4"); - * // change to F#6 in one quarter note from now. - * synth.setNote("F#6", "+4n"); - */ - setNote(note, time) { - const computedTime = this.toSeconds(time); - const computedFrequency = note instanceof FrequencyClass ? note.toFrequency() : note; - if (this.portamento > 0 && this.getLevelAtTime(computedTime) > 0.05) { - const portTime = this.toSeconds(this.portamento); - this.frequency.exponentialRampTo(computedFrequency, portTime, computedTime); - } - else { - this.frequency.setValueAtTime(computedFrequency, computedTime); - } - return this; - } -} -__decorate([ - timeRange(0) -], Monophonic.prototype, "portamento", void 0); - -/** - * AmplitudeEnvelope is a Tone.Envelope connected to a gain node. - * Unlike Tone.Envelope, which outputs the envelope's value, AmplitudeEnvelope accepts - * an audio signal as the input and will apply the envelope to the amplitude - * of the signal. - * Read more about ADSR Envelopes on [Wikipedia](https://en.wikipedia.org/wiki/Synthesizer#ADSR_envelope). - * - * @example - * return Tone.Offline(() => { - * const ampEnv = new Tone.AmplitudeEnvelope({ - * attack: 0.1, - * decay: 0.2, - * sustain: 1.0, - * release: 0.8 - * }).toDestination(); - * // create an oscillator and connect it - * const osc = new Tone.Oscillator().connect(ampEnv).start(); - * // trigger the envelopes attack and release "8t" apart - * ampEnv.triggerAttackRelease("8t"); - * }, 1.5, 1); - * @category Component - */ -class AmplitudeEnvelope extends Envelope { - constructor() { - super(optionsFromArguments(AmplitudeEnvelope.getDefaults(), arguments, ["attack", "decay", "sustain", "release"])); - this.name = "AmplitudeEnvelope"; - this._gainNode = new Gain({ - context: this.context, - gain: 0, - }); - this.output = this._gainNode; - this.input = this._gainNode; - this._sig.connect(this._gainNode.gain); - this.output = this._gainNode; - this.input = this._gainNode; - } - /** - * Clean up - */ - dispose() { - super.dispose(); - this._gainNode.dispose(); - return this; - } -} - -/** - * Synth is composed simply of a [[OmniOscillator]] routed through an [[AmplitudeEnvelope]]. - * ``` - * +----------------+ +-------------------+ - * | OmniOscillator +>--> AmplitudeEnvelope +>--> Output - * +----------------+ +-------------------+ - * ``` - * @example - * const synth = new Tone.Synth().toDestination(); - * synth.triggerAttackRelease("C4", "8n"); - * @category Instrument - */ -class Synth extends Monophonic { - constructor() { - super(optionsFromArguments(Synth.getDefaults(), arguments)); - this.name = "Synth"; - const options = optionsFromArguments(Synth.getDefaults(), arguments); - this.oscillator = new OmniOscillator(Object.assign({ - context: this.context, - detune: options.detune, - onstop: () => this.onsilence(this), - }, options.oscillator)); - this.frequency = this.oscillator.frequency; - this.detune = this.oscillator.detune; - this.envelope = new AmplitudeEnvelope(Object.assign({ - context: this.context, - }, options.envelope)); - // connect the oscillators to the output - this.oscillator.chain(this.envelope, this.output); - readOnly(this, ["oscillator", "frequency", "detune", "envelope"]); - } - static getDefaults() { - return Object.assign(Monophonic.getDefaults(), { - envelope: Object.assign(omitFromObject(Envelope.getDefaults(), Object.keys(ToneAudioNode.getDefaults())), { - attack: 0.005, - decay: 0.1, - release: 1, - sustain: 0.3, - }), - oscillator: Object.assign(omitFromObject(OmniOscillator.getDefaults(), [...Object.keys(Source.getDefaults()), "frequency", "detune"]), { - type: "triangle", - }), - }); - } - /** - * start the attack portion of the envelope - * @param time the time the attack should start - * @param velocity the velocity of the note (0-1) - */ - _triggerEnvelopeAttack(time, velocity) { - // the envelopes - this.envelope.triggerAttack(time, velocity); - this.oscillator.start(time); - // if there is no release portion, stop the oscillator - if (this.envelope.sustain === 0) { - const computedAttack = this.toSeconds(this.envelope.attack); - const computedDecay = this.toSeconds(this.envelope.decay); - this.oscillator.stop(time + computedAttack + computedDecay); - } - } - /** - * start the release portion of the envelope - * @param time the time the release should start - */ - _triggerEnvelopeRelease(time) { - this.envelope.triggerRelease(time); - this.oscillator.stop(time + this.toSeconds(this.envelope.release)); - } - getLevelAtTime(time) { - time = this.toSeconds(time); - return this.envelope.getValueAtTime(time); - } - /** - * clean up - */ - dispose() { - super.dispose(); - this.oscillator.dispose(); - this.envelope.dispose(); - return this; - } -} - /** * Base class for both AM and FM synths */ @@ -21279,68 +2692,6 @@ class MetalSynth extends Monophonic { } } -/** - * MembraneSynth makes kick and tom sounds using a single oscillator - * with an amplitude envelope and frequency ramp. A Tone.OmniOscillator - * is routed through a Tone.AmplitudeEnvelope to the output. The drum - * quality of the sound comes from the frequency envelope applied - * during MembraneSynth.triggerAttack(note). The frequency envelope - * starts at note * .octaves and ramps to note - * over the duration of .pitchDecay. - * @example - * const synth = new Tone.MembraneSynth().toDestination(); - * synth.triggerAttackRelease("C2", "8n"); - * @category Instrument - */ -class MembraneSynth extends Synth { - constructor() { - super(optionsFromArguments(MembraneSynth.getDefaults(), arguments)); - this.name = "MembraneSynth"; - /** - * Portamento is ignored in this synth. use pitch decay instead. - */ - this.portamento = 0; - const options = optionsFromArguments(MembraneSynth.getDefaults(), arguments); - this.pitchDecay = options.pitchDecay; - this.octaves = options.octaves; - readOnly(this, ["oscillator", "envelope"]); - } - static getDefaults() { - return deepMerge(Monophonic.getDefaults(), Synth.getDefaults(), { - envelope: { - attack: 0.001, - attackCurve: "exponential", - decay: 0.4, - release: 1.4, - sustain: 0.01, - }, - octaves: 10, - oscillator: { - type: "sine", - }, - pitchDecay: 0.05, - }); - } - setNote(note, time) { - const seconds = this.toSeconds(time); - const hertz = this.toFrequency(note instanceof FrequencyClass ? note.toFrequency() : note); - const maxNote = hertz * this.octaves; - this.oscillator.frequency.setValueAtTime(maxNote, seconds); - this.oscillator.frequency.exponentialRampToValueAtTime(hertz, seconds + this.toSeconds(this.pitchDecay)); - return this; - } - dispose() { - super.dispose(); - return this; - } -} -__decorate([ - range(0) -], MembraneSynth.prototype, "octaves", void 0); -__decorate([ - timeRange(0) -], MembraneSynth.prototype, "pitchDecay", void 0); - /** * Tone.NoiseSynth is composed of [[Noise]] through an [[AmplitudeEnvelope]]. * ``` @@ -21427,30 +2778,6 @@ class NoiseSynth extends Instrument { } } -/** - * All of the classes or functions which are loaded into the AudioWorkletGlobalScope - */ -const workletContext = new Set(); -/** - * Add a class to the AudioWorkletGlobalScope - */ -function addToWorklet(classOrFunction) { - workletContext.add(classOrFunction); -} -/** - * Register a processor in the AudioWorkletGlobalScope with the given name - */ -function registerProcessor(name, classDesc) { - const processor = /* javascript */ `registerProcessor("${name}", ${classDesc})`; - workletContext.add(processor); -} -/** - * Get all of the modules which have been registered to the AudioWorkletGlobalScope - */ -function getWorkletGlobalScope() { - return Array.from(workletContext).join("\n"); -} - class ToneAudioWorklet extends ToneAudioNode { constructor(options) { super(options); @@ -21488,190 +2815,6 @@ class ToneAudioWorklet extends ToneAudioNode { } } -const toneAudioWorkletProcessor = /* javascript */ ` - /** - * The base AudioWorkletProcessor for use in Tone.js. Works with the [[ToneAudioWorklet]]. - */ - class ToneAudioWorkletProcessor extends AudioWorkletProcessor { - - constructor(options) { - - super(options); - /** - * If the processor was disposed or not. Keep alive until it's disposed. - */ - this.disposed = false; - /** - * The number of samples in the processing block - */ - this.blockSize = 128; - /** - * the sample rate - */ - this.sampleRate = sampleRate; - - this.port.onmessage = (event) => { - // when it receives a dispose - if (event.data === "dispose") { - this.disposed = true; - } - }; - } - } -`; -addToWorklet(toneAudioWorkletProcessor); - -const singleIOProcess = /* javascript */ ` - /** - * Abstract class for a single input/output processor. - * has a 'generate' function which processes one sample at a time - */ - class SingleIOProcessor extends ToneAudioWorkletProcessor { - - constructor(options) { - super(Object.assign(options, { - numberOfInputs: 1, - numberOfOutputs: 1 - })); - /** - * Holds the name of the parameter and a single value of that - * parameter at the current sample - * @type { [name: string]: number } - */ - this.params = {} - } - - /** - * Generate an output sample from the input sample and parameters - * @abstract - * @param input number - * @param channel number - * @param parameters { [name: string]: number } - * @returns number - */ - generate(){} - - /** - * Update the private params object with the - * values of the parameters at the given index - * @param parameters { [name: string]: Float32Array }, - * @param index number - */ - updateParams(parameters, index) { - for (const paramName in parameters) { - const param = parameters[paramName]; - if (param.length > 1) { - this.params[paramName] = parameters[paramName][index]; - } else { - this.params[paramName] = parameters[paramName][0]; - } - } - } - - /** - * Process a single frame of the audio - * @param inputs Float32Array[][] - * @param outputs Float32Array[][] - */ - process(inputs, outputs, parameters) { - const input = inputs[0]; - const output = outputs[0]; - // get the parameter values - const channelCount = Math.max(input && input.length || 0, output.length); - for (let sample = 0; sample < this.blockSize; sample++) { - this.updateParams(parameters, sample); - for (let channel = 0; channel < channelCount; channel++) { - const inputSample = input && input.length ? input[channel][sample] : 0; - output[channel][sample] = this.generate(inputSample, channel, this.params); - } - } - return !this.disposed; - } - }; -`; -addToWorklet(singleIOProcess); - -const delayLine = /* javascript */ ` - /** - * A multichannel buffer for use within an AudioWorkletProcessor as a delay line - */ - class DelayLine { - - constructor(size, channels) { - this.buffer = []; - this.writeHead = [] - this.size = size; - - // create the empty channels - for (let i = 0; i < channels; i++) { - this.buffer[i] = new Float32Array(this.size); - this.writeHead[i] = 0; - } - } - - /** - * Push a value onto the end - * @param channel number - * @param value number - */ - push(channel, value) { - this.writeHead[channel] += 1; - if (this.writeHead[channel] > this.size) { - this.writeHead[channel] = 0; - } - this.buffer[channel][this.writeHead[channel]] = value; - } - - /** - * Get the recorded value of the channel given the delay - * @param channel number - * @param delay number delay samples - */ - get(channel, delay) { - let readHead = this.writeHead[channel] - Math.floor(delay); - if (readHead < 0) { - readHead += this.size; - } - return this.buffer[channel][readHead]; - } - } -`; -addToWorklet(delayLine); - -const workletName = "feedback-comb-filter"; -const feedbackCombFilter = /* javascript */ ` - class FeedbackCombFilterWorklet extends SingleIOProcessor { - - constructor(options) { - super(options); - this.delayLine = new DelayLine(this.sampleRate, options.channelCount || 2); - } - - static get parameterDescriptors() { - return [{ - name: "delayTime", - defaultValue: 0.1, - minValue: 0, - maxValue: 1, - automationRate: "k-rate" - }, { - name: "feedback", - defaultValue: 0.5, - minValue: 0, - maxValue: 0.9999, - automationRate: "k-rate" - }]; - } - - generate(input, channel, parameters) { - const delayedSample = this.delayLine.get(channel, parameters.delayTime * this.sampleRate); - this.delayLine.push(channel, input + delayedSample * parameters.feedback); - return delayedSample; - } - } -`; -registerProcessor(workletName, feedbackCombFilter); - /** * Comb filters are basic building blocks for physical modeling. Read more * about comb filters on [CCRMA's website](https://ccrma.stanford.edu/~jos/pasp/Feedback_Comb_Filters.html). @@ -22254,254 +3397,6 @@ class PolySynth extends Instrument { } } -/** - * Pass in an object which maps the note's pitch or midi value to the url, - * then you can trigger the attack and release of that note like other instruments. - * By automatically repitching the samples, it is possible to play pitches which - * were not explicitly included which can save loading time. - * - * For sample or buffer playback where repitching is not necessary, - * use [[Player]]. - * @example - * const sampler = new Tone.Sampler({ - * urls: { - * A1: "A1.mp3", - * A2: "A2.mp3", - * }, - * baseUrl: "https://tonejs.github.io/audio/casio/", - * onload: () => { - * sampler.triggerAttackRelease(["C1", "E1", "G1", "B1"], 0.5); - * } - * }).toDestination(); - * @category Instrument - */ -class Sampler extends Instrument { - constructor() { - super(optionsFromArguments(Sampler.getDefaults(), arguments, ["urls", "onload", "baseUrl"], "urls")); - this.name = "Sampler"; - /** - * The object of all currently playing BufferSources - */ - this._activeSources = new Map(); - const options = optionsFromArguments(Sampler.getDefaults(), arguments, ["urls", "onload", "baseUrl"], "urls"); - const urlMap = {}; - Object.keys(options.urls).forEach((note) => { - const noteNumber = parseInt(note, 10); - assert(isNote(note) - || (isNumber(noteNumber) && isFinite(noteNumber)), `url key is neither a note or midi pitch: ${note}`); - if (isNote(note)) { - // convert the note name to MIDI - const mid = new FrequencyClass(this.context, note).toMidi(); - urlMap[mid] = options.urls[note]; - } - else if (isNumber(noteNumber) && isFinite(noteNumber)) { - // otherwise if it's numbers assume it's midi - urlMap[noteNumber] = options.urls[noteNumber]; - } - }); - this._buffers = new ToneAudioBuffers({ - urls: urlMap, - onload: options.onload, - baseUrl: options.baseUrl, - onerror: options.onerror, - }); - this.attack = options.attack; - this.release = options.release; - this.curve = options.curve; - // invoke the callback if it's already loaded - if (this._buffers.loaded) { - // invoke onload deferred - Promise.resolve().then(options.onload); - } - } - static getDefaults() { - return Object.assign(Instrument.getDefaults(), { - attack: 0, - baseUrl: "", - curve: "exponential", - onload: noOp, - onerror: noOp, - release: 0.1, - urls: {}, - }); - } - /** - * Returns the difference in steps between the given midi note at the closets sample. - */ - _findClosest(midi) { - // searches within 8 octaves of the given midi note - const MAX_INTERVAL = 96; - let interval = 0; - while (interval < MAX_INTERVAL) { - // check above and below - if (this._buffers.has(midi + interval)) { - return -interval; - } - else if (this._buffers.has(midi - interval)) { - return interval; - } - interval++; - } - throw new Error(`No available buffers for note: ${midi}`); - } - /** - * @param notes The note to play, or an array of notes. - * @param time When to play the note - * @param velocity The velocity to play the sample back. - */ - triggerAttack(notes, time, velocity = 1) { - this.log("triggerAttack", notes, time, velocity); - if (!Array.isArray(notes)) { - notes = [notes]; - } - notes.forEach(note => { - const midiFloat = ftomf(new FrequencyClass(this.context, note).toFrequency()); - const midi = Math.round(midiFloat); - const remainder = midiFloat - midi; - // find the closest note pitch - const difference = this._findClosest(midi); - const closestNote = midi - difference; - const buffer = this._buffers.get(closestNote); - const playbackRate = intervalToFrequencyRatio(difference + remainder); - // play that note - const source = new ToneBufferSource({ - url: buffer, - context: this.context, - curve: this.curve, - fadeIn: this.attack, - fadeOut: this.release, - playbackRate, - }).connect(this.output); - source.start(time, 0, buffer.duration / playbackRate, velocity); - // add it to the active sources - if (!isArray(this._activeSources.get(midi))) { - this._activeSources.set(midi, []); - } - this._activeSources.get(midi).push(source); - // remove it when it's done - source.onended = () => { - if (this._activeSources && this._activeSources.has(midi)) { - const sources = this._activeSources.get(midi); - const index = sources.indexOf(source); - if (index !== -1) { - sources.splice(index, 1); - } - } - }; - }); - return this; - } - /** - * @param notes The note to release, or an array of notes. - * @param time When to release the note. - */ - triggerRelease(notes, time) { - this.log("triggerRelease", notes, time); - if (!Array.isArray(notes)) { - notes = [notes]; - } - notes.forEach(note => { - const midi = new FrequencyClass(this.context, note).toMidi(); - // find the note - if (this._activeSources.has(midi) && this._activeSources.get(midi).length) { - const sources = this._activeSources.get(midi); - time = this.toSeconds(time); - sources.forEach(source => { - source.stop(time); - }); - this._activeSources.set(midi, []); - } - }); - return this; - } - /** - * Release all currently active notes. - * @param time When to release the notes. - */ - releaseAll(time) { - const computedTime = this.toSeconds(time); - this._activeSources.forEach(sources => { - while (sources.length) { - const source = sources.shift(); - source.stop(computedTime); - } - }); - return this; - } - sync() { - if (this._syncState()) { - this._syncMethod("triggerAttack", 1); - this._syncMethod("triggerRelease", 1); - } - return this; - } - /** - * Invoke the attack phase, then after the duration, invoke the release. - * @param notes The note to play and release, or an array of notes. - * @param duration The time the note should be held - * @param time When to start the attack - * @param velocity The velocity of the attack - */ - triggerAttackRelease(notes, duration, time, velocity = 1) { - const computedTime = this.toSeconds(time); - this.triggerAttack(notes, computedTime, velocity); - if (isArray(duration)) { - assert(isArray(notes), "notes must be an array when duration is array"); - notes.forEach((note, index) => { - const d = duration[Math.min(index, duration.length - 1)]; - this.triggerRelease(note, computedTime + this.toSeconds(d)); - }); - } - else { - this.triggerRelease(notes, computedTime + this.toSeconds(duration)); - } - return this; - } - /** - * Add a note to the sampler. - * @param note The buffer's pitch. - * @param url Either the url of the buffer, or a buffer which will be added with the given name. - * @param callback The callback to invoke when the url is loaded. - */ - add(note, url, callback) { - assert(isNote(note) || isFinite(note), `note must be a pitch or midi: ${note}`); - if (isNote(note)) { - // convert the note name to MIDI - const mid = new FrequencyClass(this.context, note).toMidi(); - this._buffers.add(mid, url, callback); - } - else { - // otherwise if it's numbers assume it's midi - this._buffers.add(note, url, callback); - } - return this; - } - /** - * If the buffers are loaded or not - */ - get loaded() { - return this._buffers.loaded; - } - /** - * Clean up - */ - dispose() { - super.dispose(); - this._buffers.dispose(); - this._activeSources.forEach(sources => { - sources.forEach(source => source.dispose()); - }); - this._activeSources.clear(); - return this; - } -} -__decorate([ - timeRange(0) -], Sampler.prototype, "attack", void 0); -__decorate([ - timeRange(0) -], Sampler.prototype, "release", void 0); - /** * ToneEvent abstracts away this.context.transport.schedule and provides a schedulable * callback for a single or repeatable events along the timeline. @@ -24124,57 +5019,6 @@ class AutoFilter extends LFOEffect { } } -/** - * Panner is an equal power Left/Right Panner. It is a wrapper around the StereoPannerNode. - * @example - * return Tone.Offline(() => { - * // move the input signal from right to left - * const panner = new Tone.Panner(1).toDestination(); - * panner.pan.rampTo(-1, 0.5); - * const osc = new Tone.Oscillator(100).connect(panner).start(); - * }, 0.5, 2); - * @category Component - */ -class Panner extends ToneAudioNode { - constructor() { - super(Object.assign(optionsFromArguments(Panner.getDefaults(), arguments, ["pan"]))); - this.name = "Panner"; - /** - * the panner node - */ - this._panner = this.context.createStereoPanner(); - this.input = this._panner; - this.output = this._panner; - const options = optionsFromArguments(Panner.getDefaults(), arguments, ["pan"]); - this.pan = new Param({ - context: this.context, - param: this._panner.pan, - value: options.pan, - minValue: -1, - maxValue: 1, - }); - // this is necessary for standardized-audio-context - // doesn't make any difference for the native AudioContext - // https://github.com/chrisguttandin/standardized-audio-context/issues/647 - this._panner.channelCount = options.channelCount; - this._panner.channelCountMode = "explicit"; - // initial value - readOnly(this, "pan"); - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - pan: 0, - channelCount: 1, - }); - } - dispose() { - super.dispose(); - this._panner.disconnect(); - this.pan.dispose(); - return this; - } -} - /** * AutoPanner is a [[Panner]] with an [[LFO]] connected to the pan amount. * [Related Reading](https://www.ableton.com/en/blog/autopan-chopper-effect-and-more-liveschool/). @@ -24383,29 +5227,6 @@ class AutoWah extends Effect { } } -const workletName$1 = "bit-crusher"; -const bitCrusherWorklet = /* javascript */ ` - class BitCrusherWorklet extends SingleIOProcessor { - - static get parameterDescriptors() { - return [{ - name: "bits", - defaultValue: 12, - minValue: 1, - maxValue: 16, - automationRate: 'k-rate' - }]; - } - - generate(input, _channel, parameters) { - const step = Math.pow(0.5, parameters.bits - 1); - const val = step * Math.floor(input / step + 0.5); - return val; - } - } -`; -registerProcessor(workletName$1, bitCrusherWorklet); - /** * BitCrusher down-samples the incoming signal to a different bit depth. * Lowering the bit depth of the signal creates distortion. Read more about BitCrushing @@ -26501,298 +7322,6 @@ class Waveform extends MeterBase { } } -/** - * Solo lets you isolate a specific audio stream. When an instance is set to `solo=true`, - * it will mute all other instances of Solo. - * @example - * const soloA = new Tone.Solo().toDestination(); - * const oscA = new Tone.Oscillator("C4", "sawtooth").connect(soloA); - * const soloB = new Tone.Solo().toDestination(); - * const oscB = new Tone.Oscillator("E4", "square").connect(soloB); - * soloA.solo = true; - * // no audio will pass through soloB - * @category Component - */ -class Solo extends ToneAudioNode { - constructor() { - super(optionsFromArguments(Solo.getDefaults(), arguments, ["solo"])); - this.name = "Solo"; - const options = optionsFromArguments(Solo.getDefaults(), arguments, ["solo"]); - this.input = this.output = new Gain({ - context: this.context, - }); - if (!Solo._allSolos.has(this.context)) { - Solo._allSolos.set(this.context, new Set()); - } - Solo._allSolos.get(this.context).add(this); - // set initially - this.solo = options.solo; - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - solo: false, - }); - } - /** - * Isolates this instance and mutes all other instances of Solo. - * Only one instance can be soloed at a time. A soloed - * instance will report `solo=false` when another instance is soloed. - */ - get solo() { - return this._isSoloed(); - } - set solo(solo) { - if (solo) { - this._addSolo(); - } - else { - this._removeSolo(); - } - Solo._allSolos.get(this.context).forEach(instance => instance._updateSolo()); - } - /** - * If the current instance is muted, i.e. another instance is soloed - */ - get muted() { - return this.input.gain.value === 0; - } - /** - * Add this to the soloed array - */ - _addSolo() { - if (!Solo._soloed.has(this.context)) { - Solo._soloed.set(this.context, new Set()); - } - Solo._soloed.get(this.context).add(this); - } - /** - * Remove this from the soloed array - */ - _removeSolo() { - if (Solo._soloed.has(this.context)) { - Solo._soloed.get(this.context).delete(this); - } - } - /** - * Is this on the soloed array - */ - _isSoloed() { - return Solo._soloed.has(this.context) && Solo._soloed.get(this.context).has(this); - } - /** - * Returns true if no one is soloed - */ - _noSolos() { - // either does not have any soloed added - return !Solo._soloed.has(this.context) || - // or has a solo set but doesn't include any items - (Solo._soloed.has(this.context) && Solo._soloed.get(this.context).size === 0); - } - /** - * Solo the current instance and unsolo all other instances. - */ - _updateSolo() { - if (this._isSoloed()) { - this.input.gain.value = 1; - } - else if (this._noSolos()) { - // no one is soloed - this.input.gain.value = 1; - } - else { - this.input.gain.value = 0; - } - } - dispose() { - super.dispose(); - Solo._allSolos.get(this.context).delete(this); - this._removeSolo(); - return this; - } -} -/** - * Hold all of the solo'ed tracks belonging to a specific context - */ -Solo._allSolos = new Map(); -/** - * Hold the currently solo'ed instance(s) - */ -Solo._soloed = new Map(); - -/** - * PanVol is a Tone.Panner and Tone.Volume in one. - * @example - * // pan the incoming signal left and drop the volume - * const panVol = new Tone.PanVol(-0.25, -12).toDestination(); - * const osc = new Tone.Oscillator().connect(panVol).start(); - * @category Component - */ -class PanVol extends ToneAudioNode { - constructor() { - super(optionsFromArguments(PanVol.getDefaults(), arguments, ["pan", "volume"])); - this.name = "PanVol"; - const options = optionsFromArguments(PanVol.getDefaults(), arguments, ["pan", "volume"]); - this._panner = this.input = new Panner({ - context: this.context, - pan: options.pan, - channelCount: options.channelCount, - }); - this.pan = this._panner.pan; - this._volume = this.output = new Volume({ - context: this.context, - volume: options.volume, - }); - this.volume = this._volume.volume; - // connections - this._panner.connect(this._volume); - this.mute = options.mute; - readOnly(this, ["pan", "volume"]); - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - mute: false, - pan: 0, - volume: 0, - channelCount: 1, - }); - } - /** - * Mute/unmute the volume - */ - get mute() { - return this._volume.mute; - } - set mute(mute) { - this._volume.mute = mute; - } - dispose() { - super.dispose(); - this._panner.dispose(); - this.pan.dispose(); - this._volume.dispose(); - this.volume.dispose(); - return this; - } -} - -/** - * Channel provides a channel strip interface with volume, pan, solo and mute controls. - * See [[PanVol]] and [[Solo]] - * @example - * // pan the incoming signal left and drop the volume 12db - * const channel = new Tone.Channel(-0.25, -12); - * @category Component - */ -class Channel extends ToneAudioNode { - constructor() { - super(optionsFromArguments(Channel.getDefaults(), arguments, ["volume", "pan"])); - this.name = "Channel"; - const options = optionsFromArguments(Channel.getDefaults(), arguments, ["volume", "pan"]); - this._solo = this.input = new Solo({ - solo: options.solo, - context: this.context, - }); - this._panVol = this.output = new PanVol({ - context: this.context, - pan: options.pan, - volume: options.volume, - mute: options.mute, - channelCount: options.channelCount - }); - this.pan = this._panVol.pan; - this.volume = this._panVol.volume; - this._solo.connect(this._panVol); - readOnly(this, ["pan", "volume"]); - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - pan: 0, - volume: 0, - mute: false, - solo: false, - channelCount: 1, - }); - } - /** - * Solo/unsolo the channel. Soloing is only relative to other [[Channels]] and [[Solo]] instances - */ - get solo() { - return this._solo.solo; - } - set solo(solo) { - this._solo.solo = solo; - } - /** - * If the current instance is muted, i.e. another instance is soloed, - * or the channel is muted - */ - get muted() { - return this._solo.muted || this.mute; - } - /** - * Mute/unmute the volume - */ - get mute() { - return this._panVol.mute; - } - set mute(mute) { - this._panVol.mute = mute; - } - /** - * Get the gain node belonging to the bus name. Create it if - * it doesn't exist - * @param name The bus name - */ - _getBus(name) { - if (!Channel.buses.has(name)) { - Channel.buses.set(name, new Gain({ context: this.context })); - } - return Channel.buses.get(name); - } - /** - * Send audio to another channel using a string. `send` is a lot like - * [[connect]], except it uses a string instead of an object. This can - * be useful in large applications to decouple sections since [[send]] - * and [[receive]] can be invoked separately in order to connect an object - * @param name The channel name to send the audio - * @param volume The amount of the signal to send. - * Defaults to 0db, i.e. send the entire signal - * @returns Returns the gain node of this connection. - */ - send(name, volume = 0) { - const bus = this._getBus(name); - const sendKnob = new Gain({ - context: this.context, - units: "decibels", - gain: volume, - }); - this.connect(sendKnob); - sendKnob.connect(bus); - return sendKnob; - } - /** - * Receive audio from a channel which was connected with [[send]]. - * @param name The channel name to receive audio from. - */ - receive(name) { - const bus = this._getBus(name); - bus.connect(this); - return this; - } - dispose() { - super.dispose(); - this._panVol.dispose(); - this.pan.dispose(); - this.volume.dispose(); - this._solo.dispose(); - return this; - } -} -/** - * Store the send/receive channels by name. - */ -Channel.buses = new Map(); - /** * Mono coerces the incoming mono or stereo signal into a mono signal * where both left and right channels have the same value. This can be useful @@ -26934,90 +7463,6 @@ class MultibandSplit extends ToneAudioNode { } } -/** - * Tone.Listener is a thin wrapper around the AudioListener. Listener combined - * with [[Panner3D]] makes up the Web Audio API's 3D panning system. Panner3D allows you - * to place sounds in 3D and Listener allows you to navigate the 3D sound environment from - * a first-person perspective. There is only one listener per audio context. - */ -class Listener extends ToneAudioNode { - constructor() { - super(...arguments); - this.name = "Listener"; - this.positionX = new Param({ - context: this.context, - param: this.context.rawContext.listener.positionX, - }); - this.positionY = new Param({ - context: this.context, - param: this.context.rawContext.listener.positionY, - }); - this.positionZ = new Param({ - context: this.context, - param: this.context.rawContext.listener.positionZ, - }); - this.forwardX = new Param({ - context: this.context, - param: this.context.rawContext.listener.forwardX, - }); - this.forwardY = new Param({ - context: this.context, - param: this.context.rawContext.listener.forwardY, - }); - this.forwardZ = new Param({ - context: this.context, - param: this.context.rawContext.listener.forwardZ, - }); - this.upX = new Param({ - context: this.context, - param: this.context.rawContext.listener.upX, - }); - this.upY = new Param({ - context: this.context, - param: this.context.rawContext.listener.upY, - }); - this.upZ = new Param({ - context: this.context, - param: this.context.rawContext.listener.upZ, - }); - } - static getDefaults() { - return Object.assign(ToneAudioNode.getDefaults(), { - positionX: 0, - positionY: 0, - positionZ: 0, - forwardX: 0, - forwardY: 0, - forwardZ: -1, - upX: 0, - upY: 1, - upZ: 0, - }); - } - dispose() { - super.dispose(); - this.positionX.dispose(); - this.positionY.dispose(); - this.positionZ.dispose(); - this.forwardX.dispose(); - this.forwardY.dispose(); - this.forwardZ.dispose(); - this.upX.dispose(); - this.upY.dispose(); - this.upZ.dispose(); - return this; - } -} -//------------------------------------- -// INITIALIZATION -//------------------------------------- -onContextInit(context => { - context.listener = new Listener({ context }); -}); -onContextClose(context => { - context.listener.dispose(); -}); - /** * A spatialized panner node which supports equalpower or HRTF panning. * @category Component @@ -27816,96 +8261,4 @@ class Convolver extends ToneAudioNode { } } -/** - * The current audio context time of the global [[Context]]. - * See [[Context.now]] - * @category Core - */ -function now() { - return getContext().now(); -} -/** - * The current audio context time of the global [[Context]] without the [[Context.lookAhead]] - * See [[Context.immediate]] - * @category Core - */ -function immediate() { - return getContext().immediate(); -} -/** - * The Transport object belonging to the global Tone.js Context. - * See [[Transport]] - * @category Core - */ -const Transport$1 = getContext().transport; -/** - * The Transport object belonging to the global Tone.js Context. - * See [[Transport]] - * @category Core - */ -function getTransport() { - return getContext().transport; -} -/** - * The Destination (output) belonging to the global Tone.js Context. - * See [[Destination]] - * @category Core - */ -const Destination$1 = getContext().destination; -/** - * @deprecated Use [[Destination]] - */ -const Master = getContext().destination; -/** - * The Destination (output) belonging to the global Tone.js Context. - * See [[Destination]] - * @category Core - */ -function getDestination() { - return getContext().destination; -} -/** - * The [[Listener]] belonging to the global Tone.js Context. - * @category Core - */ -const Listener$1 = getContext().listener; -/** - * The [[Listener]] belonging to the global Tone.js Context. - * @category Core - */ -function getListener() { - return getContext().listener; -} -/** - * Draw is used to synchronize the draw frame with the Transport's callbacks. - * See [[Draw]] - * @category Core - */ -const Draw$1 = getContext().draw; -/** - * Get the singleton attached to the global context. - * Draw is used to synchronize the draw frame with the Transport's callbacks. - * See [[Draw]] - * @category Core - */ -function getDraw() { - return getContext().draw; -} -/** - * A reference to the global context - * See [[Context]] - */ -const context = getContext(); -/** - * Promise which resolves when all of the loading promises are resolved. - * Alias for static [[ToneAudioBuffer.loaded]] method. - * @category Core - */ -function loaded() { - return ToneAudioBuffer.loaded(); -} -const Buffer = ToneAudioBuffer; -const Buffers = ToneAudioBuffers; -const BufferSource = ToneBufferSource; - -export { AMOscillator, AMSynth, Abs, Add, AmplitudeEnvelope, Analyser, AudioToGain, AutoFilter, AutoPanner, AutoWah, BaseContext, BiquadFilter, BitCrusher, Buffer, BufferSource, Buffers, Channel, Chebyshev, Chorus, Clock, Compressor, Context, Convolver, CrossFade, DCMeter, Delay, Destination$1 as Destination, Distortion, Draw$1 as Draw, DuoSynth, EQ3, Emitter, Envelope, FFT, FMOscillator, FMSynth, FatOscillator, FeedbackCombFilter, FeedbackDelay, Filter, Follower, Freeverb, Frequency, FrequencyClass, FrequencyEnvelope, FrequencyShifter, Gain, GainToAudio, Gate, GrainPlayer, GreaterThan, GreaterThanZero, IntervalTimeline, JCReverb, LFO, Limiter, Listener$1 as Listener, Loop, LowpassCombFilter, Master, MembraneSynth, Merge, MetalSynth, Meter, MidSideCompressor, MidSideMerge, MidSideSplit, Midi, MidiClass, Mono, MonoSynth, MultibandCompressor, MultibandSplit, Multiply, Negate, Noise, NoiseSynth, Offline, OfflineContext, OmniOscillator, OnePoleFilter, Oscillator, PWMOscillator, PanVol, Panner, Panner3D, Param, Part, Pattern, Phaser, PingPongDelay, PitchShift, Player, Players, PluckSynth, PolySynth, Pow, PulseOscillator, Recorder, Reverb, Sampler, Scale, ScaleExp, Sequence, Signal, Solo, Split, StateTimeline, StereoWidener, Subtract, SyncedSignal, Synth, Ticks, TicksClass, Time, TimeClass, Timeline, ToneAudioBuffer, ToneAudioBuffers, ToneAudioNode, ToneBufferSource, ToneEvent, ToneOscillatorNode, Transport$1 as Transport, TransportTime, TransportTimeClass, Tremolo, Units as Unit, UserMedia, Vibrato, Volume, WaveShaper, Waveform, Zero, connect, connectSeries, connectSignal, context, dbToGain, Debug as debug, defaultArg, disconnect, ftom, gainToDb, getContext, getDestination, getDraw, getListener, getTransport, immediate, intervalToFrequencyRatio, isArray, isBoolean, isDefined, isFunction, isNote, isNumber, isObject, isString, isUndef, loaded, mtof, now, optionsFromArguments, setContext, start, isSupported as supported, version }; +export { AMSynth, Abs, Add, Analyser, AutoFilter, AutoPanner, AutoWah, BiquadFilter, BitCrusher, Chebyshev, Chorus, Compressor, Convolver, CrossFade, DCMeter, Delay, Distortion, DuoSynth, EQ3, FFT, FMSynth, FeedbackCombFilter, FeedbackDelay, Filter, Follower, Freeverb, FrequencyEnvelope, FrequencyShifter, GainToAudio, Gate, GrainPlayer, GreaterThan, GreaterThanZero, JCReverb, LFO, Limiter, Loop, LowpassCombFilter, Merge, MetalSynth, Meter, MidSideCompressor, MidSideMerge, MidSideSplit, Mono, MonoSynth, MultibandCompressor, MultibandSplit, Negate, Noise, NoiseSynth, Offline, OnePoleFilter, Panner3D, Part, Pattern, Phaser, PingPongDelay, PitchShift, Players, PluckSynth, PolySynth, Pow, Recorder, Reverb, Scale, ScaleExp, Sequence, Split, StereoWidener, Subtract, SyncedSignal, ToneEvent, Tremolo, Units as Unit, UserMedia, Vibrato, Waveform, Zero }; diff --git a/docs/_snowpack/pkg/webmidi.js b/docs/_snowpack/pkg/webmidi.js index 6f2f04b4..92d89cc9 100644 --- a/docs/_snowpack/pkg/webmidi.js +++ b/docs/_snowpack/pkg/webmidi.js @@ -1,37 +1,3 @@ -import { c as createCommonjsModule, a as commonjsGlobal } from './common/_commonjsHelpers-8c19dec8.js'; - -var webmidi_min = createCommonjsModule(function (module) { -/* - -WebMidi v2.5.3 - -WebMidi.js helps you tame the Web MIDI API. Send and receive MIDI messages with ease. Control instruments with user-friendly functions (playNote, sendPitchBend, etc.). React to MIDI input with simple event listeners (noteon, pitchbend, controlchange, etc.). -https://github.com/djipco/webmidi - - -The MIT License (MIT) - -Copyright (c) 2015-2019, Jean-Philippe Côté - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and -associated documentation files (the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT -NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES -OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -*/ - - -!function(scope){function WebMidi(){if(WebMidi.prototype._singleton)throw new Error("WebMidi is a singleton, it cannot be instantiated directly.");(WebMidi.prototype._singleton=this)._inputs=[],this._outputs=[],this._userHandlers={},this._stateChangeQueue=[],this._processingStateChange=!1,this._midiInterfaceEvents=["connected","disconnected"],this._nrpnBuffer=[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]],this._nrpnEventsEnabled=!0,this._nrpnTypes=["entry","increment","decrement"],this._notes=["C","C#","D","D#","E","F","F#","G","G#","A","A#","B"],this._semitones={C:0,D:2,E:4,F:5,G:7,A:9,B:11},Object.defineProperties(this,{MIDI_SYSTEM_MESSAGES:{value:{sysex:240,timecode:241,songposition:242,songselect:243,tuningrequest:246,sysexend:247,clock:248,start:250,continue:251,stop:252,activesensing:254,reset:255,midimessage:0,unknownsystemmessage:-1},writable:!1,enumerable:!0,configurable:!1},MIDI_CHANNEL_MESSAGES:{value:{noteoff:8,noteon:9,keyaftertouch:10,controlchange:11,channelmode:11,nrpn:11,programchange:12,channelaftertouch:13,pitchbend:14},writable:!1,enumerable:!0,configurable:!1},MIDI_REGISTERED_PARAMETER:{value:{pitchbendrange:[0,0],channelfinetuning:[0,1],channelcoarsetuning:[0,2],tuningprogram:[0,3],tuningbank:[0,4],modulationrange:[0,5],azimuthangle:[61,0],elevationangle:[61,1],gain:[61,2],distanceratio:[61,3],maximumdistance:[61,4],maximumdistancegain:[61,5],referencedistanceratio:[61,6],panspreadangle:[61,7],rollangle:[61,8]},writable:!1,enumerable:!0,configurable:!1},MIDI_CONTROL_CHANGE_MESSAGES:{value:{bankselectcoarse:0,modulationwheelcoarse:1,breathcontrollercoarse:2,footcontrollercoarse:4,portamentotimecoarse:5,dataentrycoarse:6,volumecoarse:7,balancecoarse:8,pancoarse:10,expressioncoarse:11,effectcontrol1coarse:12,effectcontrol2coarse:13,generalpurposeslider1:16,generalpurposeslider2:17,generalpurposeslider3:18,generalpurposeslider4:19,bankselectfine:32,modulationwheelfine:33,breathcontrollerfine:34,footcontrollerfine:36,portamentotimefine:37,dataentryfine:38,volumefine:39,balancefine:40,panfine:42,expressionfine:43,effectcontrol1fine:44,effectcontrol2fine:45,holdpedal:64,portamento:65,sustenutopedal:66,softpedal:67,legatopedal:68,hold2pedal:69,soundvariation:70,resonance:71,soundreleasetime:72,soundattacktime:73,brightness:74,soundcontrol6:75,soundcontrol7:76,soundcontrol8:77,soundcontrol9:78,soundcontrol10:79,generalpurposebutton1:80,generalpurposebutton2:81,generalpurposebutton3:82,generalpurposebutton4:83,reverblevel:91,tremololevel:92,choruslevel:93,celestelevel:94,phaserlevel:95,databuttonincrement:96,databuttondecrement:97,nonregisteredparametercoarse:98,nonregisteredparameterfine:99,registeredparametercoarse:100,registeredparameterfine:101},writable:!1,enumerable:!0,configurable:!1},MIDI_NRPN_MESSAGES:{value:{entrymsb:6,entrylsb:38,increment:96,decrement:97,paramlsb:98,parammsb:99,nullactiveparameter:127},writable:!1,enumerable:!0,configurable:!1},MIDI_CHANNEL_MODE_MESSAGES:{value:{allsoundoff:120,resetallcontrollers:121,localcontrol:122,allnotesoff:123,omnimodeoff:124,omnimodeon:125,monomodeon:126,polymodeon:127},writable:!1,enumerable:!0,configurable:!1},octaveOffset:{value:0,writable:!0,enumerable:!0,configurable:!1}}),Object.defineProperties(this,{supported:{enumerable:!0,get:function(){return "requestMIDIAccess"in navigator}},enabled:{enumerable:!0,get:function(){return void 0!==this.interface}.bind(this)},inputs:{enumerable:!0,get:function(){return this._inputs}.bind(this)},outputs:{enumerable:!0,get:function(){return this._outputs}.bind(this)},sysexEnabled:{enumerable:!0,get:function(){return !(!this.interface||!this.interface.sysexEnabled)}.bind(this)},nrpnEventsEnabled:{enumerable:!0,get:function(){return !!this._nrpnEventsEnabled}.bind(this),set:function(enabled){return this._nrpnEventsEnabled=enabled,this._nrpnEventsEnabled}},nrpnTypes:{enumerable:!0,get:function(){return this._nrpnTypes}.bind(this)},time:{enumerable:!0,get:function(){return performance.now()}}});}var wm=new WebMidi;function Input(midiInput){var that=this;this._userHandlers={channel:{},system:{}},this._midiInput=midiInput,Object.defineProperties(this,{connection:{enumerable:!0,get:function(){return that._midiInput.connection}},id:{enumerable:!0,get:function(){return that._midiInput.id}},manufacturer:{enumerable:!0,get:function(){return that._midiInput.manufacturer}},name:{enumerable:!0,get:function(){return that._midiInput.name}},state:{enumerable:!0,get:function(){return that._midiInput.state}},type:{enumerable:!0,get:function(){return that._midiInput.type}}}),this._initializeUserHandlers(),this._midiInput.onmidimessage=this._onMidiMessage.bind(this);}function Output(midiOutput){var that=this;this._midiOutput=midiOutput,Object.defineProperties(this,{connection:{enumerable:!0,get:function(){return that._midiOutput.connection}},id:{enumerable:!0,get:function(){return that._midiOutput.id}},manufacturer:{enumerable:!0,get:function(){return that._midiOutput.manufacturer}},name:{enumerable:!0,get:function(){return that._midiOutput.name}},state:{enumerable:!0,get:function(){return that._midiOutput.state}},type:{enumerable:!0,get:function(){return that._midiOutput.type}}});}WebMidi.prototype.enable=function(callback,sysex){this.enabled||(this.supported?navigator.requestMIDIAccess({sysex:sysex}).then(function(midiAccess){var promiseTimeout,events=[],promises=[];this.interface=midiAccess,this._resetInterfaceUserHandlers(),this.interface.onstatechange=function(e){events.push(e);};for(var inputs=midiAccess.inputs.values(),input=inputs.next();input&&!input.done;input=inputs.next())promises.push(input.value.open());for(var outputs=midiAccess.outputs.values(),output=outputs.next();output&&!output.done;output=outputs.next())promises.push(output.value.open());function onPortsOpen(){clearTimeout(promiseTimeout),this._updateInputsAndOutputs(),this.interface.onstatechange=this._onInterfaceStateChange.bind(this),"function"==typeof callback&&callback.call(this),events.forEach(function(event){this._onInterfaceStateChange(event);}.bind(this));}promiseTimeout=setTimeout(onPortsOpen.bind(this),200),Promise&&Promise.all(promises).catch(function(err){}).then(onPortsOpen.bind(this));}.bind(this),function(err){"function"==typeof callback&&callback.call(this,err);}.bind(this)):"function"==typeof callback&&callback(new Error("The Web MIDI API is not supported by your browser.")));},WebMidi.prototype.disable=function(){if(!this.supported)throw new Error("The Web MIDI API is not supported by your browser.");this.enabled&&(this.removeListener(),this.inputs.forEach(function(input){input.removeListener();})),this.interface&&(this.interface.onstatechange=void 0),this.interface=void 0,this._inputs=[],this._outputs=[],this._nrpnEventsEnabled=!0,this._resetInterfaceUserHandlers();},WebMidi.prototype.addListener=function(type,listener){if(!this.enabled)throw new Error("WebMidi must be enabled before adding event listeners.");if("function"!=typeof listener)throw new TypeError("The 'listener' parameter must be a function.");if(!(0<=this._midiInterfaceEvents.indexOf(type)))throw new TypeError("The specified event type is not supported.");return this._userHandlers[type].push(listener),this},WebMidi.prototype.hasListener=function(type,listener){if(!this.enabled)throw new Error("WebMidi must be enabled before checking event listeners.");if("function"!=typeof listener)throw new TypeError("The 'listener' parameter must be a function.");if(!(0<=this._midiInterfaceEvents.indexOf(type)))throw new TypeError("The specified event type is not supported.");for(var o=0;o>4,channelBufferIndex=15&e.data[0],channel=1+channelBufferIndex;if(1=wm.MIDI_NRPN_MESSAGES.increment&&data1<=wm.MIDI_NRPN_MESSAGES.parammsb||data1===wm.MIDI_NRPN_MESSAGES.entrymsb||data1===wm.MIDI_NRPN_MESSAGES.entrylsb)){var ccEvent={target:this,type:"controlchange",data:e.data,timestamp:e.timeStamp,channel:channel,controller:{number:data1,name:this.getCcNameByNumber(data1)},value:data2};if(ccEvent.controller.number===wm.MIDI_NRPN_MESSAGES.parammsb&&ccEvent.value!=wm.MIDI_NRPN_MESSAGES.nullactiveparameter)wm._nrpnBuffer[channelBufferIndex]=[],wm._nrpnBuffer[channelBufferIndex][0]=ccEvent;else if(1===wm._nrpnBuffer[channelBufferIndex].length&&ccEvent.controller.number===wm.MIDI_NRPN_MESSAGES.paramlsb)wm._nrpnBuffer[channelBufferIndex].push(ccEvent);else if(2!==wm._nrpnBuffer[channelBufferIndex].length||ccEvent.controller.number!==wm.MIDI_NRPN_MESSAGES.increment&&ccEvent.controller.number!==wm.MIDI_NRPN_MESSAGES.decrement&&ccEvent.controller.number!==wm.MIDI_NRPN_MESSAGES.entrymsb)if(3===wm._nrpnBuffer[channelBufferIndex].length&&wm._nrpnBuffer[channelBufferIndex][2].number===wm.MIDI_NRPN_MESSAGES.entrymsb&&ccEvent.controller.number===wm.MIDI_NRPN_MESSAGES.entrylsb)wm._nrpnBuffer[channelBufferIndex].push(ccEvent);else if(3<=wm._nrpnBuffer[channelBufferIndex].length&&wm._nrpnBuffer[channelBufferIndex].length<=4&&ccEvent.controller.number===wm.MIDI_NRPN_MESSAGES.parammsb&&ccEvent.value===wm.MIDI_NRPN_MESSAGES.nullactiveparameter)wm._nrpnBuffer[channelBufferIndex].push(ccEvent);else if(4<=wm._nrpnBuffer[channelBufferIndex].length&&wm._nrpnBuffer[channelBufferIndex].length<=5&&ccEvent.controller.number===wm.MIDI_NRPN_MESSAGES.paramlsb&&ccEvent.value===wm.MIDI_NRPN_MESSAGES.nullactiveparameter){wm._nrpnBuffer[channelBufferIndex].push(ccEvent);var rawData=[];wm._nrpnBuffer[channelBufferIndex].forEach(function(ev){rawData.push(ev.data);});var nrpnNumber=wm._nrpnBuffer[channelBufferIndex][0].value<<7|wm._nrpnBuffer[channelBufferIndex][1].value,nrpnValue=wm._nrpnBuffer[channelBufferIndex][2].value;6===wm._nrpnBuffer[channelBufferIndex].length&&(nrpnValue=wm._nrpnBuffer[channelBufferIndex][2].value<<7|wm._nrpnBuffer[channelBufferIndex][3].value);var nrpnControllerType="";switch(wm._nrpnBuffer[channelBufferIndex][2].controller.number){case wm.MIDI_NRPN_MESSAGES.entrymsb:nrpnControllerType=wm._nrpnTypes[0];break;case wm.MIDI_NRPN_MESSAGES.increment:nrpnControllerType=wm._nrpnTypes[1];break;case wm.MIDI_NRPN_MESSAGES.decrement:nrpnControllerType=wm._nrpnTypes[2];break;default:throw new Error("The NPRN type was unidentifiable.")}var nrpnEvent={timestamp:ccEvent.timestamp,channel:ccEvent.channel,type:"nrpn",data:rawData,controller:{number:nrpnNumber,type:nrpnControllerType,name:"Non-Registered Parameter "+nrpnNumber},value:nrpnValue};wm._nrpnBuffer[channelBufferIndex]=[],this._userHandlers.channel[nrpnEvent.type]&&this._userHandlers.channel[nrpnEvent.type][nrpnEvent.channel]&&this._userHandlers.channel[nrpnEvent.type][nrpnEvent.channel].forEach(function(callback){callback(nrpnEvent);});}else wm._nrpnBuffer[channelBufferIndex]=[];else wm._nrpnBuffer[channelBufferIndex].push(ccEvent);}},Input.prototype._parseChannelEvent=function(e){var data1,data2,command=e.data[0]>>4,channel=1+(15&e.data[0]);1>7&127,lsb=127&value;return this.send(wm.MIDI_SYSTEM_MESSAGES.songposition,[msb,lsb],this._parseTimeParameter(options.time)),this},Output.prototype.sendSongSelect=function(value,options){if(options=options||{},!(0<=(value=Math.floor(value))&&value<=127))throw new RangeError("The song number must be between 0 and 127.");return this.send(wm.MIDI_SYSTEM_MESSAGES.songselect,[value],this._parseTimeParameter(options.time)),this},Output.prototype.sendTuningRequest=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.tuningrequest,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.sendClock=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.clock,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.sendStart=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.start,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.sendContinue=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.continue,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.sendStop=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.stop,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.sendActiveSensing=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.activesensing,[],this._parseTimeParameter(options.time)),this},Output.prototype.sendReset=function(options){return options=options||{},this.send(wm.MIDI_SYSTEM_MESSAGES.reset,void 0,this._parseTimeParameter(options.time)),this},Output.prototype.stopNote=function(note,channel,options){if("all"===note)return this.sendChannelMode("allnotesoff",0,channel,options);var nVelocity=64;return (options=options||{}).rawVelocity?!isNaN(options.velocity)&&0<=options.velocity&&options.velocity<=127&&(nVelocity=options.velocity):!isNaN(options.velocity)&&0<=options.velocity&&options.velocity<=1&&(nVelocity=127*options.velocity),this._convertNoteToArray(note).forEach(function(item){wm.toMIDIChannels(channel).forEach(function(ch){this.send((wm.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(ch-1),[item,Math.round(nVelocity)],this._parseTimeParameter(options.time));}.bind(this));}.bind(this)),this},Output.prototype.playNote=function(note,channel,options){var time,nVelocity=64;if((options=options||{}).rawVelocity?!isNaN(options.velocity)&&0<=options.velocity&&options.velocity<=127&&(nVelocity=options.velocity):!isNaN(options.velocity)&&0<=options.velocity&&options.velocity<=1&&(nVelocity=127*options.velocity),time=this._parseTimeParameter(options.time),this._convertNoteToArray(note).forEach(function(item){wm.toMIDIChannels(channel).forEach(function(ch){this.send((wm.MIDI_CHANNEL_MESSAGES.noteon<<4)+(ch-1),[item,Math.round(nVelocity)],time);}.bind(this));}.bind(this)),!isNaN(options.duration)){options.duration<=0&&(options.duration=0);var nRelease=64;options.rawVelocity?!isNaN(options.release)&&0<=options.release&&options.release<=127&&(nRelease=options.release):!isNaN(options.release)&&0<=options.release&&options.release<=1&&(nRelease=127*options.release),this._convertNoteToArray(note).forEach(function(item){wm.toMIDIChannels(channel).forEach(function(ch){this.send((wm.MIDI_CHANNEL_MESSAGES.noteoff<<4)+(ch-1),[item,Math.round(nRelease)],(time||wm.time)+options.duration);}.bind(this));}.bind(this));}return this},Output.prototype.sendKeyAftertouch=function(note,channel,pressure,options){var that=this;if(options=options||{},channel<1||16>7&127,lsb=127&fine;return wm.toMIDIChannels(channel).forEach(function(){that.setRegisteredParameter("channelcoarsetuning",coarse,channel,{time:options.time}),that.setRegisteredParameter("channelfinetuning",[msb,lsb],channel,{time:options.time});}),this},Output.prototype.setTuningProgram=function(value,channel,options){var that=this;if(options=options||{},!(0<=(value=Math.floor(value))&&value<=127))throw new RangeError("The program value must be between 0 and 127");return wm.toMIDIChannels(channel).forEach(function(){that.setRegisteredParameter("tuningprogram",value,channel,{time:options.time});}),this},Output.prototype.setTuningBank=function(value,channel,options){var that=this;if(options=options||{},!(0<=(value=Math.floor(value)||0)&&value<=127))throw new RangeError("The bank value must be between 0 and 127");return wm.toMIDIChannels(channel).forEach(function(){that.setRegisteredParameter("tuningbank",value,channel,{time:options.time});}),this},Output.prototype.sendChannelMode=function(command,value,channel,options){if(options=options||{},"string"==typeof command){if(!(command=wm.MIDI_CHANNEL_MODE_MESSAGES[command]))throw new TypeError("Invalid channel mode message name.")}else if(!(120<=(command=Math.floor(command))&&command<=127))throw new RangeError("Channel mode numerical identifiers must be between 120 and 127.");if((value=Math.floor(value)||0)<0||127>7&127,lsb=127&nLevel;return wm.toMIDIChannels(channel).forEach(function(ch){that.send((wm.MIDI_CHANNEL_MESSAGES.pitchbend<<4)+(ch-1),[lsb,msb],that._parseTimeParameter(options.time));}),this},Output.prototype._parseTimeParameter=function(time){var value,parsed=parseFloat(time);return "string"==typeof time&&"+"===time.substring(0,1)?parsed&&0wm.time&&(value=parsed),value},Output.prototype._convertNoteToArray=function(note){var notes=[];return Array.isArray(note)||(note=[note]),note.forEach(function(item){notes.push(wm.guessNoteNumber(item));}),notes},module.exports?module.exports=wm:scope.WebMidi||(scope.WebMidi=wm);}(commonjsGlobal); -}); - -export default webmidi_min; +import { w as webmidi_min } from './common/webmidi.min-97732fd4.js'; +export { w as default } from './common/webmidi.min-97732fd4.js'; +import './common/_commonjsHelpers-8c19dec8.js'; diff --git a/docs/dist/App.js b/docs/dist/App.js index e32c92ee..9fa98078 100644 --- a/docs/dist/App.js +++ b/docs/dist/App.js @@ -14,7 +14,6 @@ try { } catch (err) { console.warn("failed to decode", err); } -Tone.setContext(new Tone.Context({latencyHint: "playback", lookAhead: 1})); const defaultSynth = new Tone.PolySynth().chain(new Tone.Gain(0.5), Tone.getDestination()); defaultSynth.set({ oscillator: {type: "triangle"}, @@ -30,7 +29,7 @@ function getRandomTune() { const randomTune = getRandomTune(); function App() { const [editor, setEditor] = useState(); - const {setCode, setPattern, error, code, cycle, dirty, log, togglePlay, activateCode, pattern, pushLog} = useRepl({ + const {setCode, setPattern, error, code, cycle, dirty, log, togglePlay, activateCode, pattern, pushLog, pending} = useRepl({ tune: decoded || randomTune, defaultSynth, onDraw: useCallback(markEvent(editor), [editor]) @@ -40,12 +39,11 @@ function App() { logBox.current.scrollTop = logBox.current?.scrollHeight; }, [log]); useLayoutEffect(() => { - const handleKeyPress = (e) => { + const handleKeyPress = async (e) => { if (e.ctrlKey || e.altKey) { switch (e.code) { case "Enter": - activateCode(); - !cycle.started && cycle.start(); + await activateCode(); break; case "Period": cycle.stop(); @@ -81,11 +79,11 @@ function App() { }, "Strudel REPL")), /* @__PURE__ */ React.createElement("div", { className: "flex space-x-4" }, /* @__PURE__ */ React.createElement("button", { - onClick: () => { + onClick: async () => { const _code = getRandomTune(); console.log("tune", _code); setCode(_code); - const parsed = evaluate(_code); + const parsed = await evaluate(_code); setPattern(parsed.pattern); } }, "🎲 random tune"), /* @__PURE__ */ React.createElement("button", null, /* @__PURE__ */ React.createElement("a", { @@ -116,7 +114,7 @@ function App() { }, error?.message || "unknown error")), /* @__PURE__ */ React.createElement("button", { className: "flex-none w-full border border-gray-700 p-2 bg-slate-700 hover:bg-slate-500", onClick: () => togglePlay() - }, cycle.started ? "pause" : "play"), /* @__PURE__ */ React.createElement("textarea", { + }, !pending ? /* @__PURE__ */ React.createElement(React.Fragment, null, cycle.started ? "pause" : "play") : /* @__PURE__ */ React.createElement(React.Fragment, null, "loading...")), /* @__PURE__ */ React.createElement("textarea", { className: "grow bg-[#283237] border-0 text-xs min-h-[200px]", value: log, readOnly: true, diff --git a/docs/dist/CodeMirror.js b/docs/dist/CodeMirror.js index 9cf4484c..a09cf6fa 100644 --- a/docs/dist/CodeMirror.js +++ b/docs/dist/CodeMirror.js @@ -20,7 +20,7 @@ export default function CodeMirror({value, onChange, options, editorDidMount}) { }); } export const markEvent = (editor) => (time, event) => { - const locs = event.value.locations; + const locs = event.context.locations; if (!locs || !editor) { return; } diff --git a/docs/dist/evaluate.js b/docs/dist/evaluate.js index a2413e36..db0ce2a2 100644 --- a/docs/dist/evaluate.js +++ b/docs/dist/evaluate.js @@ -20,9 +20,9 @@ function hackLiteral(literal, names, func) { hackLiteral(String, ["mini", "m"], bootstrapped.mini); hackLiteral(String, ["pure", "p"], bootstrapped.pure); Object.assign(globalThis, bootstrapped, Tone, toneHelpers); -export const evaluate = (code) => { +export const evaluate = async (code) => { const shapeshifted = shapeshifter(code); - let evaluated = eval(shapeshifted); + let evaluated = await eval(shapeshifted); if (typeof evaluated === "function") { evaluated = evaluated(); } diff --git a/docs/dist/parse.js b/docs/dist/parse.js index 46584128..b23d33b9 100644 --- a/docs/dist/parse.js +++ b/docs/dist/parse.js @@ -90,7 +90,8 @@ export function patternifyAST(ast) { return ast.source_; } const {start, end} = ast.location_; - return pure(ast.source_).withLocation({start, end}); + const value = !isNaN(Number(ast.source_)) ? Number(ast.source_) : ast.source_; + return pure(value).withLocation({start, end}); } return patternifyAST(ast.source_); case "stretch": diff --git a/docs/dist/shapeshifter.js b/docs/dist/shapeshifter.js index 278f5917..a33f3119 100644 --- a/docs/dist/shapeshifter.js +++ b/docs/dist/shapeshifter.js @@ -92,15 +92,16 @@ export default (code) => { // add to location to pure(x) calls if (node.type === 'CallExpression' && node.callee.name === 'pure') { const literal = node.arguments[0]; - const value = literal[{ LiteralNumericExpression: 'value', LiteralStringExpression: 'name' }[literal.type]]; - return reifyWithLocation(value + '', node.arguments[0], ast.locations, artificialNodes); + // const value = literal[{ LiteralNumericExpression: 'value', LiteralStringExpression: 'name' }[literal.type]]; + // console.log('value',value); + return reifyWithLocation(literal, node.arguments[0], ast.locations, artificialNodes); } // replace pseudo note variables if (node.type === 'IdentifierExpression') { if (isNote(node.name)) { const value = node.name[1] === 's' ? node.name.replace('s', '#') : node.name; if (addLocations && isMarkable) { - return reifyWithLocation(value, node, ast.locations, artificialNodes); + return reifyWithLocation(new LiteralStringExpression({ value }), node, ast.locations, artificialNodes); } return new LiteralStringExpression({ value }); } @@ -110,7 +111,7 @@ export default (code) => { } if (addLocations && node.type === 'LiteralStringExpression' && isMarkable) { // console.log('add', node); - return reifyWithLocation(node.value, node, ast.locations, artificialNodes); + return reifyWithLocation(node, node, ast.locations, artificialNodes); } if (!addMiniLocations) { return wrapFunction('reify', node); @@ -219,10 +220,10 @@ function wrapLocationOffset(node, stringNode, locations, artificialNodes) { // turns node in reify(value).withLocation(location), where location is the node's location in the source code // with this, the reified pattern can pass its location to the event, to know where to highlight when it's active -function reifyWithLocation(value, node, locations, artificialNodes) { +function reifyWithLocation(literalNode, node, locations, artificialNodes) { const withLocation = new CallExpression({ callee: new StaticMemberExpression({ - object: wrapFunction('reify', new LiteralStringExpression({ value })), + object: wrapFunction('reify', literalNode), property: 'withLocation', }), arguments: [getLocationObject(node, locations)], diff --git a/docs/dist/tonal.js b/docs/dist/tonal.js index de13c032..f98e9ebf 100644 --- a/docs/dist/tonal.js +++ b/docs/dist/tonal.js @@ -1,15 +1,6 @@ import {Note, Interval, Scale} from "../_snowpack/pkg/@tonaljs/tonal.js"; import {Pattern as _Pattern} from "../_snowpack/link/strudel.js"; const Pattern = _Pattern; -function toNoteEvent(event) { - if (typeof event === "string" || typeof event === "number") { - return {value: event}; - } - if (event.value) { - return event; - } - throw new Error("not a valid note event: " + JSON.stringify(event)); -} const mod = (n, m) => n < 0 ? mod(n + m, m) : n % m; export function intervalDirection(from, to, direction = 1) { const sign = Math.sign(direction); @@ -44,43 +35,37 @@ function scaleTranspose(scale, offset, note) { } return n + o; } -Pattern.prototype._mapNotes = function(func) { - return this.fmap((event) => { - const noteEvent = toNoteEvent(event); - return {...noteEvent, ...func(noteEvent)}; - }); -}; Pattern.prototype._transpose = function(intervalOrSemitones) { - return this._mapNotes(({value, scale}) => { + return this._withEvent((event) => { const interval = !isNaN(Number(intervalOrSemitones)) ? Interval.fromSemitones(intervalOrSemitones) : String(intervalOrSemitones); - if (typeof value === "number") { + if (typeof event.value === "number") { const semitones = typeof interval === "string" ? Interval.semitones(interval) || 0 : interval; - return {value: value + semitones}; + return event.withValue(() => event.value + semitones); } - return {value: Note.transpose(value, interval), scale}; + return event.withValue(() => Note.transpose(event.value, interval)); }); }; Pattern.prototype._scaleTranspose = function(offset) { - return this._mapNotes(({value, scale}) => { - if (!scale) { + return this._withEvent((event) => { + if (!event.context.scale) { throw new Error("can only use scaleTranspose after .scale"); } - if (typeof value !== "string") { + if (typeof event.value !== "string") { throw new Error("can only use scaleTranspose with notes"); } - return {value: scaleTranspose(scale, Number(offset), value), scale}; + return event.withValue(() => scaleTranspose(event.context.scale, Number(offset), event.value)); }); }; Pattern.prototype._scale = function(scale) { - return this._mapNotes((value) => { - let note = value.value; + return this._withEvent((event) => { + let note = event.value; const asNumber = Number(note); if (!isNaN(asNumber)) { let [tonic, scaleName] = Scale.tokenize(scale); const {pc, oct = 3} = Note.get(tonic); note = scaleTranspose(pc + " " + scaleName, asNumber, pc + oct); } - return {...value, value: note, scale}; + return event.withValue(() => note).setContext({...event.context, scale}); }); }; Pattern.prototype.define("transpose", (a, pat) => pat.transpose(a), {composable: true, patternified: true}); diff --git a/docs/dist/tone.js b/docs/dist/tone.js index 496300b5..1e06ff41 100644 --- a/docs/dist/tone.js +++ b/docs/dist/tone.js @@ -17,20 +17,23 @@ import { Sampler, getDestination } from "../_snowpack/pkg/tone.js"; +import {Piano} from "../_snowpack/pkg/@tonejs/piano.js"; const Pattern = _Pattern; Pattern.prototype.tone = function(instrument) { - return this.fmap((value) => { - value = typeof value !== "object" && !Array.isArray(value) ? {value} : value; - const onTrigger = (time, event) => { + return this._withEvent((event) => { + const onTrigger = (time, event2) => { if (instrument.constructor.name === "PluckSynth") { - instrument.triggerAttack(value.value, time); + instrument.triggerAttack(event2.value, time); } else if (instrument.constructor.name === "NoiseSynth") { - instrument.triggerAttackRelease(event.duration, time); + instrument.triggerAttackRelease(event2.duration, time); + } else if (instrument.constructor.name === "Piano") { + instrument.keyDown({note: event2.value, time, velocity: 0.5}); + instrument.keyUp({note: event2.value, time: time + event2.duration}); } else { - instrument.triggerAttackRelease(value.value, event.duration, time); + instrument.triggerAttackRelease(event2.value, event2.duration, time); } }; - return {...value, instrument, onTrigger}; + return event.setContext({...event.context, instrument, onTrigger}); }); }; Pattern.prototype.define("tone", (type, pat) => pat.tone(type), {composable: true, patternified: false}); @@ -45,6 +48,11 @@ export const pluck = (options) => new PluckSynth(options); export const polysynth = (options) => new PolySynth(options); export const sampler = (options) => new Sampler(options); export const synth = (options) => new Synth(options); +export const piano = async (options = {velocities: 1}) => { + const p = new Piano(options); + await p.load(); + return p; +}; export const vol = (v) => new Gain(v); export const lowpass = (v) => new Filter(v, "lowpass"); export const highpass = (v) => new Filter(v, "highpass"); @@ -75,13 +83,12 @@ Pattern.prototype._poly = function(type = "triangle") { if (!this.instrument) { this.instrument = poly(type); } - return this.fmap((value) => { - value = typeof value !== "object" && !Array.isArray(value) ? {value} : value; - const onTrigger = (time, event) => { + return this._withEvent((event) => { + const onTrigger = (time, event2) => { this.instrument.set(instrumentConfig); - this.instrument.triggerAttackRelease(value.value, event.duration, time); + this.instrument.triggerAttackRelease(event2.value, event2.duration, time); }; - return {...value, instrumentConfig, onTrigger}; + return event.setContext({...event.context, instrumentConfig, onTrigger}); }); }; Pattern.prototype.define("poly", (type, pat) => pat.poly(type), {composable: true, patternified: true}); @@ -96,8 +103,7 @@ const getTrigger = (getChain, value) => (time, event) => { }, event.duration * 2e3); }; Pattern.prototype._synth = function(type = "triangle") { - return this.fmap((value) => { - value = typeof value !== "object" && !Array.isArray(value) ? {value} : value; + return this._withEvent((event) => { const instrumentConfig = { oscillator: {type}, envelope: {attack: 0.01, decay: 0.01, sustain: 0.6, release: 0.01} @@ -107,37 +113,37 @@ Pattern.prototype._synth = function(type = "triangle") { instrument.set(instrumentConfig); return instrument; }; - const onTrigger = getTrigger(() => getInstrument().toDestination(), value.value); - return {...value, getInstrument, instrumentConfig, onTrigger}; + const onTrigger = getTrigger(() => getInstrument().toDestination(), event.value); + return event.setContext({...event.context, getInstrument, instrumentConfig, onTrigger}); }); }; Pattern.prototype.adsr = function(attack = 0.01, decay = 0.01, sustain = 0.6, release = 0.01) { - return this.fmap((value) => { - if (!value?.getInstrument) { + return this._withEvent((event) => { + if (!event.context.getInstrument) { throw new Error("cannot chain adsr: need instrument first (like synth)"); } - const instrumentConfig = {...value.instrumentConfig, envelope: {attack, decay, sustain, release}}; + const instrumentConfig = {...event.context.instrumentConfig, envelope: {attack, decay, sustain, release}}; const getInstrument = () => { - const instrument = value.getInstrument(); + const instrument = event.context.getInstrument(); instrument.set(instrumentConfig); return instrument; }; - const onTrigger = getTrigger(() => getInstrument().toDestination(), value.value); - return {...value, getInstrument, instrumentConfig, onTrigger}; + const onTrigger = getTrigger(() => getInstrument().toDestination(), event.value); + return event.setContext({...event.context, getInstrument, instrumentConfig, onTrigger}); }); }; Pattern.prototype.chain = function(...effectGetters) { - return this.fmap((value) => { - if (!value?.getInstrument) { + return this._withEvent((event) => { + if (!event.context?.getInstrument) { throw new Error("cannot chain: need instrument first (like synth)"); } - const chain = (value.chain || []).concat(effectGetters); + const chain = (event.context.chain || []).concat(effectGetters); const getChain = () => { const effects = chain.map((getEffect) => getEffect()); - return value.getInstrument().chain(...effects, getDestination()); + return event.context.getInstrument().chain(...effects, getDestination()); }; - const onTrigger = getTrigger(getChain, value.value); - return {...value, getChain, onTrigger, chain}; + const onTrigger = getTrigger(getChain, event.value); + return event.setContext({...event.context, getChain, onTrigger, chain}); }); }; export const autofilter = (freq = 1) => () => new AutoFilter(freq).start(); diff --git a/docs/dist/tunes.js b/docs/dist/tunes.js index 2827f426..2c3f4980 100644 --- a/docs/dist/tunes.js +++ b/docs/dist/tunes.js @@ -426,3 +426,11 @@ export const sowhatelse = `()=> { "[2,4]/4".scale('D dorian').apply(t).tone(instr('pad')).mask("/8") ).fast(6/8) }`; +export const barryHarris = `piano() +.then(p => "0,2,[7 6]" + .add("<0 1 2 3 4 5 7 8>") + .scale('C bebop major') + .transpose("<0 1 2 1>/8") + .slow(2) + .tone(p.toDestination())) +`; diff --git a/docs/dist/useCycle.js b/docs/dist/useCycle.js index 9ae6828e..b04799b2 100644 --- a/docs/dist/useCycle.js +++ b/docs/dist/useCycle.js @@ -1,6 +1,6 @@ import {useEffect, useState} from "../_snowpack/pkg/react.js"; import * as Tone from "../_snowpack/pkg/tone.js"; -import {TimeSpan} from "../_snowpack/link/strudel.js"; +import {TimeSpan, State} from "../_snowpack/link/strudel.js"; function useCycle(props) { const {onEvent, onQuery, onSchedule, ready = true, onDraw} = props; const [started, setStarted] = useState(false); @@ -8,7 +8,7 @@ function useCycle(props) { const activeCycle = () => Math.floor(Tone.getTransport().seconds / cycleDuration); const query = (cycle = activeCycle()) => { const timespan = new TimeSpan(cycle, cycle + 1); - const events = onQuery?.(timespan) || []; + const events = onQuery?.(new State(timespan)) || []; onSchedule?.(events, cycle); const cancelFrom = timespan.begin.valueOf(); Tone.getTransport().cancel(cancelFrom); @@ -22,7 +22,8 @@ function useCycle(props) { const toneEvent = { time: event.part.begin.valueOf(), duration: event.whole.end.sub(event.whole.begin).valueOf(), - value: event.value + value: event.value, + context: event.context }; onEvent(time, toneEvent); Tone.Draw.schedule(() => { diff --git a/docs/dist/useRepl.js b/docs/dist/useRepl.js index 8021b447..1ca55af7 100644 --- a/docs/dist/useRepl.js +++ b/docs/dist/useRepl.js @@ -12,19 +12,22 @@ function useRepl({tune, defaultSynth, autolink = true, onEvent, onDraw}) { const [activeCode, setActiveCode] = useState(); const [log, setLog] = useState(""); const [error, setError] = useState(); + const [pending, setPending] = useState(false); const [hash, setHash] = useState(""); const [pattern, setPattern] = useState(); const dirty = code !== activeCode || error; const generateHash = () => encodeURIComponent(btoa(code)); - const activateCode = (_code = code) => { - !cycle.started && cycle.start(); - broadcast({type: "start", from: id}); + const activateCode = async (_code = code) => { if (activeCode && !dirty) { setError(void 0); + !cycle.started && cycle.start(); return; } try { - const parsed = evaluate(_code); + setPending(true); + const parsed = await evaluate(_code); + !cycle.started && cycle.start(); + broadcast({type: "start", from: id}); setPattern(() => parsed.pattern); if (autolink) { window.location.hash = "#" + encodeURIComponent(btoa(code)); @@ -32,6 +35,7 @@ function useRepl({tune, defaultSynth, autolink = true, onEvent, onDraw}) { setHash(generateHash()); setError(void 0); setActiveCode(_code); + setPending(false); } catch (err) { err.message = "evaluation error: " + err.message; console.warn(err); @@ -48,8 +52,9 @@ function useRepl({tune, defaultSynth, autolink = true, onEvent, onDraw}) { onEvent: useCallback((time, event) => { try { onEvent?.(event); - if (!event.value?.onTrigger) { - const note = event.value?.value || event.value; + const {onTrigger} = event.context; + if (!onTrigger) { + const note = event.value; if (!isNote(note)) { throw new Error("not a note: " + note); } @@ -59,7 +64,6 @@ function useRepl({tune, defaultSynth, autolink = true, onEvent, onDraw}) { throw new Error("no defaultSynth passed to useRepl."); } } else { - const {onTrigger} = event.value; onTrigger(time, event); } } catch (err) { @@ -68,9 +72,9 @@ function useRepl({tune, defaultSynth, autolink = true, onEvent, onDraw}) { pushLog(err.message); } }, [onEvent]), - onQuery: useCallback((span) => { + onQuery: useCallback((state) => { try { - return pattern?.query(span) || []; + return pattern?.query(state) || []; } catch (err) { console.warn(err); err.message = "query error: " + err.message; @@ -95,6 +99,7 @@ function useRepl({tune, defaultSynth, autolink = true, onEvent, onDraw}) { } }; return { + pending, code, setCode, pattern, diff --git a/docs/dist/voicings.js b/docs/dist/voicings.js index fa7fcd72..b546b1b8 100644 --- a/docs/dist/voicings.js +++ b/docs/dist/voicings.js @@ -10,7 +10,7 @@ const getVoicing = (chord, lastVoicing, range = ["F3", "A4"]) => dictionaryVoici }); const Pattern = _Pattern; Pattern.prototype.fmapNested = function(func) { - return new Pattern((span) => this.query(span).map((event) => reify(func(event)).query(span).map((hap) => new Hap(event.whole, event.part, hap.value))).flat()); + return new Pattern((span) => this.query(span).map((event) => reify(func(event)).query(span).map((hap) => new Hap(event.whole, event.part, hap.value, hap.context))).flat()); }; Pattern.prototype.voicings = function(range) { let lastVoicing; @@ -18,15 +18,16 @@ Pattern.prototype.voicings = function(range) { range = ["F3", "A4"]; } return this.fmapNested((event) => { - lastVoicing = getVoicing(event.value?.value || event.value, lastVoicing, range); - return stack(...lastVoicing); + lastVoicing = getVoicing(event.value, lastVoicing, range); + return stack(...lastVoicing)._withContext(() => ({ + locations: event.context.locations || [] + })); }); }; Pattern.prototype.rootNotes = function(octave = 2) { - return this._mapNotes((value) => { - const [_, root] = value.value.match(/^([a-gA-G])[b#]?.*$/); - const bassNote = root + octave; - return {...value, value: bassNote}; + return this.fmap((value) => { + const [_, root] = value.match(/^([a-gA-G])[b#]?.*$/); + return root + octave; }); }; Pattern.prototype.define("voicings", (range, pat) => pat.voicings(range), {composable: true}); diff --git a/docs/tutorial/index.fd7d9b66.css b/docs/tutorial/index.0ea4d9ed.css similarity index 99% rename from docs/tutorial/index.fd7d9b66.css rename to docs/tutorial/index.0ea4d9ed.css index dcbb60c7..c693b6ec 100644 --- a/docs/tutorial/index.fd7d9b66.css +++ b/docs/tutorial/index.0ea4d9ed.css @@ -843,8 +843,8 @@ Ensure the default browser behavior of the `hidden` attribute. .CodeMirror { width: 100% !important; height: inherit !important; -}.justify-center { - justify-content: center; +}main { + margin: 0 auto; }.hover\:bg-slate-500:hover { --tw-bg-opacity: 1; background-color: rgb(100 116 139 / var(--tw-bg-opacity)); @@ -1346,4 +1346,4 @@ span.CodeMirror-selectedtext { background: none; } color: white !important; } -/*# sourceMappingURL=index.fd7d9b66.css.map */ +/*# sourceMappingURL=index.0ea4d9ed.css.map */ diff --git a/docs/tutorial/index.0ea4d9ed.css.map b/docs/tutorial/index.0ea4d9ed.css.map new file mode 100644 index 00000000..425fa877 --- /dev/null +++ b/docs/tutorial/index.0ea4d9ed.css.map @@ -0,0 +1 @@ +{"mappings":"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AA;EAAA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA,kBAAA;EAAA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA,mBAAA;EAAA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA,mBAAA;EAAA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CACpB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA,yBAAA;EAAA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;;ECFA;IAAA;GAAA;ADEmB,CAAnB;;ECFA;IAAA;GAAA;ADEmB,CAAnB;ECFA,kEAAA;UAAA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA,wBAAA;EAAA,uDAAA;EAAA;ADEmB,CAAnB;ECFA,wBAAA;EAAA,qDAAA;EAAA;ADEmB,CAAnB;ECFA,wBAAA;EAAA,4DAAA;EAAA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA,uBAAA;EAAA;ADEmB,CAAnB;ECFA,uBAAA;EAAA;ADEmB,CAAnB;ECFA,uBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA,qBAAA;EAAA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA,kBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA,oBAAA;EAAA;ADEmB,CAAnB;ECFA,qBAAA;EAAA;ADEmB,CAAnB;ECFA,qBAAA;EAAA;ADEmB,CAAnB;ECFA,qBAAA;EAAA;ADEmB,CAAnB;ECFA,qBAAA;EAAA;ADEmB,CAAnB;ECFA,qBAAA;EAAA;ADEmB,CAAnB;ECFA;ADEmB,CAEnB;;EAEE,sBAAsB;EACtB,0BAA0B;AAC5B,CAEA;EACE,cAAc;AAChB,CAZA;ECAA,mBAAA;EAAA;CAAA,ADAA;ECAA,mBAAA;EAAA;CAAA,ADAA;ECAA,qBAAA;EAAA;CAAA,ADAA;ECAA,qBAAA;EAAA;CAAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["src/tutorial/style.css","","node_modules/codemirror/lib/codemirror.css","node_modules/codemirror/theme/material.css"],"sourcesContent":["@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n.react-codemirror2,\n.CodeMirror {\n width: 100% !important;\n height: inherit !important;\n}\n\nmain {\n margin: 0 auto;\n}\n",null,"/* BASICS */\n\n.CodeMirror {\n /* Set height, width, borders, and global font properties here */\n font-family: monospace;\n height: 300px;\n color: black;\n direction: ltr;\n}\n\n/* PADDING */\n\n.CodeMirror-lines {\n padding: 4px 0; /* Vertical padding around content */\n}\n.CodeMirror pre.CodeMirror-line,\n.CodeMirror pre.CodeMirror-line-like {\n padding: 0 4px; /* Horizontal padding of content */\n}\n\n.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n background-color: white; /* The little square between H and V scrollbars */\n}\n\n/* GUTTER */\n\n.CodeMirror-gutters {\n border-right: 1px solid #ddd;\n background-color: #f7f7f7;\n white-space: nowrap;\n}\n.CodeMirror-linenumbers {}\n.CodeMirror-linenumber {\n padding: 0 3px 0 5px;\n min-width: 20px;\n text-align: right;\n color: #999;\n white-space: nowrap;\n}\n\n.CodeMirror-guttermarker { color: black; }\n.CodeMirror-guttermarker-subtle { color: #999; }\n\n/* CURSOR */\n\n.CodeMirror-cursor {\n border-left: 1px solid black;\n border-right: none;\n width: 0;\n}\n/* Shown when moving in bi-directional text */\n.CodeMirror div.CodeMirror-secondarycursor {\n border-left: 1px solid silver;\n}\n.cm-fat-cursor .CodeMirror-cursor {\n width: auto;\n border: 0 !important;\n background: #7e7;\n}\n.cm-fat-cursor div.CodeMirror-cursors {\n z-index: 1;\n}\n.cm-fat-cursor .CodeMirror-line::selection,\n.cm-fat-cursor .CodeMirror-line > span::selection, \n.cm-fat-cursor .CodeMirror-line > span > span::selection { background: transparent; }\n.cm-fat-cursor .CodeMirror-line::-moz-selection,\n.cm-fat-cursor .CodeMirror-line > span::-moz-selection,\n.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { background: transparent; }\n.cm-fat-cursor { caret-color: transparent; }\n@-moz-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@-webkit-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n\n/* Can style cursor different in overwrite (non-insert) mode */\n.CodeMirror-overwrite .CodeMirror-cursor {}\n\n.cm-tab { display: inline-block; text-decoration: inherit; }\n\n.CodeMirror-rulers {\n position: absolute;\n left: 0; right: 0; top: -50px; bottom: 0;\n overflow: hidden;\n}\n.CodeMirror-ruler {\n border-left: 1px solid #ccc;\n top: 0; bottom: 0;\n position: absolute;\n}\n\n/* DEFAULT THEME */\n\n.cm-s-default .cm-header {color: blue;}\n.cm-s-default .cm-quote {color: #090;}\n.cm-negative {color: #d44;}\n.cm-positive {color: #292;}\n.cm-header, .cm-strong {font-weight: bold;}\n.cm-em {font-style: italic;}\n.cm-link {text-decoration: underline;}\n.cm-strikethrough {text-decoration: line-through;}\n\n.cm-s-default .cm-keyword {color: #708;}\n.cm-s-default .cm-atom {color: #219;}\n.cm-s-default .cm-number {color: #164;}\n.cm-s-default .cm-def {color: #00f;}\n.cm-s-default .cm-variable,\n.cm-s-default .cm-punctuation,\n.cm-s-default .cm-property,\n.cm-s-default .cm-operator {}\n.cm-s-default .cm-variable-2 {color: #05a;}\n.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;}\n.cm-s-default .cm-comment {color: #a50;}\n.cm-s-default .cm-string {color: #a11;}\n.cm-s-default .cm-string-2 {color: #f50;}\n.cm-s-default .cm-meta {color: #555;}\n.cm-s-default .cm-qualifier {color: #555;}\n.cm-s-default .cm-builtin {color: #30a;}\n.cm-s-default .cm-bracket {color: #997;}\n.cm-s-default .cm-tag {color: #170;}\n.cm-s-default .cm-attribute {color: #00c;}\n.cm-s-default .cm-hr {color: #999;}\n.cm-s-default .cm-link {color: #00c;}\n\n.cm-s-default .cm-error {color: #f00;}\n.cm-invalidchar {color: #f00;}\n\n.CodeMirror-composing { border-bottom: 2px solid; }\n\n/* Default styles for common addons */\n\ndiv.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;}\ndiv.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;}\n.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }\n.CodeMirror-activeline-background {background: #e8f2ff;}\n\n/* STOP */\n\n/* The rest of this file contains styles related to the mechanics of\n the editor. You probably shouldn't touch them. */\n\n.CodeMirror {\n position: relative;\n overflow: hidden;\n background: white;\n}\n\n.CodeMirror-scroll {\n overflow: scroll !important; /* Things will break if this is overridden */\n /* 50px is the magic margin used to hide the element's real scrollbars */\n /* See overflow: hidden in .CodeMirror */\n margin-bottom: -50px; margin-right: -50px;\n padding-bottom: 50px;\n height: 100%;\n outline: none; /* Prevent dragging from highlighting the element */\n position: relative;\n z-index: 0;\n}\n.CodeMirror-sizer {\n position: relative;\n border-right: 50px solid transparent;\n}\n\n/* The fake, visible scrollbars. Used to force redraw during scrolling\n before actual scrolling happens, thus preventing shaking and\n flickering artifacts. */\n.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n position: absolute;\n z-index: 6;\n display: none;\n outline: none;\n}\n.CodeMirror-vscrollbar {\n right: 0; top: 0;\n overflow-x: hidden;\n overflow-y: scroll;\n}\n.CodeMirror-hscrollbar {\n bottom: 0; left: 0;\n overflow-y: hidden;\n overflow-x: scroll;\n}\n.CodeMirror-scrollbar-filler {\n right: 0; bottom: 0;\n}\n.CodeMirror-gutter-filler {\n left: 0; bottom: 0;\n}\n\n.CodeMirror-gutters {\n position: absolute; left: 0; top: 0;\n min-height: 100%;\n z-index: 3;\n}\n.CodeMirror-gutter {\n white-space: normal;\n height: 100%;\n display: inline-block;\n vertical-align: top;\n margin-bottom: -50px;\n}\n.CodeMirror-gutter-wrapper {\n position: absolute;\n z-index: 4;\n background: none !important;\n border: none !important;\n}\n.CodeMirror-gutter-background {\n position: absolute;\n top: 0; bottom: 0;\n z-index: 4;\n}\n.CodeMirror-gutter-elt {\n position: absolute;\n cursor: default;\n z-index: 4;\n}\n.CodeMirror-gutter-wrapper ::selection { background-color: transparent }\n.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent }\n\n.CodeMirror-lines {\n cursor: text;\n min-height: 1px; /* prevents collapsing before first draw */\n}\n.CodeMirror pre.CodeMirror-line,\n.CodeMirror pre.CodeMirror-line-like {\n /* Reset some styles that the rest of the page might have set */\n -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;\n border-width: 0;\n background: transparent;\n font-family: inherit;\n font-size: inherit;\n margin: 0;\n white-space: pre;\n word-wrap: normal;\n line-height: inherit;\n color: inherit;\n z-index: 2;\n position: relative;\n overflow: visible;\n -webkit-tap-highlight-color: transparent;\n -webkit-font-variant-ligatures: contextual;\n font-variant-ligatures: contextual;\n}\n.CodeMirror-wrap pre.CodeMirror-line,\n.CodeMirror-wrap pre.CodeMirror-line-like {\n word-wrap: break-word;\n white-space: pre-wrap;\n word-break: normal;\n}\n\n.CodeMirror-linebackground {\n position: absolute;\n left: 0; right: 0; top: 0; bottom: 0;\n z-index: 0;\n}\n\n.CodeMirror-linewidget {\n position: relative;\n z-index: 2;\n padding: 0.1px; /* Force widget margins to stay inside of the container */\n}\n\n.CodeMirror-widget {}\n\n.CodeMirror-rtl pre { direction: rtl; }\n\n.CodeMirror-code {\n outline: none;\n}\n\n/* Force content-box sizing for the elements where we expect it */\n.CodeMirror-scroll,\n.CodeMirror-sizer,\n.CodeMirror-gutter,\n.CodeMirror-gutters,\n.CodeMirror-linenumber {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\n\n.CodeMirror-measure {\n position: absolute;\n width: 100%;\n height: 0;\n overflow: hidden;\n visibility: hidden;\n}\n\n.CodeMirror-cursor {\n position: absolute;\n pointer-events: none;\n}\n.CodeMirror-measure pre { position: static; }\n\ndiv.CodeMirror-cursors {\n visibility: hidden;\n position: relative;\n z-index: 3;\n}\ndiv.CodeMirror-dragcursors {\n visibility: visible;\n}\n\n.CodeMirror-focused div.CodeMirror-cursors {\n visibility: visible;\n}\n\n.CodeMirror-selected { background: #d9d9d9; }\n.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }\n.CodeMirror-crosshair { cursor: crosshair; }\n.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }\n.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }\n\n.cm-searching {\n background-color: #ffa;\n background-color: rgba(255, 255, 0, .4);\n}\n\n/* Used to force a border model for a node */\n.cm-force-border { padding-right: .1px; }\n\n@media print {\n /* Hide the cursor when printing */\n .CodeMirror div.CodeMirror-cursors {\n visibility: hidden;\n }\n}\n\n/* See issue #2901 */\n.cm-tab-wrap-hack:after { content: ''; }\n\n/* Help users use markselection to safely style text background */\nspan.CodeMirror-selectedtext { background: none; }\n","/*\n Name: material\n Author: Mattia Astorino (http://github.com/equinusocio)\n Website: https://material-theme.site/\n*/\n\n.cm-s-material.CodeMirror {\n background-color: #263238;\n color: #EEFFFF;\n}\n\n.cm-s-material .CodeMirror-gutters {\n background: #263238;\n color: #546E7A;\n border: none;\n}\n\n.cm-s-material .CodeMirror-guttermarker,\n.cm-s-material .CodeMirror-guttermarker-subtle,\n.cm-s-material .CodeMirror-linenumber {\n color: #546E7A;\n}\n\n.cm-s-material .CodeMirror-cursor {\n border-left: 1px solid #FFCC00;\n}\n.cm-s-material.cm-fat-cursor .CodeMirror-cursor {\n background-color: #5d6d5c80 !important;\n}\n.cm-s-material .cm-animate-fat-cursor {\n background-color: #5d6d5c80 !important;\n}\n\n.cm-s-material div.CodeMirror-selected {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material.CodeMirror-focused div.CodeMirror-selected {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material .CodeMirror-line::selection,\n.cm-s-material .CodeMirror-line>span::selection,\n.cm-s-material .CodeMirror-line>span>span::selection {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material .CodeMirror-line::-moz-selection,\n.cm-s-material .CodeMirror-line>span::-moz-selection,\n.cm-s-material .CodeMirror-line>span>span::-moz-selection {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material .CodeMirror-activeline-background {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.cm-s-material .cm-keyword {\n color: #C792EA;\n}\n\n.cm-s-material .cm-operator {\n color: #89DDFF;\n}\n\n.cm-s-material .cm-variable-2 {\n color: #EEFFFF;\n}\n\n.cm-s-material .cm-variable-3,\n.cm-s-material .cm-type {\n color: #f07178;\n}\n\n.cm-s-material .cm-builtin {\n color: #FFCB6B;\n}\n\n.cm-s-material .cm-atom {\n color: #F78C6C;\n}\n\n.cm-s-material .cm-number {\n color: #FF5370;\n}\n\n.cm-s-material .cm-def {\n color: #82AAFF;\n}\n\n.cm-s-material .cm-string {\n color: #C3E88D;\n}\n\n.cm-s-material .cm-string-2 {\n color: #f07178;\n}\n\n.cm-s-material .cm-comment {\n color: #546E7A;\n}\n\n.cm-s-material .cm-variable {\n color: #f07178;\n}\n\n.cm-s-material .cm-tag {\n color: #FF5370;\n}\n\n.cm-s-material .cm-meta {\n color: #FFCB6B;\n}\n\n.cm-s-material .cm-attribute {\n color: #C792EA;\n}\n\n.cm-s-material .cm-property {\n color: #C792EA;\n}\n\n.cm-s-material .cm-qualifier {\n color: #DECB6B;\n}\n\n.cm-s-material .cm-variable-3,\n.cm-s-material .cm-type {\n color: #DECB6B;\n}\n\n\n.cm-s-material .cm-error {\n color: rgba(255, 255, 255, 1.0);\n background-color: #FF5370;\n}\n\n.cm-s-material .CodeMirror-matchingbracket {\n text-decoration: underline;\n color: white !important;\n}\n"],"names":[],"version":3,"file":"index.0ea4d9ed.css.map"} \ No newline at end of file diff --git a/docs/tutorial/index.4ae5d228.js b/docs/tutorial/index.26c147ee.js similarity index 98% rename from docs/tutorial/index.4ae5d228.js rename to docs/tutorial/index.26c147ee.js index 25b6f9da..da015985 100644 --- a/docs/tutorial/index.4ae5d228.js +++ b/docs/tutorial/index.26c147ee.js @@ -185,12 +185,9 @@ _reactDomDefault.default.render(/*#__PURE__*/ _jsxRuntime.jsx(_reactDefault.defa ] }) }), - /*#__PURE__*/ _jsxRuntime.jsx("div", { - className: "flex justify-center", - children: /*#__PURE__*/ _jsxRuntime.jsx("main", { - className: "p-4 max-w-3xl prose", - children: /*#__PURE__*/ _jsxRuntime.jsx(_tutorialMdxDefault.default, { - }) + /*#__PURE__*/ _jsxRuntime.jsx("main", { + className: "p-4 max-w-3xl prose", + children: /*#__PURE__*/ _jsxRuntime.jsx(_tutorialMdxDefault.default, { }) }) ] @@ -7529,7 +7526,7 @@ For sharp notes, the letter "s" is used instead of "#", because JavaScript does tune: `cat(e5, b4, d5, c5).fast(2)`, mdxType: "MiniRepl" }), /*#__PURE__*/ _react1.mdx("h3", null, `early(cycles)`), /*#__PURE__*/ _react1.mdx("p", null, `With early, you can nudge a pattern to start earlier in time:`), /*#__PURE__*/ _react1.mdx(_miniReplDefault.default, { - tune: `cat(e5, b4.late(0.5))`, + tune: `cat(e5, b4.early(0.5))`, mdxType: "MiniRepl" }), /*#__PURE__*/ _react1.mdx("h3", null, `late(cycles)`), /*#__PURE__*/ _react1.mdx("p", null, `Like early, but in the other direction:`), /*#__PURE__*/ _react1.mdx(_miniReplDefault.default, { tune: `cat(e5, b4.late(0.5))`, @@ -41667,29 +41664,33 @@ function useRepl({ tune , defaultSynth , autolink =true , onEvent , onDraw }) { const [activeCode, setActiveCode] = _react.useState(); const [log1, setLog] = _react.useState(''); const [error, setError] = _react.useState(); + const [pending, setPending] = _react.useState(false); const [hash, setHash] = _react.useState(''); const [pattern, setPattern] = _react.useState(); const dirty = code !== activeCode || error; const generateHash = ()=>encodeURIComponent(btoa(code)) ; - const activateCode = (_code = code)=>{ - !cycle1.started && cycle1.start(); - broadcast({ - type: 'start', - from: id - }); + const activateCode = async (_code = code)=>{ if (activeCode && !dirty) { setError(undefined); + !cycle1.started && cycle1.start(); return; } try { - const parsed = _evaluate.evaluate(_code); + setPending(true); + const parsed = await _evaluate.evaluate(_code); + !cycle1.started && cycle1.start(); + broadcast({ + type: 'start', + from: id + }); setPattern(()=>parsed.pattern ); if (autolink) window.location.hash = '#' + encodeURIComponent(btoa(code)); setHash(generateHash()); setError(undefined); setActiveCode(_code); + setPending(false); } catch (err) { err.message = 'evaluation error: ' + err.message; console.warn(err); @@ -41709,16 +41710,14 @@ function useRepl({ tune , defaultSynth , autolink =true , onEvent , onDraw }) { onEvent: _react.useCallback((time, event)=>{ try { onEvent?.(event); - if (!event.value?.onTrigger) { - const note = event.value?.value || event.value; + const { onTrigger } = event.context; + if (!onTrigger) { + const note = event.value; if (!_tone.isNote(note)) throw new Error('not a note: ' + note); if (defaultSynth) defaultSynth.triggerAttackRelease(note, event.duration, time); else throw new Error('no defaultSynth passed to useRepl.'); /* console.warn('no instrument chosen', event); - throw new Error(`no instrument chosen for ${JSON.stringify(event)}`); */ } else { - const { onTrigger } = event.value; - onTrigger(time, event); - } + throw new Error(`no instrument chosen for ${JSON.stringify(event)}`); */ } else onTrigger(time, event); } catch (err) { console.warn(err); err.message = 'unplayable event: ' + err?.message; @@ -41727,9 +41726,9 @@ function useRepl({ tune , defaultSynth , autolink =true , onEvent , onDraw }) { }, [ onEvent ]), - onQuery: _react.useCallback((span)=>{ + onQuery: _react.useCallback((state)=>{ try { - return pattern?.query(span) || []; + return pattern?.query(state) || []; } catch (err) { console.warn(err); err.message = 'query error: ' + err.message; @@ -41784,6 +41783,7 @@ function useRepl({ tune , defaultSynth , autolink =true , onEvent , onDraw }) { else cycle1.stop(); }; return { + pending, code, setCode, pattern, @@ -41841,10 +41841,10 @@ hackLiteral(String, [ ], bootstrapped.pure); // comment out this line if you panic // this will add everything to global scope, which is accessed by eval Object.assign(globalThis, bootstrapped, _tone1, _tone); -const evaluate = (code)=>{ +const evaluate = async (code)=>{ const shapeshifted = _shapeshifterDefault.default(code); // transform syntactically correct js code to semantically usable code // console.log('shapeshifted', shapeshifted); - let evaluated = eval(shapeshifted); + let evaluated = await eval(shapeshifted); if (typeof evaluated === 'function') evaluated = evaluated(); if (typeof evaluated === 'string') evaluated = _strudelMjs.withLocationOffset(_parse.minify(evaluated), { start: { @@ -41867,6 +41867,8 @@ var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "curry", ()=>curry ); +parcelHelpers.export(exports, "State", ()=>State +); parcelHelpers.export(exports, "signal", ()=>signal ); parcelHelpers.export(exports, "sine2", ()=>sine2 @@ -42107,25 +42109,44 @@ class Hap { then the whole will be returned as None, in which case the given value will have been sampled from the point halfway between the start and end of the 'part' timespan. - */ constructor(whole, part, value){ + The context is to store a list of source code locations causing the event + */ constructor(whole, part, value, context = { + }, stateful = false){ this.whole = whole; this.part = part; this.value = value; + this.context = context; + this.stateful = stateful; + if (stateful) assert(typeof this.value === "function", "Stateful values must be functions"); } withSpan(func) { // Returns a new event with the function f applies to the event timespan. const whole = this.whole ? func(this.whole) : undefined; - return new Hap(whole, func(this.part), this.value); + return new Hap(whole, func(this.part), this.value, this.context); } withValue(func) { // Returns a new event with the function f applies to the event value. - return new Hap(this.whole, this.part, func(this.value)); + return new Hap(this.whole, this.part, func(this.value), this.context); } hasOnset() { // Test whether the event contains the onset, i.e that // the beginning of the part is the same as that of the whole timespan.""" return this.whole != undefined && this.whole.begin.equals(this.part.begin); } + resolveState(state) { + if (this.stateful && this.hasOnset()) { + const func = this.value[newValue] = func(state); + return [ + newState, + this.withValue(()=>newValue + ) + ]; + } + return [ + state, + this + ]; + } spanEquals(other) { return this.whole == undefined && other.whole == undefined || this.whole.equals(other.whole); } @@ -42133,7 +42154,28 @@ class Hap { return this.spanEquals(other) && this.part.equals(other.part) && this.value === other.value; } show() { - return "(" + (this.whole == undefined ? "~" : this.whole.show()) + ", " + this.part.show() + ", " + JSON.stringify(this.value?.value ?? this.value) + ")"; + return "(" + (this.whole == undefined ? "~" : this.whole.show()) + ", " + this.part.show() + ", " + this.value + ")"; + } + setContext(context) { + return new Hap(this.whole, this.part, this.value, context); + } +} +class State { + constructor(span, controls = { + }){ + this.span = span; + this.controls = controls; + } + // Returns new State with different span + setSpan(span) { + return new State(span, this.controls); + } + withSpan(func) { + return this.setSpan(func(this.span)); + } + // Returns new State with different controls + setControls(controls) { + return new State(this.span, controls); } } class Pattern { @@ -42161,25 +42203,27 @@ class Pattern { // easier to express, as all events are then constrained to happen within // a cycle. const pat = this; - const q = (span)=>flatten(span.spanCycles.map((subspan)=>pat.query(subspan) - )) - ; + const q = (state)=>{ + return flatten(state.span.spanCycles.map((subspan)=>pat.query(state.setSpan(subspan)) + )); + }; return new Pattern(q); } withQuerySpan(func) { - return new Pattern((span)=>this.query(func(span)) + return new Pattern((state)=>this.query(state.withSpan(func)) ); } withQueryTime(func) { // Returns a new pattern, with the function applied to both the begin // and end of the the query timespan - return new Pattern((span)=>this.query(span.withTime(func)) + return new Pattern((state)=>this.query(state.withSpan((span)=>span.withTime(func) + )) ); } withEventSpan(func) { // Returns a new pattern, with the function applied to each event // timespan. - return new Pattern((span)=>this.query(span).map((hap)=>hap.withSpan(func) + return new Pattern((state)=>this.query(state).map((hap)=>hap.withSpan(func) ) ); } @@ -42190,19 +42234,33 @@ class Pattern { ); } _withEvents(func) { - return new Pattern((span)=>func(this.query(span)) + return new Pattern((state)=>func(this.query(state)) + ); + } + _withEvent(func) { + return this._withEvents((events)=>events.map(func) + ); + } + _setContext(context) { + return this._withEvent((event)=>event.setContext(context) + ); + } + _withContext(func) { + return this._withEvent((event)=>event.setContext(func(event.context)) + ); + } + _stripContext() { + return this._withEvent((event)=>event.setContext({ + }) ); } withLocation(location) { - return this.fmap((value)=>{ - value = typeof value === 'object' && !Array.isArray(value) ? value : { - value - }; - const locations = (value.locations || []).concat([ + return this._withContext((context)=>{ + const locations = (context.locations || []).concat([ location ]); return { - ...value, + ...context, locations }; }); @@ -42210,7 +42268,7 @@ class Pattern { withValue(func) { // Returns a new pattern, with the function applied to the value of // each event. It has the alias 'fmap'. - return new Pattern((span)=>this.query(span).map((hap)=>hap.withValue(func) + return new Pattern((state)=>this.query(state).map((hap)=>hap.withValue(func) ) ); } @@ -42219,11 +42277,11 @@ class Pattern { return this.withValue(func); } _filterEvents(event_test) { - return new Pattern((span)=>this.query(span).filter(event_test) + return new Pattern((state)=>this.query(state).filter(event_test) ); } _filterValues(value_test) { - return new Pattern((span)=>this.query(span).filter((hap)=>value_test(hap.value) + return new Pattern((state)=>this.query(state).filter((hap)=>value_test(hap.value) ) ); } @@ -42243,13 +42301,14 @@ class Pattern { // resolve wholes, applies a given pattern of values to that // pattern of functions. const pat_func = this; - const query = function(span) { - const event_funcs = pat_func.query(span); - const event_vals = pat_val.query(span); + const query = function(state) { + const event_funcs = pat_func.query(state); + const event_vals = pat_val.query(state); const apply = function(event_func, event_val) { const s = event_func.part.intersection(event_val.part); if (s == undefined) return undefined; - return new Hap(whole_func(event_func.whole, event_val.whole), s, event_func.value(event_val.value)); + // TODO: is it right to add event_val.context here? + return new Hap(whole_func(event_func.whole, event_val.whole), s, event_func.value(event_val.value), event_val.context); }; return flatten(event_funcs.map((event_func)=>removeUndefineds(event_vals.map((event_val)=>apply(event_func, event_val) )) @@ -42267,15 +42326,19 @@ class Pattern { } appLeft(pat_val) { const pat_func = this; - const query = function(span) { + const query = function(state) { const haps = []; - for (const hap_func of pat_func.query(span)){ - const event_vals = pat_val.query(hap_func.part); + for (const hap_func of pat_func.query(state)){ + const event_vals = pat_val.query(state.setSpan(hap_func.part)); for (const hap_val of event_vals){ const new_whole = hap_func.whole; const new_part = hap_func.part.intersection_e(hap_val.part); const new_value = hap_func.value(hap_val.value); - const hap = new Hap(new_whole, new_part, new_value); + const hap = new Hap(new_whole, new_part, new_value, { + ...hap_val.context, + ...hap_func.context, + locations: (hap_val.context.locations || []).concat(hap_func.context.locations || []) + }); haps.push(hap); } } @@ -42285,15 +42348,19 @@ class Pattern { } appRight(pat_val) { const pat_func = this; - const query = function(span) { + const query = function(state) { const haps = []; - for (const hap_val of pat_val.query(span)){ - const hap_funcs = pat_func.query(hap_val.part); + for (const hap_val of pat_val.query(state)){ + const hap_funcs = pat_func.query(state.setSpan(hap_val.part)); for (const hap_func of hap_funcs){ const new_whole = hap_val.whole; const new_part = hap_func.part.intersection_e(hap_val.part); const new_value = hap_func.value(hap_val.value); - const hap = new Hap(new_whole, new_part, new_value); + const hap = new Hap(new_whole, new_part, new_value, { + ...hap_func.context, + ...hap_val.context, + locations: (hap_val.context.locations || []).concat(hap_func.context.locations || []) + }); haps.push(hap); } } @@ -42301,8 +42368,10 @@ class Pattern { }; return new Pattern(query); } - get firstCycle() { - return this.query(new TimeSpan(_fractionJsDefault.default(0), _fractionJsDefault.default(1))); + firstCycle(with_context = false) { + var self = this; + if (!with_context) self = self._stripContext(); + return self.query(new State(new TimeSpan(_fractionJsDefault.default(0), _fractionJsDefault.default(1)))); } _sortEventsByPart() { return this._withEvents((events)=>events.sort((a, b)=>a.part.begin.sub(b.part.begin).or(a.part.end.sub(b.part.end)).or(a.whole.begin.sub(b.whole.begin).or(a.whole.end.sub(b.whole.end))) @@ -42335,15 +42404,19 @@ class Pattern { } _bindWhole(choose_whole, func) { const pat_val = this; - const query = function(span) { + const query = function(state) { const withWhole = function(a, b) { - return new Hap(choose_whole(a.whole, b.whole), b.part, b.value); + return new Hap(choose_whole(a.whole, b.whole), b.part, b.value, { + ...a.context, + ...b.context, + locations: (a.context.locations || []).concat(b.context.locations || []) + }); }; const match = function(a) { - return func(a.value).query(a.part).map((b)=>withWhole(a, b) + return func(a.value).query(state.setSpan(a.part)).map((b)=>withWhole(a, b) ); }; - return flatten(pat_val.query(span).map((a)=>match(a) + return flatten(pat_val.query(state).map((a)=>match(a) )); }; return new Pattern(query); @@ -42496,7 +42569,8 @@ class Pattern { } rev() { const pat = this; - const query = function(span) { + const query = function(state) { + const span = state.span; const cycle = span.begin.sam(); const next_cycle = span.begin.nextSam(); const reflect = function(to_reflect) { @@ -42508,7 +42582,7 @@ class Pattern { reflected.end = tmp; return reflected; }; - const haps = pat.query(reflect(span)); + const haps = pat.query(state.setSpan(reflect(span))); return haps.map((hap)=>hap.withSpan(reflect) ); }; @@ -42587,8 +42661,8 @@ const silence = new Pattern((_)=>[] ); function pure(value) { // A discrete value that repeats once per cycle - function query(span) { - return span.spanCycles.map((subspan)=>new Hap(_fractionJsDefault.default(subspan.begin).wholeCycle(), subspan, value) + function query(state) { + return state.span.spanCycles.map((subspan)=>new Hap(_fractionJsDefault.default(subspan.begin).wholeCycle(), subspan, value) ); } return new Pattern(query); @@ -42599,8 +42673,8 @@ function steady(value) { ); } const signal = (func)=>{ - const query = (span)=>[ - new Hap(undefined, span, func(span.midpoint())) + const query = (state)=>[ + new Hap(undefined, state.span, func(state.span.midpoint())) ] ; return new Pattern(query); @@ -42636,7 +42710,7 @@ function reify(thing) { function stack(...pats) { const reified = pats.map((pat)=>reify(pat) ); - const query = (span)=>flatten(reified.map((pat)=>pat.query(span) + const query = (state)=>flatten(reified.map((pat)=>pat.query(state) )) ; return new Pattern(query); @@ -42645,7 +42719,8 @@ function slowcat(...pats) { // Concatenation: combines a list of patterns, switching between them // successively, one per cycle. pats = pats.map(reify); - const query = function(span) { + const query = function(state) { + const span = state.span; const pat_n = Math.floor(span.begin) % pats.length; const pat = pats[pat_n]; if (!pat) // pat_n can be negative, if the span is in the past.. @@ -42655,8 +42730,8 @@ function slowcat(...pats) { // be the second (rather than fourth) cycle from the first pattern. const offset = span.begin.floor().sub(span.begin.div(pats.length).floor()); return pat.withEventTime((t)=>t.add(offset) - ).query(span.withTime((t)=>t.sub(offset) - )); + ).query(state.setSpan(span.withTime((t)=>t.sub(offset) + ))); }; return new Pattern(query)._splitQueries(); } @@ -42664,10 +42739,10 @@ function slowcatPrime(...pats) { // Concatenation: combines a list of patterns, switching between them // successively, one per cycle. Unlike slowcat, this version will skip cycles. pats = pats.map(reify); - const query = function(span) { - const pat_n = Math.floor(span.begin) % pats.length; + const query = function(state) { + const pat_n = Math.floor(state.span.begin) % pats.length; const pat = pats[pat_n]; - return pat.query(span); + return pat.query(state); }; return new Pattern(query)._splitQueries(); } @@ -42839,11 +42914,8 @@ Pattern.prototype.bootstrap = ()=>{ }; // this is wrapped around mini patterns to offset krill parser location into the global js code space function withLocationOffset(pat, offset) { - return pat.fmap((value)=>{ - value = typeof value === 'object' && !Array.isArray(value) ? value : { - value - }; - let locations = value.locations || []; + return pat._withContext((context)=>{ + let locations = context.locations || []; locations = locations.map(({ start , end })=>{ const colOffset = start.line === 1 ? offset.start.column : 0; return { @@ -42860,7 +42932,7 @@ function withLocationOffset(pat, offset) { }; }); return { - ...value, + ...context, locations }; }); @@ -56463,6 +56535,8 @@ parcelHelpers.export(exports, "sampler", ()=>sampler ); parcelHelpers.export(exports, "synth", ()=>synth ); +parcelHelpers.export(exports, "piano", ()=>piano +); parcelHelpers.export(exports, "vol", ()=>vol ); parcelHelpers.export(exports, "lowpass", ()=>lowpass @@ -56485,26 +56559,34 @@ parcelHelpers.export(exports, "gain", ()=>gain ); var _strudelMjs = require("../../strudel.mjs"); var _tone = require("tone"); +var _piano = require("@tonejs/piano"); // what about // https://www.charlie-roberts.com/gibberish/playground/ const Pattern = _strudelMjs.Pattern; // with this function, you can play the pattern with any tone synth Pattern.prototype.tone = function(instrument) { // instrument.toDestination(); - return this.fmap((value)=>{ - value = typeof value !== 'object' && !Array.isArray(value) ? { - value - } : value; + return this._withEvent((event1)=>{ const onTrigger = (time, event)=>{ - if (instrument.constructor.name === 'PluckSynth') instrument.triggerAttack(value.value, time); + if (instrument.constructor.name === 'PluckSynth') instrument.triggerAttack(event.value, time); else if (instrument.constructor.name === 'NoiseSynth') instrument.triggerAttackRelease(event.duration, time); // noise has no value - else instrument.triggerAttackRelease(value.value, event.duration, time); + else if (instrument.constructor.name === 'Piano') { + instrument.keyDown({ + note: event.value, + time, + velocity: 0.5 + }); + instrument.keyUp({ + note: event.value, + time: time + event.duration + }); + } else instrument.triggerAttackRelease(event.value, event.duration, time); }; - return { - ...value, + return event1.setContext({ + ...event1.context, instrument, onTrigger - }; + }); }); }; Pattern.prototype.define('tone', (type, pat)=>pat.tone(type) @@ -56534,6 +56616,13 @@ const sampler = (options)=>new _tone.Sampler(options) ; const synth = (options)=>new _tone.Synth(options) ; +const piano = async (options = { + velocities: 1 +})=>{ + const p = new _piano.Piano(options); + await p.load(); + return p; +}; const vol = (v)=>new _tone.Gain(v) ; const lowpass = (v)=>new _tone.Filter(v, 'lowpass') @@ -56601,19 +56690,16 @@ Pattern.prototype._poly = function(type = 'triangle') { if (!this.instrument) // create only once to keep the js heap happy // this.instrument = new PolySynth(Synth, instrumentConfig).toDestination(); this.instrument = poly(type); - return this.fmap((value)=>{ - value = typeof value !== 'object' && !Array.isArray(value) ? { - value - } : value; + return this._withEvent((event2)=>{ const onTrigger = (time, event)=>{ this.instrument.set(instrumentConfig); - this.instrument.triggerAttackRelease(value.value, event.duration, time); + this.instrument.triggerAttackRelease(event.value, event.duration, time); }; - return { - ...value, + return event2.setContext({ + ...event2.context, instrumentConfig, onTrigger - }; + }); }); }; Pattern.prototype.define('poly', (type, pat)=>pat.poly(type) @@ -56637,10 +56723,7 @@ const getTrigger = (getChain, value)=>(time, event)=>{ } ; Pattern.prototype._synth = function(type = 'triangle') { - return this.fmap((value)=>{ - value = typeof value !== 'object' && !Array.isArray(value) ? { - value - } : value; + return this._withEvent((event)=>{ const instrumentConfig = { oscillator: { type @@ -56658,20 +56741,20 @@ Pattern.prototype._synth = function(type = 'triangle') { return instrument; }; const onTrigger = getTrigger(()=>getInstrument().toDestination() - , value.value); - return { - ...value, + , event.value); + return event.setContext({ + ...event.context, getInstrument, instrumentConfig, onTrigger - }; + }); }); }; Pattern.prototype.adsr = function(attack = 0.01, decay = 0.01, sustain = 0.6, release = 0.01) { - return this.fmap((value)=>{ - if (!value?.getInstrument) throw new Error('cannot chain adsr: need instrument first (like synth)'); + return this._withEvent((event)=>{ + if (!event.context.getInstrument) throw new Error('cannot chain adsr: need instrument first (like synth)'); const instrumentConfig = { - ...value.instrumentConfig, + ...event.context.instrumentConfig, envelope: { attack, decay, @@ -56680,36 +56763,36 @@ Pattern.prototype.adsr = function(attack = 0.01, decay = 0.01, sustain = 0.6, re } }; const getInstrument = ()=>{ - const instrument = value.getInstrument(); + const instrument = event.context.getInstrument(); instrument.set(instrumentConfig); return instrument; }; const onTrigger = getTrigger(()=>getInstrument().toDestination() - , value.value); - return { - ...value, + , event.value); + return event.setContext({ + ...event.context, getInstrument, instrumentConfig, onTrigger - }; + }); }); }; Pattern.prototype.chain = function(...effectGetters) { - return this.fmap((value)=>{ - if (!value?.getInstrument) throw new Error('cannot chain: need instrument first (like synth)'); - const chain = (value.chain || []).concat(effectGetters); + return this._withEvent((event)=>{ + if (!event.context?.getInstrument) throw new Error('cannot chain: need instrument first (like synth)'); + const chain = (event.context.chain || []).concat(effectGetters); const getChain = ()=>{ const effects = chain.map((getEffect)=>getEffect() ); - return value.getInstrument().chain(...effects, _tone.getDestination()); + return event.context.getInstrument().chain(...effects, _tone.getDestination()); }; - const onTrigger = getTrigger(getChain, value.value); - return { - ...value, + const onTrigger = getTrigger(getChain, event.value); + return event.setContext({ + ...event.context, getChain, onTrigger, chain - }; + }); }); }; const autofilter = (freq = 1)=>()=>new _tone.AutoFilter(freq).start() @@ -56748,106 +56831,1375 @@ Pattern.prototype.define('autofilter', (cutoff, pat)=>pat.filter(cutoff) patternified: true }); -},{"../../strudel.mjs":"ggZqJ","tone":"2tCfN","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"kToux":[function(require,module,exports) { +},{"../../strudel.mjs":"ggZqJ","tone":"2tCfN","@tonejs/piano":"2yEOO","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"2yEOO":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -parcelHelpers.export(exports, "useWebMidi", ()=>useWebMidi +parcelHelpers.export(exports, "Piano", ()=>_piano.Piano +); +parcelHelpers.export(exports, "MidiInput", ()=>_midiInput.MidiInput +); +var _piano = require("./piano/Piano"); +var _midiInput = require("./midi/MidiInput"); + +},{"./piano/Piano":"g7HKi","./midi/MidiInput":"iOYnK","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"g7HKi":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +/** + * The Piano + */ parcelHelpers.export(exports, "Piano", ()=>Piano ); -var _react = require("react"); var _tone = require("tone"); +var _harmonics = require("./Harmonics"); +var _keybed = require("./Keybed"); +var _pedal = require("./Pedal"); +var _strings = require("./Strings"); +var __awaiter = undefined && undefined.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +class Piano extends _tone.ToneAudioNode { + constructor(){ + super(_tone.optionsFromArguments(Piano.getDefaults(), arguments)); + this.name = 'Piano'; + this.input = undefined; + this.output = new _tone.Gain({ + context: this.context + }); + /** + * The currently held notes + */ this._heldNotes = new Map(); + /** + * If it's loaded or not + */ this._loaded = false; + const options = _tone.optionsFromArguments(Piano.getDefaults(), arguments); + // make sure it ends with a / + if (!options.url.endsWith('/')) options.url += '/'; + this.maxPolyphony = options.maxPolyphony; + this._heldNotes = new Map(); + this._sustainedNotes = new Map(); + this._strings = new _strings.PianoStrings(Object.assign({ + }, options, { + enabled: true, + samples: options.url, + volume: options.volume.strings + })).connect(this.output); + this.strings = this._strings.volume; + this._pedal = new _pedal.Pedal(Object.assign({ + }, options, { + enabled: options.pedal, + samples: options.url, + volume: options.volume.pedal + })).connect(this.output); + this.pedal = this._pedal.volume; + this._keybed = new _keybed.Keybed(Object.assign({ + }, options, { + enabled: options.release, + samples: options.url, + volume: options.volume.keybed + })).connect(this.output); + this.keybed = this._keybed.volume; + this._harmonics = new _harmonics.Harmonics(Object.assign({ + }, options, { + enabled: options.release, + samples: options.url, + volume: options.volume.harmonics + })).connect(this.output); + this.harmonics = this._harmonics.volume; + } + static getDefaults() { + return Object.assign(_tone.ToneAudioNode.getDefaults(), { + maxNote: 108, + minNote: 21, + pedal: true, + release: false, + url: 'https://tambien.github.io/Piano/audio/', + velocities: 1, + maxPolyphony: 32, + volume: { + harmonics: 0, + keybed: 0, + pedal: 0, + strings: 0 + } + }); + } + /** + * Load all the samples + */ load() { + return __awaiter(this, void 0, void 0, function*() { + yield Promise.all([ + this._strings.load(), + this._pedal.load(), + this._keybed.load(), + this._harmonics.load(), + ]); + this._loaded = true; + }); + } + /** + * If all the samples are loaded or not + */ get loaded() { + return this._loaded; + } + /** + * Put the pedal down at the given time. Causes subsequent + * notes and currently held notes to sustain. + */ pedalDown({ time =this.immediate() } = { + }) { + if (this.loaded) { + time = this.toSeconds(time); + if (!this._pedal.isDown(time)) this._pedal.down(time); + } + return this; + } + /** + * Put the pedal up. Dampens sustained notes + */ pedalUp({ time =this.immediate() } = { + }) { + if (this.loaded) { + const seconds = this.toSeconds(time); + if (this._pedal.isDown(seconds)) { + this._pedal.up(seconds); + // dampen each of the notes + this._sustainedNotes.forEach((t, note)=>{ + if (!this._heldNotes.has(note)) this._strings.triggerRelease(note, seconds); + }); + this._sustainedNotes.clear(); + } + } + return this; + } + /** + * Play a note. + * @param note The note to play. If it is a number, it is assumed to be MIDI + * @param velocity The velocity to play the note + * @param time The time of the event + */ keyDown({ note , midi , time =this.immediate() , velocity =0.8 }) { + if (this.loaded && this.maxPolyphony > this._heldNotes.size + this._sustainedNotes.size) { + time = this.toSeconds(time); + if (_tone.isString(note)) midi = Math.round(_tone.Midi(note).toMidi()); + if (!this._heldNotes.has(midi)) { + // record the start time and velocity + this._heldNotes.set(midi, { + time, + velocity + }); + this._strings.triggerAttack(midi, time, velocity); + } + } else console.warn('samples not loaded'); + return this; + } + /** + * Release a held note. + */ keyUp({ note , midi , time =this.immediate() , velocity =0.8 }) { + if (this.loaded) { + time = this.toSeconds(time); + if (_tone.isString(note)) midi = Math.round(_tone.Midi(note).toMidi()); + if (this._heldNotes.has(midi)) { + const prevNote = this._heldNotes.get(midi); + this._heldNotes.delete(midi); + // compute the release velocity + const holdTime = Math.pow(Math.max(time - prevNote.time, 0.1), 0.7); + const prevVel = prevNote.velocity; + let dampenGain = 3 / holdTime * prevVel * velocity; + dampenGain = Math.max(dampenGain, 0.4); + dampenGain = Math.min(dampenGain, 4); + if (this._pedal.isDown(time)) { + if (!this._sustainedNotes.has(midi)) this._sustainedNotes.set(midi, time); + } else { + // release the string sound + this._strings.triggerRelease(midi, time); + // trigger the harmonics sound + this._harmonics.triggerAttack(midi, time, dampenGain); + } + // trigger the keybed release sound + this._keybed.start(midi, time, velocity); + } + } + return this; + } + stopAll() { + this.pedalUp(); + this._heldNotes.forEach((_, midi)=>{ + this.keyUp({ + midi + }); + }); + return this; + } +} + +},{"tone":"2tCfN","./Harmonics":"2tKny","./Keybed":"afZ4g","./Pedal":"clo9A","./Strings":"fy24m","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"2tKny":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "Harmonics", ()=>Harmonics +); +var _tone = require("tone"); +var _component = require("./Component"); +var _salamander = require("./Salamander"); +var _util = require("./Util"); +class Harmonics extends _component.PianoComponent { + constructor(options){ + super(options); + this._urls = { + }; + const notes = _salamander.getHarmonicsInRange(options.minNote, options.maxNote); + for (const n of notes)this._urls[n] = _salamander.getHarmonicsUrl(n); + } + triggerAttack(note, time, velocity) { + if (this._enabled && _salamander.inHarmonicsRange(note)) this._sampler.triggerAttack(_tone.Midi(note).toNote(), time, velocity * _util.randomBetween(0.5, 1)); + } + _internalLoad() { + return new Promise((onload)=>{ + this._sampler = new _tone.Sampler({ + baseUrl: this.samples, + onload, + urls: this._urls + }).connect(this.output); + }); + } +} + +},{"tone":"2tCfN","./Component":"kZypm","./Salamander":"9zoix","./Util":"7MnHb","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"kZypm":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +/** + * Base class for the other components + */ parcelHelpers.export(exports, "PianoComponent", ()=>PianoComponent +); +var _tone = require("tone"); +var __awaiter = undefined && undefined.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +class PianoComponent extends _tone.ToneAudioNode { + constructor(options){ + super(options); + this.name = 'PianoComponent'; + this.input = undefined; + this.output = new _tone.Volume({ + context: this.context + }); + /** + * If the component is enabled or not + */ this._enabled = false; + /** + * The volume output of the component + */ this.volume = this.output.volume; + /** + * Boolean indication of if the component is loaded or not + */ this._loaded = false; + this.volume.value = options.volume; + this._enabled = options.enabled; + this.samples = options.samples; + } + /** + * If the samples are loaded or not + */ get loaded() { + return this._loaded; + } + /** + * Load the samples + */ load() { + return __awaiter(this, void 0, void 0, function*() { + if (this._enabled) { + yield this._internalLoad(); + this._loaded = true; + } else return Promise.resolve(); + }); + } +} + +},{"tone":"2tCfN","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"9zoix":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "githubURL", ()=>githubURL +); +parcelHelpers.export(exports, "getReleasesUrl", ()=>getReleasesUrl +); +parcelHelpers.export(exports, "getHarmonicsUrl", ()=>getHarmonicsUrl +); +parcelHelpers.export(exports, "getNotesUrl", ()=>getNotesUrl +); +parcelHelpers.export(exports, "velocitiesMap", ()=>velocitiesMap +); +parcelHelpers.export(exports, "allNotes", ()=>allNotes +); +parcelHelpers.export(exports, "getNotesInRange", ()=>getNotesInRange +); +parcelHelpers.export(exports, "getHarmonicsInRange", ()=>getHarmonicsInRange +); +parcelHelpers.export(exports, "inHarmonicsRange", ()=>inHarmonicsRange +); +var _util = require("./Util"); +const githubURL = 'https://tambien.github.io/Piano/Salamander/'; +function getReleasesUrl(midi) { + return `rel${midi - 20}.[mp3|ogg]`; +} +function getHarmonicsUrl(midi) { + return `harmS${_util.midiToNote(midi).replace('#', 's')}.[mp3|ogg]`; +} +function getNotesUrl(midi, vel) { + return `${_util.midiToNote(midi).replace('#', 's')}v${vel}.[mp3|ogg]`; +} +const velocitiesMap = { + 1: [ + 8 + ], + 2: [ + 6, + 12 + ], + 3: [ + 1, + 7, + 15 + ], + 4: [ + 1, + 5, + 10, + 15 + ], + 5: [ + 1, + 4, + 8, + 12, + 16 + ], + 6: [ + 1, + 3, + 7, + 10, + 13, + 16 + ], + 7: [ + 1, + 3, + 6, + 9, + 11, + 13, + 16 + ], + 8: [ + 1, + 3, + 5, + 7, + 9, + 11, + 13, + 16 + ], + 9: [ + 1, + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 16 + ], + 10: [ + 1, + 2, + 3, + 5, + 7, + 9, + 11, + 13, + 15, + 16 + ], + 11: [ + 1, + 2, + 3, + 5, + 7, + 9, + 11, + 13, + 14, + 15, + 16 + ], + 12: [ + 1, + 2, + 3, + 4, + 5, + 7, + 9, + 11, + 13, + 14, + 15, + 16 + ], + 13: [ + 1, + 2, + 3, + 4, + 5, + 7, + 9, + 11, + 12, + 13, + 14, + 15, + 16 + ], + 14: [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 9, + 11, + 12, + 13, + 14, + 15, + 16 + ], + 15: [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ], + 16: [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16 + ] +}; +const allNotes = [ + 21, + 24, + 27, + 30, + 33, + 36, + 39, + 42, + 45, + 48, + 51, + 54, + 57, + 60, + 63, + 66, + 69, + 72, + 75, + 78, + 81, + 84, + 87, + 90, + 93, + 96, + 99, + 102, + 105, + 108 +]; +function getNotesInRange(min, max) { + return allNotes.filter((note)=>min <= note && note <= max + ); +} +/** + * All the notes of audio samples + */ const harmonics = [ + 21, + 24, + 27, + 30, + 33, + 36, + 39, + 42, + 45, + 48, + 51, + 54, + 57, + 60, + 63, + 66, + 69, + 72, + 75, + 78, + 81, + 84, + 87 +]; +function getHarmonicsInRange(min, max) { + return harmonics.filter((note)=>min <= note && note <= max + ); +} +function inHarmonicsRange(note) { + return harmonics[0] <= note && note <= harmonics[harmonics.length - 1]; +} + +},{"./Util":"7MnHb","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"7MnHb":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "noteToMidi", ()=>noteToMidi +); +parcelHelpers.export(exports, "midiToNote", ()=>midiToNote +); +parcelHelpers.export(exports, "randomBetween", ()=>randomBetween +); +// import * as Tone from '../node_modules/tone/Tone' +var _tone = require("tone"); +function noteToMidi(note) { + return _tone.Frequency(note).toMidi(); +} +function midiToNote(midi) { + const frequency = _tone.Frequency(midi, 'midi'); + const ret = frequency.toNote(); + return ret; +} +function midiToFrequencyRatio(midi) { + const mod = midi % 3; + if (mod === 1) return [ + midi - 1, + _tone.intervalToFrequencyRatio(1) + ]; + else if (mod === 2) // @ts-ignore + return [ + midi + 1, + _tone.intervalToFrequencyRatio(-1) + ]; + else return [ + midi, + 1 + ]; +} +function createSource(buffer) { + return new _tone.ToneBufferSource(buffer); +} +function randomBetween(low, high) { + return Math.random() * (high - low) + low; +} + +},{"tone":"2tCfN","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"afZ4g":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "Keybed", ()=>Keybed +); +var _tone = require("tone"); +var _component = require("./Component"); +var _salamander = require("./Salamander"); +var _util = require("./Util"); +class Keybed extends _component.PianoComponent { + constructor(options){ + super(options); + /** + * The urls to load + */ this._urls = { + }; + for(let i = options.minNote; i <= options.maxNote; i++)this._urls[i] = _salamander.getReleasesUrl(i); + } + _internalLoad() { + return new Promise((success)=>{ + this._buffers = new _tone.ToneAudioBuffers(this._urls, success, this.samples); + }); + } + start(note, time, velocity) { + if (this._enabled && this._buffers.has(note)) { + const source = new _tone.ToneBufferSource({ + url: this._buffers.get(note), + context: this.context + }).connect(this.output); + // randomize the velocity slightly + source.start(time, 0, undefined, 0.015 * velocity * _util.randomBetween(0.5, 1)); + } + } +} + +},{"tone":"2tCfN","./Component":"kZypm","./Salamander":"9zoix","./Util":"7MnHb","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"clo9A":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "Pedal", ()=>Pedal +); +var _tone = require("tone"); +var _component = require("./Component"); +var _util = require("./Util"); +class Pedal extends _component.PianoComponent { + constructor(options){ + super(options); + this._downTime = Infinity; + this._currentSound = null; + this._downTime = Infinity; + } + _internalLoad() { + return new Promise((success)=>{ + this._buffers = new _tone.ToneAudioBuffers({ + down1: 'pedalD1.mp3', + down2: 'pedalD2.mp3', + up1: 'pedalU1.mp3', + up2: 'pedalU2.mp3' + }, success, this.samples); + }); + } + /** + * Squash the current playing sound + */ _squash(time) { + if (this._currentSound && this._currentSound.state !== 'stopped') this._currentSound.stop(time); + this._currentSound = null; + } + _playSample(time, dir) { + if (this._enabled) { + this._currentSound = new _tone.ToneBufferSource({ + url: this._buffers.get(`${dir}${Math.random() > 0.5 ? 1 : 2}`), + context: this.context, + curve: 'exponential', + fadeIn: 0.05, + fadeOut: 0.1 + }).connect(this.output); + this._currentSound.start(time, _util.randomBetween(0, 0.01), undefined, 0.1 * _util.randomBetween(0.5, 1)); + } + } + /** + * Put the pedal down + */ down(time) { + this._squash(time); + this._downTime = time; + this._playSample(time, 'down'); + } + /** + * Put the pedal up + */ up(time) { + this._squash(time); + this._downTime = Infinity; + this._playSample(time, 'up'); + } + /** + * Indicates if the pedal is down at the given time + */ isDown(time) { + return time > this._downTime; + } +} + +},{"tone":"2tCfN","./Component":"kZypm","./Util":"7MnHb","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"fy24m":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +/** + * Manages all of the hammered string sounds + */ parcelHelpers.export(exports, "PianoStrings", ()=>PianoStrings +); +var _tone = require("tone"); +var _component = require("./Component"); +var _salamander = require("./Salamander"); +var _string = require("./String"); +var __awaiter = undefined && undefined.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +class PianoStrings extends _component.PianoComponent { + constructor(options){ + super(options); + const notes = _salamander.getNotesInRange(options.minNote, options.maxNote); + const velocities = _salamander.velocitiesMap[options.velocities].slice(); + this._strings = velocities.map((velocity)=>{ + const string = new _string.PianoString(Object.assign(options, { + notes, + velocity + })); + return string; + }); + this._activeNotes = new Map(); + } + /** + * Scale a value between a given range + */ scale(val, inMin, inMax, outMin, outMax) { + return (val - inMin) / (inMax - inMin) * (outMax - outMin) + outMin; + } + triggerAttack(note, time, velocity) { + const scaledVel = this.scale(velocity, 0, 1, -0.5, this._strings.length - 0.51); + const stringIndex = Math.max(Math.round(scaledVel), 0); + let gain = 1 + scaledVel - stringIndex; + if (this._strings.length === 1) gain = velocity; + const sampler = this._strings[stringIndex]; + if (this._activeNotes.has(note)) this.triggerRelease(note, time); + this._activeNotes.set(note, sampler); + sampler.triggerAttack(_tone.Midi(note).toNote(), time, gain); + } + triggerRelease(note, time) { + // trigger the release of all of the notes at that velociy + if (this._activeNotes.has(note)) { + this._activeNotes.get(note).triggerRelease(_tone.Midi(note).toNote(), time); + this._activeNotes.delete(note); + } + } + _internalLoad() { + return __awaiter(this, void 0, void 0, function*() { + yield Promise.all(this._strings.map((s)=>__awaiter(this, void 0, void 0, function*() { + yield s.load(); + s.connect(this.output); + }) + )); + }); + } +} + +},{"tone":"2tCfN","./Component":"kZypm","./Salamander":"9zoix","./String":"4E9zy","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"4E9zy":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +/** + * A single velocity of strings + */ parcelHelpers.export(exports, "PianoString", ()=>PianoString +); +var _tone = require("tone"); +var _salamander = require("./Salamander"); +class PianoString extends _tone.ToneAudioNode { + constructor(options){ + super(options); + this.name = 'PianoString'; + this._urls = { + }; + // create the urls + options.notes.forEach((note)=>this._urls[note] = _salamander.getNotesUrl(note, options.velocity) + ); + this.samples = options.samples; + } + load() { + return new Promise((onload)=>{ + this._sampler = this.output = new _tone.Sampler({ + attack: 0, + baseUrl: this.samples, + curve: 'exponential', + onload, + release: 0.4, + urls: this._urls, + volume: 3 + }); + }); + } + triggerAttack(note, time, velocity) { + this._sampler.triggerAttack(note, time, velocity); + } + triggerRelease(note, time) { + this._sampler.triggerRelease(note, time); + } +} + +},{"tone":"2tCfN","./Salamander":"9zoix","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"iOYnK":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "MidiInput", ()=>MidiInput +); +var _events = require("events"); var _webmidi = require("webmidi"); var _webmidiDefault = parcelHelpers.interopDefault(_webmidi); -var _strudelMjs = require("../../strudel.mjs"); -const WebMidi = _webmidiDefault.default; -const Pattern = _strudelMjs.Pattern; -function enableWebMidi() { - return new Promise((resolve, reject)=>{ - if (WebMidi.enabled) { - // if already enabled, just resolve WebMidi - resolve(WebMidi); - return; +var __awaiter = undefined && undefined.__awaiter || function(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P ? value : new P(function(resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function(resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } } - WebMidi.enable((err)=>{ - if (err) reject(err); - resolve(WebMidi); + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +class MidiInput extends _events.EventEmitter { + constructor(deviceId = 'all'){ + super(); + this.deviceId = deviceId; + /** + * Automatically attaches the event listeners when a device is connect + * and removes listeners when a device is disconnected + */ MidiInput.enabled().then(()=>{ + _webmidiDefault.default.addListener('connected', (event)=>{ + if (event.port.type === 'input') this._addListeners(event.port); + }); + _webmidiDefault.default.addListener('disconnected', (event)=>{ + this._removeListeners(event.port); + }); + // add all of the existing inputs + _webmidiDefault.default.inputs.forEach((input)=>this._addListeners(input) + ); + }); + } + /** + * Attach listeners to the device when it's connected + */ _addListeners(device) { + if (!MidiInput.connectedDevices.has(device.id)) { + MidiInput.connectedDevices.set(device.id, device); + this.emit('connect', this._inputToDevice(device)); + device.addListener('noteon', 'all', (event)=>{ + if (this.deviceId === 'all' || this.deviceId === device.id) this.emit('keyDown', { + note: `${event.note.name}${event.note.octave}`, + midi: event.note.number, + velocity: event.velocity, + device: this._inputToDevice(device) + }); + }); + device.addListener('noteoff', 'all', (event)=>{ + if (this.deviceId === 'all' || this.deviceId === device.id) this.emit('keyUp', { + note: `${event.note.name}${event.note.octave}`, + midi: event.note.number, + velocity: event.velocity, + device: this._inputToDevice(device) + }); + }); + device.addListener('controlchange', 'all', (event)=>{ + if (this.deviceId === 'all' || this.deviceId === device.id) { + if (event.controller.name === 'holdpedal') this.emit(event.value ? 'pedalDown' : 'pedalUp', { + device: this._inputToDevice(device) + }); + } + }); + } + } + _inputToDevice(input) { + return { + name: input.name, + id: input.id, + manufacturer: input.manufacturer + }; + } + /** + * Internal call to remove all event listeners associated with the device + */ _removeListeners(event) { + if (MidiInput.connectedDevices.has(event.id)) { + const device = MidiInput.connectedDevices.get(event.id); + this.emit('disconnect', this._inputToDevice(device)); + MidiInput.connectedDevices.delete(event.id); + device.removeListener('noteon'); + device.removeListener('noteoff'); + device.removeListener('controlchange'); + } + } + // EVENT FUNCTIONS + emit(event, data) { + return super.emit(event, data); + } + on(event, listener) { + super.on(event, listener); + return this; + } + once(event, listener) { + super.once(event, listener); + return this; + } + off(event, listener) { + super.off(event, listener); + return this; + } + /** + * Resolves when the MIDI Input is enabled and ready to use + */ static enabled() { + return __awaiter(this, void 0, void 0, function*() { + if (!MidiInput._isEnabled) yield new Promise((done, error)=>{ + _webmidiDefault.default.enable((e)=>{ + if (e) error(e); + else { + MidiInput._isEnabled = true; + done(); + } + }); + }); + }); + } + /** + * Get a list of devices that are currently connected + */ static getDevices() { + return __awaiter(this, void 0, void 0, function*() { + yield MidiInput.enabled(); + return _webmidiDefault.default.inputs; + }); + } +} +// STATIC +MidiInput.connectedDevices = new Map(); +MidiInput._isEnabled = false; + +},{"events":"1VQLm","webmidi":"dYJc3","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"1VQLm":[function(require,module,exports) { +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. +'use strict'; +var R = typeof Reflect === 'object' ? Reflect : null; +var ReflectApply = R && typeof R.apply === 'function' ? R.apply : function ReflectApply(target, receiver, args) { + return Function.prototype.apply.call(target, receiver, args); +}; +var ReflectOwnKeys; +if (R && typeof R.ownKeys === 'function') ReflectOwnKeys = R.ownKeys; +else if (Object.getOwnPropertySymbols) ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)); +}; +else ReflectOwnKeys = function ReflectOwnKeys(target) { + return Object.getOwnPropertyNames(target); +}; +function ProcessEmitWarning(warning) { + if (console && console.warn) console.warn(warning); +} +var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) { + return value !== value; +}; +function EventEmitter() { + EventEmitter.init.call(this); +} +module.exports = EventEmitter; +module.exports.once = once; +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._eventsCount = 0; +EventEmitter.prototype._maxListeners = undefined; +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +var defaultMaxListeners = 10; +function checkListener(listener) { + if (typeof listener !== 'function') throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); +} +Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function() { + return defaultMaxListeners; + }, + set: function(arg) { + if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + '.'); + defaultMaxListeners = arg; + } +}); +EventEmitter.init = function() { + if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) { + this._events = Object.create(null); + this._eventsCount = 0; + } + this._maxListeners = this._maxListeners || undefined; +}; +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + '.'); + this._maxListeners = n; + return this; +}; +function _getMaxListeners(that) { + if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners; + return that._maxListeners; +} +EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return _getMaxListeners(this); +}; +EventEmitter.prototype.emit = function emit(type) { + var args = []; + for(var i = 1; i < arguments.length; i++)args.push(arguments[i]); + var doError = type === 'error'; + var events = this._events; + if (events !== undefined) doError = doError && events.error === undefined; + else if (!doError) return false; + // If there is no 'error' event listener then throw. + if (doError) { + var er; + if (args.length > 0) er = args[0]; + if (er instanceof Error) // Note: The comments on the `throw` lines are intentional, they show + // up in Node's output if this results in an unhandled exception. + throw er; // Unhandled 'error' event + // At least give some kind of context to the user + var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : '')); + err.context = er; + throw err; // Unhandled 'error' event + } + var handler = events[type]; + if (handler === undefined) return false; + if (typeof handler === 'function') ReflectApply(handler, this, args); + else { + var len = handler.length; + var listeners = arrayClone(handler, len); + for(var i = 0; i < len; ++i)ReflectApply(listeners[i], this, args); + } + return true; +}; +function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + checkListener(listener); + events = target._events; + if (events === undefined) { + events = target._events = Object.create(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener !== undefined) { + target.emit('newListener', type, listener.listener ? listener.listener : listener); + // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + events = target._events; + } + existing = events[type]; + } + if (existing === undefined) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') // Adding the second element, need to change to array. + existing = events[type] = prepend ? [ + listener, + existing + ] : [ + existing, + listener + ]; + else if (prepend) existing.unshift(listener); + else existing.push(listener); + // Check for listener leak + m = _getMaxListeners(target); + if (m > 0 && existing.length > m && !existing.warned) { + existing.warned = true; + // No error code for this since it is a Warning + // eslint-disable-next-line no-restricted-syntax + var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' ' + String(type) + ' listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + ProcessEmitWarning(w); + } + } + return target; +} +EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); +}; +EventEmitter.prototype.on = EventEmitter.prototype.addListener; +EventEmitter.prototype.prependListener = function prependListener(type, listener) { + return _addListener(this, type, listener, true); +}; +function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + if (arguments.length === 0) return this.listener.call(this.target); + return this.listener.apply(this.target, arguments); + } +} +function _onceWrap(target, type, listener) { + var state = { + fired: false, + wrapFn: undefined, + target: target, + type: type, + listener: listener + }; + var wrapped = onceWrapper.bind(state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; +} +EventEmitter.prototype.once = function once(type, listener) { + checkListener(listener); + this.on(type, _onceWrap(this, type, listener)); + return this; +}; +EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) { + checkListener(listener); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; +}; +// Emits a 'removeListener' event if and only if the listener was removed. +EventEmitter.prototype.removeListener = function removeListener(type, listener) { + var list, events, position, i, originalListener; + checkListener(listener); + events = this._events; + if (events === undefined) return this; + list = events[type]; + if (list === undefined) return this; + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) this._events = Object.create(null); + else { + delete events[type]; + if (events.removeListener) this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + for(i = list.length - 1; i >= 0; i--)if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + if (position < 0) return this; + if (position === 0) list.shift(); + else spliceOne(list, position); + if (list.length === 1) events[type] = list[0]; + if (events.removeListener !== undefined) this.emit('removeListener', type, originalListener || listener); + } + return this; +}; +EventEmitter.prototype.off = EventEmitter.prototype.removeListener; +EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) { + var listeners, events, i; + events = this._events; + if (events === undefined) return this; + // not listening for removeListener, no need to emit + if (events.removeListener === undefined) { + if (arguments.length === 0) { + this._events = Object.create(null); + this._eventsCount = 0; + } else if (events[type] !== undefined) { + if (--this._eventsCount === 0) this._events = Object.create(null); + else delete events[type]; + } + return this; + } + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + var keys = Object.keys(events); + var key; + for(i = 0; i < keys.length; ++i){ + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = Object.create(null); + this._eventsCount = 0; + return this; + } + listeners = events[type]; + if (typeof listeners === 'function') this.removeListener(type, listeners); + else if (listeners !== undefined) // LIFO order + for(i = listeners.length - 1; i >= 0; i--)this.removeListener(type, listeners[i]); + return this; +}; +function _listeners(target, type, unwrap) { + var events = target._events; + if (events === undefined) return []; + var evlistener = events[type]; + if (evlistener === undefined) return []; + if (typeof evlistener === 'function') return unwrap ? [ + evlistener.listener || evlistener + ] : [ + evlistener + ]; + return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); +} +EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); +}; +EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); +}; +EventEmitter.listenerCount = function(emitter, type) { + if (typeof emitter.listenerCount === 'function') return emitter.listenerCount(type); + else return listenerCount.call(emitter, type); +}; +EventEmitter.prototype.listenerCount = listenerCount; +function listenerCount(type) { + var events = this._events; + if (events !== undefined) { + var evlistener = events[type]; + if (typeof evlistener === 'function') return 1; + else if (evlistener !== undefined) return evlistener.length; + } + return 0; +} +EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; +}; +function arrayClone(arr, n) { + var copy = new Array(n); + for(var i = 0; i < n; ++i)copy[i] = arr[i]; + return copy; +} +function spliceOne(list, index) { + for(; index + 1 < list.length; index++)list[index] = list[index + 1]; + list.pop(); +} +function unwrapListeners(arr) { + var ret = new Array(arr.length); + for(var i = 0; i < ret.length; ++i)ret[i] = arr[i].listener || arr[i]; + return ret; +} +function once(emitter, name) { + return new Promise(function(resolve, reject) { + function errorListener(err) { + emitter.removeListener(name, resolver); + reject(err); + } + function resolver() { + if (typeof emitter.removeListener === 'function') emitter.removeListener('error', errorListener); + resolve([].slice.call(arguments)); + } + eventTargetAgnosticAddListener(emitter, name, resolver, { + once: true + }); + if (name !== 'error') addErrorHandlerIfEventEmitter(emitter, errorListener, { + once: true }); }); } -exports.default = enableWebMidi; -const outputByName = (name)=>WebMidi.getOutputByName(name) -; -Pattern.prototype.midi = function(output, channel = 1) { - if (output?.constructor?.name === 'Pattern') throw new Error(`.midi does not accept Pattern input. Make sure to pass device name with single quotes. Example: .midi('${WebMidi.outputs?.[0]?.name || 'IAC Driver Bus 1'}')`); - return this.fmap((value)=>({ - ...value, - onTrigger: (time, event)=>{ - value = value.value || value; - if (!_tone.isNote(value)) throw new Error('not a note: ' + value); - if (!WebMidi.enabled) throw new Error(`🎹 WebMidi is not enabled. Supported Browsers: https://caniuse.com/?search=webmidi`); - if (!WebMidi.outputs.length) throw new Error(`🔌 No MIDI devices found. Connect a device or enable IAC Driver.`); - const device = output ? outputByName(output) : WebMidi.outputs[0]; - if (!device) throw new Error(`🔌 MIDI device '${output ? output : ''}' not found. Use one of ${WebMidi.outputs.map((o)=>`'${o.name}'` - ).join(' | ')}`); - // console.log('midi', value, output); - const timingOffset = WebMidi.time - _tone.context.currentTime * 1000; - time = time * 1000 + timingOffset; - // const inMs = '+' + (time - Tone.context.currentTime) * 1000; - // await enableWebMidi() - device.playNote(value, channel, { - time, - duration: event.duration * 1000 - 5, - // velocity: velocity ?? 0.5, - velocity: 0.9 - }); - } - }) - ); -}; -function useWebMidi(props) { - const { ready , connected , disconnected } = props; - const [loading, setLoading] = _react.useState(true); - const [outputs, setOutputs] = _react.useState(WebMidi?.outputs || []); - _react.useEffect(()=>{ - enableWebMidi().then(()=>{ - // Reacting when a new device becomes available - WebMidi.addListener('connected', (e)=>{ - setOutputs([ - ...WebMidi.outputs - ]); - connected?.(WebMidi, e); - }); - // Reacting when a device becomes unavailable - WebMidi.addListener('disconnected', (e)=>{ - setOutputs([ - ...WebMidi.outputs - ]); - disconnected?.(WebMidi, e); - }); - ready?.(WebMidi); - setLoading(false); - }).catch((err)=>{ - if (err) { - //throw new Error("Web Midi could not be enabled..."); - console.warn('Web Midi could not be enabled..'); - return; - } - }); - }, [ - ready, - connected, - disconnected, - outputs - ]); - const outputByName1 = (name)=>WebMidi.getOutputByName(name) - ; - return { - loading, - outputs, - outputByName: outputByName1 - }; +function addErrorHandlerIfEventEmitter(emitter, handler, flags) { + if (typeof emitter.on === 'function') eventTargetAgnosticAddListener(emitter, 'error', handler, flags); +} +function eventTargetAgnosticAddListener(emitter, name, listener, flags) { + if (typeof emitter.on === 'function') { + if (flags.once) emitter.once(name, listener); + else emitter.on(name, listener); + } else if (typeof emitter.addEventListener === 'function') // EventTarget does not have `error` event semantics like Node + // EventEmitters, we do not listen for `error` events here. + emitter.addEventListener(name, function wrapListener(arg) { + // IE does not have builtin `{ once: true }` support so we + // have to do it manually. + if (flags.once) emitter.removeEventListener(name, wrapListener); + listener(arg); + }); + else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); } -},{"react":"21dqq","tone":"2tCfN","webmidi":"dYJc3","../../strudel.mjs":"ggZqJ","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"dYJc3":[function(require,module,exports) { +},{}],"dYJc3":[function(require,module,exports) { /* WebMidi v2.5.3 @@ -57929,7 +59281,106 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. }) : "undefined" != typeof module && module.exports ? module.exports = wm : scope.WebMidi || (scope.WebMidi = wm); }(this); -},{}],"bexb4":[function(require,module,exports) { +},{}],"kToux":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +parcelHelpers.export(exports, "useWebMidi", ()=>useWebMidi +); +var _react = require("react"); +var _tone = require("tone"); +var _webmidi = require("webmidi"); +var _webmidiDefault = parcelHelpers.interopDefault(_webmidi); +var _strudelMjs = require("../../strudel.mjs"); +const WebMidi = _webmidiDefault.default; +const Pattern = _strudelMjs.Pattern; +function enableWebMidi() { + return new Promise((resolve, reject)=>{ + if (WebMidi.enabled) { + // if already enabled, just resolve WebMidi + resolve(WebMidi); + return; + } + WebMidi.enable((err)=>{ + if (err) reject(err); + resolve(WebMidi); + }); + }); +} +exports.default = enableWebMidi; +const outputByName = (name)=>WebMidi.getOutputByName(name) +; +Pattern.prototype.midi = function(output, channel = 1) { + if (output?.constructor?.name === 'Pattern') throw new Error(`.midi does not accept Pattern input. Make sure to pass device name with single quotes. Example: .midi('${WebMidi.outputs?.[0]?.name || 'IAC Driver Bus 1'}')`); + return this.fmap((value)=>({ + ...value, + onTrigger: (time, event)=>{ + value = value.value || value; + if (!_tone.isNote(value)) throw new Error('not a note: ' + value); + if (!WebMidi.enabled) throw new Error(`🎹 WebMidi is not enabled. Supported Browsers: https://caniuse.com/?search=webmidi`); + if (!WebMidi.outputs.length) throw new Error(`🔌 No MIDI devices found. Connect a device or enable IAC Driver.`); + const device = output ? outputByName(output) : WebMidi.outputs[0]; + if (!device) throw new Error(`🔌 MIDI device '${output ? output : ''}' not found. Use one of ${WebMidi.outputs.map((o)=>`'${o.name}'` + ).join(' | ')}`); + // console.log('midi', value, output); + const timingOffset = WebMidi.time - _tone.context.currentTime * 1000; + time = time * 1000 + timingOffset; + // const inMs = '+' + (time - Tone.context.currentTime) * 1000; + // await enableWebMidi() + device.playNote(value, channel, { + time, + duration: event.duration * 1000 - 5, + // velocity: velocity ?? 0.5, + velocity: 0.9 + }); + } + }) + ); +}; +function useWebMidi(props) { + const { ready , connected , disconnected } = props; + const [loading, setLoading] = _react.useState(true); + const [outputs, setOutputs] = _react.useState(WebMidi?.outputs || []); + _react.useEffect(()=>{ + enableWebMidi().then(()=>{ + // Reacting when a new device becomes available + WebMidi.addListener('connected', (e)=>{ + setOutputs([ + ...WebMidi.outputs + ]); + connected?.(WebMidi, e); + }); + // Reacting when a device becomes unavailable + WebMidi.addListener('disconnected', (e)=>{ + setOutputs([ + ...WebMidi.outputs + ]); + disconnected?.(WebMidi, e); + }); + ready?.(WebMidi); + setLoading(false); + }).catch((err)=>{ + if (err) { + //throw new Error("Web Midi could not be enabled..."); + console.warn('Web Midi could not be enabled..'); + return; + } + }); + }, [ + ready, + connected, + disconnected, + outputs + ]); + const outputByName1 = (name)=>WebMidi.getOutputByName(name) + ; + return { + loading, + outputs, + outputByName: outputByName1 + }; +} + +},{"react":"21dqq","tone":"2tCfN","webmidi":"dYJc3","../../strudel.mjs":"ggZqJ","@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}],"bexb4":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); var _strudelMjs = require("../../strudel.mjs"); var _chordVoicings = require("chord-voicings"); @@ -57948,7 +59399,7 @@ const getVoicing = (chord, lastVoicing, range = [ ; const Pattern = _strudelMjs.Pattern; Pattern.prototype.fmapNested = function(func) { - return new Pattern((span)=>this.query(span).map((event)=>_strudelMjs.reify(func(event)).query(span).map((hap)=>new _strudelMjs.Hap(event.whole, event.part, hap.value) + return new Pattern((span)=>this.query(span).map((event)=>_strudelMjs.reify(func(event)).query(span).map((hap)=>new _strudelMjs.Hap(event.whole, event.part, hap.value, hap.context) ) ).flat() ); @@ -57961,19 +59412,18 @@ Pattern.prototype.voicings = function(range) { 'A4' ]; return this.fmapNested((event)=>{ - lastVoicing = getVoicing(event.value?.value || event.value, lastVoicing, range); - return _strudelMjs.stack(...lastVoicing); + lastVoicing = getVoicing(event.value, lastVoicing, range); + return _strudelMjs.stack(...lastVoicing)._withContext(()=>({ + locations: event.context.locations || [] + }) + ); }); }; Pattern.prototype.rootNotes = function(octave = 2) { // range = ['G1', 'C3'] - return this._mapNotes((value)=>{ - const [_, root] = value.value.match(/^([a-gA-G])[b#]?.*$/); - const bassNote = root + octave; - return { - ...value, - value: bassNote - }; + return this.fmap((value)=>{ + const [_, root] = value.match(/^([a-gA-G])[b#]?.*$/); + return root + octave; }); }; Pattern.prototype.define('voicings', (range, pat)=>pat.voicings(range) @@ -62592,13 +64042,6 @@ parcelHelpers.export(exports, "intervalDirection", ()=>intervalDirection var _tonal = require("@tonaljs/tonal"); var _strudelMjs = require("../../strudel.mjs"); const Pattern = _strudelMjs.Pattern; -function toNoteEvent(event) { - if (typeof event === 'string' || typeof event === 'number') return { - value: event - }; - if (event.value) return event; - throw new Error('not a valid note event: ' + JSON.stringify(event)); -} // modulo that works with negative numbers e.g. mod(-1, 3) = 2 const mod = (n, m)=>n < 0 ? mod(n + m, m) : n % m ; @@ -62630,29 +64073,16 @@ function scaleTranspose(scale, offset, note1) { } return n + o; } -Pattern.prototype._mapNotes = function(func) { - return this.fmap((event)=>{ - const noteEvent = toNoteEvent(event); - // TODO: generalize? this is practical for any event that is expected to be an object with - return { - ...noteEvent, - ...func(noteEvent) - }; - }); -}; Pattern.prototype._transpose = function(intervalOrSemitones) { - return this._mapNotes(({ value , scale })=>{ + return this._withEvent((event)=>{ const interval = !isNaN(Number(intervalOrSemitones)) ? _tonal.Interval.fromSemitones(intervalOrSemitones) : String(intervalOrSemitones); - if (typeof value === 'number') { + if (typeof event.value === 'number') { const semitones = typeof interval === 'string' ? _tonal.Interval.semitones(interval) || 0 : interval; - return { - value: value + semitones - }; + return event.withValue(()=>event.value + semitones + ); } - return { - value: _tonal.Note.transpose(value, interval), - scale - }; + return event.withValue(()=>_tonal.Note.transpose(event.value, interval) + ); }); }; // example: transpose(3).late(0.2) will be equivalent to compose(transpose(3), late(0.2)) @@ -62661,29 +64091,27 @@ Pattern.prototype._transpose = function(intervalOrSemitones) { // e.g. `stack(c3).superimpose(transpose(slowcat(7, 5)))` or // or even `stack(c3).superimpose(transpose.slowcat(7, 5))` or Pattern.prototype._scaleTranspose = function(offset) { - return this._mapNotes(({ value , scale })=>{ - if (!scale) throw new Error('can only use scaleTranspose after .scale'); - if (typeof value !== 'string') throw new Error('can only use scaleTranspose with notes'); - return { - value: scaleTranspose(scale, Number(offset), value), - scale - }; + return this._withEvent((event)=>{ + if (!event.context.scale) throw new Error('can only use scaleTranspose after .scale'); + if (typeof event.value !== 'string') throw new Error('can only use scaleTranspose with notes'); + return event.withValue(()=>scaleTranspose(event.context.scale, Number(offset), event.value) + ); }); }; Pattern.prototype._scale = function(scale) { - return this._mapNotes((value)=>{ - let note = value.value; + return this._withEvent((event)=>{ + let note = event.value; const asNumber = Number(note); if (!isNaN(asNumber)) { let [tonic, scaleName] = _tonal.Scale.tokenize(scale); const { pc , oct =3 } = _tonal.Note.get(tonic); note = scaleTranspose(pc + ' ' + scaleName, asNumber, pc + oct); } - return { - ...value, - value: note, + return event.withValue(()=>note + ).setContext({ + ...event.context, scale - }; + }); }); }; Pattern.prototype.define('transpose', (a, pat)=>pat.transpose(a) @@ -62784,17 +64212,17 @@ exports.default = (code)=>{ // add to location to pure(x) calls if (node.type === 'CallExpression' && node.callee.name === 'pure') { const literal = node.arguments[0]; - const value = literal[{ - LiteralNumericExpression: 'value', - LiteralStringExpression: 'name' - }[literal.type]]; - return reifyWithLocation(value + '', node.arguments[0], ast.locations, artificialNodes); + // const value = literal[{ LiteralNumericExpression: 'value', LiteralStringExpression: 'name' }[literal.type]]; + // console.log('value',value); + return reifyWithLocation(literal, node.arguments[0], ast.locations, artificialNodes); } // replace pseudo note variables if (node.type === 'IdentifierExpression') { if (isNote(node.name)) { const value = node.name[1] === 's' ? node.name.replace('s', '#') : node.name; - if (addLocations && isMarkable) return reifyWithLocation(value, node, ast.locations, artificialNodes); + if (addLocations && isMarkable) return reifyWithLocation(new _shiftAst.LiteralStringExpression({ + value + }), node, ast.locations, artificialNodes); return new _shiftAst.LiteralStringExpression({ value }); @@ -62804,7 +64232,7 @@ exports.default = (code)=>{ }); } if (addLocations && node.type === 'LiteralStringExpression' && isMarkable) // console.log('add', node); - return reifyWithLocation(node.value, node, ast.locations, artificialNodes); + return reifyWithLocation(node, node, ast.locations, artificialNodes); if (!addMiniLocations) return wrapFunction('reify', node); // mini notation location handling const miniFunctions = [ @@ -62898,12 +64326,10 @@ function wrapLocationOffset(node, stringNode, locations, artificialNodes) { } // turns node in reify(value).withLocation(location), where location is the node's location in the source code // with this, the reified pattern can pass its location to the event, to know where to highlight when it's active -function reifyWithLocation(value, node, locations, artificialNodes) { +function reifyWithLocation(literalNode, node, locations, artificialNodes) { const withLocation = new _shiftAst.CallExpression({ callee: new _shiftAst.StaticMemberExpression({ - object: wrapFunction('reify', new _shiftAst.LiteralStringExpression({ - value - })), + object: wrapFunction('reify', literalNode), property: 'withLocation' }), arguments: [ @@ -96146,10 +97572,11 @@ function patternifyAST(ast) { return ast.source_; } const { start , end } = ast.location_; + const value = !isNaN(Number(ast.source_)) ? Number(ast.source_) : ast.source_; // return ast.source_; // the following line expects the shapeshifter to wrap this in withLocationOffset // because location_ is only relative to the mini string, but we need it relative to whole code - return pure(ast.source_).withLocation({ + return pure(value).withLocation({ start, end }); @@ -98113,7 +99540,7 @@ function useCycle(props) { // pull events with onQuery + count up to next cycle const query = (cycle = activeCycle())=>{ const timespan = new _strudelMjs.TimeSpan(cycle, cycle + 1); - const events = onQuery?.(timespan) || []; + const events = onQuery?.(new _strudelMjs.State(timespan)) || []; onSchedule?.(events, cycle); // cancel events after current query. makes sure no old events are player for rescheduled cycles // console.log('schedule', cycle); @@ -98134,7 +99561,8 @@ function useCycle(props) { const toneEvent = { time: event.part.begin.valueOf(), duration: event.whole.end.sub(event.whole.begin).valueOf(), - value: event.value + value: event.value, + context: event.context }; onEvent(time, toneEvent); _tone.Draw.schedule(()=>{ @@ -98225,7 +99653,7 @@ function CodeMirror({ value , onChange , options , editorDidMount }) { } exports.default = CodeMirror; const markEvent = (editor)=>(time, event)=>{ - const locs = event.value.locations; + const locs = event.context.locations; if (!locs || !editor) return; // mark active event const marks = locs.map(({ start , end })=>editor.getDoc().markText({ @@ -109464,4 +110892,4 @@ exports.default = cx; },{"@parcel/transformer-js/src/esmodule-helpers.js":"gkKU3"}]},["3uVTb"], "3uVTb", "parcelRequire94c2") -//# sourceMappingURL=index.4ae5d228.js.map +//# sourceMappingURL=index.26c147ee.js.map diff --git a/docs/tutorial/index.4ae5d228.js.map b/docs/tutorial/index.26c147ee.js.map similarity index 52% rename from docs/tutorial/index.4ae5d228.js.map rename to docs/tutorial/index.26c147ee.js.map index 4c280cda..d70cae63 100644 --- a/docs/tutorial/index.4ae5d228.js.map +++ b/docs/tutorial/index.26c147ee.js.map @@ -1 +1 @@ -{"mappings":"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;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA;AACA,GAAA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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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N,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN,GAAM;;AACN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SACvE,GAAG,CAAC,QAAA,CAAC,IAAI,EAAA,CAAA;YAAK,MAAA,CAAA,OAAA,CAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,gBAAgB;QAAtC,CAAuC;QACxD,EAAyC,AAAzC,uCAAyC;QACzC,GAAA,CAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAA,CAAC,KAAK,EAAA,CAAA;YAAK,MAAA,CAAA,iBAAiB,CAAC,GAAG,CAAC,QAAA,CAAC,QAAQ,EAAA,CAAA;gBAAK,MAAA,CAAA,OAAA,CAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ;YAA9B,CAA+B;QAAnE,CAAoE;QACxG,MAAA,CAAO,MAAM,CAAC,MAAM,CAAC,KAAK;IAC5B,CAAC,EAAE,CAAA,CAAE;AACP,CAAC;AA5BD,OAAA,CAAA,eAAA,GAAA,eAAA;;;;;;;2C,M;;;;;;;;0C,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;qD,e;;2C,K;;qD,e;;2C,K;;A,G;A,G;;A,G;A,G;;A,G;;A,G;;A,G;;A,G;;wB,K;A,G;;A,G;;A,G;;A,G;;A,G;;A,G;;A,G;;A,G;;A,G;;A,G;;A,G;;A,E,A,qC;A,K,C,K,G,K;A,K,C,K;A,K,C,e;A,K,C,e;;;;;6C,O;;kD,Y;;2C,K;;4C,M;;6C,O;;qD,e;;yD,mB;;A,G;A,E,A,gB;S,I,C,C,E,C,E,C;I,K,C,C,G,C,C;I,E,A,+B;I,G,G,C,I,C,C,C,I,C,G,C;I,M,C,C;A,C;A,E,A,iB;S,K,C,C,E,C,E,C;I,K,C,C,G,C,C;I,E,A,+B;I,G,G,C,I,C,C,C,I,C,G,C;I,M,C,C;A,C;A,E,A,mN,A,E,U,K,C,I,E,E,E,C;I,M,C,I,G,E,G,I,C,I,E,E,G,I,G,C,I,K,C,I,E,I,G,E,G,C;A,C;A,E,A,wR,A,E,U,M,C,K,E,G,E,C;I,K,C,G,G,G,C,M;I,K,C,C,I,K,G,G,G,G,I,G;I,M,C,G,C,K,C,C,E,G,E,M,C,G,C,K,C,C,E,C;A,C;A,E,A,qM,A,E,U,O,C,G,E,C;I,M,C,G,C,M,E,C,G,C,K,C,I,C;;A,C;A,E,A,0a,A,E,U,e,C,K,E,C;I,K,C,K,G,K,C,G,E,C,c,C;M,M,E,C,I,C,C,K;;I,M,C,K,C,I,E,C,E,C,G,C,C,M,G,C,C,M;M,G,E,C,G,C,C,I;;A,C;A,E,A,kU,A,E,U,mB,C,G,E,C;I,M,C,e,C,G,E,M,E,C,E,C,E,C,G,C,K,C,I,C,K,C,C,C,G,C;;A,C;A,E,A,iP,A,E,U,O,C,G,E,G,G,I,C,M,E,C;I,G,C,C;I,G,C,C;I,G,C,C,G,G,C,M;U,C,C,C;Q,C,G,I,C,K,C,G,K,C;Q,C,G,G,C,C;Q,G,C,C,I,G,C,C;Q,G,C,C,I,C;I,C;I,M,C,G;A,C;A,E,A,2V,A,E,U,Y,C,G,E,C;I,E,E,G,C,M,K,C,E,M,C,C;Q,C,C;I,C;I,M,C,Y,C,G,C,K,C,C,G,M,E,G,E,I,G,C;Q,M,C,G,C,M,C,G,C,G,E,C,E,G,G,C;Y,K,C,O,G,I,C,K;Y,O,C,M,C,G,E,C,E,G,C,C;Y,M,C,O;Q,C;I,C,E,C,C;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8C,Q;;8C,Q;;qD,e;;iD,W;;4C,M;;+C,S;;8C,Q;;4C,M;;6C,O;;8C,Q;;6C,O;;6C,O;;0C,I;;kD,Y;;sD,gB;;kD,Y;;+C,S;;A,E,A,+F,A,E,C,K,C,O,I,C,E,C,G,K,C,I,C,G,C,C,I,C,E,I,C,C;;S,S,C,Q,E,W,E,E,E,C;I,M,C,Q,I,I,E,C;Q,E,A,yB;Q,O,C,I,I,Q,C,oB,E,W,C,C;Q,M,C,E,C,K,C,I,E,I;I,C;A,C;S,O,C,G,E,C;I,M,C,G,K,I,I,M,C,G,K,C,W,M,C,G,C,I,K,C,U,I,G,K;A,C;S,O,C,K,E,C;I,M,C,K,K,I,I,M,C,K,K,C,W,M,C,K,C,I,K,C,W,M,C,K,C,G,K,C,U,I,G,K;A,C;A,E,A,8C;A,K,C,M,G,C;A,K;A,K;A,K;A,M;A,K;A,K;A,K;A,C;A,E,A,wC;A,K,C,a,G,M,C,G,E,M,G,I,C,K,C,M,G,C,G,E;;S,M,C,K,E,C;I,K,C,C,C,I,G,G,G,G,G,G,E,C,E,C,G,K;I,K,C,C,G,M,C,I,I,C,G,G;I,E,E,G,K,S,E,M,C,C;Q,G,G,C;I,C;I,K,C,C,G,G,G,a,C,I,I,C,G,G;I,M,C,C;Q,G,G,C;Q,G,G,C;I,C;A,C;A,E,A,qC;A,E,A,gD;A,E,A,kD;A,E,A,iD;A,K,C,e,G,C;A,K;A,K;A,K;A,K;A,K;A,K;A,K;A,C;S,M,C,K,E,C;I,K,E,C,E,C,E,G,I,K;I,K,C,I,G,e,C,S,C,C;I,K,C,G,G,I,C,K,E,C,G,C,I,C;I,E,E,C,K,S,E,M,C,C;Q,I;Q,G;Q,G;I,C;I,K,C,G,G,C,G,C,G,G,G,a,C,I;I,M,C,C;Q,I;Q,G;Q,G;Q,G;I,C;A,C;A,E,A,oD;S,S,C,C,E,C;I,K,C,C,I,C,G,C,I,C;I,M,C,C,G,C,G,C,G,C,G,C;A,C;A,K,C,M,G,C;I,K,E,I;I,I,E,C;I,E,E,C;I,G,E,C;A,C;A,K,C,O,G,G,C,G;A,K,C,Y,I,I,G,C,S,M,C,I;;A,K,C,Q,I,G,G,G,G,C,G,O,C,C,K,G,I,O,C,C,I,G;;A,K,C,Q,I,G,G,G,C,C,M,C,M,G,C,M,G,G,C,M;;A,E,A,mK,A,E,U,I,C,G,E,C;I,K,C,M,G,O,C,G,C,G;I,E,E,M,E,M,C,M;I,K,C,K,G,M,C,G,K,C,U,O,C,G,I,O,C,G,I,I,C,W,C,G,K,O,C,G,I,I,C,G,C,I,I,M;I,O,C,G,C,G,E,K;I,M,C,K;A,C;A,K,C,O;A,E,A,iB,A,E,U,Y,C,G,E,C;I,K,C,C,G,O,C,I,C,G;I,M,C,C;Q,C,C,C,E,W;Q,C,C,C,E,O,O,C;Q,C,C,C;Q,C,C,C;I,C;A,C;A,E,A,iB,A,E,U,W,C,S,E,C;I,M,C,I,C,M,C,S;A,C;A,K,C,G,I,C,E,C,I,C,G,C,G,C,I,C;;A,K,C,I,G,C;A,K;A,K;A,K;A,K;A,K;A,K;A,M;A,C;S,O,C,Q,E,C;I,K,C,M,G,Y,C,Q;I,E,E,M,C,C,M,C,K,M,C,C,M,C,G,M,C,M;I,K,C,M,G,M,C,C;I,K,C,G,G,M,C,C;I,K,C,M,G,M,C,C;I,K,C,I,I,M,C,U,C,C,I,C,I,C;I,K,C,G,G,Q,C,G;I,K,C,G,G,M,C,M,I,M,G,S;I,K,C,K,G,M,C,C;Q,I;Q,G;Q,G;I,C;I,K,C,I,G,M,G,G,G,M;I,K,C,E,G,M,G,G;I,K,C,M,I,I,C,I,I,G,G,G,I,E;I,K,C,M,G,G,K,S,G,G,C,I,C,I,I,G,E,E,I,I,G,I,C,I,I,G,G,E,I,G,G,C;I,K,C,I,G,M,I,C,I,M,I,G,G,M,G,I;I,K,C,I,G,G,K,S,G,I,G,I,C,G,C,C,G,M,G,E,I,E,I,G;I,M,C,C;Q,K,E,K;Q,G;Q,G;Q,M;Q,K;Q,I;Q,M;Q,M;Q,I;Q,I;Q,G;Q,E;Q,I;I,C;A,C;S,W,C,K,E,C;I,K,C,C,C,I,G,G,G,G,E,C,G,K;I,K,C,M,G,Y,C,I;I,E,G,M,E,M,C,C;I,K,C,E,G,M,G,Q,C,G;I,M,C,G,I,G,K,C,G,E,G,G,G,E;A,C;A,K,C,U,G,C;I,K,E,I;I,I,E,C;I,G,E,C;A,C;A,E,A,qD;A,K,C,oB,G,C;A,E,A,yD;A,K,C,wB,G,C;A,K,C,K,G,G,C,M,C,C,K,oB,G,C,K,wB,G,C;A,E,A,iB,A,E,U,gB,C,G,E,C;I,K,C,C,G,K,C,I,I,G;I,E,E,C,K,I,E,M,C,C;Q,C;Q,C;I,C;I,M,C,C,C,C,I,C;Q,C,C,C;Q,C,C,C;I,C,G,C;Q,C,C,C;Q,C,C,C;I,C;A,C;A,K,C,K,G,C;A,C;A,E,A,wmB,A,E,U,Q,C,G,E,C;I,M,C,M,C,G,K,C,U,K,C,G,M,K,C,G,I,K,C,G,K,O,C,G,I,Q,C,S,C,G,K,O,C,G,I,Q,C,G,C,I,I,U;A,C;A,K,C,K,G,C;A,K;A,K;A,K;A,K;A,K;A,K;A,M;A,C;A,K,C,K,G,C;S,K,C,G,E,C;I,K,C,M,G,gB,C,G;I,E,E,M,C,C,M,C,G,M,C,U;I,K,C,G,I,M,C,C;I,K,C,C,G,M,C,C;I,K,C,I,I,I,C,G,C,G,I,C,I,C;I,K,C,C,G,K,C,I;I,E,E,C,K,C,M,C,K,C,I,M,C,U;I,K,C,I,G,C,K,C,K,C,a,C;I,K,C,I,G,C,I,G,G,C;I,K,C,G,G,G,G,C,G,E,G,C;I,K,C,M,G,G,K,C,I,G,K,E,G,G,G,G,I,I,G,C;I,K,C,G,G,M,C,I,E,C;I,K,C,G,G,I,C,K,E,I,C,G,C,G,I,C,I,C;I,K,C,S,G,G,I,K,C,I,I,G,G,E,G,G;I,K,C,M,I,G,I,K,C,I,I,G,I,E,G,E,I,E;I,K,C,K,G,M,C,C;Q,I;Q,G;Q,G;Q,G;I,C;I,M,C,C;Q,K,E,K;Q,I;Q,G;Q,C;Q,I;Q,G;Q,G;Q,I;Q,M;Q,S;Q,M;Q,K;Q,G;I,C;A,C;A,E,A,8E,A,E,U,e,C,K,E,e,E,C;I,K,E,C,E,C,G,C,I,K;I,K,C,Y,G,C,G,C,G,C,G,E,G,C;I,K,C,G,G,e,I,Y,G,C;S,C;S,C;A,U;I,C,G,C;Q,C;Q,C;A,S;I,C;I,M,C,Q,C,M,C,G;A,C;S,M,C,I,E,C,E,C;I,M,C,C,K,C,M,I,K,C,c,C,K,C,M,I,K,C,e,C,G,C,K,C,M,I,K,C,a,E,U,I,C,C,I,C,C,M,U,I,C,C,I,E,I,I,K,C,e,C,C,M,G,C,C,M,G,C,I,C;A,C;A,E,A,oC;S,S,C,K,E,C;I,K,C,C,C,I,G,G,G,G,E,C,G,G,E,C,G,K;I,E,G,G,E,M,C,C;I,K,C,O,G,I,G,C,G,C,G,G;I,E,A,+D;I,K,C,G,G,O,K,C,G,I,G,C,G,O;I,K,C,C,G,G,G,C,G,C,K,C;I,K,C,I,G,K,C,I,M,C,K,C,a,C;I,K,C,I,G,C,G,G,G,M,C,I,E,G;I,M,C,I;A,C;S,M,C,I,E,G,E,C;I,E,E,G,K,C,E,M,C,I,K,C,a,C,K,C;S,E,E,G,K,E,I,I,K,C,Y,M,C,C;S,E,E,G,G,C,E,M,C,O,C,C,I,G;S,M,C,O,C,C,I,I,K,C,e,G,G,G,G,C;A,C;A,E,A,8c,A,E,U,S,C,Q,E,Y,E,C;I,K,C,M,G,I,C,Q;I,K,C,U,G,Q,C,Y;I,E,E,M,C,K,I,U,C,K,E,M,C,C;I,K,C,S,G,M,C,K;I,K,C,a,G,U,C,K;I,K,C,E,G,S,C,M,K,C,G,C;Q,S,C,C,I,a,C,C;I,C,G,C;Q,S,C,C,I,a,C,C;Q,S,C,C,I,a,C,C;I,C;I,M,C,W,C,E,E,I;A,C;A,E,A,ib,A,E,U,Q,C,Q,E,M,E,C;I,K,C,I,G,I,C,Q;I,K,C,E,G,I,C,M;I,E,E,I,C,K,I,E,C,K,E,M,C,C;I,K,C,M,G,I,C,K;I,K,C,M,G,E,C,K;I,K,C,M,G,M,C,C,I,M,C,C;I,K,C,I,G,M,C,M,K,C,I,M,C,M,K,C,G,M,C,C,I,M,C,C,K,I,C,K,C,M,G,C,G,E;I,E,A,yE;I,K,C,e,G,E,C,M,K,I,C,M,I,E,C,I,K,I,I,I,C,I,K,I,I,I,C,I,G,E,C,I;I,M,C,e,C,C;Q,M;Q,I;I,C,E,e,E,I;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yC,G;;8C,Q;;yC,G;;+C,S;;6C,O;;6C,O;;yC,G;;0C,I;;2C,K;;+C,S;;6C,O;;A,G;A,G;A,E,A,6K,A,E,C,K,C,M,G,C;I,E,A,U;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,E,A,U;I,E,A,a;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,E,A,iB;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,E,A,qB;I,E,A,a;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,E,A,c;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,E,A,gB;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,E,A,U;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,E,A,W;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;A,C;A,K,C,W,G,C;;I,I,E,C;I,O,E,C;I,S,E,C,C;I,O,E,C,C;A,C;A,G,C,U,G,C,C;A,G,C,K,G,C;A,C;A,E,A,4O,A,E,U,G,C,I,E,C;I,M,C,K,C,I,K,W;A,C;A,K,C,S,mB,C,sB,C,gB,G;A,E,A,mC,A,E,U,K,G,C;I,M,C,U,C,G,E,K,G,K,C,I;M,M,E,C,G,C;;A,C;A,E,A,8B,A,E,U,O,G,C;I,M,C,U,C,G,E,K,G,K,C,O,C,C;M,M,E,C,G,C;;A,C;A,E,A,2C,A,E,U,I,G,C;I,M,C,M,C,I,C,K;A,C;A,E,A,yC,A,E,U,G,G,C;I,M,C,U,C,K;A,C;A,K,C,O,mB,C,oB,C,gB,G;A,E,A,6B,A,E,U,S,G,C;I,U,G,C,C;I,K,G,C;I,C;A,C;A,E,A,qG,A,E,U,G,C,S,E,O,E,Q,E,C;I,K,C,O,G,U,C,S;I,K,C,K,G,C;sB,S;Q,I,E,Q,I,C;Q,O;Q,S;Q,O;I,C;I,U,C,I,C,K;I,E,E,K,C,I,E,K,C,K,C,I,I,K;I,K,C,K,C,M,I,K;I,K,C,K,C,M,I,K;I,K,C,O,C,O,E,K,G,Q,C,K,E,K;;A,C;S,Q,C,K,E,K,E,C;I,K,C,K,I,K;A,C;S,U,C,S,E,C;I,K,C,G,I,Q,G,S,C,O,C,Q,M,E;;I,M,C,G,C,C,O,C,a,G,C,C,O,C,S,G,C,C,O,C,c,G,C,C,O,C,S,C;A,C;A,M,C,O,G,I,E,Q,E,M,I,G,C,I,C,K,C,C,K,M,C,K,C,C,K,Q;;A,U,C,I,E,C,E,C,G,C,C,M,G,C,C,M;;A,G,C,O,G,C;I,K;I,O;I,G;I,G;I,G;I,S;I,I;I,E,A,W;I,O;I,S;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gD,U;;uD,iB;;6C,O;;6C,K;;4C,M;;yC,G;;8C,Q;;6C,O;;sD,gB;;gD,U;;kD,Y;;2C,K;;2C,K;;A,G;A,G;A,K,C,U,G,C;I,K,E,I;I,I,E,C;I,M,E,C;I,M,E,C;I,U,E,C;I,S,E,C,C;A,C;A,E,A,U;A,K,C,c,I,I,G,M,C,I,E,Q,C,C;;A,K,C,c,I,O,G,Q,C,O,E,C;;A,K,C,K;S,Q,C,G,E,C;I,M,C,K,C,I,C,G;A,C;A,K,C,U,I,G,G,M,C,G,K,C,W,G,I,C,I,G,I,I;;A,K,C,O,I,G,G,G,I,Q,C,G,C,M;;A,K,C,K,G,C;K,U,C,M,G,U;A,C;A,E,A,iF,A,E,U,G,C,G,E,C;I,K,C,O,G,Q,C,G,I,G,G,U,C,G,I,c,C,G,I,K,C,O,C,G,I,Y,C,G,I,O,C,G,I,G,C,M,G,U,C,M;I,M,C,K,C,O,I,K,C,O,K,a,C,O;A,C;A,E,A,2D,A,E,C,K,C,K,mB,C,c,C,Y,G;A,E,A,qH,A,E,C,K,C,M,I,G,G,G,C,G,E,M;;A,E,A,8G,A,E,C,K,C,S,I,G,G,G,C,G,E,S;;A,E,A,wG,A,E,C,K,C,G,I,G,G,G,C,G,E,M;;A,K,C,I,G,C;I,C;I,C;I,C;I,C;I,C;I,C;I,C;I,C;I,C;I,C;I,C;I,C;A,C;A,E,A,4N,A,E,U,iB,C,O,E,C;I,K,C,U,G,C,C;I,G,C,G,C,C,G,C,E,C,G,E,E,C,G,E,A,+B;I,E,E,O,C,M,C,C,M,C,I,U,C,I,C,I,C,C;I,M,C,U;A,C;A,E,A,6U,A,E,U,O,G,C;I,M,mB,I,E,I,E,G,C,c;A,C;A,E,A,ihB,A,E,U,K,C,G,E,S,G,I,E,C;I,K,C,G,G,G,C,G;I,K,C,M,G,G,C,M,C,K,C,C;I,M,qB,M,C,G,E,C,E,C,G,C;Q,K,C,C,sB,C,E,M;Q,M,C,S,I,C,C,C,M,C,K,I,G,C,C,I,C,C;I,C;A,C;A,E,A,mS,A,E,U,O,C,E,E,E,E,C;I,M,C,G,C,E,E,M,K,G,C,E,E,M;A,C;A,E,A,ggB,A,E,U,U,C,G,E,C;I,K,C,C,G,G,C,G,E,M;I,M,E,K,G,C;Q,K,C,C,G,G,C,K,E,M;Q,E,A,qC;Q,M,C,C,I,C,K,C,K,C,G,C,M,C;I,C;A,C;A,E,A,qgB,A,E,U,Y,C,G,E,C;I,K,C,C,G,G,C,G,E,M;I,M,E,K,G,C;Q,K,C,C,G,G,C,K,E,M;Q,E,A,qC;Q,M,C,C,I,C,K,C,K,C,G,C,M,C;I,C;A,C;A,E,A,+Z,A,E,U,gB,C,G,E,C;I,K,C,C,G,G,C,G;I,M,E,Q,G,C;Q,K,C,C,c,Q;Q,M,C,C,K,C,C,K,I,C,C,M,C,M,C,C,C,M,M,C;I,C;A,C;A,E,A,oC,A,E,C,K,C,Q,G,gB;A,E,A,qa,A,E,U,M,C,G,E,C;I,K,C,U,G,gB,C,G;I,M,E,K,G,C;Q,M,C,K,C,M,C,U;I,C;A,C;A,G,C,K,G,C;I,G;I,M;I,G;I,S;I,O;I,Y;I,U;I,gB;I,O;I,M;I,K;I,E,A,W;I,K;A,C;A,E,A,e;S,e,C,O,E,C;I,K,C,M,G,O,C,K,C,C;I,M,C,M,C,G,E,C,E,C,sB,C,E,M,E,I,C,C;;A,C;S,a,C,O,E,C;I,K,C,M,G,c,C,O;I,K,C,a,G,e,C,O,E,G,C,c,E,M,E,C,G,C,I,I;M,I,G,C;I,K,C,U,G,c,C,a;I,K,C,U,G,iB,C,O;I,M,C,C;Q,K,E,K;Q,I,E,C;Q,M;Q,M,E,O;Q,U;Q,S,E,U;I,C;A,C;S,Y,C,G,E,C;I,E,E,G,C,M,K,C,E,M,C,U,C,M;I,G,C,K;I,K,C,M,G,C;A,S;A,S;A,S;A,S;A,S;A,S;A,S;A,S;A,S;A,S;A,S;A,S;I,C;I,E,A,uC;I,G,C,G,C,C,G,C,E,C,G,G,C,M,E,C,G,C;Q,K,c,G,C,C;Q,E,A,gC;Q,E,E,K,C,K,E,K,kB,G,C,C;Q,E,A,gC;Q,E,G,K,C,K,E,M,C,K,C,M,I,C;I,C;I,M,C,M,C,I,C,C;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6C,O;;kD,Y;;2C,K;;4C,M;;6C,O;;A,E,A,gB;S,I,C,C,E,C,E,C;I,K,C,C,G,C,C;I,E,A,+B;I,G,G,C,I,C,C,C,I,C,G,C;I,M,C,C;A,C;A,E,A,iB;S,K,C,C,E,C,E,C;I,K,C,C,G,C,C;I,E,A,+B;I,G,G,C,I,C,C,C,I,C,G,C;I,M,C,C;A,C;A,E,A,mN,A,E,U,K,C,I,E,E,E,C;I,M,C,I,G,E,G,I,C,I,E,E,G,I,G,C,I,K,C,I,E,I,G,E,G,C;A,C;A,E,A,kS,A,E,U,M,C,K,E,G,E,C;I,K,C,G,G,G,C,M;I,K,C,C,I,K,G,G,G,G,I,G;I,M,C,G,C,K,C,C,E,G,E,M,C,G,C,K,C,C,E,C;A,C;A,E,A,+M,A,E,U,O,C,G,E,C;I,M,C,G,C,M,E,C,G,C,K,C,I,C;;A,C;A,E,A,gQ,A,E,U,O,C,G,E,G,G,I,C,M,E,C;I,G,C,C;I,G,C,C;I,G,C,C,G,G,C,M;U,C,C,C;Q,C,G,I,C,K,C,G,K,C;Q,C,G,G,C,C;Q,G,C,C,I,G,C,C;Q,G,C,C,I,C;I,C;I,M,C,G;A,C;A,E,A,+W,A,E,U,Y,C,G,E,C;I,E,E,G,C,M,K,C,E,M,C,C;Q,C,C;I,C;I,M,C,Y,C,G,C,K,C,C,G,M,E,G,E,I,G,C;Q,M,C,G,C,M,C,G,C,G,E,C,E,G,G,C;Y,K,C,O,G,I,C,K;Y,O,C,M,C,G,E,C,E,G,C,C;Y,M,C,O;Q,C;I,C,E,C,C;A,C;A,G,C,K,G,C;I,O;I,Y;I,K;I,M;I,O;A,C;kB,K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iD,W;;yC,G;;8C,Q;;yC,G;;6C,O;;6C,O;;yC,G;;0C,I;;2C,K;;+C,S;;+C,S;;A,G;A,G;A,E,A,O;A,E,A,uD;A,K,C,M,G,C;I,E,A,c;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,E,A,c;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,E,A,c;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,E,A,4D;I,C;Q,C;Q,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,E,A,c;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,E,A,c;I,C;Q,C;Q,C;I,C;I,C;Q,C;Q,C;I,C;I,E,A,e;I,C;Q,C;Q,C;I,C;I,E,A,e;I,C;Q,C;Q,C;I,C;A,C;A,K,C,W,G,C;;I,S,E,C,C;I,O,E,C,C;A,C;A,G,C,U,G,C,C;A,G,C,K,G,C;A,C;S,K,G,C;I,M,C,U,C,G,E,K,G,K,C,I;;A,C;A,E,A,8O,A,E,U,G,C,I,E,C;I,M,C,K,C,I,K,W;A,C;A,K,C,S,mB,C,4B,C,gB,G;A,E,A,yC,A,E,U,G,G,C;I,M,C,U,C,K;A,C;A,K,C,O,mB,C,0B,C,gB,G;A,E,A,2C,A,E,U,I,G,C;I,M,C,M,C,I,C,K;A,C;A,E,A,6B,A,E,U,S,G,C;I,U,G,C,C;I,K,G,C;I,C;A,C;A,E,A,4F,A,E,U,G,C,S,E,I,E,O,G,C,C,E,C;I,K,C,K,G,C;sB,S;Q,I;Q,S;Q,O;I,C;I,U,C,I,C,K;I,K,C,K,C,I,I,K;I,K,C,K,C,M,I,K;I,K,C,K,C,M,I,K;I,K,C,O,C,O,E,K,G,Q,C,K,E,K;;I,M,C,K;A,C;S,Q,C,K,E,K,E,C;I,K,C,K,I,K;A,C;A,M,C,O,G,I,E,I,K,O,I,G,C,I,C,K,C,C,K,I,E,O;;A,G,C,O,G,C;I,K;I,G;I,G;I,G;I,S;I,I;I,E,A,W;I,O;I,S;A,C;;;;;;;;;;;;;;;;;;;;;;;6D,uB;;6C,K;;8C,Q;;6D,uB;;8C,Q;;+C,S;;A,G;A,K,C,O,I,S,E,K,G,K,C,K,G,C,E,I,C,S;;A,K,C,K;S,Q,C,G,E,C;I,K,C,C,G,K,C,I,C,G;I,E,G,C,E,M,C,C;Q,C;Q,C;Q,C;I,C;I,M,C,C;Q,C,C,C;Q,C,C,C;Q,C,C,C;I,C;A,C;A,E,A,yJ,A,E,U,uB,C,G,E,C;I,K,E,G,E,M,E,G,I,Q,C,G;I,E,E,M,K,C,G,M,C,C;I,G,C,C,G,C;I,G,C,G,C,C,G,C,E,C,G,G,C,M,E,C,G,C,I,G,C,M,C,C,M,C,K,E,G,C;I,K,C,C,G,G,C,C,M,C,K,G,C,O,O,C,M,G,C,C,M,C,K,G,C,O,Q,C,M,C;I,M,C,M,C,U,C,C,I,E,G,M,C,W,K,C,I,C,G,C,I,M,G,C,G,C;A,C;A,E,A,2J,A,E,U,uB,C,G,E,C;I,K,C,C,c,G;I,E,E,C,C,K,K,C,C,G,I,C,C,G,K,C,E,M,C,C;I,K,C,C,C,M,G,G,G,G,E,C,G,C;I,K,C,C,G,G,C,C,M,C,K,G,C,O,O,C,M,G,C,O,O,C;I,K,C,C,G,G,G,C,G,M,C,W,K,M;I,K,C,C,G,G,K,C,G,C,I,G,G,C,G,O,C,C,I,G,G,C,I,O,C,C,I,C,G,G;I,M,C,C,G,C,G,C;A,C;S,S,C,I,E,Q,E,C;I,M,C,uB,iB,uB,C,I,G,Q;A,C;S,Q,C,I,E,E,E,C;I,M,gB,uB,C,I,G,uB,C,E;A,C;A,G,C,K,G,C;I,uB;I,uB;I,Q;I,S;I,Q;A,C;;;;;;;;;;;;;;;;;2C,K;;iD,W;;6C,K;;8C,Q;;yC,G;;8C,Q;;6C,O;;8C,Q;;+C,S;;A,G;A,G;A,G;A,G;A,G;A,K,C,O,G,C;I,K,E,I;I,I,E,C;I,M,E,C;I,I,E,C;I,U,E,C;I,I,E,C;I,K,E,I;I,M,E,G;I,O,E,C;I,M,E,C;I,U,E,C;I,O,E,C,C;I,K,E,C,C;I,S,E,C,C;A,C;A,E,A,sD;A,E,A,gD;A,K,C,S;A,E,A,gkB,A,E,U,Q,C,I,E,C;I,K,E,M,E,G,E,G,E,I,uB,I;I,E,E,M,K,C,G,M,C,C;Q,C;Q,I;I,C;I,E,A,iE;I,E,E,M,K,C,M,I,K,C,K,M,C,C;Q,C;Q,C;I,C;I,E,A,gD;I,E,G,I,K,G,K,C,M,G,K,C,K,M,C,C;Q,M,G,G;Q,G;I,C;I,E,E,S,C,I,C,G,G,M,C,C;Q,M,G,G;Q,G,G,I;I,C;S,M,C,C;Q,M,G,G,G,G;Q,I;I,C;A,C;A,E,A,uC,A,E,U,G,C,G,E,C;I,E,E,G,K,C,G,M,C,O;I,E,E,K,C,O,C,G,K,G,C,M,K,C,E,M,C,Q,C,G,C,C,G,G,C,C;S,C;Q,K,E,K,E,I,I,Q,C,G;Q,K,C,M,G,Q,C,I,E,K;Q,M,C,M,C,K,G,Q,C,G,I,M;I,C;A,C;A,E,A,qK,A,E,U,Q,C,Q,E,a,E,Y,E,C;I,K,C,I,kB,Q;I,K,C,K,c,a,I,C;I,K,C,I,c,Y,I,C;I,E,E,I,C,K,I,a,I,K,C,K,I,Y,I,I,C,K,E,M,C,O;I,K,C,Y,kB,K,C,E,E,I,C,E;I,K,C,U,G,I,C,S,C,O,C,Y,I,C;I,E,G,I,C,K,K,U,E,M,C,O;I,K,C,S,G,K,C,I,C,I,C,S;I,G,C,G,C,E,G,C,E,E,G,U,E,E,G,C;Q,K,C,G,G,S,C,C,E,C;Q,K,C,O,G,S,C,C,E,C;Q,K,C,M,G,Q,C,G,E,E,I,C;Q,S,C,I,I,M,G,O;Q,S,C,K;I,C;I,K,C,K,G,K,C,K,G,C,C,G,S,C,G,E,C,mB,K,E,C;;I,Q,G,I,C,O,C,O,C,Q,M,E,G,Q,G,I,C,O,C,C;I,K,C,M,M,K,C,K,G,C,I,K,C,E,G,Q,G,I,C,K,I,U,I,C,G,C,I,C,K,I,C,E;I,K,C,I,M,a,G,K,C,E,G,C,K,C,I,I,C,I,G,U,G,C,I,Y,G,C,U,I,C,E,G,C;I,M,C,C;W,I;Q,I;Q,M;Q,I,E,I,C,I;Q,I,E,I,C,I;Q,S;Q,U;Q,K,E,K,C,I;Q,K;I,C;A,C;A,K,C,K,mB,C,c,C,Y,G;A,E,A,mL,A,E,U,S,C,S,E,Q,E,C;I,K,E,K,E,I,I,Q,C,S;I,E,G,K,E,M,C,S;I,M,iB,K,E,Q,I,I;A,C;A,E,A,mM,A,E,U,W,C,I,E,C;I,K,C,C,G,G,C,I;I,K,C,e,uB,C,C,M;I,M,kB,M,E,K,G,e,C,K,C,M;M,G,E,K,G,K,C,I;;A,C;A,E,A,0Q,A,E,U,Q,C,S,E,C;I,K,C,C,G,G,C,S;I,K,C,U,uB,C,C,M;I,M,kB,M,E,M,G,U,C,M,C,M;M,G,E,M,G,C,C,K,G,M,C,O,C,C;;A,C;A,E,A,oI,A,E,U,O,C,S,E,C;I,K,C,C,G,G,C,S;I,K,C,Q,qB,C,C,M;I,M,kB,M,E,M,G,Q,C,M,C,M;M,G,E,M,G,C,C,K,G,M,C,O,C,C;;A,C;A,G,C,K,G,C;I,Q;I,G;;I,W;I,Q;I,O;I,Q;I,S;I,E,A,U;I,K;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6C,K;;4C,M;;A,G;A,G;A,G;A,K,C,Q,I,K,G,C;I,K,C,Q,G,K,C,M,E,M,E,C,G,C;Q,K,C,M,c,C,E,M;Q,E,E,M,K,S,E,M,C,M,I,M,C,M,gB,C,E,I;Q,M,C,M;I,C,E,C;I,C;I,M,E,M,G,Q,C,M;;A,C;S,M,C,M,E,C;I,K,C,K,G,M,C,G,E,C,c,C,E,E;M,M,E,C,G,C;;I,E,a,M,K,C,E,M,C,C,C;I,K,C,K,G,gB,C,K,E,C;I,M,C,K,C,M,E,K,G,K,C,M;M,I,E,C,E,C,G,C,C,M,G,C,C,M;M,G,E,K,G,K,C,I;;A,C;S,gB,C,K,E,M,E,C;I,K,C,K,G,K,C,C;I,K,C,W,c,K,E,M;I,K,C,Q,G,Q,C,K;I,E,A,wD;I,K,C,Q,gB,K,E,K;I,K,C,K,G,C,C;I,Q,C,O,E,I,E,M,G,C;Q,E,A,uE;Q,K,C,U,oB,M,E,S,G,S,C,M,K,I;;Q,U,C,O,E,S,G,C;Y,K,C,S,G,S,C,O,C,C;Y,K,C,Q,G,Q,C,M;Y,K,C,W,G,M,K,W;Y,E,E,W,E,K,C,I,C,C;gB,M,E,G,G,M;gB,I,K,Q,G,S,C,C,E,K;Y,C;iB,K,C,I,C,C;gB,M,E,C,G,M;gB,I,K,Q,G,S;Y,C;Q,C;I,C;I,M,C,K;A,C;A,G,C,K,G,C;I,M;A,C;;;;;8C,Q;;yC,G;;2C,K;;gD,U;;2C,K;;A,E,A,iD;A,K,C,I,G,C;I,C;A,a;Q,C;Q,C;Y,C;Y,C;Y,C;Y,C;Y,C;Q,C;I,C;I,C;A,Y;Q,C;Q,C;Y,C;Y,C;Q,C;I,C;I,C;A,W;Q,C;Q,C;Y,C;Y,C;Y,C;Q,C;I,C;I,C;A,S;Q,C;Q,C;Y,C;Y,C;Q,C;I,C;I,C;A,S;Q,C;Q,C;Y,C;Y,C;Q,C;I,C;I,C;A,S;Q,C;Q,C;Y,C;Y,C;Q,C;I,C;I,C;A,S;Q,C;Q,C;Y,C;Y,C;Q,C;I,C;I,C;A,U;Q,C;Q,C;Y,C;Y,C;Q,C;I,C;I,C;A,U;Q,C;Q,C;Y,C;Y,C;Q,C;I,C;I,C;A,U;Q,C;Q,C;Y,C;Y,C;Q,C;I,C;I,C;A,W;Q,C;Q,C;Y,C;Q,C;I,C;I,C;A,W;Q,C;Q,C;Y,C;Q,C;I,C;A,C;A,K,C,M,G,C,C;A,I,C,O,G,W,E,S,E,M,I,G,C,W,E,S,E,M;;A,K,C,U,G,C;I,K,E,I;I,I,E,C;I,K,E,C;I,Q,E,C;A,S;A,S;I,C;I,S,E,C;I,I,E,C;I,K,E,C,C;A,C;S,K,G,C;I,M,C,M,C,M,E,M,E,Q,G,C;Q,Q,C,K,C,O,E,I,G,M,C,I,C,I;;Q,M,C,M;I,C,E,C,C;A,C;S,U,G,C;I,M,C,M,C,G,E,G,G,G,C,S;;A,C;A,K,C,K;S,G,C,I,E,C;I,K,E,C,E,M,E,I,I,K,C,I,C,I,K,C,C;I,K,C,I,G,M,C,I,E,G,G,G,C,S,K,M,I,G,C,K,C,Q,C,M;;I,E,G,I,E,M,C,U;I,K,C,S,G,Q,C,I,C,Q,E,I,C,M;I,K,C,M,G,S,C,C,I,S,C,C;I,M,C,C;W,I;Q,I;Q,I;Q,K,E,M;Q,Q,E,S;I,C;A,C;A,K,C,K,I,I,G,G,C,I,E,K;;A,K,C,Q,I,I,G,G,C,I,E,Q;;A,G,C,K,G,C;I,K;I,U;I,G;I,K;I,Q;A,C;A,E,A,e;S,G,C,W,E,S,E,M,E,C;I,M,C,I,C,C;Q,K,E,K;Q,I,E,C;Q,I,E,C;Q,K,E,C,G,W;Q,Q,E,W,G,C,G,C;A,a,G,W;A,a;Q,C,G,C;A,a;Y,W;Q,C;Q,S;Q,K,E,M;I,C;A,C;S,Q,C,S,E,I,E,C;I,K,C,G,G,I,C,G,C,C,E,I;I,G,C,S,G,S,C,C,I,G;I,G,C,W,G,S,C,C,I,G;I,K,C,I,G,S;I,E,A,c;I,G,C,G,C,C,G,C,E,C,G,I,E,C,G,S,I,I,G,I,C,G,C,C,E,C,G,C;I,E,A,S;U,S,G,C,K,C,I,W,G,C,K,C,C,C;Q,S,I,C;Q,W,I,C;I,C;I,M,C,C;Q,S;Q,W;I,C;A,C;kB,K;;;;;yC,G;;2C,K;;6C,K;;8C,Q;;mD,a;;yC,G;;4C,M;;0C,I;;2C,K;;yC,G;;6C,O;;+C,S;;8C,Q;;+C,S;;qD,e;;A,G;A,E,A,sC,A,E,U,K,G,C;I,M,C,C,sB,K,C,C;A,C;A,E,A,oO,A,E,C,K,C,G;A,E,A,sK,A,E,C,K,C,I,I,K,kB,K,E,I;;A,E,A,qG,A,E,C,K,C,S,I,K,kB,K,E,S;;A,E,A,mG,A,E,C,K,C,O,I,K,kB,K,E,C;;A,E,A,4F,A,E,C,K,C,G,I,K,kB,K,E,G;;A,E,A,gc,A,E,U,Q,C,K,E,C;I,K,C,C,kB,K;I,M,C,C,C,K,G,C,I,C,C,M,G,C,C,C;A,C;A,E,A,sX,A,E,U,M,C,K,E,C;I,K,C,C,kB,K;I,E,E,C,C,K,E,M,C,C;I,K,C,I,I,C,G,C,C,I,I,C;I,K,C,G,G,C,C,I,K,C,gB,C,C,G,K,C,C,G,G,C;I,M,gB,C;Q,I;Q,G;Q,G,E,C,C,G;Q,G,E,C,C,G;I,C,E,I;A,C;A,E,A,iB;A,K,C,E,G,C;A,K;A,K;A,K;A,K;A,K;A,K;A,K;A,K;A,K;A,K;A,K;A,K;A,C;A,E,A,mB;A,K,C,E,G,C,yB,K,C,C;A,E,A,8W,A,E,U,a,C,U,E,C;I,K,C,C,G,U,G,C,G,E,G,C;I,K,C,C,G,I,C,G,C,U;I,K,C,C,G,C,G,E;I,K,C,C,G,I,C,K,C,C,G,E;I,M,C,C,I,E,C,C,I,C,G,C,I,E,C,C;A,C;A,E,A,uG,A,E,C,K,C,Q;A,E,A,2M,A,E,C,K,C,G,G,U,E,C,E,C,G,C;Q,C,C,C,I,C,C,C;Q,C,C,C,I,C,C,C;I,C;;A,E,A,0J,A,E,C,K,C,K,I,Q,I,K,G,G,C,Q,E,K;;A,E,A,0R,A,E,C,K,C,S,G,U,E,C,E,C,G,C;Q,C,C,C,I,C,C,C;Q,C,C,C,I,C,C,C;I,C;;S,e,C,Q,E,M,E,C;I,K,C,G,G,G,C,Q;I,E,E,G,C,K,E,M,C,C;I,K,E,O,E,K,E,G,I,G,C,K;I,M,uB,C;Q,O,G,M;Q,K;Q,G;I,C,E,I;A,C;A,G,C,K,G,C;I,K;I,G;I,I;I,G;I,S;I,O;I,a;I,Q;I,M;I,Q;I,G;I,K;I,S;I,e;A,C;S,U,C,E,E,C;I,M,E,C,E,C,G,C;Q,K,C,M,kB,C,E,K;Q,K,C,M,kB,C,E,K;Q,E,E,M,I,M,E,C;Y,K,C,K,G,E,C,M,E,M;Y,M,uB,K,E,I;Q,C;I,C;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6C,K;;8C,Q;;gE,0B;;8C,Q;;A,G;A,G;A,G;A,K,C,K,G,M,C,M,C,C,C;A,K,C,K,G,C;I,I,E,C;I,K,E,C;I,U,E,C;I,Y,E,C;A,C;A,K,C,U,G,C;I,K,E,C;I,M,E,K;I,S,E,K;I,K,E,K;I,M,E,K;I,sB,E,K;I,W,E,K;A,C;A,K,C,U,G,C;O,K;O,U;I,I,E,C;I,a,E,C;I,K,E,K;I,kB,E,K;I,+B,E,K;I,mB,E,K;I,gC,E,K;A,C;A,K,C,U,G,C;O,K;I,I,E,C;I,a,E,C;I,O,E,U;I,Q,E,U;I,O,E,U;A,C;A,K,C,c,I,K,E,I,E,G,G,C,I,I,C,G,E,I,E,C,M,K,C,C,I,G,G,I;;;S,Q,C,M,E,M,E,iB,E,W,E,C;I,M,E,K,G,C;Q,K,C,S,G,M,C,G,E,E,qB,E,E,Q,I,C;;Q,K,C,K,G,S,C,G,E,Q,mB,K,E,Q;;Q,M,C,C;Y,K;Y,M;Y,S;Y,K;Y,M,E,c,C,K,E,M;Y,sB,E,iB,C,K;Y,W,E,c,C,K,E,W,E,C;Q,C;I,C;A,C;A,K,C,Y,I,I,E,E,G,C;I,K,C,C,c,I;I,K,C,C,c,E;I,M,C,C,C,K,I,C,C,K,G,C,G,C,C,K,C,C,I,C,C,K,C,C;A,C;A,K,C,U,G,Q,C,C,sB,K,C,C,K,C,2B,K,C,C,K,C,iB,K,C,C,K,C,uD,K,C,C;A,K,C,Y,G,Q,C,C,yB,K,C,C,K,C,2B,K,C,C,K,C,mB,K,C,C,K,C,uD,K,C,C;A,K,C,a,G,Q,C,C,wB,K,C,C,K,C,+B,K,C,C,K,C,kB,K,C,C,K,C,qG,K,C,C;A,K,C,Y,G,Q,C,C,uB,K,C,C,K,C,2B,K,C,C,K,C,e,K,C,C,K,C,2F,K,C,C;A,E,A,qE,A,E,U,Q,C,K,E,C;I,K,C,E,c,K,E,E;I,E,G,E,E,M,C,U;I,K,C,S,G,U,C,E;I,K,C,U,G,Y,C,C,I,E;I,K,C,Y,I,G,G,C;Q,K,C,C,qB,G;Q,E,E,C,C,K,E,M,C,C;Q,M,iB,K,E,C,C,Q,I,C,C,S;I,C;I,M,C,C;W,S;Q,I,E,C;Q,a,kB,E,E,C;Q,U;Q,Y,iB,U;Q,kB,E,C,0B,K,C,C,I,G,C,Y;Q,+B,E,C,oC,K,C,C,I,G,C,Y;Q,mB,E,C,8B,K,C,C,I,G,C,Y;Q,gC,E,C,+B,K,C,C,I,G,C,Y;I,C;A,C;A,E,A,mE,A,E,U,Q,C,G,E,C;I,K,C,E,c,G,E,E;I,E,G,E,E,M,C,U;I,K,C,U,G,Y,C,C,I,E,I,C;I,M,C,C;Q,I,E,C;Q,K,E,E;Q,a,kB,E,E,C;Q,U;Q,Y,iB,U;Q,O,E,Y,C,E;Q,Q,E,a,C,E;Q,O,E,Y,C,E;I,C;A,C;A,E,A,mJ,A,E,U,0B,C,G,E,C;I,E,E,M,C,G,K,C,S,M,uB,C,I,G;S,E,E,M,C,G,K,C,qB,I,C,G,G,M,uB,C,mB,G;I,M,C,I;A,C;A,G,C,K,G,C;I,Q;I,0B;I,Q;A,C;;;;;;;;;;;;;;;;iD,W;;+C,S;;4C,M;;6C,K;;gD,U;;gD,U;;0C,I;;8C,Q;;oD,c;;8C,Q;;oD,c;;yC,G;;0C,I;;0C,I;;2C,K;;4C,M;;gD,U;;8C,Q;;iD,W;;qD,e;;wC,E;;0C,I;;8C,Q;;4C,M;;+C,S;;iD,W;;qD,e;;mD,a;;A,G;A,G;A,K,C,K,G,C;I,C;I,C;I,C;I,C;I,C;I,C;I,C;A,C;A,K,C,M,I,C,G,C,C,I;;A,K,C,S,I,K,G,K,C,G,a,M,E,C,I,C,C,K;;;A,E,A,4I,A,E,U,K,C,K,E,C;I,E,E,K,K,S,E,M,C,K,C,K;S,E,G,K,C,O,C,K,G,M,C,C,C;S,M,C,S,C,K,E,G,C,M;A,C;A,E,A,wI,A,E,C,K,C,G;A,E,A,wC,A,E,C,K,C,I,I,I,G,G,C,I,E,I;;A,E,A,oD,A,E,C,K,C,U,I,I,G,G,C,I,E,E;;A,E,A,+C,A,E,C,K,C,W,I,I,G,G,C,I,E,G;;A,E,A,0C,A,E,C,K,C,M,I,I,G,G,C,I,E,G;;A,E,A,wC,A,E,C,K,C,I,I,I,G,G,C,I,E,I;;A,E,A,wC,A,E,C,K,C,I,I,I,G,G,C,I,E,I;;A,E,A,0C,A,E,C,K,C,M,I,I,G,G,C,I,E,M;;A,E,A,uQ,A,E,U,Q,C,K,E,C;I,M,sB,K;A,C;A,E,A,gF,A,E,U,Q,C,K,E,C;I,M,uC,K;A,C;A,E,A,gF,A,E,U,c,C,K,E,C;I,M,uC,K,G,C;Q,M,E,I;I,C;A,C;A,E,A,0O,A,E,U,c,C,K,E,C;I,M,sB,K,E,C;Q,M,E,I;I,C;A,C;A,E,A,wC,A,E,C,K,C,S;A,K,C,E;A,E,A,6O,A,E,C,K,C,W,I,Q,I,I,G,S,C,I,E,Q;;A,K,C,I,G,W;A,E,A,mO,A,E,C,K,C,a,I,I,I,Q,G,S,C,I,E,Q;;A,K,C,M,G,a;A,E,A,+Z,A,E,U,e,C,Q,E,M,E,C;I,K,C,I,G,G,C,Q;I,E,E,I,C,K,E,M,C,C;I,K,E,O,E,K,I,I,C,K;I,K,C,U,G,K,K,S,qB,C;Q,O,G,M;I,C,sB,C;Q,O,G,M;Q,K;I,C;I,M,C,U,C,I;A,C;A,K,C,Q,G,e;A,K,C,S,I,C,E,C,G,C,C,M,G,C,C,M;;A,K,C,U,I,C,E,C,G,C,C,M,G,C,C,M;;S,W,C,K,E,U,E,C;I,U,G,U,I,S;I,M,C,S,C,K,E,I,C,U,E,G,C,M;A,C;S,e,C,K,E,C;I,M,C,W,C,K,E,S,E,M,E,C,E,C,E,C,G,C,K,C,I,C,K,C,C,C,G,C;;A,C;A,E,A,yW,A,E,C,K,C,Q,I,Q,G,C;I,K,C,I,G,G,C,Q;I,E,E,I,C,K,E,M,C,C;I,M,sB,I,C,I,I,I,C,M,E,C;Q,M,E,I,C,G,G,C;Q,U,E,I,C,I,K,I;I,C;A,C;A,E,A,2U,A,E,U,U,C,Q,E,Q,E,C;I,K,C,G,G,G,C,Q;I,E,E,G,C,K,E,M,C,C;I,E,A,uC;I,K,C,I,G,G,C,Q,yB,G,C,I,I,G,C,M,E,C;Q,M,E,G,C,G,G,C;Q,U,E,I;I,C;I,E,A,4B;I,E,E,I,C,K,I,I,C,M,K,G,C,M,E,M,C,C;I,E,A,yD;I,E,E,G,C,G,K,S,E,M,C,I,C,E;I,E,A,2B;I,K,C,S,G,G,C,M,G,G,C,G;I,K,C,U,G,I,C,M,G,I,C,G;I,K,C,a,G,S,G,E,I,U,G,C,G,E,G,S,G,C,I,U,G,E,G,C,G,C;I,E,A,yB;I,K,C,O,G,G,C,G,G,a;I,M,C,I,C,E,G,O;A,C;A,G,C,K,G,C;I,K;I,G;I,I;I,U;I,W;I,M;I,I;I,S;I,U;I,W;I,e;I,Q;I,c;I,I;I,Q;I,c;I,M;I,S;I,E;I,W;I,I;I,a;I,M;I,e;I,Q;I,Q;I,U;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6C,K;;gD,U;;4C,M;;gD,U;;oD,c;;4C,M;;A,G;S,M,C,G,E,C;I,M,E,G,I,C,K,G,I,G;A,C;A,E,A,4Y,A,E,U,M,C,M,E,C;I,E,E,M,C,M,G,M,E,M;I,K,C,C,c,M;I,M,C,C,C,K,G,I,G,C,C,I;A,C;A,E,A,mV,A,E,U,U,C,I,E,M,G,G,E,C;I,M,C,I,C,G,C,C,G,I,G,E,I,E,I,M;A,C;A,K,C,E,G,I,C,G,C,C;A,K,C,I,G,I,C,G,C,G;A,E,A,+U,A,E,U,U,C,I,E,C;I,K,C,C,G,E,I,I,C,G,C,I,I,I,I,E,G,E;I,M,C,I,C,K,C,C,G,G,I,G;A,C;A,K,C,M,G,C,8B,K,C,C;A,K,C,K,G,C,8B,K,C,C;A,E,A,4vB,A,E,U,c,C,I,E,O,G,C;A,C,E,C;I,E,E,K,C,I,K,I,M,Q,I,I,K,Q,E,M,C,C;I,I,G,I,C,K,C,I;I,K,C,G,G,O,C,M,K,I,G,M,G,K;I,K,C,E,G,G,C,I,G,E;I,E,E,O,C,U,E,M,C,E;I,K,C,C,G,I,C,K,C,I,G,E,I,C;I,M,C,E,G,C;A,C;A,G,C,K,G,C;I,M;I,M;I,U;I,c;I,U;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6C,K;;yC,G;;2C,K;;8C,Q;;A,G;A,K,C,c,G,C;I,K,E,I;I,I,E,C;I,S,E,C;A,C;A,K,C,K,G,C;A,C;A,E,A,se,A,E,U,G,C,G,E,C;I,M,C,M,C,G,K,C,U,K,C,G,M,K,C,G,I,K,C,G,K,M,C,G,K,C,U,G,C,K,C,G,K,C,mB,G,I,S,C,G,kB,G,I,G,C,G,C,I,I,c;A,C;A,K,C,Y,mB,C,4B,C,mB,G;A,E,A,gM,A,E,U,K,C,K,G,I,E,C;I,M,E,K,G,K,G,W,E,K;A,C;S,S,C,K,E,C;I,M,C,G,gB,K,C,G,I,K,C,K,C,I;A,C;A,K,C,K;S,Q,C,G,E,C;I,M,C,K,C,I,C,G,K,C;Q,C;Q,C;Q,C;Q,C;I,C;A,C;A,K,C,M,G,C;A,K,C,K,G,M,C,K,C,C;A,K,C,W,G,M,C,W,G,K,C,C;S,K,C,G,E,C;I,K,E,I,E,G,E,K,E,S,I,Q,C,G;I,E,G,K,E,M,C,c;I,K,C,U,G,K,C,W;I,K,C,I,G,K,C,O,C,U;I,K,C,G,kB,G;I,K,C,G,G,C;I,M,C,C;Q,K,E,K;Q,I;Q,K;Q,Q,iB,C;Y,I;Y,G;Y,G;Q,C,E,I;Q,G;Q,S;Q,G;Q,I;Q,K,E,K,K,U;Q,G,E,C;Q,G;I,C;A,C;A,G,C,K,G,C;I,K;I,G;I,E,A,W;I,Y;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;yC,G;;6C,O;;8C,Q;;6C,O;;yC,G;;0C,I;;2C,K;;2C,K;;mD,a;;mD,a;;4C,M;;A,G;A,G;A,G;A,G;A,G;A,K,C,K,G,C;I,C;A,S;A,Y;A,S;Q,C;Q,C;Q,C;Q,C;I,C;I,C;A,S;A,Y;A,S;Q,C;Q,C;Q,C;I,C;I,C;A,S;A,Y;A,S;Q,C;Q,C;Q,C;I,C;I,C;A,S;A,Y;A,U;Q,C;Q,C;Q,C;I,C;I,C;A,S;A,Y;A,S;Q,C;Q,C;Q,C;I,C;I,C;A,S;A,Y;A,S;Q,C;Q,C;Q,C;Q,C;I,C;I,C;A,S;A,Y;A,S;Q,C;Q,C;Q,C;I,C;A,C;A,K,C,M,G,C;;I,I,E,C;I,G,E,C;I,O,E,G;I,K,E,C;I,O,E,C;I,O,E,C,C;A,C;A,K,C,K,G,K,C,G,C,M;A,K,C,K,G,C;A,C;A,K,C,O,E,K,G,C;I,K,C,K,C,I,I,K;I,K,C,O,C,O,E,K,G,C;Q,K,C,K,I,K;I,C;A,C;A,E,A,+X,A,E,U,G,C,I,E,C;I,M,C,M,C,I,K,C,U,K,C,I,C,W,O,M,G,I,I,I,C,I,G,G,C,I,C,I,I,M;A,C;A,K,C,I,mB,C,Y,C,W,G;A,E,A,gC,A,E,U,G,G,C;I,M,C,K,C,K;A,C;A,K,C,O,mB,C,Y,C,W,G;A,E,A,qC,A,E,U,K,G,C;I,M,C,K,C,G,E,K,G,K,C,I;;A,C;S,M,C,K,E,C;I,K,E,O,E,M,E,G,E,I,E,K,E,O,E,K,I,K;I,K,C,O,G,K,G,C;Q,K;I,C,G,C,C;I,K,C,M,G,M,C,M,E,Q,C,C;I,K,C,S,kB,I,E,S;I,M,C,C;Q,K,E,K;Q,S;Q,O;Q,M;Q,U,E,M;Q,I;Q,M;Q,G;Q,K;Q,O;Q,O;I,C;A,C;S,K,C,Q,E,K,E,C;I,M,C,G,C,Q,E,S,C,G,E,G,mB,K,E,G;;A,C;S,M,C,O,E,C;I,M,E,Q,E,K,G,C;Q,K,C,K,G,G,C,Q;Q,E,E,K,C,K,E,M,C,C,C;Q,K,C,O,sB,K,C,O,E,O;Q,K,C,M,G,K,C,S,C,G,E,C,mB,K,E,C;;Q,M,C,O,C,G,E,K,E,C,G,M,C,C,I,K;;I,C;A,C;A,K,C,M,G,M,C,K,C,G,E,C,G,C,C,C;;A,K,C,a,G,M,C,K,C,G,E,C,G,C,C,C;;S,Q,C,W,E,M,E,C;I,K,C,I,G,G,C,M;I,K,C,E,G,G,C,W;I,E,E,I,C,K,I,E,C,K,E,M,C,C;I,M,8C,C,K,E,C,G,G,I,C,G;A,C;S,a,C,W,E,M,E,K,E,C;I,M,iB,K,E,Q,C,W,E,M;A,C;A,G,C,O,G,C;I,G;I,K;I,G;I,Q;I,a;I,K;I,M;I,a;I,E,A,W;I,O;I,I;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;6C,K;;uD,iB;;qD,e;;A,G;A,G;A,G;A,E,A,qP,A,E,U,iB,C,K,E,M,E,C;I,K,C,a,G,M,C,G;I,M,C,a,C,G,E,E,mB,K,iB,E,K,E,C,S;;A,C;A,E,A,+N,A,E,U,e,C,K,E,M,E,C;I,M,C,M,C,G,E,K,G,C;Q,K,E,I,E,S,oB,K;Q,K,C,Y,kB,K,E,I;Q,K,C,K,oC,Y;Q,M,C,K,C,I,G,S;I,C;A,C;A,G,C,K,G,C;I,iB;I,e;A,C;;;;;;;;;;;;;;;;;+C,S;;6C,K;;6C,O;;A,G;A,G;A,E,A,+iB,A,E,U,O,C,K,E,C;I,K,C,I,uB,K,C,G;I,E,G,K,C,M,I,I,C,M,K,K,C,M,E,E,A,wB;I,M,C,C,C;I,M,C,I,C,M,E,M,E,I,G,C;Q,K,C,I,G,M,C,M,C,M,G,C;Q,M,C,M,C,M,mB,I,E,I,E,K,C,C;I,C,E,C;Q,I,C,C;I,C;A,C;A,E,A,0lB,A,E,U,S,C,K,E,O,E,C;I,M,C,O,C,K,E,G,E,I,wB,I,E,O;;A,C;A,G,C,K,G,C;I,O;I,S;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6C,K;;8C,Q;;yC,G;;+C,S;;2C,K;;6C,O;;6C,O;;2C,K;;iD,W;;gD,U;;8C,Q;;A,G;A,G;A,G;A,G;A,G;A,G;A,E,A,0J,A,E,C,K,C,O,G,C;I,K,E,I;I,I,E,C;I,I,E,C;I,K,E,I;I,M,E,G;I,M,E,C;I,U,E,C;I,O,E,C,C;I,K,E,C,C;I,S,E,C,C;A,C;A,E,A,8iB,A,E,U,Q,C,I,E,C;I,E,E,M,C,I,K,C,S,M,C,C;Q,C;Q,C;I,C;I,K,C,C,G,I,C,O,C,C;I,K,C,K,c,I,C,S,C,C,E,C;I,E,E,K,C,K,E,C;Q,K,C,C,c,I;Q,M,C,C,C,K,G,C;Y,C;Y,I;Q,C,G,C;Y,C,C,I;Y,C;Q,C;I,C;I,K,C,I,G,I,C,S,C,K,C,I,C,M,G,C;I,M,C,C;Q,K,C,I;Q,I,C,M,G,I,G,C;I,C;A,C;A,E,A,0C,A,E,C,K,C,K;A,E,A,uC,A,E,U,G,C,G,E,C;I,K,C,M,G,K,C,O,C,G,I,G,G,Q,C,G;I,K,C,K,c,M,C,C,G,I;I,K,C,E,kB,M,C,C;I,E,E,E,C,K,E,M,C,O;I,K,C,I,G,E,C,I;I,K,C,K,G,K,G,E,C,S,C,G,E,C,mB,K,E,C;Q,C,C;I,K,C,I,G,K,G,K,G,C,K,I,G,I;I,M,C,C;W,E;Q,I;Q,I;Q,K;Q,K;I,C;A,C;A,K,C,K,mB,C,c,C,Y,G;A,E,A,uP,A,E,U,W,C,I,E,C;I,K,C,C,G,G,C,I;I,K,C,O,qB,C,C,M;I,M,kB,M,E,K,G,O,C,K,C,M;M,G,E,K,G,K,C,O,C,C;;A,C;A,E,A,sT,A,E,U,Q,C,I,E,C;I,K,C,C,G,G,C,I;I,K,C,U,uB,C,C,M;I,M,kB,M,E,M,G,U,C,M,C,M;M,G,E,M,G,M,C,I;;A,C;A,E,A,yS,A,E,U,O,C,I,E,C;I,K,C,Q,qB,G,C,I,E,M;I,M,kB,M,E,M,G,Q,C,M,C,M;M,G,E,M,G,M,C,I;;A,C;A,E,A,sW,A,E,U,U,C,K,E,C;I,K,C,K,G,K,C,G,E,C,c,C,E,E;M,M,E,C,G,C;;I,K,C,K,G,K,C,C;I,K,C,M,yB,K;I,M,oB,M,C,O,C,K,G,M;A,C;A,E,A,kS,A,E,U,S,C,I,E,C;I,K,C,C,G,G,C,I;I,E,E,C,C,K,E,M,C,C,C;I,K,C,M,G,C,C,K,G,C,C,K,G,C,C,S;I,M,c,C,C,M,E,G,E,M,E,C,G,C;Q,K,C,Q,G,G,C,M,E,I;Q,M,C,Q,G,C;Y,M,C,C;Y,Q;Q,C,G,C;Y,C;Y,C;Q,C;I,C,E,M,E,C,G,C,C,C;;A,C;S,a,C,M,E,C;I,K,C,M,G,K,C,O,C,M,I,U,C,M,I,G,C,M,E,K;I,K,C,O,G,M,C,G,E,I,c,I,E,M;;I,M,E,U,G,C;Q,K,C,Q,G,M,C,U,K,C,oC,U,gB,U;Q,K,C,M,G,Q,C,M;Q,E,E,M,K,S,E,M,C,S;Q,K,C,M,G,M,G,E;Q,K,C,Q,G,O,C,O,C,M;Q,E,E,Q,K,E,E,M,C,S;Q,M,kB,Q,C,I,E,M,C,Q;I,C;A,C;S,O,C,M,E,C;I,K,C,O,G,a,C,M;I,M,E,Q,E,M,G,C;Q,K,C,I,c,Q,E,M;Q,K,C,E,c,M,E,M;Q,E,E,I,K,S,I,E,K,S,E,M,C,C,C;Q,M,mB,I,E,E,E,G,C,O,E,M,E,C,G,C;;I,C;A,C;A,G,C,K,G,C;I,G;I,K;I,Q;I,S;I,O;I,W;I,U;I,Q;I,O;I,E,A,W;I,K;A,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yC,G;;2C,K;;2C,K;;A,E,A,U;A,K,C,I,G,C;I,K,E,I;I,I,E,C;I,K,E,S;I,K,E,S;I,I,E,S;I,Q,E,C,C;A,C;A,K,C,K,G,C;I,C;I,C;I,C;I,C;I,C;I,C;I,C;I,C;A,C;A,E,A,W;S,K,G,C;I,M,C,K,C,K;A,C;A,K,C,K;A,K,C,K,G,G,C,G;S,G,C,O,E,C;I,K,C,M,G,K,C,G,C,O;I,E,E,M,E,M,C,M;I,K,C,E,G,K,C,K,C,O;I,K,C,G,C,O,E,E;I,M,C,E;A,C;S,K,C,O,E,C;I,E,E,M,C,O,K,C,S,C;Q,K,E,C,E,E,E,G,I,K,C,I,C,O,K,C,C;Q,M,C,K,C,C;Y,E;Y,G;Q,C;I,C;I,K,E,E,E,I,I,O;I,K,C,W,I,I;I,E,E,M,C,E,K,C,S,M,C,C;Q,E;Q,W;I,C;I,K,C,I,G,E,C,K,C,C,I,G,E,C,I,C;;I,M,C,I,C,M,K,C,G,C;Q,I,C,C;Q,W;I,C,G,C;Q,I;Q,W;I,C;A,C;A,G,C,K,G,C;I,K;I,K;I,G;A,C;A,E,A,Q;S,K,E,E,E,I,G,C;I,K,C,K,G,K,C,O,C,E,I,E,C,M,E,C,E,C,G,C,G,C;M,C,I,E;I,K,C,K,G,I;I,E,E,K,K,C,I,K,K,C,E,M,C,I;I,K,C,I,G,K,C,O,C,E,O,E,C,I,C,C,I,C,E,I,Q,E,C,C,E,I;I,K,C,Q,G,K,C,O,C,E,I,E,G,C,C;I,K,C,I,G,K,K,C,I,K,K,C,G,C,U,K,K,C,I,K,G,C,K,C,G,C,Y,C;I,M,C,C;Q,K,E,K;Q,I;Q,I;Q,K;Q,K;Q,Q;I,C;A,C;kB,K;;;A,C;A,O,C,U,G,I;A,O,C,a,G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J,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,CAAC;IAAA,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,IAAI;IAAE,KAAK;IAAE,IAAI;IAAE,IAAI;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,IAAI;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAA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AG,CAAC;IAAA,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,IAAI;IAAE,KAAK;IAAE,IAAI;IAAE,IAAI;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,IAAI;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IAAE,KAAK;IA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","sources":["src/tutorial/Tutorial.js","node_modules/react/jsx-runtime.js","node_modules/react/cjs/react-jsx-runtime.production.min.js","node_modules/object-assign/index.js","node_modules/react/index.js","node_modules/react/cjs/react.production.min.js","node_modules/react-dom/index.js","node_modules/react-dom/cjs/react-dom.production.min.js","node_modules/scheduler/index.js","node_modules/scheduler/cjs/scheduler.production.min.js","src/tutorial/tutorial.mdx","node_modules/@mdx-js/react/dist/esm.js","node_modules/@parcel/transformer-js/src/esmodule-helpers.js","src/tutorial/MiniRepl.tsx","node_modules/tone/build/esm/index.js","node_modules/tone/Tone/index.ts","node_modules/tone/build/esm/core/Global.js","node_modules/tone/Tone/core/Global.ts","node_modules/tone/build/esm/version.js","node_modules/tone/Tone/version.ts","node_modules/tone/build/esm/core/context/AudioContext.js","node_modules/tone/Tone/core/context/AudioContext.ts","node_modules/standardized-audio-context/build/es2019/module.js","node_modules/standardized-audio-context/src/module.ts","node_modules/automation-events/build/es5/bundle.js","node_modules/@babel/runtime/helpers/slicedToArray.js","node_modules/@babel/runtime/helpers/arrayWithHoles.js","node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","node_modules/@babel/runtime/helpers/arrayLikeToArray.js","node_modules/@babel/runtime/helpers/nonIterableRest.js","node_modules/@babel/runtime/helpers/classCallCheck.js","node_modules/@babel/runtime/helpers/createClass.js","node_modules/standardized-audio-context/build/es2019/factories/abort-error.js","node_modules/standardized-audio-context/src/factories/abort-error.ts","node_modules/standardized-audio-context/build/es2019/factories/add-active-input-connection-to-audio-node.js","node_modules/standardized-audio-context/src/factories/add-active-input-connection-to-audio-node.ts","node_modules/standardized-audio-context/build/es2019/factories/add-audio-node-connections.js","node_modules/standardized-audio-context/src/factories/add-audio-node-connections.ts","node_modules/standardized-audio-context/build/es2019/factories/add-audio-param-connections.js","node_modules/standardized-audio-context/src/factories/add-audio-param-connections.ts","node_modules/standardized-audio-context/build/es2019/factories/add-audio-worklet-module.js","node_modules/standardized-audio-context/src/factories/add-audio-worklet-module.ts","node_modules/standardized-audio-context/build/es2019/globals.js","node_modules/standardized-audio-context/src/globals.ts","node_modules/standardized-audio-context/build/es2019/helpers/is-constructible.js","node_modules/standardized-audio-context/src/helpers/is-constructible.ts","node_modules/standardized-audio-context/build/es2019/helpers/split-import-statements.js","node_modules/standardized-audio-context/src/helpers/split-import-statements.ts","node_modules/standardized-audio-context/build/es2019/factories/add-connection-to-audio-node.js","node_modules/standardized-audio-context/src/factories/add-connection-to-audio-node.ts","node_modules/standardized-audio-context/build/es2019/helpers/delete-passive-input-connection-to-audio-node.js","node_modules/standardized-audio-context/src/helpers/delete-passive-input-connection-to-audio-node.ts","node_modules/standardized-audio-context/build/es2019/helpers/get-value-for-key.js","node_modules/standardized-audio-context/src/helpers/get-value-for-key.ts","node_modules/standardized-audio-context/build/es2019/helpers/pick-element-from-set.js","node_modules/standardized-audio-context/src/helpers/pick-element-from-set.ts","node_modules/standardized-audio-context/build/es2019/helpers/set-internal-state-to-active.js","node_modules/standardized-audio-context/src/helpers/set-internal-state-to-active.ts","node_modules/standardized-audio-context/build/es2019/helpers/get-event-listeners-of-audio-node.js","node_modules/standardized-audio-context/src/helpers/get-event-listeners-of-audio-node.ts","node_modules/standardized-audio-context/build/es2019/helpers/set-internal-state-to-passive-when-necessary.js","node_modules/standardized-audio-context/src/helpers/set-internal-state-to-passive-when-necessary.ts","node_modules/standardized-audio-context/build/es2019/guards/audio-worklet-node.js","node_modules/standardized-audio-context/src/guards/audio-worklet-node.ts","node_modules/standardized-audio-context/build/es2019/helpers/set-internal-state-to-passive.js","node_modules/standardized-audio-context/src/helpers/set-internal-state-to-passive.ts","node_modules/standardized-audio-context/build/es2019/factories/add-passive-input-connection-to-audio-node.js","node_modules/standardized-audio-context/src/factories/add-passive-input-connection-to-audio-node.ts","node_modules/standardized-audio-context/build/es2019/factories/add-silent-connection.js","node_modules/standardized-audio-context/src/factories/add-silent-connection.ts","node_modules/standardized-audio-context/build/es2019/factories/add-unrendered-audio-worklet-node.js","node_modules/standardized-audio-context/src/factories/add-unrendered-audio-worklet-node.ts","node_modules/standardized-audio-context/build/es2019/factories/analyser-node-constructor.js","node_modules/standardized-audio-context/src/factories/analyser-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/analyser-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/analyser-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/helpers/is-owned-by-context.js","node_modules/standardized-audio-context/src/helpers/is-owned-by-context.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-buffer-constructor.js","node_modules/standardized-audio-context/src/factories/audio-buffer-constructor.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support.js","node_modules/standardized-audio-context/src/helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support.ts","node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-buffer-get-channel-data-method.js","node_modules/standardized-audio-context/src/helpers/wrap-audio-buffer-get-channel-data-method.ts","node_modules/standardized-audio-context/build/es2019/factories/index-size-error.js","node_modules/standardized-audio-context/src/factories/index-size-error.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-buffer-source-node-constructor.js","node_modules/standardized-audio-context/src/factories/audio-buffer-source-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/constants.js","node_modules/standardized-audio-context/src/constants.ts","node_modules/standardized-audio-context/build/es2019/helpers/is-active-audio-node.js","node_modules/standardized-audio-context/src/helpers/is-active-audio-node.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-buffer-source-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/audio-buffer-source-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-context-constructor.js","node_modules/standardized-audio-context/src/factories/audio-context-constructor.ts","node_modules/standardized-audio-context/build/es2019/helpers/deactivate-audio-graph.js","node_modules/standardized-audio-context/src/helpers/deactivate-audio-graph.ts","node_modules/standardized-audio-context/build/es2019/helpers/deactivate-active-audio-node-input-connections.js","node_modules/standardized-audio-context/src/helpers/deactivate-active-audio-node-input-connections.ts","node_modules/standardized-audio-context/build/es2019/guards/audio-buffer-source-node.js","node_modules/standardized-audio-context/src/guards/audio-buffer-source-node.ts","node_modules/standardized-audio-context/build/es2019/guards/biquad-filter-node.js","node_modules/standardized-audio-context/src/guards/biquad-filter-node.ts","node_modules/standardized-audio-context/build/es2019/guards/constant-source-node.js","node_modules/standardized-audio-context/src/guards/constant-source-node.ts","node_modules/standardized-audio-context/build/es2019/guards/gain-node.js","node_modules/standardized-audio-context/src/guards/gain-node.ts","node_modules/standardized-audio-context/build/es2019/guards/oscillator-node.js","node_modules/standardized-audio-context/src/guards/oscillator-node.ts","node_modules/standardized-audio-context/build/es2019/guards/stereo-panner-node.js","node_modules/standardized-audio-context/src/guards/stereo-panner-node.ts","node_modules/standardized-audio-context/build/es2019/helpers/get-audio-node-connections.js","node_modules/standardized-audio-context/src/helpers/get-audio-node-connections.ts","node_modules/standardized-audio-context/build/es2019/helpers/get-audio-param-connections.js","node_modules/standardized-audio-context/src/helpers/get-audio-param-connections.ts","node_modules/standardized-audio-context/build/es2019/helpers/is-valid-latency-hint.js","node_modules/standardized-audio-context/src/helpers/is-valid-latency-hint.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-destination-node-constructor.js","node_modules/standardized-audio-context/src/factories/audio-destination-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-destination-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/audio-destination-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-listener-factory.js","node_modules/standardized-audio-context/src/factories/audio-listener-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-node-constructor.js","node_modules/standardized-audio-context/src/factories/audio-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/guards/audio-node.js","node_modules/standardized-audio-context/src/guards/audio-node.ts","node_modules/standardized-audio-context/build/es2019/guards/audio-node-output-connection.js","node_modules/standardized-audio-context/src/guards/audio-node-output-connection.ts","node_modules/standardized-audio-context/build/es2019/helpers/add-active-input-connection-to-audio-param.js","node_modules/standardized-audio-context/src/helpers/add-active-input-connection-to-audio-param.ts","node_modules/standardized-audio-context/build/es2019/helpers/insert-element-in-set.js","node_modules/standardized-audio-context/src/helpers/insert-element-in-set.ts","node_modules/standardized-audio-context/build/es2019/helpers/add-passive-input-connection-to-audio-param.js","node_modules/standardized-audio-context/src/helpers/add-passive-input-connection-to-audio-param.ts","node_modules/standardized-audio-context/build/es2019/helpers/connect-native-audio-node-to-native-audio-node.js","node_modules/standardized-audio-context/src/helpers/connect-native-audio-node-to-native-audio-node.ts","node_modules/standardized-audio-context/build/es2019/guards/native-audio-node-faker.js","node_modules/standardized-audio-context/src/guards/native-audio-node-faker.ts","node_modules/standardized-audio-context/build/es2019/helpers/delete-active-input-connection.js","node_modules/standardized-audio-context/src/helpers/delete-active-input-connection.ts","node_modules/standardized-audio-context/build/es2019/helpers/delete-active-input-connection-to-audio-param.js","node_modules/standardized-audio-context/src/helpers/delete-active-input-connection-to-audio-param.ts","node_modules/standardized-audio-context/build/es2019/helpers/delete-event-listeners-of-audio-node.js","node_modules/standardized-audio-context/src/helpers/delete-event-listeners-of-audio-node.ts","node_modules/standardized-audio-context/build/es2019/helpers/delete-passive-input-connection-to-audio-param.js","node_modules/standardized-audio-context/src/helpers/delete-passive-input-connection-to-audio-param.ts","node_modules/standardized-audio-context/build/es2019/helpers/disconnect-native-audio-node-from-native-audio-node.js","node_modules/standardized-audio-context/src/helpers/disconnect-native-audio-node-from-native-audio-node.ts","node_modules/standardized-audio-context/build/es2019/helpers/get-native-audio-node.js","node_modules/standardized-audio-context/src/helpers/get-native-audio-node.ts","node_modules/standardized-audio-context/build/es2019/helpers/get-native-audio-param.js","node_modules/standardized-audio-context/src/helpers/get-native-audio-param.ts","node_modules/standardized-audio-context/build/es2019/helpers/is-part-of-a-cycle.js","node_modules/standardized-audio-context/src/helpers/is-part-of-a-cycle.ts","node_modules/standardized-audio-context/build/es2019/helpers/is-passive-audio-node.js","node_modules/standardized-audio-context/src/helpers/is-passive-audio-node.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-audio-node-disconnect-method-support.js","node_modules/standardized-audio-context/src/helpers/test-audio-node-disconnect-method-support.ts","node_modules/standardized-audio-context/build/es2019/helpers/visit-each-audio-node-once.js","node_modules/standardized-audio-context/src/helpers/visit-each-audio-node-once.ts","node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-node-disconnect-method.js","node_modules/standardized-audio-context/src/helpers/wrap-audio-node-disconnect-method.ts","node_modules/standardized-audio-context/build/es2019/guards/native-audio-node.js","node_modules/standardized-audio-context/src/guards/native-audio-node.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-param-factory.js","node_modules/standardized-audio-context/src/factories/audio-param-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-param-renderer.js","node_modules/standardized-audio-context/src/factories/audio-param-renderer.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-worklet-node-constructor.js","node_modules/standardized-audio-context/src/factories/audio-worklet-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/read-only-map.js","node_modules/standardized-audio-context/src/read-only-map.ts","node_modules/standardized-audio-context/build/es2019/factories/audio-worklet-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/audio-worklet-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/helpers/copy-from-channel.js","node_modules/standardized-audio-context/src/helpers/copy-from-channel.ts","node_modules/standardized-audio-context/build/es2019/helpers/copy-to-channel.js","node_modules/standardized-audio-context/src/helpers/copy-to-channel.ts","node_modules/standardized-audio-context/build/es2019/helpers/create-nested-arrays.js","node_modules/standardized-audio-context/src/helpers/create-nested-arrays.ts","node_modules/standardized-audio-context/build/es2019/helpers/get-audio-worklet-processor.js","node_modules/standardized-audio-context/src/helpers/get-audio-worklet-processor.ts","node_modules/standardized-audio-context/build/es2019/factories/base-audio-context-constructor.js","node_modules/standardized-audio-context/src/factories/base-audio-context-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/biquad-filter-node-constructor.js","node_modules/standardized-audio-context/src/factories/biquad-filter-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/biquad-filter-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/biquad-filter-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/cache-test-result.js","node_modules/standardized-audio-context/src/factories/cache-test-result.ts","node_modules/standardized-audio-context/build/es2019/factories/channel-merger-node-constructor.js","node_modules/standardized-audio-context/src/factories/channel-merger-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/channel-merger-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/channel-merger-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/channel-splitter-node-constructor.js","node_modules/standardized-audio-context/src/factories/channel-splitter-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/channel-splitter-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/channel-splitter-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/connect-audio-param.js","node_modules/standardized-audio-context/src/factories/connect-audio-param.ts","node_modules/standardized-audio-context/build/es2019/factories/connect-multiple-outputs.js","node_modules/standardized-audio-context/src/factories/connect-multiple-outputs.ts","node_modules/standardized-audio-context/build/es2019/factories/connected-native-audio-buffer-source-node-factory.js","node_modules/standardized-audio-context/src/factories/connected-native-audio-buffer-source-node-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/constant-source-node-constructor.js","node_modules/standardized-audio-context/src/factories/constant-source-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/constant-source-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/constant-source-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/convert-number-to-unsigned-long.js","node_modules/standardized-audio-context/src/factories/convert-number-to-unsigned-long.ts","node_modules/standardized-audio-context/build/es2019/factories/convolver-node-constructor.js","node_modules/standardized-audio-context/src/factories/convolver-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/convolver-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/convolver-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/create-native-offline-audio-context.js","node_modules/standardized-audio-context/src/factories/create-native-offline-audio-context.ts","node_modules/standardized-audio-context/build/es2019/factories/data-clone-error.js","node_modules/standardized-audio-context/src/factories/data-clone-error.ts","node_modules/standardized-audio-context/build/es2019/factories/decode-audio-data.js","node_modules/standardized-audio-context/src/factories/decode-audio-data.ts","node_modules/standardized-audio-context/build/es2019/helpers/detach-array-buffer.js","node_modules/standardized-audio-context/src/helpers/detach-array-buffer.ts","node_modules/standardized-audio-context/build/es2019/factories/decrement-cycle-counter.js","node_modules/standardized-audio-context/src/factories/decrement-cycle-counter.ts","node_modules/standardized-audio-context/build/es2019/factories/delay-node-constructor.js","node_modules/standardized-audio-context/src/factories/delay-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/delay-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/delay-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/delete-active-input-connection-to-audio-node.js","node_modules/standardized-audio-context/src/factories/delete-active-input-connection-to-audio-node.ts","node_modules/standardized-audio-context/build/es2019/factories/delete-unrendered-audio-worklet-node.js","node_modules/standardized-audio-context/src/factories/delete-unrendered-audio-worklet-node.ts","node_modules/standardized-audio-context/build/es2019/factories/detect-cycles.js","node_modules/standardized-audio-context/src/factories/detect-cycles.ts","node_modules/standardized-audio-context/build/es2019/guards/delay-node.js","node_modules/standardized-audio-context/src/guards/delay-node.ts","node_modules/standardized-audio-context/build/es2019/factories/disconnect-multiple-outputs.js","node_modules/standardized-audio-context/src/factories/disconnect-multiple-outputs.ts","node_modules/standardized-audio-context/build/es2019/factories/dynamics-compressor-node-constructor.js","node_modules/standardized-audio-context/src/factories/dynamics-compressor-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/dynamics-compressor-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/dynamics-compressor-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/encoding-error.js","node_modules/standardized-audio-context/src/factories/encoding-error.ts","node_modules/standardized-audio-context/build/es2019/factories/evaluate-source.js","node_modules/standardized-audio-context/src/factories/evaluate-source.ts","node_modules/standardized-audio-context/build/es2019/factories/event-target-constructor.js","node_modules/standardized-audio-context/src/factories/event-target-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/expose-current-frame-and-current-time.js","node_modules/standardized-audio-context/src/factories/expose-current-frame-and-current-time.ts","node_modules/standardized-audio-context/build/es2019/factories/fetch-source.js","node_modules/standardized-audio-context/src/factories/fetch-source.ts","node_modules/standardized-audio-context/build/es2019/factories/gain-node-constructor.js","node_modules/standardized-audio-context/src/factories/gain-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/gain-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/gain-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/get-active-audio-worklet-node-inputs.js","node_modules/standardized-audio-context/src/factories/get-active-audio-worklet-node-inputs.ts","node_modules/standardized-audio-context/build/es2019/factories/get-audio-node-renderer.js","node_modules/standardized-audio-context/src/factories/get-audio-node-renderer.ts","node_modules/standardized-audio-context/build/es2019/factories/get-audio-node-tail-time.js","node_modules/standardized-audio-context/src/factories/get-audio-node-tail-time.ts","node_modules/standardized-audio-context/build/es2019/factories/get-audio-param-renderer.js","node_modules/standardized-audio-context/src/factories/get-audio-param-renderer.ts","node_modules/standardized-audio-context/build/es2019/factories/get-backup-offline-audio-context.js","node_modules/standardized-audio-context/src/factories/get-backup-offline-audio-context.ts","node_modules/standardized-audio-context/build/es2019/factories/get-native-context.js","node_modules/standardized-audio-context/src/factories/get-native-context.ts","node_modules/standardized-audio-context/build/es2019/factories/invalid-state-error.js","node_modules/standardized-audio-context/src/factories/invalid-state-error.ts","node_modules/standardized-audio-context/build/es2019/factories/get-or-create-backup-offline-audio-context.js","node_modules/standardized-audio-context/src/factories/get-or-create-backup-offline-audio-context.ts","node_modules/standardized-audio-context/build/es2019/factories/get-unrendered-audio-worklet-nodes.js","node_modules/standardized-audio-context/src/factories/get-unrendered-audio-worklet-nodes.ts","node_modules/standardized-audio-context/build/es2019/factories/iir-filter-node-constructor.js","node_modules/standardized-audio-context/src/factories/iir-filter-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/helpers/wrap-iir-filter-node-get-frequency-response-method.js","node_modules/standardized-audio-context/src/helpers/wrap-iir-filter-node-get-frequency-response-method.ts","node_modules/standardized-audio-context/build/es2019/factories/invalid-access-error.js","node_modules/standardized-audio-context/src/factories/invalid-access-error.ts","node_modules/standardized-audio-context/build/es2019/factories/iir-filter-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/iir-filter-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/helpers/filter-buffer.js","node_modules/standardized-audio-context/src/helpers/filter-buffer.ts","node_modules/standardized-audio-context/build/es2019/factories/increment-cycle-counter-factory.js","node_modules/standardized-audio-context/src/factories/increment-cycle-counter-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/is-any-audio-context.js","node_modules/standardized-audio-context/src/factories/is-any-audio-context.ts","node_modules/standardized-audio-context/build/es2019/factories/is-any-audio-node.js","node_modules/standardized-audio-context/src/factories/is-any-audio-node.ts","node_modules/standardized-audio-context/build/es2019/factories/is-any-audio-param.js","node_modules/standardized-audio-context/src/factories/is-any-audio-param.ts","node_modules/standardized-audio-context/build/es2019/factories/is-any-offline-audio-context.js","node_modules/standardized-audio-context/src/factories/is-any-offline-audio-context.ts","node_modules/standardized-audio-context/build/es2019/factories/is-native-audio-context.js","node_modules/standardized-audio-context/src/factories/is-native-audio-context.ts","node_modules/standardized-audio-context/build/es2019/factories/is-native-audio-node.js","node_modules/standardized-audio-context/src/factories/is-native-audio-node.ts","node_modules/standardized-audio-context/build/es2019/factories/is-native-audio-param.js","node_modules/standardized-audio-context/src/factories/is-native-audio-param.ts","node_modules/standardized-audio-context/build/es2019/factories/is-native-context.js","node_modules/standardized-audio-context/src/factories/is-native-context.ts","node_modules/standardized-audio-context/build/es2019/factories/is-native-offline-audio-context.js","node_modules/standardized-audio-context/src/factories/is-native-offline-audio-context.ts","node_modules/standardized-audio-context/build/es2019/factories/is-secure-context.js","node_modules/standardized-audio-context/src/factories/is-secure-context.ts","node_modules/standardized-audio-context/build/es2019/factories/is-supported-promise.js","node_modules/standardized-audio-context/src/factories/is-supported-promise.ts","node_modules/standardized-audio-context/build/es2019/factories/media-element-audio-source-node-constructor.js","node_modules/standardized-audio-context/src/factories/media-element-audio-source-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/media-stream-audio-destination-node-constructor.js","node_modules/standardized-audio-context/src/factories/media-stream-audio-destination-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/media-stream-audio-source-node-constructor.js","node_modules/standardized-audio-context/src/factories/media-stream-audio-source-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/media-stream-track-audio-source-node-constructor.js","node_modules/standardized-audio-context/src/factories/media-stream-track-audio-source-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/minimal-audio-context-constructor.js","node_modules/standardized-audio-context/src/factories/minimal-audio-context-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/minimal-base-audio-context-constructor.js","node_modules/standardized-audio-context/src/factories/minimal-base-audio-context-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/minimal-offline-audio-context-constructor.js","node_modules/standardized-audio-context/src/factories/minimal-offline-audio-context-constructor.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-promise-support.js","node_modules/standardized-audio-context/src/helpers/test-promise-support.ts","node_modules/standardized-audio-context/build/es2019/factories/monitor-connections.js","node_modules/standardized-audio-context/src/factories/monitor-connections.ts","node_modules/standardized-audio-context/build/es2019/factories/native-analyser-node-factory.js","node_modules/standardized-audio-context/src/factories/native-analyser-node-factory.ts","node_modules/standardized-audio-context/build/es2019/helpers/assign-native-audio-node-option.js","node_modules/standardized-audio-context/src/helpers/assign-native-audio-node-option.ts","node_modules/standardized-audio-context/build/es2019/helpers/assign-native-audio-node-options.js","node_modules/standardized-audio-context/src/helpers/assign-native-audio-node-options.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-analyser-node-get-float-time-domain-data-method-support.js","node_modules/standardized-audio-context/src/helpers/test-analyser-node-get-float-time-domain-data-method-support.ts","node_modules/standardized-audio-context/build/es2019/helpers/wrap-analyser-node-get-float-time-domain-data-method.js","node_modules/standardized-audio-context/src/helpers/wrap-analyser-node-get-float-time-domain-data-method.ts","node_modules/standardized-audio-context/build/es2019/factories/native-audio-buffer-constructor.js","node_modules/standardized-audio-context/src/factories/native-audio-buffer-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/native-audio-buffer-source-node-factory.js","node_modules/standardized-audio-context/src/factories/native-audio-buffer-source-node-factory.ts","node_modules/standardized-audio-context/build/es2019/helpers/assign-native-audio-node-audio-param-value.js","node_modules/standardized-audio-context/src/helpers/assign-native-audio-node-audio-param-value.ts","node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls.js","node_modules/standardized-audio-context/src/helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls.ts","node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters.js","node_modules/standardized-audio-context/src/helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters.ts","node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters.js","node_modules/standardized-audio-context/src/helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters.ts","node_modules/standardized-audio-context/build/es2019/factories/native-audio-context-constructor.js","node_modules/standardized-audio-context/src/factories/native-audio-context-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/native-audio-destination-node.js","node_modules/standardized-audio-context/src/factories/native-audio-destination-node.ts","node_modules/standardized-audio-context/build/es2019/factories/native-audio-worklet-node-constructor.js","node_modules/standardized-audio-context/src/factories/native-audio-worklet-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/native-audio-worklet-node-factory.js","node_modules/standardized-audio-context/src/factories/native-audio-worklet-node-factory.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-clonability-of-audio-worklet-node-options.js","node_modules/standardized-audio-context/src/helpers/test-clonability-of-audio-worklet-node-options.ts","node_modules/standardized-audio-context/build/es2019/factories/native-audio-worklet-node-faker-factory.js","node_modules/standardized-audio-context/src/factories/native-audio-worklet-node-faker-factory.ts","node_modules/standardized-audio-context/build/es2019/helpers/compute-buffer-size.js","node_modules/standardized-audio-context/src/helpers/compute-buffer-size.ts","node_modules/standardized-audio-context/build/es2019/helpers/create-audio-worklet-processor.js","node_modules/standardized-audio-context/src/helpers/create-audio-worklet-processor.ts","node_modules/standardized-audio-context/build/es2019/helpers/create-audio-worklet-processor-promise.js","node_modules/standardized-audio-context/src/helpers/create-audio-worklet-processor-promise.ts","node_modules/standardized-audio-context/build/es2019/helpers/clone-audio-worklet-node-options.js","node_modules/standardized-audio-context/src/helpers/clone-audio-worklet-node-options.ts","node_modules/standardized-audio-context/build/es2019/factories/native-biquad-filter-node.js","node_modules/standardized-audio-context/src/factories/native-biquad-filter-node.ts","node_modules/standardized-audio-context/build/es2019/factories/native-channel-merger-node-factory.js","node_modules/standardized-audio-context/src/factories/native-channel-merger-node-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-channel-splitter-node.js","node_modules/standardized-audio-context/src/factories/native-channel-splitter-node.ts","node_modules/standardized-audio-context/build/es2019/helpers/wrap-channel-splitter-node.js","node_modules/standardized-audio-context/src/helpers/wrap-channel-splitter-node.ts","node_modules/standardized-audio-context/build/es2019/factories/native-constant-source-node-factory.js","node_modules/standardized-audio-context/src/factories/native-constant-source-node-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-constant-source-node-faker-factory.js","node_modules/standardized-audio-context/src/factories/native-constant-source-node-faker-factory.ts","node_modules/standardized-audio-context/build/es2019/helpers/intercept-connections.js","node_modules/standardized-audio-context/src/helpers/intercept-connections.ts","node_modules/standardized-audio-context/build/es2019/factories/native-convolver-node-factory.js","node_modules/standardized-audio-context/src/factories/native-convolver-node-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-delay-node.js","node_modules/standardized-audio-context/src/factories/native-delay-node.ts","node_modules/standardized-audio-context/build/es2019/factories/native-dynamics-compressor-node-factory.js","node_modules/standardized-audio-context/src/factories/native-dynamics-compressor-node-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-gain-node.js","node_modules/standardized-audio-context/src/factories/native-gain-node.ts","node_modules/standardized-audio-context/build/es2019/factories/native-iir-filter-node-factory.js","node_modules/standardized-audio-context/src/factories/native-iir-filter-node-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-iir-filter-node-faker-factory.js","node_modules/standardized-audio-context/src/factories/native-iir-filter-node-faker-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-media-element-audio-source-node.js","node_modules/standardized-audio-context/src/factories/native-media-element-audio-source-node.ts","node_modules/standardized-audio-context/build/es2019/factories/native-media-stream-audio-destination-node.js","node_modules/standardized-audio-context/src/factories/native-media-stream-audio-destination-node.ts","node_modules/standardized-audio-context/build/es2019/factories/native-media-stream-audio-source-node.js","node_modules/standardized-audio-context/src/factories/native-media-stream-audio-source-node.ts","node_modules/standardized-audio-context/build/es2019/factories/native-media-stream-track-audio-source-node-factory.js","node_modules/standardized-audio-context/src/factories/native-media-stream-track-audio-source-node-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-offline-audio-context-constructor.js","node_modules/standardized-audio-context/src/factories/native-offline-audio-context-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/native-oscillator-node-factory.js","node_modules/standardized-audio-context/src/factories/native-oscillator-node-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-panner-node-factory.js","node_modules/standardized-audio-context/src/factories/native-panner-node-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-panner-node-faker-factory.js","node_modules/standardized-audio-context/src/factories/native-panner-node-faker-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-periodic-wave-factory.js","node_modules/standardized-audio-context/src/factories/native-periodic-wave-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-script-processor-node.js","node_modules/standardized-audio-context/src/factories/native-script-processor-node.ts","node_modules/standardized-audio-context/build/es2019/factories/native-stereo-panner-node-factory.js","node_modules/standardized-audio-context/src/factories/native-stereo-panner-node-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-stereo-panner-node-faker-factory.js","node_modules/standardized-audio-context/src/factories/native-stereo-panner-node-faker-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-wave-shaper-node-factory.js","node_modules/standardized-audio-context/src/factories/native-wave-shaper-node-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/native-wave-shaper-node-faker-factory.js","node_modules/standardized-audio-context/src/factories/native-wave-shaper-node-faker-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/not-supported-error.js","node_modules/standardized-audio-context/src/factories/not-supported-error.ts","node_modules/standardized-audio-context/build/es2019/factories/offline-audio-context-constructor.js","node_modules/standardized-audio-context/src/factories/offline-audio-context-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/oscillator-node-constructor.js","node_modules/standardized-audio-context/src/factories/oscillator-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/oscillator-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/oscillator-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/panner-node-constructor.js","node_modules/standardized-audio-context/src/factories/panner-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/panner-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/panner-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/periodic-wave-constructor.js","node_modules/standardized-audio-context/src/factories/periodic-wave-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/render-automation.js","node_modules/standardized-audio-context/src/factories/render-automation.ts","node_modules/standardized-audio-context/build/es2019/factories/render-inputs-of-audio-node.js","node_modules/standardized-audio-context/src/factories/render-inputs-of-audio-node.ts","node_modules/standardized-audio-context/build/es2019/factories/render-inputs-of-audio-param.js","node_modules/standardized-audio-context/src/factories/render-inputs-of-audio-param.ts","node_modules/standardized-audio-context/build/es2019/factories/render-native-offline-audio-context.js","node_modules/standardized-audio-context/src/factories/render-native-offline-audio-context.ts","node_modules/standardized-audio-context/build/es2019/factories/set-active-audio-worklet-node-inputs.js","node_modules/standardized-audio-context/src/factories/set-active-audio-worklet-node-inputs.ts","node_modules/standardized-audio-context/build/es2019/factories/set-audio-node-tail-time.js","node_modules/standardized-audio-context/src/factories/set-audio-node-tail-time.ts","node_modules/standardized-audio-context/build/es2019/factories/start-rendering.js","node_modules/standardized-audio-context/src/factories/start-rendering.ts","node_modules/standardized-audio-context/build/es2019/factories/stereo-panner-node-constructor.js","node_modules/standardized-audio-context/src/factories/stereo-panner-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/stereo-panner-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/stereo-panner-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/test-audio-buffer-constructor-support.js","node_modules/standardized-audio-context/src/factories/test-audio-buffer-constructor-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-audio-buffer-copy-channel-methods-subarray-support.js","node_modules/standardized-audio-context/src/factories/test-audio-buffer-copy-channel-methods-subarray-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-audio-context-close-method-support.js","node_modules/standardized-audio-context/src/factories/test-audio-context-close-method-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-audio-context-decode-audio-data-method-type-error-support.js","node_modules/standardized-audio-context/src/factories/test-audio-context-decode-audio-data-method-type-error-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-audio-context-options-support.js","node_modules/standardized-audio-context/src/factories/test-audio-context-options-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-audio-node-connect-method-support.js","node_modules/standardized-audio-context/src/factories/test-audio-node-connect-method-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-audio-worklet-processor-no-outputs-support.js","node_modules/standardized-audio-context/src/factories/test-audio-worklet-processor-no-outputs-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-audio-worklet-processor-post-message-support.js","node_modules/standardized-audio-context/src/factories/test-audio-worklet-processor-post-message-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-channel-merger-node-channel-count-support.js","node_modules/standardized-audio-context/src/factories/test-channel-merger-node-channel-count-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-constant-source-node-accurate-scheduling-support.js","node_modules/standardized-audio-context/src/factories/test-constant-source-node-accurate-scheduling-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-convolver-node-buffer-reassignability-support.js","node_modules/standardized-audio-context/src/factories/test-convolver-node-buffer-reassignability-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-convolver-node-channel-count-support.js","node_modules/standardized-audio-context/src/factories/test-convolver-node-channel-count-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-is-secure-context-support.js","node_modules/standardized-audio-context/src/factories/test-is-secure-context-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-media-stream-audio-source-node-media-stream-without-audio-track-support.js","node_modules/standardized-audio-context/src/factories/test-media-stream-audio-source-node-media-stream-without-audio-track-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-offline-audio-context-current-time-support.js","node_modules/standardized-audio-context/src/factories/test-offline-audio-context-current-time-support.ts","node_modules/standardized-audio-context/build/es2019/factories/test-stereo-panner-node-default-value-support.js","node_modules/standardized-audio-context/src/factories/test-stereo-panner-node-default-value-support.ts","node_modules/standardized-audio-context/build/es2019/factories/unknown-error.js","node_modules/standardized-audio-context/src/factories/unknown-error.ts","node_modules/standardized-audio-context/build/es2019/factories/wave-shaper-node-constructor.js","node_modules/standardized-audio-context/src/factories/wave-shaper-node-constructor.ts","node_modules/standardized-audio-context/build/es2019/factories/wave-shaper-node-renderer-factory.js","node_modules/standardized-audio-context/src/factories/wave-shaper-node-renderer-factory.ts","node_modules/standardized-audio-context/build/es2019/factories/window.js","node_modules/standardized-audio-context/src/factories/window.ts","node_modules/standardized-audio-context/build/es2019/factories/wrap-audio-buffer-copy-channel-methods.js","node_modules/standardized-audio-context/src/factories/wrap-audio-buffer-copy-channel-methods.ts","node_modules/standardized-audio-context/build/es2019/factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds.js","node_modules/standardized-audio-context/src/factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds.ts","node_modules/standardized-audio-context/build/es2019/factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer.js","node_modules/standardized-audio-context/src/factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer.ts","node_modules/standardized-audio-context/build/es2019/factories/wrap-channel-merger-node.js","node_modules/standardized-audio-context/src/factories/wrap-channel-merger-node.ts","node_modules/standardized-audio-context/build/es2019/helpers/get-first-sample.js","node_modules/standardized-audio-context/src/helpers/get-first-sample.ts","node_modules/standardized-audio-context/build/es2019/helpers/is-dc-curve.js","node_modules/standardized-audio-context/src/helpers/is-dc-curve.ts","node_modules/standardized-audio-context/build/es2019/helpers/overwrite-accessors.js","node_modules/standardized-audio-context/src/helpers/overwrite-accessors.ts","node_modules/standardized-audio-context/build/es2019/helpers/sanitize-audio-worklet-node-options.js","node_modules/standardized-audio-context/src/helpers/sanitize-audio-worklet-node-options.ts","node_modules/standardized-audio-context/build/es2019/helpers/sanitize-channel-splitter-options.js","node_modules/standardized-audio-context/src/helpers/sanitize-channel-splitter-options.ts","node_modules/standardized-audio-context/build/es2019/helpers/sanitize-periodic-wave-options.js","node_modules/standardized-audio-context/src/helpers/sanitize-periodic-wave-options.ts","node_modules/standardized-audio-context/build/es2019/helpers/set-value-at-time-until-possible.js","node_modules/standardized-audio-context/src/helpers/set-value-at-time-until-possible.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support.js","node_modules/standardized-audio-context/src/helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-source-node-start-method-offset-clamping-support.js","node_modules/standardized-audio-context/src/helpers/test-audio-buffer-source-node-start-method-offset-clamping-support.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support.js","node_modules/standardized-audio-context/src/helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support.js","node_modules/standardized-audio-context/src/helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support.js","node_modules/standardized-audio-context/src/helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support.js","node_modules/standardized-audio-context/src/helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-audio-worklet-node-options-clonability.js","node_modules/standardized-audio-context/src/helpers/test-audio-worklet-node-options-clonability.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-dom-exception-constructor-support.js","node_modules/standardized-audio-context/src/helpers/test-dom-exception-constructor-support.ts","node_modules/standardized-audio-context/build/es2019/helpers/test-transferables-support.js","node_modules/standardized-audio-context/src/helpers/test-transferables-support.ts","node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-buffer-source-node-start-method-offset-clamping.js","node_modules/standardized-audio-context/src/helpers/wrap-audio-buffer-source-node-start-method-offset-clamping.ts","node_modules/standardized-audio-context/build/es2019/helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls.js","node_modules/standardized-audio-context/src/helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls.ts","node_modules/standardized-audio-context/build/es2019/helpers/wrap-event-listener.js","node_modules/standardized-audio-context/src/helpers/wrap-event-listener.ts","node_modules/standardized-audio-context/build/es2019/interfaces/index.js","node_modules/standardized-audio-context/src/interfaces/index.ts","node_modules/standardized-audio-context/src/interfaces/analyser-node.ts","node_modules/standardized-audio-context/src/interfaces/analyser-options.ts","node_modules/standardized-audio-context/src/interfaces/audio-buffer.ts","node_modules/standardized-audio-context/src/interfaces/audio-buffer-options.ts","node_modules/standardized-audio-context/src/interfaces/audio-buffer-source-node.ts","node_modules/standardized-audio-context/src/interfaces/audio-buffer-source-node-renderer.ts","node_modules/standardized-audio-context/src/interfaces/audio-buffer-source-options.ts","node_modules/standardized-audio-context/src/interfaces/audio-context.ts","node_modules/standardized-audio-context/src/interfaces/audio-context-options.ts","node_modules/standardized-audio-context/src/interfaces/audio-destination-node.ts","node_modules/standardized-audio-context/src/interfaces/audio-listener.ts","node_modules/standardized-audio-context/src/interfaces/audio-node.ts","node_modules/standardized-audio-context/src/interfaces/audio-node-options.ts","node_modules/standardized-audio-context/src/interfaces/audio-node-renderer.ts","node_modules/standardized-audio-context/src/interfaces/audio-param.ts","node_modules/standardized-audio-context/src/interfaces/audio-param-descriptor.ts","node_modules/standardized-audio-context/src/interfaces/audio-param-renderer.ts","node_modules/standardized-audio-context/src/interfaces/audio-scheduled-source-node.ts","node_modules/standardized-audio-context/src/interfaces/audio-scheduled-source-node-event-map.ts","node_modules/standardized-audio-context/src/interfaces/audio-worklet.ts","node_modules/standardized-audio-context/src/interfaces/audio-worklet-node.ts","node_modules/standardized-audio-context/src/interfaces/audio-worklet-node-event-map.ts","node_modules/standardized-audio-context/src/interfaces/audio-worklet-node-options.ts","node_modules/standardized-audio-context/src/interfaces/audio-worklet-processor.ts","node_modules/standardized-audio-context/src/interfaces/audio-worklet-processor-constructor.ts","node_modules/standardized-audio-context/src/interfaces/automation.ts","node_modules/standardized-audio-context/src/interfaces/base-audio-context.ts","node_modules/standardized-audio-context/src/interfaces/biquad-filter-node.ts","node_modules/standardized-audio-context/src/interfaces/biquad-filter-options.ts","node_modules/standardized-audio-context/src/interfaces/channel-merger-options.ts","node_modules/standardized-audio-context/src/interfaces/channel-splitter-options.ts","node_modules/standardized-audio-context/src/interfaces/common-audio-context.ts","node_modules/standardized-audio-context/src/interfaces/common-offline-audio-context.ts","node_modules/standardized-audio-context/src/interfaces/constant-source-node.ts","node_modules/standardized-audio-context/src/interfaces/constant-source-node-renderer.ts","node_modules/standardized-audio-context/src/interfaces/constant-source-options.ts","node_modules/standardized-audio-context/src/interfaces/convolver-node.ts","node_modules/standardized-audio-context/src/interfaces/convolver-options.ts","node_modules/standardized-audio-context/src/interfaces/delay-node.ts","node_modules/standardized-audio-context/src/interfaces/delay-options.ts","node_modules/standardized-audio-context/src/interfaces/dynamics-compressor-node.ts","node_modules/standardized-audio-context/src/interfaces/dynamics-compressor-options.ts","node_modules/standardized-audio-context/src/interfaces/event-target.ts","node_modules/standardized-audio-context/src/interfaces/gain-node.ts","node_modules/standardized-audio-context/src/interfaces/gain-options.ts","node_modules/standardized-audio-context/src/interfaces/iir-filter-node.ts","node_modules/standardized-audio-context/src/interfaces/iir-filter-options.ts","node_modules/standardized-audio-context/src/interfaces/media-element-audio-source-node.ts","node_modules/standardized-audio-context/src/interfaces/media-element-audio-source-options.ts","node_modules/standardized-audio-context/src/interfaces/media-stream-audio-destination-node.ts","node_modules/standardized-audio-context/src/interfaces/media-stream-audio-source-node.ts","node_modules/standardized-audio-context/src/interfaces/media-stream-audio-source-options.ts","node_modules/standardized-audio-context/src/interfaces/media-stream-track-audio-source-node.ts","node_modules/standardized-audio-context/src/interfaces/media-stream-track-audio-source-options.ts","node_modules/standardized-audio-context/src/interfaces/minimal-audio-context.ts","node_modules/standardized-audio-context/src/interfaces/minimal-base-audio-context.ts","node_modules/standardized-audio-context/src/interfaces/minimal-base-audio-context-event-map.ts","node_modules/standardized-audio-context/src/interfaces/minimal-offline-audio-context.ts","node_modules/standardized-audio-context/src/interfaces/native-audio-node-faker.ts","node_modules/standardized-audio-context/src/interfaces/native-audio-worklet-node-faker.ts","node_modules/standardized-audio-context/src/interfaces/native-constant-source-node-faker.ts","node_modules/standardized-audio-context/src/interfaces/native-convolver-node-faker.ts","node_modules/standardized-audio-context/src/interfaces/native-iir-filter-node-faker.ts","node_modules/standardized-audio-context/src/interfaces/native-panner-node-faker.ts","node_modules/standardized-audio-context/src/interfaces/native-stereo-panner-node-faker.ts","node_modules/standardized-audio-context/src/interfaces/native-wave-shaper-node-faker.ts","node_modules/standardized-audio-context/src/interfaces/offline-audio-completion-event.ts","node_modules/standardized-audio-context/src/interfaces/offline-audio-context.ts","node_modules/standardized-audio-context/src/interfaces/offline-audio-context-constructor.ts","node_modules/standardized-audio-context/src/interfaces/offline-audio-context-options.ts","node_modules/standardized-audio-context/src/interfaces/oscillator-node.ts","node_modules/standardized-audio-context/src/interfaces/oscillator-node-renderer.ts","node_modules/standardized-audio-context/src/interfaces/oscillator-options.ts","node_modules/standardized-audio-context/src/interfaces/panner-node.ts","node_modules/standardized-audio-context/src/interfaces/panner-options.ts","node_modules/standardized-audio-context/src/interfaces/periodic-wave.ts","node_modules/standardized-audio-context/src/interfaces/periodic-wave-constraints.ts","node_modules/standardized-audio-context/src/interfaces/periodic-wave-options.ts","node_modules/standardized-audio-context/src/interfaces/read-only-map.ts","node_modules/standardized-audio-context/src/interfaces/stereo-panner-node.ts","node_modules/standardized-audio-context/src/interfaces/stereo-panner-options.ts","node_modules/standardized-audio-context/src/interfaces/wave-shaper-node.ts","node_modules/standardized-audio-context/src/interfaces/wave-shaper-options.ts","node_modules/standardized-audio-context/src/interfaces/worklet-options.ts","node_modules/standardized-audio-context/build/es2019/types/index.js","node_modules/standardized-audio-context/src/types/index.ts","node_modules/standardized-audio-context/src/types/abort-error-factory.ts","node_modules/standardized-audio-context/src/types/active-audio-worklet-node-inputs-store.ts","node_modules/standardized-audio-context/src/types/active-input-connection.ts","node_modules/standardized-audio-context/src/types/add-active-input-connection-to-audio-node-factory.ts","node_modules/standardized-audio-context/src/types/add-active-input-connection-to-audio-node-function.ts","node_modules/standardized-audio-context/src/types/add-audio-node-connections-factory.ts","node_modules/standardized-audio-context/src/types/add-audio-node-connections-function.ts","node_modules/standardized-audio-context/src/types/add-audio-param-connections-factory.ts","node_modules/standardized-audio-context/src/types/add-audio-param-connections-function.ts","node_modules/standardized-audio-context/src/types/add-audio-worklet-module-factory.ts","node_modules/standardized-audio-context/src/types/add-audio-worklet-module-function.ts","node_modules/standardized-audio-context/src/types/add-connection-to-audio-node-factory.ts","node_modules/standardized-audio-context/src/types/add-connection-to-audio-node-function.ts","node_modules/standardized-audio-context/src/types/add-passive-input-connection-to-audio-node-factory.ts","node_modules/standardized-audio-context/src/types/add-passive-input-connection-to-audio-node-function.ts","node_modules/standardized-audio-context/src/types/add-silent-connection-factory.ts","node_modules/standardized-audio-context/src/types/add-silent-connection-function.ts","node_modules/standardized-audio-context/src/types/add-unrendered-audio-worklet-node-factory.ts","node_modules/standardized-audio-context/src/types/add-unrendered-audio-worklet-node-function.ts","node_modules/standardized-audio-context/src/types/analyser-node-constructor.ts","node_modules/standardized-audio-context/src/types/analyser-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/analyser-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/analyser-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/any-audio-buffer.ts","node_modules/standardized-audio-context/src/types/any-context.ts","node_modules/standardized-audio-context/src/types/audio-buffer-constructor.ts","node_modules/standardized-audio-context/src/types/audio-buffer-constructor-factory.ts","node_modules/standardized-audio-context/src/types/audio-buffer-source-node-constructor.ts","node_modules/standardized-audio-context/src/types/audio-buffer-source-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/audio-buffer-source-node-renderer.ts","node_modules/standardized-audio-context/src/types/audio-buffer-source-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/audio-buffer-source-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/audio-buffer-store.ts","node_modules/standardized-audio-context/src/types/audio-context-constructor.ts","node_modules/standardized-audio-context/src/types/audio-context-constructor-factory.ts","node_modules/standardized-audio-context/src/types/audio-context-latency-category.ts","node_modules/standardized-audio-context/src/types/audio-context-state.ts","node_modules/standardized-audio-context/src/types/audio-destination-node-constructor.ts","node_modules/standardized-audio-context/src/types/audio-destination-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/audio-destination-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/audio-listener-factory.ts","node_modules/standardized-audio-context/src/types/audio-listener-factory-factory.ts","node_modules/standardized-audio-context/src/types/audio-node-connections.ts","node_modules/standardized-audio-context/src/types/audio-node-connections-store.ts","node_modules/standardized-audio-context/src/types/audio-node-constructor.ts","node_modules/standardized-audio-context/src/types/audio-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/audio-node-output-connection.ts","node_modules/standardized-audio-context/src/types/audio-node-renderer.ts","node_modules/standardized-audio-context/src/types/audio-node-store.ts","node_modules/standardized-audio-context/src/types/audio-node-tail-time-store.ts","node_modules/standardized-audio-context/src/types/audio-param-audio-node-store.ts","node_modules/standardized-audio-context/src/types/audio-param-connections.ts","node_modules/standardized-audio-context/src/types/audio-param-connections-store.ts","node_modules/standardized-audio-context/src/types/audio-param-factory.ts","node_modules/standardized-audio-context/src/types/audio-param-factory-factory.ts","node_modules/standardized-audio-context/src/types/audio-param-map.ts","node_modules/standardized-audio-context/src/types/audio-param-output-connection.ts","node_modules/standardized-audio-context/src/types/audio-param-renderer-factory.ts","node_modules/standardized-audio-context/src/types/audio-param-store.ts","node_modules/standardized-audio-context/src/types/audio-worklet-node-constructor.ts","node_modules/standardized-audio-context/src/types/audio-worklet-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/audio-worklet-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/audio-worklet-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/backup-offline-audio-context-store.ts","node_modules/standardized-audio-context/src/types/base-audio-context-constructor.ts","node_modules/standardized-audio-context/src/types/base-audio-context-constructor-factory.ts","node_modules/standardized-audio-context/src/types/biquad-filter-node-constructor.ts","node_modules/standardized-audio-context/src/types/biquad-filter-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/biquad-filter-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/biquad-filter-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/biquad-filter-type.ts","node_modules/standardized-audio-context/src/types/channel-count-mode.ts","node_modules/standardized-audio-context/src/types/channel-interpretation.ts","node_modules/standardized-audio-context/src/types/channel-merger-node-constructor.ts","node_modules/standardized-audio-context/src/types/channel-merger-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/channel-merger-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/channel-merger-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/channel-splitter-node-constructor.ts","node_modules/standardized-audio-context/src/types/channel-splitter-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/channel-splitter-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/channel-splitter-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/cache-test-result-factory.ts","node_modules/standardized-audio-context/src/types/cache-test-result-function.ts","node_modules/standardized-audio-context/src/types/connect-audio-param-factory.ts","node_modules/standardized-audio-context/src/types/connect-audio-param-function.ts","node_modules/standardized-audio-context/src/types/connect-multiple-outputs-factory.ts","node_modules/standardized-audio-context/src/types/connect-multiple-outputs-function.ts","node_modules/standardized-audio-context/src/types/connect-native-audio-node-to-native-audio-node-function.ts","node_modules/standardized-audio-context/src/types/connected-native-audio-buffer-source-node-factory.ts","node_modules/standardized-audio-context/src/types/connected-native-audio-buffer-source-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/constant-source-node-constructor.ts","node_modules/standardized-audio-context/src/types/constant-source-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/constant-source-node-renderer.ts","node_modules/standardized-audio-context/src/types/constant-source-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/constant-source-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/constructor.ts","node_modules/standardized-audio-context/src/types/context.ts","node_modules/standardized-audio-context/src/types/context-store.ts","node_modules/standardized-audio-context/src/types/convert-number-to-unsigned-long-factory.ts","node_modules/standardized-audio-context/src/types/convert-number-to-unsigned-long-function.ts","node_modules/standardized-audio-context/src/types/convolver-node-constructor.ts","node_modules/standardized-audio-context/src/types/convolver-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/convolver-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/convolver-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/create-native-offline-audio-context-factory.ts","node_modules/standardized-audio-context/src/types/create-native-offline-audio-context-function.ts","node_modules/standardized-audio-context/src/types/cycle-counters.ts","node_modules/standardized-audio-context/src/types/data-clone-error-factory.ts","node_modules/standardized-audio-context/src/types/decode-audio-data-factory.ts","node_modules/standardized-audio-context/src/types/decode-audio-data-function.ts","node_modules/standardized-audio-context/src/types/decode-error-callback.ts","node_modules/standardized-audio-context/src/types/decode-success-callback.ts","node_modules/standardized-audio-context/src/types/decrement-cycle-counter-factory.ts","node_modules/standardized-audio-context/src/types/decrement-cycle-counter-function.ts","node_modules/standardized-audio-context/src/types/delay-node-constructor.ts","node_modules/standardized-audio-context/src/types/delay-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/delay-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/delay-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/delete-active-input-connection-to-audio-node-factory.ts","node_modules/standardized-audio-context/src/types/delete-active-input-connection-to-audio-node-function.ts","node_modules/standardized-audio-context/src/types/delete-unrendered-audio-worklet-node-factory.ts","node_modules/standardized-audio-context/src/types/delete-unrendered-audio-worklet-node-function.ts","node_modules/standardized-audio-context/src/types/detect-cycles-factory.ts","node_modules/standardized-audio-context/src/types/detect-cycles-function.ts","node_modules/standardized-audio-context/src/types/disconnect-multiple-outputs-factory.ts","node_modules/standardized-audio-context/src/types/disconnect-multiple-outputs-function.ts","node_modules/standardized-audio-context/src/types/disconnect-native-audio-node-from-native-audio-node-function.ts","node_modules/standardized-audio-context/src/types/distance-model-type.ts","node_modules/standardized-audio-context/src/types/dynamics-compressor-node-constructor.ts","node_modules/standardized-audio-context/src/types/dynamics-compressor-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/dynamics-compressor-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/dynamics-compressor-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/encoding-error-factory.ts","node_modules/standardized-audio-context/src/types/error-event-handler.ts","node_modules/standardized-audio-context/src/types/evaluate-audio-worklet-global-scope-function.ts","node_modules/standardized-audio-context/src/types/evaluate-source-factory.ts","node_modules/standardized-audio-context/src/types/evaluate-source-function.ts","node_modules/standardized-audio-context/src/types/event-handler.ts","node_modules/standardized-audio-context/src/types/event-target-constructor.ts","node_modules/standardized-audio-context/src/types/event-target-constructor-factory.ts","node_modules/standardized-audio-context/src/types/expose-current-frame-and-current-time-factory.ts","node_modules/standardized-audio-context/src/types/expose-current-frame-and-current-time-function.ts","node_modules/standardized-audio-context/src/types/fetch-source-factory.ts","node_modules/standardized-audio-context/src/types/fetch-source-function.ts","node_modules/standardized-audio-context/src/types/gain-node-constructor.ts","node_modules/standardized-audio-context/src/types/gain-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/gain-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/gain-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/get-active-audio-worklet-node-inputs-factory.ts","node_modules/standardized-audio-context/src/types/get-active-audio-worklet-node-inputs-function.ts","node_modules/standardized-audio-context/src/types/get-audio-node-connections-function.ts","node_modules/standardized-audio-context/src/types/get-audio-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/get-audio-node-renderer-function.ts","node_modules/standardized-audio-context/src/types/get-audio-node-tail-time-factory.ts","node_modules/standardized-audio-context/src/types/get-audio-node-tail-time-function.ts","node_modules/standardized-audio-context/src/types/get-audio-param-connections-function.ts","node_modules/standardized-audio-context/src/types/get-audio-param-renderer-factory.ts","node_modules/standardized-audio-context/src/types/get-audio-param-renderer-function.ts","node_modules/standardized-audio-context/src/types/get-backup-offline-audio-context-factory.ts","node_modules/standardized-audio-context/src/types/get-backup-offline-audio-context-function.ts","node_modules/standardized-audio-context/src/types/get-event-listeners-of-audio-node-function.ts","node_modules/standardized-audio-context/src/types/get-first-sample-function.ts","node_modules/standardized-audio-context/src/types/get-native-audio-node-function.ts","node_modules/standardized-audio-context/src/types/get-native-audio-param-function.ts","node_modules/standardized-audio-context/src/types/get-native-context-factory.ts","node_modules/standardized-audio-context/src/types/get-native-context-function.ts","node_modules/standardized-audio-context/src/types/get-or-create-backup-offline-audio-context-factory.ts","node_modules/standardized-audio-context/src/types/get-or-create-backup-offline-audio-context-function.ts","node_modules/standardized-audio-context/src/types/get-unrendered-audio-worklet-nodes-factory.ts","node_modules/standardized-audio-context/src/types/get-unrendered-audio-worklet-nodes-function.ts","node_modules/standardized-audio-context/src/types/get-value-for-key-function.ts","node_modules/standardized-audio-context/src/types/iir-filter-node-constructor.ts","node_modules/standardized-audio-context/src/types/iir-filter-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/iir-filter-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/iir-filter-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/increment-cycle-counter-factory.ts","node_modules/standardized-audio-context/src/types/increment-cycle-counter-factory-factory.ts","node_modules/standardized-audio-context/src/types/increment-cycle-counter-function.ts","node_modules/standardized-audio-context/src/types/index-size-error-factory.ts","node_modules/standardized-audio-context/src/types/insert-element-in-set-function.ts","node_modules/standardized-audio-context/src/types/internal-state-event-listener.ts","node_modules/standardized-audio-context/src/types/invalid-access-error-factory.ts","node_modules/standardized-audio-context/src/types/invalid-state-error-factory.ts","node_modules/standardized-audio-context/src/types/is-active-audio-node-function.ts","node_modules/standardized-audio-context/src/types/is-any-audio-context-factory.ts","node_modules/standardized-audio-context/src/types/is-any-audio-context-function.ts","node_modules/standardized-audio-context/src/types/is-any-audio-node-factory.ts","node_modules/standardized-audio-context/src/types/is-any-audio-node-function.ts","node_modules/standardized-audio-context/src/types/is-any-audio-param-factory.ts","node_modules/standardized-audio-context/src/types/is-any-audio-param-function.ts","node_modules/standardized-audio-context/src/types/is-any-offline-audio-context-factory.ts","node_modules/standardized-audio-context/src/types/is-any-offline-audio-context-function.ts","node_modules/standardized-audio-context/src/types/is-dc-curve-function.ts","node_modules/standardized-audio-context/src/types/is-native-audio-context-factory.ts","node_modules/standardized-audio-context/src/types/is-native-audio-context-function.ts","node_modules/standardized-audio-context/src/types/is-native-audio-node-factory.ts","node_modules/standardized-audio-context/src/types/is-native-audio-node-function.ts","node_modules/standardized-audio-context/src/types/is-native-audio-param-factory.ts","node_modules/standardized-audio-context/src/types/is-native-audio-param-function.ts","node_modules/standardized-audio-context/src/types/is-native-context-factory.ts","node_modules/standardized-audio-context/src/types/is-native-context-function.ts","node_modules/standardized-audio-context/src/types/is-native-offline-audio-context-factory.ts","node_modules/standardized-audio-context/src/types/is-native-offline-audio-context-function.ts","node_modules/standardized-audio-context/src/types/is-part-of-a-cycle-function.ts","node_modules/standardized-audio-context/src/types/is-passive-audio-node-function.ts","node_modules/standardized-audio-context/src/types/is-secure-context-factory.ts","node_modules/standardized-audio-context/src/types/is-supported-promise-factory.ts","node_modules/standardized-audio-context/src/types/media-element-audio-source-node-constructor.ts","node_modules/standardized-audio-context/src/types/media-element-audio-source-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/media-stream-audio-destination-node-constructor.ts","node_modules/standardized-audio-context/src/types/media-stream-audio-destination-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/media-stream-audio-source-node-constructor.ts","node_modules/standardized-audio-context/src/types/media-stream-audio-source-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/media-stream-track-audio-source-node-constructor.ts","node_modules/standardized-audio-context/src/types/media-stream-track-audio-source-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/minimal-audio-context-constructor.ts","node_modules/standardized-audio-context/src/types/minimal-audio-context-constructor-factory.ts","node_modules/standardized-audio-context/src/types/minimal-base-audio-context-constructor.ts","node_modules/standardized-audio-context/src/types/minimal-base-audio-context-constructor-factory.ts","node_modules/standardized-audio-context/src/types/minimal-offline-audio-context-constructor.ts","node_modules/standardized-audio-context/src/types/minimal-offline-audio-context-constructor-factory.ts","node_modules/standardized-audio-context/src/types/monitor-connections-factory.ts","node_modules/standardized-audio-context/src/types/monitor-connections-function.ts","node_modules/standardized-audio-context/src/types/native-analyser-node.ts","node_modules/standardized-audio-context/src/types/native-analyser-node-factory.ts","node_modules/standardized-audio-context/src/types/native-analyser-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-buffer.ts","node_modules/standardized-audio-context/src/types/native-audio-buffer-constructor.ts","node_modules/standardized-audio-context/src/types/native-audio-buffer-constructor-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-buffer-source-node.ts","node_modules/standardized-audio-context/src/types/native-audio-buffer-source-node-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-buffer-source-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-context.ts","node_modules/standardized-audio-context/src/types/native-audio-context-constructor.ts","node_modules/standardized-audio-context/src/types/native-audio-context-constructor-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-destination-node.ts","node_modules/standardized-audio-context/src/types/native-audio-destination-node-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-destination-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-listener.ts","node_modules/standardized-audio-context/src/types/native-audio-node.ts","node_modules/standardized-audio-context/src/types/native-audio-param.ts","node_modules/standardized-audio-context/src/types/native-audio-param-map.ts","node_modules/standardized-audio-context/src/types/native-audio-worklet.ts","node_modules/standardized-audio-context/src/types/native-audio-worklet-node.ts","node_modules/standardized-audio-context/src/types/native-audio-worklet-node-constructor.ts","node_modules/standardized-audio-context/src/types/native-audio-worklet-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-worklet-node-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-worklet-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-worklet-node-faker-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-worklet-node-faker-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-audio-worklet-node-options.ts","node_modules/standardized-audio-context/src/types/native-biquad-filter-node.ts","node_modules/standardized-audio-context/src/types/native-biquad-filter-node-factory.ts","node_modules/standardized-audio-context/src/types/native-channel-merger-node.ts","node_modules/standardized-audio-context/src/types/native-channel-merger-node-factory.ts","node_modules/standardized-audio-context/src/types/native-channel-merger-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-channel-splitter-node.ts","node_modules/standardized-audio-context/src/types/native-channel-splitter-node-factory.ts","node_modules/standardized-audio-context/src/types/native-constant-source-node.ts","node_modules/standardized-audio-context/src/types/native-constant-source-node-factory.ts","node_modules/standardized-audio-context/src/types/native-constant-source-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-constant-source-node-faker-factory.ts","node_modules/standardized-audio-context/src/types/native-constant-source-node-faker-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-context.ts","node_modules/standardized-audio-context/src/types/native-convolver-node.ts","node_modules/standardized-audio-context/src/types/native-convolver-node-factory.ts","node_modules/standardized-audio-context/src/types/native-convolver-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-delay-node-factory.ts","node_modules/standardized-audio-context/src/types/native-delay-node.ts","node_modules/standardized-audio-context/src/types/native-dynamics-compressor-node.ts","node_modules/standardized-audio-context/src/types/native-dynamics-compressor-node-factory.ts","node_modules/standardized-audio-context/src/types/native-dynamics-compressor-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-event-target.ts","node_modules/standardized-audio-context/src/types/native-gain-node.ts","node_modules/standardized-audio-context/src/types/native-gain-node-factory.ts","node_modules/standardized-audio-context/src/types/native-iir-filter-node.ts","node_modules/standardized-audio-context/src/types/native-iir-filter-node-factory.ts","node_modules/standardized-audio-context/src/types/native-iir-filter-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-iir-filter-node-faker-factory.ts","node_modules/standardized-audio-context/src/types/native-iir-filter-node-faker-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-media-element-audio-source-node.ts","node_modules/standardized-audio-context/src/types/native-media-element-audio-source-node-factory.ts","node_modules/standardized-audio-context/src/types/native-media-stream-audio-destination-node.ts","node_modules/standardized-audio-context/src/types/native-media-stream-audio-destination-node-factory.ts","node_modules/standardized-audio-context/src/types/native-media-stream-audio-source-node.ts","node_modules/standardized-audio-context/src/types/native-media-stream-audio-source-node-factory.ts","node_modules/standardized-audio-context/src/types/native-media-stream-track-audio-source-node.ts","node_modules/standardized-audio-context/src/types/native-media-stream-track-audio-source-node-factory.ts","node_modules/standardized-audio-context/src/types/native-media-stream-track-audio-source-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-offline-audio-context.ts","node_modules/standardized-audio-context/src/types/native-offline-audio-context-constructor.ts","node_modules/standardized-audio-context/src/types/native-offline-audio-context-constructor-factory.ts","node_modules/standardized-audio-context/src/types/native-oscillator-node.ts","node_modules/standardized-audio-context/src/types/native-oscillator-node-factory.ts","node_modules/standardized-audio-context/src/types/native-oscillator-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-panner-node.ts","node_modules/standardized-audio-context/src/types/native-panner-node-factory.ts","node_modules/standardized-audio-context/src/types/native-panner-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-panner-node-faker-factory.ts","node_modules/standardized-audio-context/src/types/native-panner-node-faker-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-periodic-wave.ts","node_modules/standardized-audio-context/src/types/native-periodic-wave-factory.ts","node_modules/standardized-audio-context/src/types/native-periodic-wave-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-script-processor-node.ts","node_modules/standardized-audio-context/src/types/native-script-processor-node-factory.ts","node_modules/standardized-audio-context/src/types/native-stereo-panner-node.ts","node_modules/standardized-audio-context/src/types/native-stereo-panner-node-factory.ts","node_modules/standardized-audio-context/src/types/native-stereo-panner-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-stereo-panner-node-faker-factory.ts","node_modules/standardized-audio-context/src/types/native-stereo-panner-node-faker-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-wave-shaper-node.ts","node_modules/standardized-audio-context/src/types/native-wave-shaper-node-factory.ts","node_modules/standardized-audio-context/src/types/native-wave-shaper-node-factory-factory.ts","node_modules/standardized-audio-context/src/types/native-wave-shaper-node-faker-factory.ts","node_modules/standardized-audio-context/src/types/native-wave-shaper-node-faker-factory-factory.ts","node_modules/standardized-audio-context/src/types/not-supported-error-factory.ts","node_modules/standardized-audio-context/src/types/offline-audio-context-constructor-factory.ts","node_modules/standardized-audio-context/src/types/oscillator-node-constructor.ts","node_modules/standardized-audio-context/src/types/oscillator-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/oscillator-node-renderer.ts","node_modules/standardized-audio-context/src/types/oscillator-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/oscillator-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/oscillator-type.ts","node_modules/standardized-audio-context/src/types/output-connection.ts","node_modules/standardized-audio-context/src/types/over-sample-type.ts","node_modules/standardized-audio-context/src/types/overwrite-accessors-function.ts","node_modules/standardized-audio-context/src/types/panner-node-constructor.ts","node_modules/standardized-audio-context/src/types/panner-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/panner-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/panner-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/panning-model-type.ts","node_modules/standardized-audio-context/src/types/passive-audio-node-input-connection.ts","node_modules/standardized-audio-context/src/types/passive-audio-param-input-connection.ts","node_modules/standardized-audio-context/src/types/periodic-wave-constructor.ts","node_modules/standardized-audio-context/src/types/periodic-wave-constructor-factory.ts","node_modules/standardized-audio-context/src/types/pick-element-from-set-function.ts","node_modules/standardized-audio-context/src/types/render-automation-factory.ts","node_modules/standardized-audio-context/src/types/render-automation-function.ts","node_modules/standardized-audio-context/src/types/render-inputs-of-audio-node-factory.ts","node_modules/standardized-audio-context/src/types/render-inputs-of-audio-node-function.ts","node_modules/standardized-audio-context/src/types/render-inputs-of-audio-param-factory.ts","node_modules/standardized-audio-context/src/types/render-inputs-of-audio-param-function.ts","node_modules/standardized-audio-context/src/types/render-native-offline-audio-context-factory.ts","node_modules/standardized-audio-context/src/types/render-native-offline-audio-context-function.ts","node_modules/standardized-audio-context/src/types/sanitize-audio-worklet-node-options-function.ts","node_modules/standardized-audio-context/src/types/sanitize-channel-splitter-options-function.ts","node_modules/standardized-audio-context/src/types/sanitize-periodic-wave-options-function.ts","node_modules/standardized-audio-context/src/types/set-active-audio-worklet-node-inputs-factory.ts","node_modules/standardized-audio-context/src/types/set-active-audio-worklet-node-inputs-function.ts","node_modules/standardized-audio-context/src/types/set-audio-node-tail-time-factory.ts","node_modules/standardized-audio-context/src/types/set-audio-node-tail-time-function.ts","node_modules/standardized-audio-context/src/types/set-value-at-time-until-possible-function.ts","node_modules/standardized-audio-context/src/types/start-rendering-factory.ts","node_modules/standardized-audio-context/src/types/start-rendering-function.ts","node_modules/standardized-audio-context/src/types/stereo-panner-node-constructor.ts","node_modules/standardized-audio-context/src/types/stereo-panner-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/stereo-panner-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/stereo-panner-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/test-audio-buffer-copy-channel-methods-subarray-support-factory.ts","node_modules/standardized-audio-context/src/types/test-audio-buffer-constructor-support-factory.ts","node_modules/standardized-audio-context/src/types/test-audio-context-close-method-support-factory.ts","node_modules/standardized-audio-context/src/types/test-audio-context-decode-audio-data-method-type-error-support-factory.ts","node_modules/standardized-audio-context/src/types/test-audio-context-options-support-factory.ts","node_modules/standardized-audio-context/src/types/test-audio-node-connect-method-support-factory.ts","node_modules/standardized-audio-context/src/types/test-audio-worklet-node-options-clonability-function.ts","node_modules/standardized-audio-context/src/types/test-audio-worklet-processor-no-outputs-support-factory.ts","node_modules/standardized-audio-context/src/types/test-audio-worklet-processor-post-message-support-factory.ts","node_modules/standardized-audio-context/src/types/test-channel-merger-node-channel-count-support-factory.ts","node_modules/standardized-audio-context/src/types/test-constant-source-node-accurate-scheduling-support-factory.ts","node_modules/standardized-audio-context/src/types/test-convolver-node-buffer-reassignability-support-factory.ts","node_modules/standardized-audio-context/src/types/test-convolver-node-channel-count-support-factory.ts","node_modules/standardized-audio-context/src/types/test-is-secure-context-support-factory.ts","node_modules/standardized-audio-context/src/types/test-media-stream-audio-source-node-media-stream-without-audio-track-support.ts","node_modules/standardized-audio-context/src/types/test-offline-audio-context-current-time-support-factory.ts","node_modules/standardized-audio-context/src/types/test-stereo-panner-node-default-value-support-factory.ts","node_modules/standardized-audio-context/src/types/unknown-error-factory.ts","node_modules/standardized-audio-context/src/types/unrendered-audio-worklet-node-store.ts","node_modules/standardized-audio-context/src/types/unrendered-audio-worklet-nodes.ts","node_modules/standardized-audio-context/src/types/wave-shaper-node-constructor.ts","node_modules/standardized-audio-context/src/types/wave-shaper-node-constructor-factory.ts","node_modules/standardized-audio-context/src/types/wave-shaper-node-renderer-factory-factory.ts","node_modules/standardized-audio-context/src/types/wave-shaper-node-renderer-factory.ts","node_modules/standardized-audio-context/src/types/window.ts","node_modules/standardized-audio-context/src/types/window-factory.ts","node_modules/standardized-audio-context/src/types/wrap-audio-buffer-copy-channel-methods-factory.ts","node_modules/standardized-audio-context/src/types/wrap-audio-buffer-copy-channel-methods-function.ts","node_modules/standardized-audio-context/src/types/wrap-audio-buffer-copy-channel-methods-out-of-bounds-factory.ts","node_modules/standardized-audio-context/src/types/wrap-audio-buffer-copy-channel-methods-out-of-bounds-function.ts","node_modules/standardized-audio-context/src/types/wrap-audio-buffer-source-node-start-method-offset-clamping-function.ts","node_modules/standardized-audio-context/src/types/wrap-audio-buffer-source-node-stop-method-nullified-buffer-factory.ts","node_modules/standardized-audio-context/src/types/wrap-audio-buffer-source-node-stop-method-nullified-buffer-function.ts","node_modules/standardized-audio-context/src/types/wrap-audio-scheduled-source-node-stop-method-consecutive-calls-function.ts","node_modules/standardized-audio-context/src/types/wrap-channel-merger-node-factory.ts","node_modules/standardized-audio-context/src/types/wrap-channel-merger-node-function.ts","node_modules/standardized-audio-context/src/types/wrap-event-listener-function.ts","node_modules/tone/build/esm/core/util/Debug.js","node_modules/tone/Tone/core/util/Debug.ts","node_modules/tone/build/esm/core/util/TypeCheck.js","node_modules/tone/Tone/core/util/TypeCheck.ts","node_modules/tone/build/esm/core/context/Context.js","node_modules/tone/Tone/core/context/Context.ts","node_modules/tslib/tslib.es6.js","node_modules/tone/build/esm/core/clock/Ticker.js","node_modules/tone/Tone/core/clock/Ticker.ts","node_modules/tone/build/esm/core/util/AdvancedTypeCheck.js","node_modules/tone/Tone/core/util/AdvancedTypeCheck.ts","node_modules/tone/build/esm/core/util/Defaults.js","node_modules/tone/Tone/core/util/Defaults.ts","node_modules/tone/build/esm/core/util/Timeline.js","node_modules/tone/Tone/core/util/Timeline.ts","node_modules/tone/build/esm/core/Tone.js","node_modules/tone/Tone/core/Tone.ts","node_modules/tone/build/esm/core/util/Math.js","node_modules/tone/Tone/core/util/Math.ts","node_modules/tone/build/esm/core/context/ContextInitialization.js","node_modules/tone/Tone/core/context/ContextInitialization.ts","node_modules/tone/build/esm/core/context/BaseContext.js","node_modules/tone/Tone/core/context/BaseContext.ts","node_modules/tone/build/esm/core/util/Emitter.js","node_modules/tone/Tone/core/util/Emitter.ts","node_modules/tone/build/esm/core/context/DummyContext.js","node_modules/tone/Tone/core/context/DummyContext.ts","node_modules/tone/build/esm/core/context/OfflineContext.js","node_modules/tone/Tone/core/context/OfflineContext.ts","node_modules/tone/build/esm/core/context/ToneAudioBuffer.js","node_modules/tone/Tone/core/context/ToneAudioBuffer.ts","node_modules/tone/build/esm/core/util/Interface.js","node_modules/tone/Tone/core/util/Interface.ts","node_modules/tone/build/esm/core/context/ToneAudioBuffers.js","node_modules/tone/Tone/core/context/ToneAudioBuffers.ts","node_modules/tone/build/esm/source/buffer/ToneBufferSource.js","node_modules/tone/Tone/source/buffer/ToneBufferSource.ts","node_modules/tone/build/esm/core/context/ToneAudioNode.js","node_modules/tone/Tone/core/context/ToneAudioNode.ts","node_modules/tone/build/esm/core/context/Param.js","node_modules/tone/Tone/core/context/Param.ts","node_modules/tone/build/esm/core/type/Conversions.js","node_modules/tone/Tone/core/type/Conversions.ts","node_modules/tone/build/esm/core/context/ToneWithContext.js","node_modules/tone/Tone/core/context/ToneWithContext.ts","node_modules/tone/build/esm/core/type/Frequency.js","node_modules/tone/Tone/core/type/Frequency.ts","node_modules/tone/build/esm/core/type/Time.js","node_modules/tone/Tone/core/type/Time.ts","node_modules/tone/build/esm/core/type/TimeBase.js","node_modules/tone/Tone/core/type/TimeBase.ts","node_modules/tone/build/esm/core/type/TransportTime.js","node_modules/tone/Tone/core/type/TransportTime.ts","node_modules/tone/build/esm/source/OneShotSource.js","node_modules/tone/Tone/source/OneShotSource.ts","node_modules/tone/build/esm/core/context/Gain.js","node_modules/tone/Tone/core/context/Gain.ts","node_modules/tone/build/esm/classes.js","node_modules/tone/Tone/classes.ts","node_modules/tone/build/esm/core/index.js","node_modules/tone/Tone/core/index.ts","node_modules/tone/build/esm/core/util/Draw.js","node_modules/tone/Tone/core/util/Draw.ts","node_modules/tone/build/esm/core/type/Units.js","node_modules/tone/Tone/core/type/Units.ts","node_modules/tone/Tone/core/type/NoteUnits.ts","node_modules/tone/build/esm/core/clock/Clock.js","node_modules/tone/Tone/core/clock/Clock.ts","node_modules/tone/build/esm/core/util/StateTimeline.js","node_modules/tone/Tone/core/util/StateTimeline.ts","node_modules/tone/build/esm/core/clock/TickSource.js","node_modules/tone/Tone/core/clock/TickSource.ts","node_modules/tone/build/esm/core/clock/TickSignal.js","node_modules/tone/Tone/core/clock/TickSignal.ts","node_modules/tone/build/esm/signal/Signal.js","node_modules/tone/Tone/signal/Signal.ts","node_modules/tone/build/esm/signal/ToneConstantSource.js","node_modules/tone/Tone/signal/ToneConstantSource.ts","node_modules/tone/build/esm/core/clock/TickParam.js","node_modules/tone/Tone/core/clock/TickParam.ts","node_modules/tone/build/esm/core/context/Delay.js","node_modules/tone/Tone/core/context/Delay.ts","node_modules/tone/build/esm/core/context/Offline.js","node_modules/tone/Tone/core/context/Offline.ts","node_modules/tone/build/esm/core/type/Midi.js","node_modules/tone/Tone/core/type/Midi.ts","node_modules/tone/build/esm/core/type/Ticks.js","node_modules/tone/Tone/core/type/Ticks.ts","node_modules/tone/build/esm/core/util/IntervalTimeline.js","node_modules/tone/Tone/core/util/IntervalTimeline.ts","node_modules/tone/build/esm/source/index.js","node_modules/tone/Tone/source/index.ts","node_modules/tone/build/esm/source/Noise.js","node_modules/tone/Tone/source/Noise.ts","node_modules/tone/build/esm/source/Source.js","node_modules/tone/Tone/source/Source.ts","node_modules/tone/build/esm/component/channel/Volume.js","node_modules/tone/Tone/component/channel/Volume.ts","node_modules/tone/build/esm/core/context/Destination.js","node_modules/tone/Tone/core/context/Destination.ts","node_modules/tone/build/esm/core/clock/Transport.js","node_modules/tone/Tone/core/clock/Transport.ts","node_modules/tone/build/esm/core/util/TimelineValue.js","node_modules/tone/Tone/core/util/TimelineValue.ts","node_modules/tone/build/esm/core/clock/TransportEvent.js","node_modules/tone/Tone/core/clock/TransportEvent.ts","node_modules/tone/build/esm/core/clock/TransportRepeatEvent.js","node_modules/tone/Tone/core/clock/TransportRepeatEvent.ts","node_modules/tone/build/esm/source/UserMedia.js","node_modules/tone/Tone/source/UserMedia.ts","node_modules/tone/build/esm/source/oscillator/Oscillator.js","node_modules/tone/Tone/source/oscillator/Oscillator.ts","node_modules/tone/build/esm/source/oscillator/OscillatorInterface.js","node_modules/tone/Tone/source/oscillator/OscillatorInterface.ts","node_modules/tone/build/esm/source/oscillator/ToneOscillatorNode.js","node_modules/tone/Tone/source/oscillator/ToneOscillatorNode.ts","node_modules/tone/build/esm/source/oscillator/AMOscillator.js","node_modules/tone/Tone/source/oscillator/AMOscillator.ts","node_modules/tone/build/esm/signal/AudioToGain.js","node_modules/tone/Tone/signal/AudioToGain.ts","node_modules/tone/build/esm/signal/SignalOperator.js","node_modules/tone/Tone/signal/SignalOperator.ts","node_modules/tone/build/esm/signal/WaveShaper.js","node_modules/tone/Tone/signal/WaveShaper.ts","node_modules/tone/build/esm/signal/Multiply.js","node_modules/tone/Tone/signal/Multiply.ts","node_modules/tone/build/esm/source/oscillator/FMOscillator.js","node_modules/tone/Tone/source/oscillator/FMOscillator.ts","node_modules/tone/build/esm/source/oscillator/PulseOscillator.js","node_modules/tone/Tone/source/oscillator/PulseOscillator.ts","node_modules/tone/build/esm/source/oscillator/FatOscillator.js","node_modules/tone/Tone/source/oscillator/FatOscillator.ts","node_modules/tone/build/esm/source/oscillator/PWMOscillator.js","node_modules/tone/Tone/source/oscillator/PWMOscillator.ts","node_modules/tone/build/esm/source/oscillator/OmniOscillator.js","node_modules/tone/Tone/source/oscillator/OmniOscillator.ts","node_modules/tone/build/esm/source/oscillator/LFO.js","node_modules/tone/Tone/source/oscillator/LFO.ts","node_modules/tone/build/esm/signal/Scale.js","node_modules/tone/Tone/signal/Scale.ts","node_modules/tone/build/esm/signal/Add.js","node_modules/tone/Tone/signal/Add.ts","node_modules/tone/build/esm/signal/Zero.js","node_modules/tone/Tone/signal/Zero.ts","node_modules/tone/build/esm/source/buffer/Player.js","node_modules/tone/Tone/source/buffer/Player.ts","node_modules/tone/build/esm/core/util/Decorator.js","node_modules/tone/Tone/core/util/Decorator.ts","node_modules/tone/build/esm/source/buffer/Players.js","node_modules/tone/Tone/source/buffer/Players.ts","node_modules/tone/build/esm/source/buffer/GrainPlayer.js","node_modules/tone/Tone/source/buffer/GrainPlayer.ts","node_modules/tone/build/esm/signal/index.js","node_modules/tone/Tone/signal/index.ts","node_modules/tone/build/esm/signal/Abs.js","node_modules/tone/Tone/signal/Abs.ts","node_modules/tone/build/esm/signal/GainToAudio.js","node_modules/tone/Tone/signal/GainToAudio.ts","node_modules/tone/build/esm/signal/GreaterThan.js","node_modules/tone/Tone/signal/GreaterThan.ts","node_modules/tone/build/esm/signal/Subtract.js","node_modules/tone/Tone/signal/Subtract.ts","node_modules/tone/build/esm/signal/Negate.js","node_modules/tone/Tone/signal/Negate.ts","node_modules/tone/build/esm/signal/GreaterThanZero.js","node_modules/tone/Tone/signal/GreaterThanZero.ts","node_modules/tone/build/esm/signal/Pow.js","node_modules/tone/Tone/signal/Pow.ts","node_modules/tone/build/esm/signal/ScaleExp.js","node_modules/tone/Tone/signal/ScaleExp.ts","node_modules/tone/build/esm/signal/SyncedSignal.js","node_modules/tone/Tone/signal/SyncedSignal.ts","node_modules/tone/build/esm/instrument/index.js","node_modules/tone/Tone/instrument/index.ts","node_modules/tone/build/esm/instrument/AMSynth.js","node_modules/tone/Tone/instrument/AMSynth.ts","node_modules/tone/build/esm/instrument/ModulationSynth.js","node_modules/tone/Tone/instrument/ModulationSynth.ts","node_modules/tone/build/esm/component/envelope/Envelope.js","node_modules/tone/Tone/component/envelope/Envelope.ts","node_modules/tone/build/esm/instrument/Monophonic.js","node_modules/tone/Tone/instrument/Monophonic.ts","node_modules/tone/build/esm/instrument/Instrument.js","node_modules/tone/Tone/instrument/Instrument.ts","node_modules/tone/build/esm/instrument/Synth.js","node_modules/tone/Tone/instrument/Synth.ts","node_modules/tone/build/esm/component/envelope/AmplitudeEnvelope.js","node_modules/tone/Tone/component/envelope/AmplitudeEnvelope.ts","node_modules/tone/build/esm/instrument/DuoSynth.js","node_modules/tone/Tone/instrument/DuoSynth.ts","node_modules/tone/build/esm/instrument/MonoSynth.js","node_modules/tone/Tone/instrument/MonoSynth.ts","node_modules/tone/build/esm/component/filter/Filter.js","node_modules/tone/Tone/component/filter/Filter.ts","node_modules/tone/build/esm/component/filter/BiquadFilter.js","node_modules/tone/Tone/component/filter/BiquadFilter.ts","node_modules/tone/build/esm/component/envelope/FrequencyEnvelope.js","node_modules/tone/Tone/component/envelope/FrequencyEnvelope.ts","node_modules/tone/build/esm/instrument/FMSynth.js","node_modules/tone/Tone/instrument/FMSynth.ts","node_modules/tone/build/esm/instrument/MetalSynth.js","node_modules/tone/Tone/instrument/MetalSynth.ts","node_modules/tone/build/esm/instrument/MembraneSynth.js","node_modules/tone/Tone/instrument/MembraneSynth.ts","node_modules/tone/build/esm/instrument/NoiseSynth.js","node_modules/tone/Tone/instrument/NoiseSynth.ts","node_modules/tone/build/esm/instrument/PluckSynth.js","node_modules/tone/Tone/instrument/PluckSynth.ts","node_modules/tone/build/esm/component/filter/LowpassCombFilter.js","node_modules/tone/Tone/component/filter/LowpassCombFilter.ts","node_modules/tone/build/esm/component/filter/FeedbackCombFilter.js","node_modules/tone/Tone/component/filter/FeedbackCombFilter.ts","node_modules/tone/build/esm/core/worklet/ToneAudioWorklet.js","node_modules/tone/Tone/core/worklet/ToneAudioWorklet.ts","node_modules/tone/build/esm/core/worklet/WorkletGlobalScope.js","node_modules/tone/Tone/core/worklet/WorkletGlobalScope.ts","node_modules/tone/build/esm/component/filter/FeedbackCombFilter.worklet.js","node_modules/tone/Tone/component/filter/FeedbackCombFilter.worklet.ts","node_modules/tone/build/esm/core/worklet/SingleIOProcessor.worklet.js","node_modules/tone/Tone/core/worklet/SingleIOProcessor.worklet.ts","node_modules/tone/build/esm/core/worklet/ToneAudioWorkletProcessor.worklet.js","node_modules/tone/Tone/core/worklet/ToneAudioWorkletProcessor.worklet.ts","node_modules/tone/build/esm/core/worklet/DelayLine.worklet.js","node_modules/tone/Tone/core/worklet/DelayLine.worklet.ts","node_modules/tone/build/esm/component/filter/OnePoleFilter.js","node_modules/tone/Tone/component/filter/OnePoleFilter.ts","node_modules/tone/build/esm/instrument/PolySynth.js","node_modules/tone/Tone/instrument/PolySynth.ts","node_modules/tone/build/esm/instrument/Sampler.js","node_modules/tone/Tone/instrument/Sampler.ts","node_modules/tone/build/esm/event/index.js","node_modules/tone/Tone/event/index.ts","node_modules/tone/build/esm/event/Loop.js","node_modules/tone/Tone/event/Loop.ts","node_modules/tone/build/esm/event/ToneEvent.js","node_modules/tone/Tone/event/ToneEvent.ts","node_modules/tone/build/esm/event/Part.js","node_modules/tone/Tone/event/Part.ts","node_modules/tone/build/esm/event/Pattern.js","node_modules/tone/Tone/event/Pattern.ts","node_modules/tone/build/esm/event/PatternGenerator.js","node_modules/tone/Tone/event/PatternGenerator.ts","node_modules/tone/build/esm/event/Sequence.js","node_modules/tone/Tone/event/Sequence.ts","node_modules/tone/build/esm/effect/index.js","node_modules/tone/Tone/effect/index.ts","node_modules/tone/build/esm/effect/AutoFilter.js","node_modules/tone/Tone/effect/AutoFilter.ts","node_modules/tone/build/esm/effect/LFOEffect.js","node_modules/tone/Tone/effect/LFOEffect.ts","node_modules/tone/build/esm/effect/Effect.js","node_modules/tone/Tone/effect/Effect.ts","node_modules/tone/build/esm/component/channel/CrossFade.js","node_modules/tone/Tone/component/channel/CrossFade.ts","node_modules/tone/build/esm/effect/AutoPanner.js","node_modules/tone/Tone/effect/AutoPanner.ts","node_modules/tone/build/esm/component/channel/Panner.js","node_modules/tone/Tone/component/channel/Panner.ts","node_modules/tone/build/esm/effect/AutoWah.js","node_modules/tone/Tone/effect/AutoWah.ts","node_modules/tone/build/esm/component/analysis/Follower.js","node_modules/tone/Tone/component/analysis/Follower.ts","node_modules/tone/build/esm/effect/BitCrusher.js","node_modules/tone/Tone/effect/BitCrusher.ts","node_modules/tone/build/esm/effect/BitCrusher.worklet.js","node_modules/tone/Tone/effect/BitCrusher.worklet.ts","node_modules/tone/build/esm/effect/Chebyshev.js","node_modules/tone/Tone/effect/Chebyshev.ts","node_modules/tone/build/esm/effect/Chorus.js","node_modules/tone/Tone/effect/Chorus.ts","node_modules/tone/build/esm/effect/StereoFeedbackEffect.js","node_modules/tone/Tone/effect/StereoFeedbackEffect.ts","node_modules/tone/build/esm/effect/StereoEffect.js","node_modules/tone/Tone/effect/StereoEffect.ts","node_modules/tone/build/esm/component/channel/Split.js","node_modules/tone/Tone/component/channel/Split.ts","node_modules/tone/build/esm/component/channel/Merge.js","node_modules/tone/Tone/component/channel/Merge.ts","node_modules/tone/build/esm/effect/Distortion.js","node_modules/tone/Tone/effect/Distortion.ts","node_modules/tone/build/esm/effect/FeedbackDelay.js","node_modules/tone/Tone/effect/FeedbackDelay.ts","node_modules/tone/build/esm/effect/FeedbackEffect.js","node_modules/tone/Tone/effect/FeedbackEffect.ts","node_modules/tone/build/esm/effect/FrequencyShifter.js","node_modules/tone/Tone/effect/FrequencyShifter.ts","node_modules/tone/build/esm/component/filter/PhaseShiftAllpass.js","node_modules/tone/Tone/component/filter/PhaseShiftAllpass.ts","node_modules/tone/build/esm/effect/Freeverb.js","node_modules/tone/Tone/effect/Freeverb.ts","node_modules/tone/build/esm/effect/JCReverb.js","node_modules/tone/Tone/effect/JCReverb.ts","node_modules/tone/build/esm/effect/PingPongDelay.js","node_modules/tone/Tone/effect/PingPongDelay.ts","node_modules/tone/build/esm/effect/StereoXFeedbackEffect.js","node_modules/tone/Tone/effect/StereoXFeedbackEffect.ts","node_modules/tone/build/esm/effect/PitchShift.js","node_modules/tone/Tone/effect/PitchShift.ts","node_modules/tone/build/esm/effect/Phaser.js","node_modules/tone/Tone/effect/Phaser.ts","node_modules/tone/build/esm/effect/Reverb.js","node_modules/tone/Tone/effect/Reverb.ts","node_modules/tone/build/esm/effect/StereoWidener.js","node_modules/tone/Tone/effect/StereoWidener.ts","node_modules/tone/build/esm/effect/MidSideEffect.js","node_modules/tone/Tone/effect/MidSideEffect.ts","node_modules/tone/build/esm/component/channel/MidSideSplit.js","node_modules/tone/Tone/component/channel/MidSideSplit.ts","node_modules/tone/build/esm/component/channel/MidSideMerge.js","node_modules/tone/Tone/component/channel/MidSideMerge.ts","node_modules/tone/build/esm/effect/Tremolo.js","node_modules/tone/Tone/effect/Tremolo.ts","node_modules/tone/build/esm/effect/Vibrato.js","node_modules/tone/Tone/effect/Vibrato.ts","node_modules/tone/build/esm/component/index.js","node_modules/tone/Tone/component/index.ts","node_modules/tone/build/esm/component/analysis/Analyser.js","node_modules/tone/Tone/component/analysis/Analyser.ts","node_modules/tone/build/esm/component/analysis/Meter.js","node_modules/tone/Tone/component/analysis/Meter.ts","node_modules/tone/build/esm/component/analysis/MeterBase.js","node_modules/tone/Tone/component/analysis/MeterBase.ts","node_modules/tone/build/esm/component/analysis/FFT.js","node_modules/tone/Tone/component/analysis/FFT.ts","node_modules/tone/build/esm/component/analysis/DCMeter.js","node_modules/tone/Tone/component/analysis/DCMeter.ts","node_modules/tone/build/esm/component/analysis/Waveform.js","node_modules/tone/Tone/component/analysis/Waveform.ts","node_modules/tone/build/esm/component/channel/Channel.js","node_modules/tone/Tone/component/channel/Channel.ts","node_modules/tone/build/esm/component/channel/Solo.js","node_modules/tone/Tone/component/channel/Solo.ts","node_modules/tone/build/esm/component/channel/PanVol.js","node_modules/tone/Tone/component/channel/PanVol.ts","node_modules/tone/build/esm/component/channel/Mono.js","node_modules/tone/Tone/component/channel/Mono.ts","node_modules/tone/build/esm/component/channel/MultibandSplit.js","node_modules/tone/Tone/component/channel/MultibandSplit.ts","node_modules/tone/build/esm/component/channel/Panner3D.js","node_modules/tone/Tone/component/channel/Panner3D.ts","node_modules/tone/build/esm/core/context/Listener.js","node_modules/tone/Tone/core/context/Listener.ts","node_modules/tone/build/esm/component/channel/Recorder.js","node_modules/tone/Tone/component/channel/Recorder.ts","node_modules/tone/build/esm/component/dynamics/Compressor.js","node_modules/tone/Tone/component/dynamics/Compressor.ts","node_modules/tone/build/esm/component/dynamics/Gate.js","node_modules/tone/Tone/component/dynamics/Gate.ts","node_modules/tone/build/esm/component/dynamics/Limiter.js","node_modules/tone/Tone/component/dynamics/Limiter.ts","node_modules/tone/build/esm/component/dynamics/MidSideCompressor.js","node_modules/tone/Tone/component/dynamics/MidSideCompressor.ts","node_modules/tone/build/esm/component/dynamics/MultibandCompressor.js","node_modules/tone/Tone/component/dynamics/MultibandCompressor.ts","node_modules/tone/build/esm/component/filter/EQ3.js","node_modules/tone/Tone/component/filter/EQ3.ts","node_modules/tone/build/esm/component/filter/Convolver.js","node_modules/tone/Tone/component/filter/Convolver.ts","src/useRepl.ts","src/evaluate.ts","../strudel.mjs","../node_modules/fraction.js/fraction.js","../node_modules/ramda/es/index.js","../node_modules/ramda/es/F.js","../node_modules/ramda/es/T.js","../node_modules/ramda/es/__.js","../node_modules/ramda/es/add.js","../node_modules/ramda/es/internal/_curry2.js","../node_modules/ramda/es/internal/_curry1.js","../node_modules/ramda/es/internal/_isPlaceholder.js","../node_modules/ramda/es/addIndex.js","../node_modules/ramda/es/internal/_concat.js","../node_modules/ramda/es/curryN.js","../node_modules/ramda/es/internal/_arity.js","../node_modules/ramda/es/internal/_curryN.js","../node_modules/ramda/es/adjust.js","../node_modules/ramda/es/internal/_curry3.js","../node_modules/ramda/es/all.js","../node_modules/ramda/es/internal/_dispatchable.js","../node_modules/ramda/es/internal/_isArray.js","../node_modules/ramda/es/internal/_isTransformer.js","../node_modules/ramda/es/internal/_xall.js","../node_modules/ramda/es/internal/_reduced.js","../node_modules/ramda/es/internal/_xfBase.js","../node_modules/ramda/es/allPass.js","../node_modules/ramda/es/max.js","../node_modules/ramda/es/pluck.js","../node_modules/ramda/es/map.js","../node_modules/ramda/es/internal/_map.js","../node_modules/ramda/es/internal/_reduce.js","../node_modules/ramda/es/internal/_isArrayLike.js","../node_modules/ramda/es/internal/_isString.js","../node_modules/ramda/es/internal/_xwrap.js","../node_modules/ramda/es/bind.js","../node_modules/ramda/es/internal/_xmap.js","../node_modules/ramda/es/keys.js","../node_modules/ramda/es/internal/_has.js","../node_modules/ramda/es/internal/_isArguments.js","../node_modules/ramda/es/prop.js","../node_modules/ramda/es/internal/_isInteger.js","../node_modules/ramda/es/nth.js","../node_modules/ramda/es/reduce.js","../node_modules/ramda/es/always.js","../node_modules/ramda/es/and.js","../node_modules/ramda/es/any.js","../node_modules/ramda/es/internal/_xany.js","../node_modules/ramda/es/anyPass.js","../node_modules/ramda/es/ap.js","../node_modules/ramda/es/aperture.js","../node_modules/ramda/es/internal/_aperture.js","../node_modules/ramda/es/internal/_xaperture.js","../node_modules/ramda/es/append.js","../node_modules/ramda/es/apply.js","../node_modules/ramda/es/applySpec.js","../node_modules/ramda/es/values.js","../node_modules/ramda/es/applyTo.js","../node_modules/ramda/es/ascend.js","../node_modules/ramda/es/assoc.js","../node_modules/ramda/es/assocPath.js","../node_modules/ramda/es/internal/_assoc.js","../node_modules/ramda/es/isNil.js","../node_modules/ramda/es/binary.js","../node_modules/ramda/es/nAry.js","../node_modules/ramda/es/both.js","../node_modules/ramda/es/internal/_isFunction.js","../node_modules/ramda/es/lift.js","../node_modules/ramda/es/liftN.js","../node_modules/ramda/es/call.js","../node_modules/ramda/es/chain.js","../node_modules/ramda/es/internal/_makeFlat.js","../node_modules/ramda/es/internal/_xchain.js","../node_modules/ramda/es/internal/_flatCat.js","../node_modules/ramda/es/internal/_forceReduced.js","../node_modules/ramda/es/clamp.js","../node_modules/ramda/es/clone.js","../node_modules/ramda/es/internal/_clone.js","../node_modules/ramda/es/internal/_cloneRegExp.js","../node_modules/ramda/es/type.js","../node_modules/ramda/es/collectBy.js","../node_modules/ramda/es/comparator.js","../node_modules/ramda/es/complement.js","../node_modules/ramda/es/not.js","../node_modules/ramda/es/compose.js","../node_modules/ramda/es/pipe.js","../node_modules/ramda/es/internal/_pipe.js","../node_modules/ramda/es/tail.js","../node_modules/ramda/es/internal/_checkForMethod.js","../node_modules/ramda/es/slice.js","../node_modules/ramda/es/reverse.js","../node_modules/ramda/es/composeWith.js","../node_modules/ramda/es/pipeWith.js","../node_modules/ramda/es/head.js","../node_modules/ramda/es/identity.js","../node_modules/ramda/es/internal/_identity.js","../node_modules/ramda/es/concat.js","../node_modules/ramda/es/toString.js","../node_modules/ramda/es/internal/_toString.js","../node_modules/ramda/es/internal/_includes.js","../node_modules/ramda/es/internal/_indexOf.js","../node_modules/ramda/es/equals.js","../node_modules/ramda/es/internal/_equals.js","../node_modules/ramda/es/internal/_arrayFromIterator.js","../node_modules/ramda/es/internal/_includesWith.js","../node_modules/ramda/es/internal/_functionName.js","../node_modules/ramda/es/internal/_objectIs.js","../node_modules/ramda/es/internal/_quote.js","../node_modules/ramda/es/internal/_toISOString.js","../node_modules/ramda/es/reject.js","../node_modules/ramda/es/internal/_complement.js","../node_modules/ramda/es/filter.js","../node_modules/ramda/es/internal/_filter.js","../node_modules/ramda/es/internal/_isObject.js","../node_modules/ramda/es/internal/_xfilter.js","../node_modules/ramda/es/cond.js","../node_modules/ramda/es/construct.js","../node_modules/ramda/es/constructN.js","../node_modules/ramda/es/curry.js","../node_modules/ramda/es/converge.js","../node_modules/ramda/es/count.js","../node_modules/ramda/es/countBy.js","../node_modules/ramda/es/reduceBy.js","../node_modules/ramda/es/internal/_xreduceBy.js","../node_modules/ramda/es/dec.js","../node_modules/ramda/es/defaultTo.js","../node_modules/ramda/es/descend.js","../node_modules/ramda/es/difference.js","../node_modules/ramda/es/internal/_Set.js","../node_modules/ramda/es/differenceWith.js","../node_modules/ramda/es/dissoc.js","../node_modules/ramda/es/dissocPath.js","../node_modules/ramda/es/internal/_dissoc.js","../node_modules/ramda/es/remove.js","../node_modules/ramda/es/divide.js","../node_modules/ramda/es/drop.js","../node_modules/ramda/es/internal/_xdrop.js","../node_modules/ramda/es/dropLast.js","../node_modules/ramda/es/internal/_dropLast.js","../node_modules/ramda/es/take.js","../node_modules/ramda/es/internal/_xtake.js","../node_modules/ramda/es/internal/_xdropLast.js","../node_modules/ramda/es/dropLastWhile.js","../node_modules/ramda/es/internal/_dropLastWhile.js","../node_modules/ramda/es/internal/_xdropLastWhile.js","../node_modules/ramda/es/dropRepeats.js","../node_modules/ramda/es/internal/_xdropRepeatsWith.js","../node_modules/ramda/es/dropRepeatsWith.js","../node_modules/ramda/es/last.js","../node_modules/ramda/es/dropWhile.js","../node_modules/ramda/es/internal/_xdropWhile.js","../node_modules/ramda/es/either.js","../node_modules/ramda/es/or.js","../node_modules/ramda/es/empty.js","../node_modules/ramda/es/internal/_isTypedArray.js","../node_modules/ramda/es/endsWith.js","../node_modules/ramda/es/takeLast.js","../node_modules/ramda/es/eqBy.js","../node_modules/ramda/es/eqProps.js","../node_modules/ramda/es/evolve.js","../node_modules/ramda/es/find.js","../node_modules/ramda/es/internal/_xfind.js","../node_modules/ramda/es/findIndex.js","../node_modules/ramda/es/internal/_xfindIndex.js","../node_modules/ramda/es/findLast.js","../node_modules/ramda/es/internal/_xfindLast.js","../node_modules/ramda/es/findLastIndex.js","../node_modules/ramda/es/internal/_xfindLastIndex.js","../node_modules/ramda/es/flatten.js","../node_modules/ramda/es/flip.js","../node_modules/ramda/es/forEach.js","../node_modules/ramda/es/forEachObjIndexed.js","../node_modules/ramda/es/fromPairs.js","../node_modules/ramda/es/groupBy.js","../node_modules/ramda/es/groupWith.js","../node_modules/ramda/es/gt.js","../node_modules/ramda/es/gte.js","../node_modules/ramda/es/has.js","../node_modules/ramda/es/hasPath.js","../node_modules/ramda/es/hasIn.js","../node_modules/ramda/es/identical.js","../node_modules/ramda/es/ifElse.js","../node_modules/ramda/es/inc.js","../node_modules/ramda/es/includes.js","../node_modules/ramda/es/indexBy.js","../node_modules/ramda/es/indexOf.js","../node_modules/ramda/es/init.js","../node_modules/ramda/es/innerJoin.js","../node_modules/ramda/es/insert.js","../node_modules/ramda/es/insertAll.js","../node_modules/ramda/es/intersection.js","../node_modules/ramda/es/uniq.js","../node_modules/ramda/es/uniqBy.js","../node_modules/ramda/es/internal/_xuniqBy.js","../node_modules/ramda/es/intersperse.js","../node_modules/ramda/es/into.js","../node_modules/ramda/es/internal/_stepCat.js","../node_modules/ramda/es/internal/_objectAssign.js","../node_modules/ramda/es/objOf.js","../node_modules/ramda/es/invert.js","../node_modules/ramda/es/invertObj.js","../node_modules/ramda/es/invoker.js","../node_modules/ramda/es/is.js","../node_modules/ramda/es/isEmpty.js","../node_modules/ramda/es/join.js","../node_modules/ramda/es/juxt.js","../node_modules/ramda/es/keysIn.js","../node_modules/ramda/es/lastIndexOf.js","../node_modules/ramda/es/length.js","../node_modules/ramda/es/internal/_isNumber.js","../node_modules/ramda/es/lens.js","../node_modules/ramda/es/lensIndex.js","../node_modules/ramda/es/update.js","../node_modules/ramda/es/lensPath.js","../node_modules/ramda/es/path.js","../node_modules/ramda/es/paths.js","../node_modules/ramda/es/lensProp.js","../node_modules/ramda/es/lt.js","../node_modules/ramda/es/lte.js","../node_modules/ramda/es/mapAccum.js","../node_modules/ramda/es/mapAccumRight.js","../node_modules/ramda/es/mapObjIndexed.js","../node_modules/ramda/es/match.js","../node_modules/ramda/es/mathMod.js","../node_modules/ramda/es/maxBy.js","../node_modules/ramda/es/mean.js","../node_modules/ramda/es/sum.js","../node_modules/ramda/es/median.js","../node_modules/ramda/es/memoizeWith.js","../node_modules/ramda/es/mergeAll.js","../node_modules/ramda/es/mergeDeepLeft.js","../node_modules/ramda/es/mergeDeepWithKey.js","../node_modules/ramda/es/mergeWithKey.js","../node_modules/ramda/es/mergeDeepRight.js","../node_modules/ramda/es/mergeDeepWith.js","../node_modules/ramda/es/mergeLeft.js","../node_modules/ramda/es/mergeRight.js","../node_modules/ramda/es/mergeWith.js","../node_modules/ramda/es/min.js","../node_modules/ramda/es/minBy.js","../node_modules/ramda/es/modify.js","../node_modules/ramda/es/modifyPath.js","../node_modules/ramda/es/internal/_modify.js","../node_modules/ramda/es/modulo.js","../node_modules/ramda/es/move.js","../node_modules/ramda/es/multiply.js","../node_modules/ramda/es/partialObject.js","../node_modules/ramda/es/negate.js","../node_modules/ramda/es/none.js","../node_modules/ramda/es/nthArg.js","../node_modules/ramda/es/o.js","../node_modules/ramda/es/of.js","../node_modules/ramda/es/internal/_of.js","../node_modules/ramda/es/omit.js","../node_modules/ramda/es/on.js","../node_modules/ramda/es/once.js","../node_modules/ramda/es/otherwise.js","../node_modules/ramda/es/internal/_assertPromise.js","../node_modules/ramda/es/over.js","../node_modules/ramda/es/pair.js","../node_modules/ramda/es/partial.js","../node_modules/ramda/es/internal/_createPartialApplicator.js","../node_modules/ramda/es/partialRight.js","../node_modules/ramda/es/partition.js","../node_modules/ramda/es/pathEq.js","../node_modules/ramda/es/pathOr.js","../node_modules/ramda/es/pathSatisfies.js","../node_modules/ramda/es/pick.js","../node_modules/ramda/es/pickAll.js","../node_modules/ramda/es/pickBy.js","../node_modules/ramda/es/prepend.js","../node_modules/ramda/es/product.js","../node_modules/ramda/es/project.js","../node_modules/ramda/es/useWith.js","../node_modules/ramda/es/promap.js","../node_modules/ramda/es/internal/_promap.js","../node_modules/ramda/es/internal/_xpromap.js","../node_modules/ramda/es/propEq.js","../node_modules/ramda/es/propIs.js","../node_modules/ramda/es/propOr.js","../node_modules/ramda/es/propSatisfies.js","../node_modules/ramda/es/props.js","../node_modules/ramda/es/range.js","../node_modules/ramda/es/reduceRight.js","../node_modules/ramda/es/reduceWhile.js","../node_modules/ramda/es/reduced.js","../node_modules/ramda/es/repeat.js","../node_modules/ramda/es/times.js","../node_modules/ramda/es/replace.js","../node_modules/ramda/es/scan.js","../node_modules/ramda/es/sequence.js","../node_modules/ramda/es/set.js","../node_modules/ramda/es/sort.js","../node_modules/ramda/es/sortBy.js","../node_modules/ramda/es/sortWith.js","../node_modules/ramda/es/split.js","../node_modules/ramda/es/splitAt.js","../node_modules/ramda/es/splitEvery.js","../node_modules/ramda/es/splitWhen.js","../node_modules/ramda/es/splitWhenever.js","../node_modules/ramda/es/startsWith.js","../node_modules/ramda/es/subtract.js","../node_modules/ramda/es/symmetricDifference.js","../node_modules/ramda/es/symmetricDifferenceWith.js","../node_modules/ramda/es/takeLastWhile.js","../node_modules/ramda/es/takeWhile.js","../node_modules/ramda/es/internal/_xtakeWhile.js","../node_modules/ramda/es/tap.js","../node_modules/ramda/es/internal/_xtap.js","../node_modules/ramda/es/test.js","../node_modules/ramda/es/internal/_isRegExp.js","../node_modules/ramda/es/andThen.js","../node_modules/ramda/es/toLower.js","../node_modules/ramda/es/toPairs.js","../node_modules/ramda/es/toPairsIn.js","../node_modules/ramda/es/toUpper.js","../node_modules/ramda/es/transduce.js","../node_modules/ramda/es/transpose.js","../node_modules/ramda/es/traverse.js","../node_modules/ramda/es/trim.js","../node_modules/ramda/es/tryCatch.js","../node_modules/ramda/es/unapply.js","../node_modules/ramda/es/unary.js","../node_modules/ramda/es/uncurryN.js","../node_modules/ramda/es/unfold.js","../node_modules/ramda/es/union.js","../node_modules/ramda/es/unionWith.js","../node_modules/ramda/es/uniqWith.js","../node_modules/ramda/es/internal/_xuniqWith.js","../node_modules/ramda/es/unless.js","../node_modules/ramda/es/unnest.js","../node_modules/ramda/es/until.js","../node_modules/ramda/es/unwind.js","../node_modules/ramda/es/valuesIn.js","../node_modules/ramda/es/view.js","../node_modules/ramda/es/when.js","../node_modules/ramda/es/where.js","../node_modules/ramda/es/whereAny.js","../node_modules/ramda/es/whereEq.js","../node_modules/ramda/es/without.js","../node_modules/ramda/es/xor.js","../node_modules/ramda/es/xprod.js","../node_modules/ramda/es/zip.js","../node_modules/ramda/es/zipObj.js","../node_modules/ramda/es/zipWith.js","../node_modules/ramda/es/thunkify.js","src/tone.ts","src/midi.ts","node_modules/webmidi/webmidi.min.js","src/voicings.ts","node_modules/chord-voicings/dist/index.js","node_modules/chord-voicings/src/index.ts","node_modules/chord-voicings/dist/dictionaryVoicing.js","node_modules/chord-voicings/src/dictionaryVoicing.ts","node_modules/chord-voicings/dist/getBestVoicing.js","node_modules/chord-voicings/src/getBestVoicing.ts","node_modules/chord-voicings/dist/voicingsInRange.js","node_modules/chord-voicings/src/voicingsInRange.ts","node_modules/@tonaljs/tonal/dist/index.es.js","node_modules/@tonaljs/array/dist/index.es.js","node_modules/@tonaljs/core/dist/index.es.js","node_modules/@tonaljs/chord-type/dist/index.es.js","node_modules/@tonaljs/pcset/dist/index.es.js","node_modules/@tonaljs/collection/dist/index.es.js","node_modules/@tonaljs/scale-type/dist/index.es.js","node_modules/@tonaljs/abc-notation/dist/index.es.js","node_modules/@tonaljs/chord/dist/index.es.js","node_modules/@tonaljs/chord-detect/dist/index.es.js","node_modules/@tonaljs/duration-value/dist/index.es.js","node_modules/@tonaljs/interval/dist/index.es.js","node_modules/@tonaljs/key/dist/index.es.js","node_modules/@tonaljs/note/dist/index.es.js","node_modules/@tonaljs/midi/dist/index.es.js","node_modules/@tonaljs/roman-numeral/dist/index.es.js","node_modules/@tonaljs/mode/dist/index.es.js","node_modules/@tonaljs/progression/dist/index.es.js","node_modules/@tonaljs/range/dist/index.es.js","node_modules/@tonaljs/scale/dist/index.es.js","node_modules/@tonaljs/time-signature/dist/index.es.js","node_modules/chord-voicings/dist/tokenizeChord.js","node_modules/chord-voicings/src/tokenizeChord.ts","node_modules/chord-voicings/dist/minTopNoteDiff.js","node_modules/chord-voicings/src/minTopNoteDiff.ts","src/tonal.ts","src/shapeshifter.js","src/shift-parser/index.js","src/shift-parser/parser.js","src/shift-parser/errors.js","node_modules/shift-regexp-acceptor/dist/index.js","node_modules/unicode-match-property-value-ecmascript/index.js","node_modules/unicode-match-property-value-ecmascript/data/mappings.js","node_modules/unicode-match-property-ecmascript/index.js","node_modules/unicode-canonical-property-names-ecmascript/index.js","node_modules/unicode-property-aliases-ecmascript/index.js","node_modules/shift-regexp-acceptor/dist/unicode.js","src/shift-parser/tokenizer.js","src/shift-parser/utils.js","src/shift-parser/unicode.js","node_modules/shift-ast/dist/index.js","src/shift-parser/early-errors.js","src/shift-reducer/index.js","src/shift-reducer/director.js","src/shift-reducer/thunked-director.js","src/shift-reducer/thunkify.js","src/shift-reducer/thunkify-class.js","src/shift-reducer/memoize.js","src/shift-reducer/clone-reducer.js","src/shift-reducer/lazy-clone-reducer.js","src/shift-reducer/monoidal-reducer.js","src/shift-reducer/thunked-monoidal-reducer.js","src/shift-reducer/adapt.js","src/shift-reducer/reducers.js","src/shift-parser/early-error-state.js","node_modules/multimap/index.js","src/shift-traverser/index.js","node_modules/shift-spec/dist/index.js","node_modules/estraverse/estraverse.js","node_modules/shift-codegen/dist/index.js","node_modules/shift-codegen/dist/minimal-codegen.js","node_modules/esutils/lib/utils.js","node_modules/esutils/lib/ast.js","node_modules/esutils/lib/code.js","node_modules/esutils/lib/keyword.js","node_modules/shift-codegen/dist/coderep.js","node_modules/shift-codegen/dist/formatted-codegen.js","node_modules/shift-codegen/dist/with-location.js","node_modules/shift-reducer/dist/index.js","node_modules/shift-reducer/dist/director.js","node_modules/shift-reducer/dist/thunked-director.js","node_modules/shift-reducer/dist/thunkify.js","node_modules/shift-reducer/dist/thunkify-class.js","node_modules/shift-reducer/dist/memoize.js","node_modules/shift-reducer/node_modules/shift-ast/dist/index.js","node_modules/shift-reducer/dist/clone-reducer.js","node_modules/shift-reducer/dist/lazy-clone-reducer.js","node_modules/shift-reducer/dist/monoidal-reducer.js","node_modules/shift-reducer/dist/thunked-monoidal-reducer.js","node_modules/shift-reducer/dist/adapt.js","node_modules/shift-reducer/dist/reducers.js","node_modules/shift-codegen/dist/token-stream.js","node_modules/shift-codegen/dist/unicode.js","src/parse.ts","krill-parser.js","src/useCycle.ts","src/usePostMessage.ts","src/CodeMirror.tsx","node_modules/react-codemirror2/index.js","node_modules/codemirror/lib/codemirror.js","node_modules/codemirror/mode/javascript/javascript.js","node_modules/codemirror/mode/pegjs/pegjs.js","src/cx.ts"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Tutorial from './tutorial.mdx';\n// import logo from '../logo.svg';\n\nReactDOM.render(\n \n
\n
\n
\n
\n \"logo\"\n

Strudel Tutorial

\n
\n {!window.location.href.includes('localhost') && (\n \n )}\n
\n
\n
\n
\n \n
\n
\n
\n
,\n document.getElementById('root')\n);\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","import MiniRepl from './MiniRepl';\n\n# What is Strudel?\n\nWith Strudel, you can expressively write dynamic music pieces.\nIt aims to be [Tidal Cycles](https://tidalcycles.org/) for JavaScript (started by the same author).\n\nYou don't need to know JavaScript or Tidal Cycles to make music with Strudel.\n\nThis interactive tutorial will guide you through the basics of Strudel.\n\nThe best place to actually make music with Strudel is the [Strudel REPL](https://strudel.tidalcycles.org/).\n\n## Show me a Demo\n\nTo get a taste of what Strudel can do, check out this track:\n\n {\n const delay = new FeedbackDelay(1/8, .4).chain(vol(0.5), out());\n const kick = new MembraneSynth().chain(vol(.8), out());\n const snare = new NoiseSynth().chain(vol(.8), out());\n const hihat = new MetalSynth().set(adsr(0, .08, 0, .1)).chain(vol(.3).connect(delay),out());\n const bass = new Synth().set({ ...osc('sawtooth'), ...adsr(0, .1, .4) }).chain(lowpass(900), vol(.5), out());\n const keys = new PolySynth().set({ ...osc('sawtooth'), ...adsr(0, .5, .2, .7) }).chain(lowpass(1200), vol(.5), out());\n \n const drums = stack(\n \"c1*2\".tone(kick).bypass(\"<0@7 1>/8\"),\n \"~ \".tone(snare).bypass(\"<0@7 1>/4\"),\n \"[~ c4]*2\".tone(hihat)\n );\n \n const thru = (x) => x.transpose(\"<0 1>/8\").transpose(-1);\n const synths = stack(\n \"/2\".scale(timeCat([3,'C minor'],[1,'C melodic minor']).slow(8)).struct(\"[~ x]*2\")\n .edit(\n scaleTranspose(0).early(0),\n scaleTranspose(2).early(1/8),\n scaleTranspose(7).early(1/4),\n scaleTranspose(8).early(3/8)\n ).edit(thru).tone(keys).bypass(\"<1 0>/16\"),\n \"/2\".struct(\"[x [~ x] <[~ [~ x]]!3 [x x]>@2]/2\".fast(2)).edit(thru).tone(bass),\n \"/2\".struct(\"~ [x@0.1 ~]\".fast(2)).voicings().edit(thru).every(2, early(1/8)).tone(keys).bypass(\"<0@7 1>/8\".early(1/4))\n )\n return stack(\n drums.fast(2), \n synths\n ).slow(2);\n}`}\n/>\n\n[Open this track in the REPL](https://strudel.tidalcycles.org/#KCkgPT4gewogIGNvbnN0IGRlbGF5ID0gbmV3IEZlZWRiYWNrRGVsYXkoMS84LCAuNCkuY2hhaW4odm9sKDAuNSksIG91dCk7CiAgY29uc3Qga2ljayA9IG5ldyBNZW1icmFuZVN5bnRoKCkuY2hhaW4odm9sKC44KSwgb3V0KTsKICBjb25zdCBzbmFyZSA9IG5ldyBOb2lzZVN5bnRoKCkuY2hhaW4odm9sKC44KSwgb3V0KTsKICBjb25zdCBoaWhhdCA9IG5ldyBNZXRhbFN5bnRoKCkuc2V0KGFkc3IoMCwgLjA4LCAwLCAuMSkpLmNoYWluKHZvbCguMykuY29ubmVjdChkZWxheSksb3V0KTsKICBjb25zdCBiYXNzID0gbmV3IFN5bnRoKCkuc2V0KHsgLi4ub3NjKCdzYXd0b290aCcpLCAuLi5hZHNyKDAsIC4xLCAuNCkgfSkuY2hhaW4obG93cGFzcyg5MDApLCB2b2woLjUpLCBvdXQpOwogIGNvbnN0IGtleXMgPSBuZXcgUG9seVN5bnRoKCkuc2V0KHsgLi4ub3NjKCdzYXd0b290aCcpLCAuLi5hZHNyKDAsIC41LCAuMiwgLjcpIH0pLmNoYWluKGxvd3Bhc3MoMTIwMCksIHZvbCguNSksIG91dCk7CiAgCiAgY29uc3QgZHJ1bXMgPSBzdGFjaygKICAgICdjMSoyJy5tLnRvbmUoa2ljaykuYnlwYXNzKCc8MEA3IDE%2BLzgnLm0pLAogICAgJ34gPHghNyBbeEAzIHhdPicubS50b25lKHNuYXJlKS5ieXBhc3MoJzwwQDcgMT4vNCcubSksCiAgICAnW34gYzRdKjInLm0udG9uZShoaWhhdCkKICApOwogIAogIGNvbnN0IHRocnUgPSAoeCkgPT4geC50cmFuc3Bvc2UoJzwwIDE%2BLzgnLm0pLnRyYW5zcG9zZSgtMSk7CiAgY29uc3Qgc3ludGhzID0gc3RhY2soCiAgICAnPGViNCBkNCBjNCBiMz4vMicubS5zY2FsZSh0aW1lQ2F0KFszLCdDIG1pbm9yJ10sWzEsJ0MgbWVsb2RpYyBtaW5vciddKS5zbG93KDgpKS5ncm9vdmUoJ1t%2BIHhdKjInLm0pCiAgICAuZWRpdCgKICAgICAgc2NhbGVUcmFuc3Bvc2UoMCkuZWFybHkoMCksCiAgICAgIHNjYWxlVHJhbnNwb3NlKDIpLmVhcmx5KDEvOCksCiAgICAgIHNjYWxlVHJhbnNwb3NlKDcpLmVhcmx5KDEvNCksCiAgICAgIHNjYWxlVHJhbnNwb3NlKDgpLmVhcmx5KDMvOCkKICAgICkuZWRpdCh0aHJ1KS50b25lKGtleXMpLmJ5cGFzcygnPDEgMD4vMTYnLm0pLAogICAgJzxDMiBCYjEgQWIxIFtHMSBbRzIgRzFdXT4vMicubS5ncm9vdmUoJ1t4IFt%2BIHhdIDxbfiBbfiB4XV0hMyBbeCB4XT5AMl0vMicubS5mYXN0KDIpKS5lZGl0KHRocnUpLnRvbmUoYmFzcyksCiAgICAnPENtNyBCYjcgRm03IEc3YjEzPi8yJy5tLmdyb292ZSgnfiBbeEAwLjEgfl0nLm0uZmFzdCgyKSkudm9pY2luZ3MoKS5lZGl0KHRocnUpLmV2ZXJ5KDIsIGVhcmx5KDEvOCkpLnRvbmUoa2V5cykuYnlwYXNzKCc8MEA3IDE%2BLzgnLm0uZWFybHkoMS80KSkKICApCiAgcmV0dXJuIHN0YWNrKAogICAgZHJ1bXMuZmFzdCgyKSwgCiAgICBzeW50aHMKICApLnNsb3coMik7Cn0%3D)\n\n## Disclaimer\n\n- This project is still in its experimental state. In the future, parts of it might change significantly.\n- This tutorial is far from complete.\n\n
\n\n# Mini Notation\n\nSimilar to Tidal Cycles, Strudel has an embedded mini language that is designed to write rhythmic patterns in a short manner.\nBefore diving deeper into the details, here is a flavor of how the mini language looks like:\n\n\n\nThe snippet above is enclosed in backticks (`), which allows you to write multi-line strings.\nYou can also use double quotes (\") for single line mini notation.\n\n## Notes\n\nNotes are notated with the note letter, followed by the octave number. You can notate flats with `b` and sharps with `#`.\n\n\n\nHere, the same note is played over and over again, once a second. This one second is the default length of one so called \"cycle\".\n\nBy the way, you can edit the contents of the player, and press \"update\" to hear your change!\nYou can also press \"play\" on the next player without needing to stop the last one.\n\n## Sequences\n\nWe can play more notes by seperating them with spaces:\n\n\n\nHere, those four notes are squashed into one cycle, so each note is a quarter second long.\n\n## Division\n\nWe can slow the sequence down by enclosing it in brackets and dividing it by a number:\n\n\n\nThe division by two means that the sequence will be played over the course of two cycles.\nYou can also use decimal numbers for any tempo you like.\n\n## Angle Brackets\n\nUsing angle brackets, we can define the sequence length based on the number of children:\n\n\"`} />\n\nThe above snippet is the same as:\n\n\n\nThe advantage of the angle brackets, is that we can add more children without needing to change the number at the end.\n\n## Multiplication\n\nContrary to division, a sequence can be sped up by multiplying it by a number:\n\n\n\nThe multiplication by 2 here means that the sequence will play twice a cycle.\n\n## Bracket Nesting\n\nTo create more interesting rhythms, you can nest sequences with brackets, like this:\n\n\n\n## Rests\n\nThe \"~\" represents a rest:\n\n\n\n## Parallel\n\nUsing commas, we can play chords:\n\n\n\nTo play multiple chords in a sequence, we have to wrap them in brackets:\n\n\"`} />\n\n## Elongation\n\nWith the \"@\" symbol, we can specify temporal \"weight\" of a sequence child:\n\n\"`} />\n\nHere, the first chord has a weight of 2, making it twice the length of the other chords. The default weight is 1.\n\n## Replication\n\nUsing \"!\" we can repeat without speeding up:\n\n\"`} />\n\nIn essence, the `x!n` is like a shortcut for `[x*n]@n`.\n\n## Mini Notation TODO\n\nCompared to [tidal mini notation](https://tidalcycles.org/docs/patternlib/tutorials/mini_notation/), the following mini notation features are missing from Strudel:\n\n- Tie symbols \"\\_\"\n- Euclidean algorithm \"c3(3,2,1)\"\n- feet marking \".\"\n- random choice \"|\"\n- Random removal \"?\"\n- Polymetric sequences \"{ ... }\"\n- Fixed steps using \"%\"\n\n
\n\n# Core API\n\nWhile the mini notation is powerful on its own, there is much more to discover.\nInternally, the mini notation will expand to use the actual functional JavaScript API.\n\n## Notes\n\nNotes are automatically available as variables:\n\n\n\nAn important difference to the mini notation:\nFor sharp notes, the letter \"s\" is used instead of \"#\", because JavaScript does not support \"#\" in a variable name.\n\nThe above is the same as:\n\n\n\nUsing strings, you can also use \"#\".\n\n## Functions that create Patterns\n\nThe following functions will return a pattern. We will see later what that means.\n\n## pure(value)\n\nTo create a pattern from a value, you can wrap the value in pure:\n\n\n\nMost of the time, you won't need that function as input values of pattern creating functions are purified by default.\n\n### cat(...values)\n\nThe given items are con**cat**enated spread evenly over one cycle:\n\n\n\nThe function **fastcat** does the same as **cat**.\n\n### sequence(...values)\n\nLike **cat**, but allows nesting with arrays:\n\n\n\n### stack(...values)\n\nThe given items are played at the same time at the same length:\n\n\n\n### slowcat(...values)\n\nLike cat, but each item has the length of one cycle:\n\n\n\n\n\n### Nesting functions\n\nYou can nest functions inside one another:\n\n\n\nThe above is equivalent to\n\n\"`} />\n\n### timeCat(...[weight,value])\n\nLike with \"@\" in mini notation, we can specify weights to the items in a sequence:\n\n\n\n\n\n### polyrhythm(...[...values])\n\nPlays the given items at the same time, within the same length:\n\n\n\nWe can write the same with **stack** and **cat**:\n\n\n\nYou can also use the shorthand **pr** instead of **polyrhythm**.\n\n## Pattern modifier functions\n\nThe following functions modify a pattern.\n\n### slow(factor)\n\nLike \"/\" in mini notation, **slow** will slow down a pattern over the given number of cycles:\n\n\n\nThe same in mini notation:\n\n\n\n### fast(factor)\n\nLike \"\\*\" in mini notation, **fast** will play a pattern times the given number in one cycle:\n\n\n\n### early(cycles)\n\nWith early, you can nudge a pattern to start earlier in time:\n\n\n\n### late(cycles)\n\nLike early, but in the other direction:\n\n\n\nTODO: shouldn't it sound different?\n\n### rev()\n\nWill reverse the pattern:\n\n\n\n### every(n, func)\n\nWill apply the given function every n cycles:\n\n\n\nTODO: should be able to do b4.every => like already possible with fast slow etc..\n\nNote that late is called directly. This is a shortcut for:\n\n x.late(0.5)))`} />\n\nTODO: should the function really run the first cycle?\n\n### Functions not documented yet\n\n- add\n- sub\n- sub\n- mul\n- div\n- union\n- every\n- when\n- off\n- jux\n- append\n- superimpose\n- internal Pattern functions?\n- struct\n\n## Tone API\n\nTo make the sounds more interesting, we can use Tone.js instruments ands effects.\n\n[Show Source on Github](https://github.com/tidalcycles/strudel/blob/main/repl/src/tone.ts)\n\n\n\n### tone(instrument)\n\nTo change the instrument of a pattern, you can pass any [Tone.js Source](https://tonejs.github.io/docs/14.7.77/index.html) to .tone:\n\n\n\nWhile this works, it is a little bit verbose. To simplify things, all Tone Synths have a shortcut:\n\n```js\nconst amsynth = (options) => new AMSynth(options);\nconst duosynth = (options) => new DuoSynth(options);\nconst fmsynth = (options) => new FMSynth(options);\nconst membrane = (options) => new MembraneSynth(options);\nconst metal = (options) => new MetalSynth(options);\nconst monosynth = (options) => new MonoSynth(options);\nconst noise = (options) => new NoiseSynth(options);\nconst pluck = (options) => new PluckSynth(options);\nconst polysynth = (options) => new PolySynth(options);\nconst sampler = (options) => new Sampler(options);\nconst synth = (options) => new Synth(options);\n```\n\n### out\n\nShortcut for Tone.Destination. Intended to be used with Tone's .chain:\n\n\n\nThis alone is not really useful, so read on..\n\n### vol(volume)\n\nHelper that returns a Gain Node with the given volume. Intended to be used with Tone's .chain:\n\n\n\n### osc(type)\n\nHelper to set the waveform of a synth, monosynth or polysynth:\n\n\n\nThe base types are `sine`, `square`, `sawtooth`, `triangle`. You can also append a number between 1 and 32 to reduce the harmonic partials.\n\n### lowpass(cutoff)\n\nHelper that returns a Filter Node of type lowpass with the given cutoff. Intended to be used with Tone's .chain:\n\n\n\n### highpass(cutoff)\n\nHelper that returns a Filter Node of type highpass with the given cutoff. Intended to be used with Tone's .chain:\n\n\n\n### adsr(attack, decay?, sustain?, release?)\n\nHelper to set the envelope of a Tone.js instrument. Intended to be used with Tone's .set:\n\n\n\n### Experimental: Patternification\n\nWhile the above methods work for static sounds, there is also the option to patternify tone methods.\nThis is currently experimental, because the performance is not stable, and audio glitches will appear after some time.\nIt would be great to get this to work without glitches though, because it is fun!\n\n#### synth(type)\n\nWith .synth, you can create a synth with a variable wave type:\n\n\").slow(4)`}\n/>\n\n#### adsr(attack, decay?, sustain?, release?)\n\nChainable Envelope helper:\n\n\n\nDue to having more than one argument, this method is not patternified.\n\n#### filter(cuttoff)\n\nPatternified filter:\n\n\n\n#### gain(value)\n\nPatternified gain:\n\n\n\n#### autofilter(value)\n\nPatternified autofilter:\n\n\"\")`}\n/>\n\n## Tonal API\n\nThe Tonal API, uses [tonaljs](https://github.com/tonaljs/tonal) to provide helpers for musical operations.\n\n### transpose(semitones)\n\nTransposes all notes to the given number of semitones:\n\n\".slow(2)).transpose(0)`} />\n\nThis method gets really exciting when we use it with a pattern as above.\n\nInstead of numbers, scientific interval notation can be used as well:\n\n\".slow(2)).transpose(1)`} />\n\n### scale(name)\n\nTurns numbers into notes in the scale (zero indexed). Also sets scale for other scale operations, like scaleTranpose.\n\n\n\nNote that the scale root is octaved here. You can also omit the octave, then index zero will default to octave 3.\n\nAll the available scale names can be found [here](https://github.com/tonaljs/tonal/blob/main/packages/scale-type/data.ts).\n\n### scaleTranspose(steps)\n\nTransposes notes inside the scale by the number of steps:\n\n\")`}\n/>\n\n### voicings(range?)\n\nTurns chord symbols into voicings, using the smoothest voice leading possible:\n\n\".voicings(), \"\")`} />\n\nTODO: use voicing collection as first param + patternify.\n\n### rootNotes(octave = 2)\n\nTurns chord symbols into root notes of chords in given octave.\n\n\".rootNotes(3)`} />\n\nTogether with edit, struct and voicings, this can be used to create a basic backing track:\n\n\".edit(\n x => x.voicings(['d3','g4']).struct(\"~ x\"),\n x => x.rootNotes(2).tone(synth(osc('sawtooth4')).chain(out()))\n)`}\n/>\n\nTODO: use range instead of octave.\nTODO: find out why composition does not work\n\n## MIDI API\n\nStrudel also supports midi via [webmidi](https://npmjs.com/package/webmidi).\n\n### midi(outputName?)\n\nMake sure to have a midi device connected or to use an IAC Driver.\nIf no outputName is given, it uses the first midi output it finds.\n\nMidi is currently not supported by the mini repl used here, but you can [open the midi example in the repl](https://strudel.tidalcycles.org/#c3RhY2soIjxDXjcgQTcgRG03IEc3PiIubS52b2ljaW5ncygpLCAnPEMzIEEyIEQzIEcyPicubSkKICAubWlkaSgp).\n\nIn the REPL, you will se a log of the available MIDI devices.\n\n\n\n# Contributing\n\nContributions of any sort are very welcome! You can contribute by editing [this file](https://github.com/tidalcycles/strudel/blob/main/repl/src/tutorial/tutorial.mdx).\nAll you need is a github account.\n\nIf you want to run the tutorial locally, you can clone the and run:\n\n```sh\ncd repl && npm i && npm run tutorial\n```\n\nIf you want to contribute in another way, either\n\n- [fork strudel repo on GitHub](https://github.com/tidalcycles/strudel)\n- [Join the Discord Channel](https://discord.gg/remJ6gQA)\n- [play with the Strudel REPL](https://strudel.tidalcycles.org/)\n","import React from 'react';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar isFunction = function isFunction(obj) {\n return typeof obj === 'function';\n};\n\nvar MDXContext = /*#__PURE__*/React.createContext({});\nvar withMDXComponents = function withMDXComponents(Component) {\n return function (props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n components: allComponents\n }));\n };\n};\nvar useMDXComponents = function useMDXComponents(components) {\n var contextComponents = React.useContext(MDXContext);\n var allComponents = contextComponents;\n\n if (components) {\n allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components);\n }\n\n return allComponents;\n};\nvar MDXProvider = function MDXProvider(props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(MDXContext.Provider, {\n value: allComponents\n }, props.children);\n};\n\nvar TYPE_PROP_NAME = 'mdxType';\nvar DEFAULTS = {\n inlineCode: 'code',\n wrapper: function wrapper(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(React.Fragment, {}, children);\n }\n};\nvar MDXCreateElement = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var propComponents = props.components,\n mdxType = props.mdxType,\n originalType = props.originalType,\n parentName = props.parentName,\n etc = _objectWithoutProperties(props, [\"components\", \"mdxType\", \"originalType\", \"parentName\"]);\n\n var components = useMDXComponents(propComponents);\n var type = mdxType;\n var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n\n if (propComponents) {\n return /*#__PURE__*/React.createElement(Component, _objectSpread2(_objectSpread2({\n ref: ref\n }, etc), {}, {\n components: propComponents\n }));\n }\n\n return /*#__PURE__*/React.createElement(Component, _objectSpread2({\n ref: ref\n }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\nfunction createElement (type, props) {\n var args = arguments;\n var mdxType = props && props.mdxType;\n\n if (typeof type === 'string' || mdxType) {\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = MDXCreateElement;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.originalType = type;\n newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n createElementArgArray[1] = newProps;\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n }\n\n return React.createElement.apply(null, args);\n}\n\nexport { MDXContext, MDXProvider, createElement as mdx, useMDXComponents, withMDXComponents };\n","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","import React, { useCallback, useMemo, useState } from 'react';\nimport * as Tone from 'tone';\nimport useRepl from '../useRepl';\nimport CodeMirror, { markEvent } from '../CodeMirror';\nimport cx from '../cx';\n\nconst defaultSynth = new Tone.PolySynth().chain(new Tone.Gain(0.5), Tone.Destination).set({\n oscillator: { type: 'triangle' },\n envelope: {\n release: 0.01,\n },\n});\n\n// \"balanced\" | \"interactive\" | \"playback\";\nTone.setContext(new Tone.Context({ latencyHint: 'playback', lookAhead: 1 }));\nfunction MiniRepl({ tune, maxHeight = 500 }) {\n const [editor, setEditor] = useState();\n const { code, setCode, activateCode, activeCode, setPattern, error, cycle, dirty, log, togglePlay, hash } = useRepl({\n tune,\n defaultSynth,\n autolink: false,\n onDraw: useCallback(markEvent(editor), [editor]),\n });\n const lines = code.split('\\n').length;\n const height = Math.min(lines * 30 + 30, maxHeight);\n return (\n
\n
\n
\n togglePlay()}\n >\n {!cycle.started ? (\n \n \n \n ) : (\n \n \n \n )}\n \n activateCode()}\n >\n \n \n \n \n
\n
{error && {error.message}}
{' '}\n
\n
\n setCode(value)}\n />\n
\n {/* */}\n
\n );\n}\n\nexport default MiniRepl;\n","export { getContext, setContext } from \"./core/Global\";\nexport * from \"./classes\";\nexport * from \"./version\";\nimport { getContext } from \"./core/Global\";\nimport { ToneAudioBuffer } from \"./core/context/ToneAudioBuffer\";\nexport { start } from \"./core/Global\";\nexport { supported } from \"./core/context/AudioContext\";\n/**\n * The current audio context time of the global [[Context]].\n * See [[Context.now]]\n * @category Core\n */\nexport function now() {\n return getContext().now();\n}\n/**\n * The current audio context time of the global [[Context]] without the [[Context.lookAhead]]\n * See [[Context.immediate]]\n * @category Core\n */\nexport function immediate() {\n return getContext().immediate();\n}\n/**\n * The Transport object belonging to the global Tone.js Context.\n * See [[Transport]]\n * @category Core\n */\nexport const Transport = getContext().transport;\n/**\n * The Transport object belonging to the global Tone.js Context.\n * See [[Transport]]\n * @category Core\n */\nexport function getTransport() {\n return getContext().transport;\n}\n/**\n * The Destination (output) belonging to the global Tone.js Context.\n * See [[Destination]]\n * @category Core\n */\nexport const Destination = getContext().destination;\n/**\n * @deprecated Use [[Destination]]\n */\nexport const Master = getContext().destination;\n/**\n * The Destination (output) belonging to the global Tone.js Context.\n * See [[Destination]]\n * @category Core\n */\nexport function getDestination() {\n return getContext().destination;\n}\n/**\n * The [[Listener]] belonging to the global Tone.js Context.\n * @category Core\n */\nexport const Listener = getContext().listener;\n/**\n * The [[Listener]] belonging to the global Tone.js Context.\n * @category Core\n */\nexport function getListener() {\n return getContext().listener;\n}\n/**\n * Draw is used to synchronize the draw frame with the Transport's callbacks.\n * See [[Draw]]\n * @category Core\n */\nexport const Draw = getContext().draw;\n/**\n * Get the singleton attached to the global context.\n * Draw is used to synchronize the draw frame with the Transport's callbacks.\n * See [[Draw]]\n * @category Core\n */\nexport function getDraw() {\n return getContext().draw;\n}\n/**\n * A reference to the global context\n * See [[Context]]\n */\nexport const context = getContext();\n/**\n * Promise which resolves when all of the loading promises are resolved.\n * Alias for static [[ToneAudioBuffer.loaded]] method.\n * @category Core\n */\nexport function loaded() {\n return ToneAudioBuffer.loaded();\n}\n// this fills in name changes from 13.x to 14.x\nimport { ToneAudioBuffers } from \"./core/context/ToneAudioBuffers\";\nimport { ToneBufferSource } from \"./source/buffer/ToneBufferSource\";\nexport const Buffer = ToneAudioBuffer;\nexport const Buffers = ToneAudioBuffers;\nexport const BufferSource = ToneBufferSource;\n//# sourceMappingURL=index.js.map","export { getContext, setContext } from \"./core/Global\";\nexport * from \"./classes\";\nexport * from \"./version\";\nimport { getContext } from \"./core/Global\";\nimport { ToneAudioBuffer } from \"./core/context/ToneAudioBuffer\";\nexport { start } from \"./core/Global\";\nimport { Seconds } from \"./core/type/Units\";\nexport { supported } from \"./core/context/AudioContext\";\n\n/**\n * The current audio context time of the global [[Context]]. \n * See [[Context.now]]\n * @category Core\n */\nexport function now(): Seconds {\n\treturn getContext().now();\n}\n\n/**\n * The current audio context time of the global [[Context]] without the [[Context.lookAhead]]\n * See [[Context.immediate]]\n * @category Core\n */\nexport function immediate(): Seconds {\n\treturn getContext().immediate();\n}\n\n/**\n * The Transport object belonging to the global Tone.js Context.\n * See [[Transport]]\n * @category Core\n */\nexport const Transport = getContext().transport;\n\n/**\n * The Transport object belonging to the global Tone.js Context.\n * See [[Transport]]\n * @category Core\n */\nexport function getTransport(): import(\"./core/clock/Transport\").Transport {\n\treturn getContext().transport;\n}\n\n/**\n * The Destination (output) belonging to the global Tone.js Context.\n * See [[Destination]]\n * @category Core\n */\nexport const Destination = getContext().destination;\n\n/**\n * @deprecated Use [[Destination]]\n */\nexport const Master = getContext().destination;\n\n/**\n * The Destination (output) belonging to the global Tone.js Context.\n * See [[Destination]]\n * @category Core\n */\nexport function getDestination(): import(\"./core/context/Destination\").Destination {\n\treturn getContext().destination;\n}\n\n/**\n * The [[Listener]] belonging to the global Tone.js Context.\n * @category Core\n */\nexport const Listener = getContext().listener;\n\n/**\n * The [[Listener]] belonging to the global Tone.js Context.\n * @category Core\n */\nexport function getListener(): import(\"./core/context/Listener\").Listener {\n\treturn getContext().listener;\n}\n\n/**\n * Draw is used to synchronize the draw frame with the Transport's callbacks. \n * See [[Draw]]\n * @category Core\n */\nexport const Draw = getContext().draw;\n\n/**\n * Get the singleton attached to the global context. \n * Draw is used to synchronize the draw frame with the Transport's callbacks. \n * See [[Draw]]\n * @category Core\n */\nexport function getDraw(): import(\"./core/util/Draw\").Draw {\n\treturn getContext().draw;\n}\n\n/**\n * A reference to the global context\n * See [[Context]]\n */\nexport const context = getContext();\n\n/**\n * Promise which resolves when all of the loading promises are resolved. \n * Alias for static [[ToneAudioBuffer.loaded]] method.\n * @category Core\n */\nexport function loaded() {\n\treturn ToneAudioBuffer.loaded();\n}\n\n// this fills in name changes from 13.x to 14.x\nimport { ToneAudioBuffers } from \"./core/context/ToneAudioBuffers\";\nimport { ToneBufferSource } from \"./source/buffer/ToneBufferSource\";\nexport const Buffer: typeof ToneAudioBuffer = ToneAudioBuffer;\nexport const Buffers: typeof ToneAudioBuffers = ToneAudioBuffers;\nexport const BufferSource: typeof ToneBufferSource = ToneBufferSource;\n","import { version } from \"../version\";\nimport { hasAudioContext, theWindow } from \"./context/AudioContext\";\nimport { Context } from \"./context/Context\";\nimport { DummyContext } from \"./context/DummyContext\";\nimport { OfflineContext } from \"./context/OfflineContext\";\nimport { isAudioContext, isOfflineAudioContext } from \"./util/AdvancedTypeCheck\";\n/**\n * This dummy context is used to avoid throwing immediate errors when importing in Node.js\n */\nconst dummyContext = new DummyContext();\n/**\n * The global audio context which is getable and assignable through\n * getContext and setContext\n */\nlet globalContext = dummyContext;\n/**\n * Returns the default system-wide [[Context]]\n * @category Core\n */\nexport function getContext() {\n if (globalContext === dummyContext && hasAudioContext) {\n setContext(new Context());\n }\n return globalContext;\n}\n/**\n * Set the default audio context\n * @category Core\n */\nexport function setContext(context) {\n if (isAudioContext(context)) {\n globalContext = new Context(context);\n }\n else if (isOfflineAudioContext(context)) {\n globalContext = new OfflineContext(context);\n }\n else {\n globalContext = context;\n }\n}\n/**\n * Most browsers will not play _any_ audio until a user\n * clicks something (like a play button). Invoke this method\n * on a click or keypress event handler to start the audio context.\n * More about the Autoplay policy\n * [here](https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio)\n * @example\n * document.querySelector(\"button\").addEventListener(\"click\", async () => {\n * \tawait Tone.start();\n * \tconsole.log(\"context started\");\n * });\n * @category Core\n */\nexport function start() {\n return globalContext.resume();\n}\n/**\n * Log Tone.js + version in the console.\n */\nif (theWindow && !theWindow.TONE_SILENCE_LOGGING) {\n let prefix = \"v\";\n if (version === \"dev\") {\n prefix = \"\";\n }\n const printString = ` * Tone.js ${prefix}${version} * `;\n // eslint-disable-next-line no-console\n console.log(`%c${printString}`, \"background: #000; color: #fff\");\n}\n//# sourceMappingURL=Global.js.map","import { version } from \"../version\";\nimport { AnyAudioContext, hasAudioContext, theWindow } from \"./context/AudioContext\";\nimport { Context } from \"./context/Context\";\nimport { DummyContext } from \"./context/DummyContext\";\nimport { BaseContext } from \"./context/BaseContext\";\nimport { OfflineContext } from \"./context/OfflineContext\";\nimport { isAudioContext, isOfflineAudioContext } from \"./util/AdvancedTypeCheck\";\n\n/**\n * This dummy context is used to avoid throwing immediate errors when importing in Node.js\n */\nconst dummyContext = new DummyContext();\n\n/**\n * The global audio context which is getable and assignable through\n * getContext and setContext\n */\nlet globalContext: BaseContext = dummyContext;\n\n/**\n * Returns the default system-wide [[Context]]\n * @category Core\n */\nexport function getContext(): BaseContext {\n\tif (globalContext === dummyContext && hasAudioContext) {\n\t\tsetContext(new Context());\n\t}\n\treturn globalContext;\n}\n\n/**\n * Set the default audio context\n * @category Core\n */\nexport function setContext(context: BaseContext | AnyAudioContext): void {\n\tif (isAudioContext(context)) {\n\t\tglobalContext = new Context(context);\n\t} else if (isOfflineAudioContext(context)) {\n\t\tglobalContext = new OfflineContext(context);\n\t} else {\n\t\tglobalContext = context;\n\t}\n}\n\n/**\n * Most browsers will not play _any_ audio until a user\n * clicks something (like a play button). Invoke this method\n * on a click or keypress event handler to start the audio context.\n * More about the Autoplay policy\n * [here](https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio)\n * @example\n * document.querySelector(\"button\").addEventListener(\"click\", async () => {\n * \tawait Tone.start();\n * \tconsole.log(\"context started\");\n * });\n * @category Core\n */\nexport function start(): Promise {\n\treturn globalContext.resume();\n}\n\n/**\n * Log Tone.js + version in the console.\n */\nif (theWindow && !theWindow.TONE_SILENCE_LOGGING) {\n\tlet prefix = \"v\";\n\tif (version === \"dev\") {\n\t\tprefix = \"\";\n\t}\n\tconst printString = ` * Tone.js ${prefix}${version} * `;\n\t// eslint-disable-next-line no-console\n\tconsole.log(`%c${printString}`, \"background: #000; color: #fff\");\n}\n","export const version = \"14.7.77\";\n//# sourceMappingURL=version.js.map","export const version: string = \"14.7.77\";\n","import { AudioContext as stdAudioContext, AudioWorkletNode as stdAudioWorkletNode, OfflineAudioContext as stdOfflineAudioContext } from \"standardized-audio-context\";\nimport { assert } from \"../util/Debug\";\nimport { isDefined } from \"../util/TypeCheck\";\n/**\n * Create a new AudioContext\n */\nexport function createAudioContext(options) {\n return new stdAudioContext(options);\n}\n/**\n * Create a new OfflineAudioContext\n */\nexport function createOfflineAudioContext(channels, length, sampleRate) {\n return new stdOfflineAudioContext(channels, length, sampleRate);\n}\n/**\n * A reference to the window object\n * @hidden\n */\nexport const theWindow = typeof self === \"object\" ? self : null;\n/**\n * If the browser has a window object which has an AudioContext\n * @hidden\n */\nexport const hasAudioContext = theWindow &&\n (theWindow.hasOwnProperty(\"AudioContext\") || theWindow.hasOwnProperty(\"webkitAudioContext\"));\nexport function createAudioWorkletNode(context, name, options) {\n assert(isDefined(stdAudioWorkletNode), \"This node only works in a secure context (https or localhost)\");\n // @ts-ignore\n return new stdAudioWorkletNode(context, name, options);\n}\n/**\n * This promise resolves to a boolean which indicates if the\n * functionality is supported within the currently used browse.\n * Taken from [standardized-audio-context](https://github.com/chrisguttandin/standardized-audio-context#issupported)\n */\nexport { isSupported as supported } from \"standardized-audio-context\";\n//# sourceMappingURL=AudioContext.js.map","import {\n\tAudioContext as stdAudioContext,\n\tAudioWorkletNode as stdAudioWorkletNode,\n\tOfflineAudioContext as stdOfflineAudioContext\n} from \"standardized-audio-context\";\nimport { assert } from \"../util/Debug\";\nimport { isDefined } from \"../util/TypeCheck\";\n\n/**\n * Create a new AudioContext\n */\nexport function createAudioContext(options?: AudioContextOptions): AudioContext {\n\treturn new stdAudioContext(options) as unknown as AudioContext;\n}\n\n/**\n * Create a new OfflineAudioContext\n */\nexport function createOfflineAudioContext(channels: number, length: number, sampleRate: number): OfflineAudioContext {\n\treturn new stdOfflineAudioContext(channels, length, sampleRate) as unknown as OfflineAudioContext;\n}\n\n/**\n * Either the online or offline audio context\n */\nexport type AnyAudioContext = AudioContext | OfflineAudioContext;\n\n/**\n * Interface for things that Tone.js adds to the window\n */\ninterface ToneWindow extends Window {\n\tTONE_SILENCE_LOGGING?: boolean;\n\tTONE_DEBUG_CLASS?: string;\n}\n\n/**\n * A reference to the window object\n * @hidden\n */\nexport const theWindow: ToneWindow | null = typeof self === \"object\" ? self : null;\n\n/**\n * If the browser has a window object which has an AudioContext\n * @hidden\n */\nexport const hasAudioContext = theWindow &&\n\t(theWindow.hasOwnProperty(\"AudioContext\") || theWindow.hasOwnProperty(\"webkitAudioContext\"));\n\nexport function createAudioWorkletNode(context: AnyAudioContext, name: string, options?: Partial): AudioWorkletNode {\n\tassert(isDefined(stdAudioWorkletNode), \"This node only works in a secure context (https or localhost)\");\n\t// @ts-ignore\n\treturn new stdAudioWorkletNode(context, name, options);\n}\n\n/**\n * This promise resolves to a boolean which indicates if the \n * functionality is supported within the currently used browse. \n * Taken from [standardized-audio-context](https://github.com/chrisguttandin/standardized-audio-context#issupported)\n */\nexport { isSupported as supported } from \"standardized-audio-context\";\n","import { createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent } from 'automation-events';\nimport { createAbortError } from './factories/abort-error';\nimport { createAddActiveInputConnectionToAudioNode } from './factories/add-active-input-connection-to-audio-node';\nimport { createAddAudioNodeConnections } from './factories/add-audio-node-connections';\nimport { createAddAudioParamConnections } from './factories/add-audio-param-connections';\nimport { createAddAudioWorkletModule } from './factories/add-audio-worklet-module';\nimport { createAddConnectionToAudioNode } from './factories/add-connection-to-audio-node';\nimport { createAddPassiveInputConnectionToAudioNode } from './factories/add-passive-input-connection-to-audio-node';\nimport { createAddSilentConnection } from './factories/add-silent-connection';\nimport { createAddUnrenderedAudioWorkletNode } from './factories/add-unrendered-audio-worklet-node';\nimport { createAnalyserNodeConstructor } from './factories/analyser-node-constructor';\nimport { createAnalyserNodeRendererFactory } from './factories/analyser-node-renderer-factory';\nimport { createAudioBufferConstructor } from './factories/audio-buffer-constructor';\nimport { createAudioBufferSourceNodeConstructor } from './factories/audio-buffer-source-node-constructor';\nimport { createAudioBufferSourceNodeRendererFactory } from './factories/audio-buffer-source-node-renderer-factory';\nimport { createAudioContextConstructor } from './factories/audio-context-constructor';\nimport { createAudioDestinationNodeConstructor } from './factories/audio-destination-node-constructor';\nimport { createAudioDestinationNodeRenderer } from './factories/audio-destination-node-renderer-factory';\nimport { createAudioListenerFactory } from './factories/audio-listener-factory';\nimport { createAudioNodeConstructor } from './factories/audio-node-constructor';\nimport { createAudioParamFactory } from './factories/audio-param-factory';\nimport { createAudioParamRenderer } from './factories/audio-param-renderer';\nimport { createAudioWorkletNodeConstructor } from './factories/audio-worklet-node-constructor';\nimport { createAudioWorkletNodeRendererFactory } from './factories/audio-worklet-node-renderer-factory';\nimport { createBaseAudioContextConstructor } from './factories/base-audio-context-constructor';\nimport { createBiquadFilterNodeConstructor } from './factories/biquad-filter-node-constructor';\nimport { createBiquadFilterNodeRendererFactory } from './factories/biquad-filter-node-renderer-factory';\nimport { createCacheTestResult } from './factories/cache-test-result';\nimport { createChannelMergerNodeConstructor } from './factories/channel-merger-node-constructor';\nimport { createChannelMergerNodeRendererFactory } from './factories/channel-merger-node-renderer-factory';\nimport { createChannelSplitterNodeConstructor } from './factories/channel-splitter-node-constructor';\nimport { createChannelSplitterNodeRendererFactory } from './factories/channel-splitter-node-renderer-factory';\nimport { createConnectAudioParam } from './factories/connect-audio-param';\nimport { createConnectMultipleOutputs } from './factories/connect-multiple-outputs';\nimport { createConnectedNativeAudioBufferSourceNodeFactory } from './factories/connected-native-audio-buffer-source-node-factory';\nimport { createConstantSourceNodeConstructor } from './factories/constant-source-node-constructor';\nimport { createConstantSourceNodeRendererFactory } from './factories/constant-source-node-renderer-factory';\nimport { createConvertNumberToUnsignedLong } from './factories/convert-number-to-unsigned-long';\nimport { createConvolverNodeConstructor } from './factories/convolver-node-constructor';\nimport { createConvolverNodeRendererFactory } from './factories/convolver-node-renderer-factory';\nimport { createCreateNativeOfflineAudioContext } from './factories/create-native-offline-audio-context';\nimport { createDataCloneError } from './factories/data-clone-error';\nimport { createDecodeAudioData } from './factories/decode-audio-data';\nimport { createDecrementCycleCounter } from './factories/decrement-cycle-counter';\nimport { createDelayNodeConstructor } from './factories/delay-node-constructor';\nimport { createDelayNodeRendererFactory } from './factories/delay-node-renderer-factory';\nimport { createDeleteActiveInputConnectionToAudioNode } from './factories/delete-active-input-connection-to-audio-node';\nimport { createDeleteUnrenderedAudioWorkletNode } from './factories/delete-unrendered-audio-worklet-node';\nimport { createDetectCycles } from './factories/detect-cycles';\nimport { createDisconnectMultipleOutputs } from './factories/disconnect-multiple-outputs';\nimport { createDynamicsCompressorNodeConstructor } from './factories/dynamics-compressor-node-constructor';\nimport { createDynamicsCompressorNodeRendererFactory } from './factories/dynamics-compressor-node-renderer-factory';\nimport { createEncodingError } from './factories/encoding-error';\nimport { createEvaluateSource } from './factories/evaluate-source';\nimport { createEventTargetConstructor } from './factories/event-target-constructor';\nimport { createExposeCurrentFrameAndCurrentTime } from './factories/expose-current-frame-and-current-time';\nimport { createFetchSource } from './factories/fetch-source';\nimport { createGainNodeConstructor } from './factories/gain-node-constructor';\nimport { createGainNodeRendererFactory } from './factories/gain-node-renderer-factory';\nimport { createGetActiveAudioWorkletNodeInputs } from './factories/get-active-audio-worklet-node-inputs';\nimport { createGetAudioNodeRenderer } from './factories/get-audio-node-renderer';\nimport { createGetAudioNodeTailTime } from './factories/get-audio-node-tail-time';\nimport { createGetAudioParamRenderer } from './factories/get-audio-param-renderer';\nimport { createGetBackupOfflineAudioContext } from './factories/get-backup-offline-audio-context';\nimport { createGetNativeContext } from './factories/get-native-context';\nimport { createGetOrCreateBackupOfflineAudioContext } from './factories/get-or-create-backup-offline-audio-context';\nimport { createGetUnrenderedAudioWorkletNodes } from './factories/get-unrendered-audio-worklet-nodes';\nimport { createIIRFilterNodeConstructor } from './factories/iir-filter-node-constructor';\nimport { createIIRFilterNodeRendererFactory } from './factories/iir-filter-node-renderer-factory';\nimport { createIncrementCycleCounterFactory } from './factories/increment-cycle-counter-factory';\nimport { createIndexSizeError } from './factories/index-size-error';\nimport { createInvalidAccessError } from './factories/invalid-access-error';\nimport { createInvalidStateError } from './factories/invalid-state-error';\nimport { createIsAnyAudioContext } from './factories/is-any-audio-context';\nimport { createIsAnyAudioNode } from './factories/is-any-audio-node';\nimport { createIsAnyAudioParam } from './factories/is-any-audio-param';\nimport { createIsAnyOfflineAudioContext } from './factories/is-any-offline-audio-context';\nimport { createIsNativeAudioContext } from './factories/is-native-audio-context';\nimport { createIsNativeAudioNode } from './factories/is-native-audio-node';\nimport { createIsNativeAudioParam } from './factories/is-native-audio-param';\nimport { createIsNativeContext } from './factories/is-native-context';\nimport { createIsNativeOfflineAudioContext } from './factories/is-native-offline-audio-context';\nimport { createIsSecureContext } from './factories/is-secure-context';\nimport { createIsSupportedPromise } from './factories/is-supported-promise';\nimport { createMediaElementAudioSourceNodeConstructor } from './factories/media-element-audio-source-node-constructor';\nimport { createMediaStreamAudioDestinationNodeConstructor } from './factories/media-stream-audio-destination-node-constructor';\nimport { createMediaStreamAudioSourceNodeConstructor } from './factories/media-stream-audio-source-node-constructor';\nimport { createMediaStreamTrackAudioSourceNodeConstructor } from './factories/media-stream-track-audio-source-node-constructor';\nimport { createMinimalAudioContextConstructor } from './factories/minimal-audio-context-constructor';\nimport { createMinimalBaseAudioContextConstructor } from './factories/minimal-base-audio-context-constructor';\nimport { createMinimalOfflineAudioContextConstructor } from './factories/minimal-offline-audio-context-constructor';\nimport { createMonitorConnections } from './factories/monitor-connections';\nimport { createNativeAnalyserNodeFactory } from './factories/native-analyser-node-factory';\nimport { createNativeAudioBufferConstructor } from './factories/native-audio-buffer-constructor';\nimport { createNativeAudioBufferSourceNodeFactory } from './factories/native-audio-buffer-source-node-factory';\nimport { createNativeAudioContextConstructor } from './factories/native-audio-context-constructor';\nimport { createNativeAudioDestinationNodeFactory } from './factories/native-audio-destination-node';\nimport { createNativeAudioWorkletNodeConstructor } from './factories/native-audio-worklet-node-constructor';\nimport { createNativeAudioWorkletNodeFactory } from './factories/native-audio-worklet-node-factory';\nimport { createNativeAudioWorkletNodeFakerFactory } from './factories/native-audio-worklet-node-faker-factory';\nimport { createNativeBiquadFilterNode } from './factories/native-biquad-filter-node';\nimport { createNativeChannelMergerNodeFactory } from './factories/native-channel-merger-node-factory';\nimport { createNativeChannelSplitterNode } from './factories/native-channel-splitter-node';\nimport { createNativeConstantSourceNodeFactory } from './factories/native-constant-source-node-factory';\nimport { createNativeConstantSourceNodeFakerFactory } from './factories/native-constant-source-node-faker-factory';\nimport { createNativeConvolverNodeFactory } from './factories/native-convolver-node-factory';\nimport { createNativeDelayNode } from './factories/native-delay-node';\nimport { createNativeDynamicsCompressorNodeFactory } from './factories/native-dynamics-compressor-node-factory';\nimport { createNativeGainNode } from './factories/native-gain-node';\nimport { createNativeIIRFilterNodeFactory } from './factories/native-iir-filter-node-factory';\nimport { createNativeIIRFilterNodeFakerFactory } from './factories/native-iir-filter-node-faker-factory';\nimport { createNativeMediaElementAudioSourceNode } from './factories/native-media-element-audio-source-node';\nimport { createNativeMediaStreamAudioDestinationNode } from './factories/native-media-stream-audio-destination-node';\nimport { createNativeMediaStreamAudioSourceNode } from './factories/native-media-stream-audio-source-node';\nimport { createNativeMediaStreamTrackAudioSourceNodeFactory } from './factories/native-media-stream-track-audio-source-node-factory';\nimport { createNativeOfflineAudioContextConstructor } from './factories/native-offline-audio-context-constructor';\nimport { createNativeOscillatorNodeFactory } from './factories/native-oscillator-node-factory';\nimport { createNativePannerNodeFactory } from './factories/native-panner-node-factory';\nimport { createNativePannerNodeFakerFactory } from './factories/native-panner-node-faker-factory';\nimport { createNativePeriodicWaveFactory } from './factories/native-periodic-wave-factory';\nimport { createNativeScriptProcessorNode } from './factories/native-script-processor-node';\nimport { createNativeStereoPannerNodeFactory } from './factories/native-stereo-panner-node-factory';\nimport { createNativeStereoPannerNodeFakerFactory } from './factories/native-stereo-panner-node-faker-factory';\nimport { createNativeWaveShaperNodeFactory } from './factories/native-wave-shaper-node-factory';\nimport { createNativeWaveShaperNodeFakerFactory } from './factories/native-wave-shaper-node-faker-factory';\nimport { createNotSupportedError } from './factories/not-supported-error';\nimport { createOfflineAudioContextConstructor } from './factories/offline-audio-context-constructor';\nimport { createOscillatorNodeConstructor } from './factories/oscillator-node-constructor';\nimport { createOscillatorNodeRendererFactory } from './factories/oscillator-node-renderer-factory';\nimport { createPannerNodeConstructor } from './factories/panner-node-constructor';\nimport { createPannerNodeRendererFactory } from './factories/panner-node-renderer-factory';\nimport { createPeriodicWaveConstructor } from './factories/periodic-wave-constructor';\nimport { createRenderAutomation } from './factories/render-automation';\nimport { createRenderInputsOfAudioNode } from './factories/render-inputs-of-audio-node';\nimport { createRenderInputsOfAudioParam } from './factories/render-inputs-of-audio-param';\nimport { createRenderNativeOfflineAudioContext } from './factories/render-native-offline-audio-context';\nimport { createSetActiveAudioWorkletNodeInputs } from './factories/set-active-audio-worklet-node-inputs';\nimport { createSetAudioNodeTailTime } from './factories/set-audio-node-tail-time';\nimport { createStartRendering } from './factories/start-rendering';\nimport { createStereoPannerNodeConstructor } from './factories/stereo-panner-node-constructor';\nimport { createStereoPannerNodeRendererFactory } from './factories/stereo-panner-node-renderer-factory';\nimport { createTestAudioBufferConstructorSupport } from './factories/test-audio-buffer-constructor-support';\nimport { createTestAudioBufferCopyChannelMethodsSubarraySupport } from './factories/test-audio-buffer-copy-channel-methods-subarray-support';\nimport { createTestAudioContextCloseMethodSupport } from './factories/test-audio-context-close-method-support';\nimport { createTestAudioContextDecodeAudioDataMethodTypeErrorSupport } from './factories/test-audio-context-decode-audio-data-method-type-error-support';\nimport { createTestAudioContextOptionsSupport } from './factories/test-audio-context-options-support';\nimport { createTestAudioNodeConnectMethodSupport } from './factories/test-audio-node-connect-method-support';\nimport { createTestAudioWorkletProcessorNoOutputsSupport } from './factories/test-audio-worklet-processor-no-outputs-support';\nimport { createTestAudioWorkletProcessorPostMessageSupport } from './factories/test-audio-worklet-processor-post-message-support';\nimport { createTestChannelMergerNodeChannelCountSupport } from './factories/test-channel-merger-node-channel-count-support';\nimport { createTestConstantSourceNodeAccurateSchedulingSupport } from './factories/test-constant-source-node-accurate-scheduling-support';\nimport { createTestConvolverNodeBufferReassignabilitySupport } from './factories/test-convolver-node-buffer-reassignability-support';\nimport { createTestConvolverNodeChannelCountSupport } from './factories/test-convolver-node-channel-count-support';\nimport { createTestIsSecureContextSupport } from './factories/test-is-secure-context-support';\nimport { createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport } from './factories/test-media-stream-audio-source-node-media-stream-without-audio-track-support';\nimport { createTestOfflineAudioContextCurrentTimeSupport } from './factories/test-offline-audio-context-current-time-support';\nimport { createTestStereoPannerNodeDefaultValueSupport } from './factories/test-stereo-panner-node-default-value-support';\nimport { createUnknownError } from './factories/unknown-error';\nimport { createWaveShaperNodeConstructor } from './factories/wave-shaper-node-constructor';\nimport { createWaveShaperNodeRendererFactory } from './factories/wave-shaper-node-renderer-factory';\nimport { createWindow } from './factories/window';\nimport { createWrapAudioBufferCopyChannelMethods } from './factories/wrap-audio-buffer-copy-channel-methods';\nimport { createWrapAudioBufferCopyChannelMethodsOutOfBounds } from './factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds';\nimport { createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer } from './factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer';\nimport { createWrapChannelMergerNode } from './factories/wrap-channel-merger-node';\nimport { AUDIO_NODE_CONNECTIONS_STORE, AUDIO_NODE_STORE, AUDIO_PARAM_CONNECTIONS_STORE, AUDIO_PARAM_STORE, CONTEXT_STORE, CYCLE_COUNTERS } from './globals';\nimport { connectNativeAudioNodeToNativeAudioNode } from './helpers/connect-native-audio-node-to-native-audio-node';\nimport { disconnectNativeAudioNodeFromNativeAudioNode } from './helpers/disconnect-native-audio-node-from-native-audio-node';\nimport { getAudioNodeConnections } from './helpers/get-audio-node-connections';\nimport { getAudioParamConnections } from './helpers/get-audio-param-connections';\nimport { getEventListenersOfAudioNode } from './helpers/get-event-listeners-of-audio-node';\nimport { getFirstSample } from './helpers/get-first-sample';\nimport { getNativeAudioNode } from './helpers/get-native-audio-node';\nimport { getNativeAudioParam } from './helpers/get-native-audio-param';\nimport { getValueForKey } from './helpers/get-value-for-key';\nimport { insertElementInSet } from './helpers/insert-element-in-set';\nimport { isActiveAudioNode } from './helpers/is-active-audio-node';\nimport { isDCCurve } from './helpers/is-dc-curve';\nimport { isPartOfACycle } from './helpers/is-part-of-a-cycle';\nimport { isPassiveAudioNode } from './helpers/is-passive-audio-node';\nimport { overwriteAccessors } from './helpers/overwrite-accessors';\nimport { pickElementFromSet } from './helpers/pick-element-from-set';\nimport { sanitizeAudioWorkletNodeOptions } from './helpers/sanitize-audio-worklet-node-options';\nimport { sanitizeChannelSplitterOptions } from './helpers/sanitize-channel-splitter-options';\nimport { sanitizePeriodicWaveOptions } from './helpers/sanitize-periodic-wave-options';\nimport { setValueAtTimeUntilPossible } from './helpers/set-value-at-time-until-possible';\nimport { testAudioBufferCopyChannelMethodsOutOfBoundsSupport } from './helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support';\nimport { testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport } from './helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support';\nimport { testAudioBufferSourceNodeStartMethodOffsetClampingSupport } from './helpers/test-audio-buffer-source-node-start-method-offset-clamping-support';\nimport { testAudioBufferSourceNodeStopMethodNullifiedBufferSupport } from './helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support';\nimport { testAudioScheduledSourceNodeStartMethodNegativeParametersSupport } from './helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support';\nimport { testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport } from './helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support';\nimport { testAudioScheduledSourceNodeStopMethodNegativeParametersSupport } from './helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support';\nimport { testAudioWorkletNodeOptionsClonability } from './helpers/test-audio-worklet-node-options-clonability';\nimport { testDomExceptionConstructorSupport } from './helpers/test-dom-exception-constructor-support';\nimport { testPromiseSupport } from './helpers/test-promise-support';\nimport { testTransferablesSupport } from './helpers/test-transferables-support';\nimport { wrapAudioBufferSourceNodeStartMethodOffsetClamping } from './helpers/wrap-audio-buffer-source-node-start-method-offset-clamping';\nimport { wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls } from './helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls';\nimport { wrapEventListener } from './helpers/wrap-event-listener';\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\nconst addActiveInputConnectionToAudioNode = createAddActiveInputConnectionToAudioNode(insertElementInSet);\nconst addPassiveInputConnectionToAudioNode = createAddPassiveInputConnectionToAudioNode(insertElementInSet);\nconst deleteActiveInputConnectionToAudioNode = createDeleteActiveInputConnectionToAudioNode(pickElementFromSet);\nconst audioNodeTailTimeStore = new WeakMap();\nconst getAudioNodeTailTime = createGetAudioNodeTailTime(audioNodeTailTimeStore);\nconst cacheTestResult = createCacheTestResult(new Map(), new WeakMap());\nconst window = createWindow();\nconst createNativeAnalyserNode = createNativeAnalyserNodeFactory(cacheTestResult, createIndexSizeError);\nconst getAudioNodeRenderer = createGetAudioNodeRenderer(getAudioNodeConnections);\nconst renderInputsOfAudioNode = createRenderInputsOfAudioNode(getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle);\nconst createAnalyserNodeRenderer = createAnalyserNodeRendererFactory(createNativeAnalyserNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst getNativeContext = createGetNativeContext(CONTEXT_STORE);\nconst nativeOfflineAudioContextConstructor = createNativeOfflineAudioContextConstructor(window);\nconst isNativeOfflineAudioContext = createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor);\nconst audioParamAudioNodeStore = new WeakMap();\nconst eventTargetConstructor = createEventTargetConstructor(wrapEventListener);\nconst nativeAudioContextConstructor = createNativeAudioContextConstructor(window);\nconst isNativeAudioContext = createIsNativeAudioContext(nativeAudioContextConstructor);\nconst isNativeAudioNode = createIsNativeAudioNode(window);\nconst isNativeAudioParam = createIsNativeAudioParam(window);\nconst nativeAudioWorkletNodeConstructor = createNativeAudioWorkletNodeConstructor(window);\nconst audioNodeConstructor = createAudioNodeConstructor(createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE), createAddConnectionToAudioNode(addActiveInputConnectionToAudioNode, addPassiveInputConnectionToAudioNode, connectNativeAudioNodeToNativeAudioNode, deleteActiveInputConnectionToAudioNode, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getAudioNodeTailTime, getEventListenersOfAudioNode, getNativeAudioNode, insertElementInSet, isActiveAudioNode, isPartOfACycle, isPassiveAudioNode), cacheTestResult, createIncrementCycleCounterFactory(CYCLE_COUNTERS, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, isActiveAudioNode), createIndexSizeError, createInvalidAccessError, createNotSupportedError, createDecrementCycleCounter(connectNativeAudioNodeToNativeAudioNode, CYCLE_COUNTERS, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, getNativeContext, isActiveAudioNode, isNativeOfflineAudioContext), createDetectCycles(audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey), eventTargetConstructor, getNativeContext, isNativeAudioContext, isNativeAudioNode, isNativeAudioParam, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor);\nconst analyserNodeConstructor = createAnalyserNodeConstructor(audioNodeConstructor, createAnalyserNodeRenderer, createIndexSizeError, createNativeAnalyserNode, getNativeContext, isNativeOfflineAudioContext);\nexport { analyserNodeConstructor as AnalyserNode };\nconst audioBufferStore = new WeakSet();\nconst nativeAudioBufferConstructor = createNativeAudioBufferConstructor(window);\nconst convertNumberToUnsignedLong = createConvertNumberToUnsignedLong(new Uint32Array(1));\nconst wrapAudioBufferCopyChannelMethods = createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong, createIndexSizeError);\nconst wrapAudioBufferCopyChannelMethodsOutOfBounds = createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong);\nconst audioBufferConstructor = createAudioBufferConstructor(audioBufferStore, cacheTestResult, createNotSupportedError, nativeAudioBufferConstructor, nativeOfflineAudioContextConstructor, createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor), wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds);\nexport { audioBufferConstructor as AudioBuffer };\nconst addSilentConnection = createAddSilentConnection(createNativeGainNode);\nconst renderInputsOfAudioParam = createRenderInputsOfAudioParam(getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle);\nconst connectAudioParam = createConnectAudioParam(renderInputsOfAudioParam);\nconst createNativeAudioBufferSourceNode = createNativeAudioBufferSourceNodeFactory(addSilentConnection, cacheTestResult, testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, testAudioBufferSourceNodeStartMethodOffsetClampingSupport, testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioBufferSourceNodeStartMethodOffsetClamping, createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors), wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls);\nconst renderAutomation = createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections), renderInputsOfAudioParam);\nconst createAudioBufferSourceNodeRenderer = createAudioBufferSourceNodeRendererFactory(connectAudioParam, createNativeAudioBufferSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst createAudioParam = createAudioParamFactory(createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE), audioParamAudioNodeStore, AUDIO_PARAM_STORE, createAudioParamRenderer, createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent, nativeAudioContextConstructor, setValueAtTimeUntilPossible);\nconst audioBufferSourceNodeConstructor = createAudioBufferSourceNodeConstructor(audioNodeConstructor, createAudioBufferSourceNodeRenderer, createAudioParam, createInvalidStateError, createNativeAudioBufferSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener);\nexport { audioBufferSourceNodeConstructor as AudioBufferSourceNode };\nconst audioDestinationNodeConstructor = createAudioDestinationNodeConstructor(audioNodeConstructor, createAudioDestinationNodeRenderer, createIndexSizeError, createInvalidStateError, createNativeAudioDestinationNodeFactory(createNativeGainNode, overwriteAccessors), getNativeContext, isNativeOfflineAudioContext, renderInputsOfAudioNode);\nconst createBiquadFilterNodeRenderer = createBiquadFilterNodeRendererFactory(connectAudioParam, createNativeBiquadFilterNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst setAudioNodeTailTime = createSetAudioNodeTailTime(audioNodeTailTimeStore);\nconst biquadFilterNodeConstructor = createBiquadFilterNodeConstructor(audioNodeConstructor, createAudioParam, createBiquadFilterNodeRenderer, createInvalidAccessError, createNativeBiquadFilterNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst monitorConnections = createMonitorConnections(insertElementInSet, isNativeAudioNode);\nconst wrapChannelMergerNode = createWrapChannelMergerNode(createInvalidStateError, monitorConnections);\nconst createNativeChannelMergerNode = createNativeChannelMergerNodeFactory(nativeAudioContextConstructor, wrapChannelMergerNode);\nconst createChannelMergerNodeRenderer = createChannelMergerNodeRendererFactory(createNativeChannelMergerNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst channelMergerNodeConstructor = createChannelMergerNodeConstructor(audioNodeConstructor, createChannelMergerNodeRenderer, createNativeChannelMergerNode, getNativeContext, isNativeOfflineAudioContext);\nconst createChannelSplitterNodeRenderer = createChannelSplitterNodeRendererFactory(createNativeChannelSplitterNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst channelSplitterNodeConstructor = createChannelSplitterNodeConstructor(audioNodeConstructor, createChannelSplitterNodeRenderer, createNativeChannelSplitterNode, getNativeContext, isNativeOfflineAudioContext, sanitizeChannelSplitterOptions);\nconst createNativeConstantSourceNodeFaker = createNativeConstantSourceNodeFakerFactory(addSilentConnection, createNativeAudioBufferSourceNode, createNativeGainNode, monitorConnections);\nconst createNativeConstantSourceNode = createNativeConstantSourceNodeFactory(addSilentConnection, cacheTestResult, createNativeConstantSourceNodeFaker, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport);\nconst createConstantSourceNodeRenderer = createConstantSourceNodeRendererFactory(connectAudioParam, createNativeConstantSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst constantSourceNodeConstructor = createConstantSourceNodeConstructor(audioNodeConstructor, createAudioParam, createConstantSourceNodeRenderer, createNativeConstantSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener);\nconst createNativeConvolverNode = createNativeConvolverNodeFactory(createNotSupportedError, overwriteAccessors);\nconst createConvolverNodeRenderer = createConvolverNodeRendererFactory(createNativeConvolverNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst convolverNodeConstructor = createConvolverNodeConstructor(audioNodeConstructor, createConvolverNodeRenderer, createNativeConvolverNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createDelayNodeRenderer = createDelayNodeRendererFactory(connectAudioParam, createNativeDelayNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst delayNodeConstructor = createDelayNodeConstructor(audioNodeConstructor, createAudioParam, createDelayNodeRenderer, createNativeDelayNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createNativeDynamicsCompressorNode = createNativeDynamicsCompressorNodeFactory(createNotSupportedError);\nconst createDynamicsCompressorNodeRenderer = createDynamicsCompressorNodeRendererFactory(connectAudioParam, createNativeDynamicsCompressorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst dynamicsCompressorNodeConstructor = createDynamicsCompressorNodeConstructor(audioNodeConstructor, createAudioParam, createDynamicsCompressorNodeRenderer, createNativeDynamicsCompressorNode, createNotSupportedError, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createGainNodeRenderer = createGainNodeRendererFactory(connectAudioParam, createNativeGainNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst gainNodeConstructor = createGainNodeConstructor(audioNodeConstructor, createAudioParam, createGainNodeRenderer, createNativeGainNode, getNativeContext, isNativeOfflineAudioContext);\nconst createNativeIIRFilterNodeFaker = createNativeIIRFilterNodeFakerFactory(createInvalidAccessError, createInvalidStateError, createNativeScriptProcessorNode, createNotSupportedError);\nconst renderNativeOfflineAudioContext = createRenderNativeOfflineAudioContext(cacheTestResult, createNativeGainNode, createNativeScriptProcessorNode, createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode, nativeOfflineAudioContextConstructor));\nconst createIIRFilterNodeRenderer = createIIRFilterNodeRendererFactory(createNativeAudioBufferSourceNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderInputsOfAudioNode, renderNativeOfflineAudioContext);\nconst createNativeIIRFilterNode = createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker);\nconst iIRFilterNodeConstructor = createIIRFilterNodeConstructor(audioNodeConstructor, createNativeIIRFilterNode, createIIRFilterNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createAudioListener = createAudioListenerFactory(createAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeScriptProcessorNode, createNotSupportedError, getFirstSample, isNativeOfflineAudioContext, overwriteAccessors);\nconst unrenderedAudioWorkletNodeStore = new WeakMap();\nconst minimalBaseAudioContextConstructor = createMinimalBaseAudioContextConstructor(audioDestinationNodeConstructor, createAudioListener, eventTargetConstructor, isNativeOfflineAudioContext, unrenderedAudioWorkletNodeStore, wrapEventListener);\nconst createNativeOscillatorNode = createNativeOscillatorNodeFactory(addSilentConnection, cacheTestResult, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls);\nconst createOscillatorNodeRenderer = createOscillatorNodeRendererFactory(connectAudioParam, createNativeOscillatorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst oscillatorNodeConstructor = createOscillatorNodeConstructor(audioNodeConstructor, createAudioParam, createNativeOscillatorNode, createOscillatorNodeRenderer, getNativeContext, isNativeOfflineAudioContext, wrapEventListener);\nconst createConnectedNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode);\nconst createNativeWaveShaperNodeFaker = createNativeWaveShaperNodeFakerFactory(createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeGainNode, isDCCurve, monitorConnections);\nconst createNativeWaveShaperNode = createNativeWaveShaperNodeFactory(createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeWaveShaperNodeFaker, isDCCurve, monitorConnections, nativeAudioContextConstructor, overwriteAccessors);\nconst createNativePannerNodeFaker = createNativePannerNodeFakerFactory(connectNativeAudioNodeToNativeAudioNode, createInvalidStateError, createNativeChannelMergerNode, createNativeGainNode, createNativeScriptProcessorNode, createNativeWaveShaperNode, createNotSupportedError, disconnectNativeAudioNodeFromNativeAudioNode, getFirstSample, monitorConnections);\nconst createNativePannerNode = createNativePannerNodeFactory(createNativePannerNodeFaker);\nconst createPannerNodeRenderer = createPannerNodeRendererFactory(connectAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeGainNode, createNativePannerNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext);\nconst pannerNodeConstructor = createPannerNodeConstructor(audioNodeConstructor, createAudioParam, createNativePannerNode, createPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst createNativePeriodicWave = createNativePeriodicWaveFactory(createIndexSizeError);\nconst periodicWaveConstructor = createPeriodicWaveConstructor(createNativePeriodicWave, getNativeContext, new WeakSet(), sanitizePeriodicWaveOptions);\nconst nativeStereoPannerNodeFakerFactory = createNativeStereoPannerNodeFakerFactory(createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeGainNode, createNativeWaveShaperNode, createNotSupportedError, monitorConnections);\nconst createNativeStereoPannerNode = createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory, createNotSupportedError);\nconst createStereoPannerNodeRenderer = createStereoPannerNodeRendererFactory(connectAudioParam, createNativeStereoPannerNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode);\nconst stereoPannerNodeConstructor = createStereoPannerNodeConstructor(audioNodeConstructor, createAudioParam, createNativeStereoPannerNode, createStereoPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext);\nconst createWaveShaperNodeRenderer = createWaveShaperNodeRendererFactory(createNativeWaveShaperNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst waveShaperNodeConstructor = createWaveShaperNodeConstructor(audioNodeConstructor, createInvalidStateError, createNativeWaveShaperNode, createWaveShaperNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime);\nconst isSecureContext = createIsSecureContext(window);\nconst exposeCurrentFrameAndCurrentTime = createExposeCurrentFrameAndCurrentTime(window);\nconst backupOfflineAudioContextStore = new WeakMap();\nconst getOrCreateBackupOfflineAudioContext = createGetOrCreateBackupOfflineAudioContext(backupOfflineAudioContextStore, nativeOfflineAudioContextConstructor);\n// The addAudioWorkletModule() function is only available in a SecureContext.\nexport const addAudioWorkletModule = isSecureContext\n ? createAddAudioWorkletModule(cacheTestResult, createNotSupportedError, createEvaluateSource(window), exposeCurrentFrameAndCurrentTime, createFetchSource(createAbortError), getNativeContext, getOrCreateBackupOfflineAudioContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, new WeakMap(), new WeakMap(), createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor), \n // @todo window is guaranteed to be defined because isSecureContext checks that as well.\n window)\n : undefined;\nconst isNativeContext = createIsNativeContext(isNativeAudioContext, isNativeOfflineAudioContext);\nexport const decodeAudioData = createDecodeAudioData(audioBufferStore, cacheTestResult, createDataCloneError, createEncodingError, new WeakSet(), getNativeContext, isNativeContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, testPromiseSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds);\nconst baseAudioContextConstructor = createBaseAudioContextConstructor(addAudioWorkletModule, analyserNodeConstructor, audioBufferConstructor, audioBufferSourceNodeConstructor, biquadFilterNodeConstructor, channelMergerNodeConstructor, channelSplitterNodeConstructor, constantSourceNodeConstructor, convolverNodeConstructor, decodeAudioData, delayNodeConstructor, dynamicsCompressorNodeConstructor, gainNodeConstructor, iIRFilterNodeConstructor, minimalBaseAudioContextConstructor, oscillatorNodeConstructor, pannerNodeConstructor, periodicWaveConstructor, stereoPannerNodeConstructor, waveShaperNodeConstructor);\nconst mediaElementAudioSourceNodeConstructor = createMediaElementAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaElementAudioSourceNode, getNativeContext, isNativeOfflineAudioContext);\nconst mediaStreamAudioDestinationNodeConstructor = createMediaStreamAudioDestinationNodeConstructor(audioNodeConstructor, createNativeMediaStreamAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext);\nconst mediaStreamAudioSourceNodeConstructor = createMediaStreamAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamAudioSourceNode, getNativeContext, isNativeOfflineAudioContext);\nconst createNativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNodeFactory(createInvalidStateError, isNativeOfflineAudioContext);\nconst mediaStreamTrackAudioSourceNodeConstructor = createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext);\nconst audioContextConstructor = createAudioContextConstructor(baseAudioContextConstructor, createInvalidStateError, createNotSupportedError, createUnknownError, mediaElementAudioSourceNodeConstructor, mediaStreamAudioDestinationNodeConstructor, mediaStreamAudioSourceNodeConstructor, mediaStreamTrackAudioSourceNodeConstructor, nativeAudioContextConstructor);\nexport { audioContextConstructor as AudioContext };\nconst getUnrenderedAudioWorkletNodes = createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore);\nconst addUnrenderedAudioWorkletNode = createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes);\nconst connectMultipleOutputs = createConnectMultipleOutputs(createIndexSizeError);\nconst deleteUnrenderedAudioWorkletNode = createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes);\nconst disconnectMultipleOutputs = createDisconnectMultipleOutputs(createIndexSizeError);\nconst activeAudioWorkletNodeInputsStore = new WeakMap();\nconst getActiveAudioWorkletNodeInputs = createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore, getValueForKey);\nconst createNativeAudioWorkletNodeFaker = createNativeAudioWorkletNodeFakerFactory(connectMultipleOutputs, createIndexSizeError, createInvalidStateError, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, createNativeScriptProcessorNode, createNotSupportedError, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getActiveAudioWorkletNodeInputs, monitorConnections);\nconst createNativeAudioWorkletNode = createNativeAudioWorkletNodeFactory(createInvalidStateError, createNativeAudioWorkletNodeFaker, createNativeGainNode, createNotSupportedError, monitorConnections);\nconst createAudioWorkletNodeRenderer = createAudioWorkletNodeRendererFactory(connectAudioParam, connectMultipleOutputs, createNativeAudioBufferSourceNode, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, deleteUnrenderedAudioWorkletNode, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getNativeAudioNode, nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext);\nconst getBackupOfflineAudioContext = createGetBackupOfflineAudioContext(backupOfflineAudioContextStore);\nconst setActiveAudioWorkletNodeInputs = createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore);\n// The AudioWorkletNode constructor is only available in a SecureContext.\nconst audioWorkletNodeConstructor = isSecureContext\n ? createAudioWorkletNodeConstructor(addUnrenderedAudioWorkletNode, audioNodeConstructor, createAudioParam, createAudioWorkletNodeRenderer, createNativeAudioWorkletNode, getAudioNodeConnections, getBackupOfflineAudioContext, getNativeContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, sanitizeAudioWorkletNodeOptions, setActiveAudioWorkletNodeInputs, testAudioWorkletNodeOptionsClonability, wrapEventListener)\n : undefined;\nexport { audioWorkletNodeConstructor as AudioWorkletNode };\nexport { biquadFilterNodeConstructor as BiquadFilterNode };\nexport { channelMergerNodeConstructor as ChannelMergerNode };\nexport { channelSplitterNodeConstructor as ChannelSplitterNode };\nexport { convolverNodeConstructor as ConvolverNode };\nexport { constantSourceNodeConstructor as ConstantSourceNode };\nexport { delayNodeConstructor as DelayNode };\nexport { dynamicsCompressorNodeConstructor as DynamicsCompressorNode };\nexport { gainNodeConstructor as GainNode };\nexport { iIRFilterNodeConstructor as IIRFilterNode };\nexport { mediaElementAudioSourceNodeConstructor as MediaElementAudioSourceNode };\nexport { mediaStreamAudioDestinationNodeConstructor as MediaStreamAudioDestinationNode };\nexport { mediaStreamAudioSourceNodeConstructor as MediaStreamAudioSourceNode };\nexport { mediaStreamTrackAudioSourceNodeConstructor as MediaStreamTrackAudioSourceNode };\nconst minimalAudioContextConstructor = createMinimalAudioContextConstructor(createInvalidStateError, createNotSupportedError, createUnknownError, minimalBaseAudioContextConstructor, nativeAudioContextConstructor);\nexport { minimalAudioContextConstructor as MinimalAudioContext };\nconst createNativeOfflineAudioContext = createCreateNativeOfflineAudioContext(createNotSupportedError, nativeOfflineAudioContextConstructor);\nconst startRendering = createStartRendering(audioBufferStore, cacheTestResult, getAudioNodeRenderer, getUnrenderedAudioWorkletNodes, renderNativeOfflineAudioContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds);\nconst minimalOfflineAudioContextConstructor = createMinimalOfflineAudioContextConstructor(cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, minimalBaseAudioContextConstructor, startRendering);\nexport { minimalOfflineAudioContextConstructor as MinimalOfflineAudioContext };\nconst offlineAudioContextConstructor = createOfflineAudioContextConstructor(baseAudioContextConstructor, cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, startRendering);\nexport { offlineAudioContextConstructor as OfflineAudioContext };\nexport { oscillatorNodeConstructor as OscillatorNode };\nexport { pannerNodeConstructor as PannerNode };\nexport { periodicWaveConstructor as PeriodicWave };\nexport { stereoPannerNodeConstructor as StereoPannerNode };\nexport { waveShaperNodeConstructor as WaveShaperNode };\nexport const isAnyAudioContext = createIsAnyAudioContext(CONTEXT_STORE, isNativeAudioContext);\nexport const isAnyAudioNode = createIsAnyAudioNode(AUDIO_NODE_STORE, isNativeAudioNode);\nexport const isAnyAudioParam = createIsAnyAudioParam(AUDIO_PARAM_STORE, isNativeAudioParam);\nexport const isAnyOfflineAudioContext = createIsAnyOfflineAudioContext(CONTEXT_STORE, isNativeOfflineAudioContext);\nexport const isSupported = () => createIsSupportedPromise(cacheTestResult, createTestAudioBufferCopyChannelMethodsSubarraySupport(nativeOfflineAudioContextConstructor), createTestAudioContextCloseMethodSupport(nativeAudioContextConstructor), createTestAudioContextDecodeAudioDataMethodTypeErrorSupport(nativeOfflineAudioContextConstructor), createTestAudioContextOptionsSupport(nativeAudioContextConstructor), createTestAudioNodeConnectMethodSupport(nativeOfflineAudioContextConstructor), createTestAudioWorkletProcessorNoOutputsSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor), createTestChannelMergerNodeChannelCountSupport(nativeOfflineAudioContextConstructor), createTestConstantSourceNodeAccurateSchedulingSupport(nativeOfflineAudioContextConstructor), createTestConvolverNodeBufferReassignabilitySupport(nativeOfflineAudioContextConstructor), createTestConvolverNodeChannelCountSupport(nativeOfflineAudioContextConstructor), testDomExceptionConstructorSupport, createTestIsSecureContextSupport(window), createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport(nativeAudioContextConstructor), createTestStereoPannerNodeDefaultValueSupport(nativeOfflineAudioContextConstructor), testTransferablesSupport);\n//# sourceMappingURL=module.js.map","import {\n createCancelAndHoldAutomationEvent,\n createCancelScheduledValuesAutomationEvent,\n createExponentialRampToValueAutomationEvent,\n createLinearRampToValueAutomationEvent,\n createSetTargetAutomationEvent,\n createSetValueAutomationEvent,\n createSetValueCurveAutomationEvent\n} from 'automation-events';\nimport { createAbortError } from './factories/abort-error';\nimport { createAddActiveInputConnectionToAudioNode } from './factories/add-active-input-connection-to-audio-node';\nimport { createAddAudioNodeConnections } from './factories/add-audio-node-connections';\nimport { createAddAudioParamConnections } from './factories/add-audio-param-connections';\nimport { createAddAudioWorkletModule } from './factories/add-audio-worklet-module';\nimport { createAddConnectionToAudioNode } from './factories/add-connection-to-audio-node';\nimport { createAddPassiveInputConnectionToAudioNode } from './factories/add-passive-input-connection-to-audio-node';\nimport { createAddSilentConnection } from './factories/add-silent-connection';\nimport { createAddUnrenderedAudioWorkletNode } from './factories/add-unrendered-audio-worklet-node';\nimport { createAnalyserNodeConstructor } from './factories/analyser-node-constructor';\nimport { createAnalyserNodeRendererFactory } from './factories/analyser-node-renderer-factory';\nimport { createAudioBufferConstructor } from './factories/audio-buffer-constructor';\nimport { createAudioBufferSourceNodeConstructor } from './factories/audio-buffer-source-node-constructor';\nimport { createAudioBufferSourceNodeRendererFactory } from './factories/audio-buffer-source-node-renderer-factory';\nimport { createAudioContextConstructor } from './factories/audio-context-constructor';\nimport { createAudioDestinationNodeConstructor } from './factories/audio-destination-node-constructor';\nimport { createAudioDestinationNodeRenderer } from './factories/audio-destination-node-renderer-factory';\nimport { createAudioListenerFactory } from './factories/audio-listener-factory';\nimport { createAudioNodeConstructor } from './factories/audio-node-constructor';\nimport { createAudioParamFactory } from './factories/audio-param-factory';\nimport { createAudioParamRenderer } from './factories/audio-param-renderer';\nimport { createAudioWorkletNodeConstructor } from './factories/audio-worklet-node-constructor';\nimport { createAudioWorkletNodeRendererFactory } from './factories/audio-worklet-node-renderer-factory';\nimport { createBaseAudioContextConstructor } from './factories/base-audio-context-constructor';\nimport { createBiquadFilterNodeConstructor } from './factories/biquad-filter-node-constructor';\nimport { createBiquadFilterNodeRendererFactory } from './factories/biquad-filter-node-renderer-factory';\nimport { createCacheTestResult } from './factories/cache-test-result';\nimport { createChannelMergerNodeConstructor } from './factories/channel-merger-node-constructor';\nimport { createChannelMergerNodeRendererFactory } from './factories/channel-merger-node-renderer-factory';\nimport { createChannelSplitterNodeConstructor } from './factories/channel-splitter-node-constructor';\nimport { createChannelSplitterNodeRendererFactory } from './factories/channel-splitter-node-renderer-factory';\nimport { createConnectAudioParam } from './factories/connect-audio-param';\nimport { createConnectMultipleOutputs } from './factories/connect-multiple-outputs';\nimport { createConnectedNativeAudioBufferSourceNodeFactory } from './factories/connected-native-audio-buffer-source-node-factory';\nimport { createConstantSourceNodeConstructor } from './factories/constant-source-node-constructor';\nimport { createConstantSourceNodeRendererFactory } from './factories/constant-source-node-renderer-factory';\nimport { createConvertNumberToUnsignedLong } from './factories/convert-number-to-unsigned-long';\nimport { createConvolverNodeConstructor } from './factories/convolver-node-constructor';\nimport { createConvolverNodeRendererFactory } from './factories/convolver-node-renderer-factory';\nimport { createCreateNativeOfflineAudioContext } from './factories/create-native-offline-audio-context';\nimport { createDataCloneError } from './factories/data-clone-error';\nimport { createDecodeAudioData } from './factories/decode-audio-data';\nimport { createDecrementCycleCounter } from './factories/decrement-cycle-counter';\nimport { createDelayNodeConstructor } from './factories/delay-node-constructor';\nimport { createDelayNodeRendererFactory } from './factories/delay-node-renderer-factory';\nimport { createDeleteActiveInputConnectionToAudioNode } from './factories/delete-active-input-connection-to-audio-node';\nimport { createDeleteUnrenderedAudioWorkletNode } from './factories/delete-unrendered-audio-worklet-node';\nimport { createDetectCycles } from './factories/detect-cycles';\nimport { createDisconnectMultipleOutputs } from './factories/disconnect-multiple-outputs';\nimport { createDynamicsCompressorNodeConstructor } from './factories/dynamics-compressor-node-constructor';\nimport { createDynamicsCompressorNodeRendererFactory } from './factories/dynamics-compressor-node-renderer-factory';\nimport { createEncodingError } from './factories/encoding-error';\nimport { createEvaluateSource } from './factories/evaluate-source';\nimport { createEventTargetConstructor } from './factories/event-target-constructor';\nimport { createExposeCurrentFrameAndCurrentTime } from './factories/expose-current-frame-and-current-time';\nimport { createFetchSource } from './factories/fetch-source';\nimport { createGainNodeConstructor } from './factories/gain-node-constructor';\nimport { createGainNodeRendererFactory } from './factories/gain-node-renderer-factory';\nimport { createGetActiveAudioWorkletNodeInputs } from './factories/get-active-audio-worklet-node-inputs';\nimport { createGetAudioNodeRenderer } from './factories/get-audio-node-renderer';\nimport { createGetAudioNodeTailTime } from './factories/get-audio-node-tail-time';\nimport { createGetAudioParamRenderer } from './factories/get-audio-param-renderer';\nimport { createGetBackupOfflineAudioContext } from './factories/get-backup-offline-audio-context';\nimport { createGetNativeContext } from './factories/get-native-context';\nimport { createGetOrCreateBackupOfflineAudioContext } from './factories/get-or-create-backup-offline-audio-context';\nimport { createGetUnrenderedAudioWorkletNodes } from './factories/get-unrendered-audio-worklet-nodes';\nimport { createIIRFilterNodeConstructor } from './factories/iir-filter-node-constructor';\nimport { createIIRFilterNodeRendererFactory } from './factories/iir-filter-node-renderer-factory';\nimport { createIncrementCycleCounterFactory } from './factories/increment-cycle-counter-factory';\nimport { createIndexSizeError } from './factories/index-size-error';\nimport { createInvalidAccessError } from './factories/invalid-access-error';\nimport { createInvalidStateError } from './factories/invalid-state-error';\nimport { createIsAnyAudioContext } from './factories/is-any-audio-context';\nimport { createIsAnyAudioNode } from './factories/is-any-audio-node';\nimport { createIsAnyAudioParam } from './factories/is-any-audio-param';\nimport { createIsAnyOfflineAudioContext } from './factories/is-any-offline-audio-context';\nimport { createIsNativeAudioContext } from './factories/is-native-audio-context';\nimport { createIsNativeAudioNode } from './factories/is-native-audio-node';\nimport { createIsNativeAudioParam } from './factories/is-native-audio-param';\nimport { createIsNativeContext } from './factories/is-native-context';\nimport { createIsNativeOfflineAudioContext } from './factories/is-native-offline-audio-context';\nimport { createIsSecureContext } from './factories/is-secure-context';\nimport { createIsSupportedPromise } from './factories/is-supported-promise';\nimport { createMediaElementAudioSourceNodeConstructor } from './factories/media-element-audio-source-node-constructor';\nimport { createMediaStreamAudioDestinationNodeConstructor } from './factories/media-stream-audio-destination-node-constructor';\nimport { createMediaStreamAudioSourceNodeConstructor } from './factories/media-stream-audio-source-node-constructor';\nimport { createMediaStreamTrackAudioSourceNodeConstructor } from './factories/media-stream-track-audio-source-node-constructor';\nimport { createMinimalAudioContextConstructor } from './factories/minimal-audio-context-constructor';\nimport { createMinimalBaseAudioContextConstructor } from './factories/minimal-base-audio-context-constructor';\nimport { createMinimalOfflineAudioContextConstructor } from './factories/minimal-offline-audio-context-constructor';\nimport { createMonitorConnections } from './factories/monitor-connections';\nimport { createNativeAnalyserNodeFactory } from './factories/native-analyser-node-factory';\nimport { createNativeAudioBufferConstructor } from './factories/native-audio-buffer-constructor';\nimport { createNativeAudioBufferSourceNodeFactory } from './factories/native-audio-buffer-source-node-factory';\nimport { createNativeAudioContextConstructor } from './factories/native-audio-context-constructor';\nimport { createNativeAudioDestinationNodeFactory } from './factories/native-audio-destination-node';\nimport { createNativeAudioWorkletNodeConstructor } from './factories/native-audio-worklet-node-constructor';\nimport { createNativeAudioWorkletNodeFactory } from './factories/native-audio-worklet-node-factory';\nimport { createNativeAudioWorkletNodeFakerFactory } from './factories/native-audio-worklet-node-faker-factory';\nimport { createNativeBiquadFilterNode } from './factories/native-biquad-filter-node';\nimport { createNativeChannelMergerNodeFactory } from './factories/native-channel-merger-node-factory';\nimport { createNativeChannelSplitterNode } from './factories/native-channel-splitter-node';\nimport { createNativeConstantSourceNodeFactory } from './factories/native-constant-source-node-factory';\nimport { createNativeConstantSourceNodeFakerFactory } from './factories/native-constant-source-node-faker-factory';\nimport { createNativeConvolverNodeFactory } from './factories/native-convolver-node-factory';\nimport { createNativeDelayNode } from './factories/native-delay-node';\nimport { createNativeDynamicsCompressorNodeFactory } from './factories/native-dynamics-compressor-node-factory';\nimport { createNativeGainNode } from './factories/native-gain-node';\nimport { createNativeIIRFilterNodeFactory } from './factories/native-iir-filter-node-factory';\nimport { createNativeIIRFilterNodeFakerFactory } from './factories/native-iir-filter-node-faker-factory';\nimport { createNativeMediaElementAudioSourceNode } from './factories/native-media-element-audio-source-node';\nimport { createNativeMediaStreamAudioDestinationNode } from './factories/native-media-stream-audio-destination-node';\nimport { createNativeMediaStreamAudioSourceNode } from './factories/native-media-stream-audio-source-node';\nimport { createNativeMediaStreamTrackAudioSourceNodeFactory } from './factories/native-media-stream-track-audio-source-node-factory';\nimport { createNativeOfflineAudioContextConstructor } from './factories/native-offline-audio-context-constructor';\nimport { createNativeOscillatorNodeFactory } from './factories/native-oscillator-node-factory';\nimport { createNativePannerNodeFactory } from './factories/native-panner-node-factory';\nimport { createNativePannerNodeFakerFactory } from './factories/native-panner-node-faker-factory';\nimport { createNativePeriodicWaveFactory } from './factories/native-periodic-wave-factory';\nimport { createNativeScriptProcessorNode } from './factories/native-script-processor-node';\nimport { createNativeStereoPannerNodeFactory } from './factories/native-stereo-panner-node-factory';\nimport { createNativeStereoPannerNodeFakerFactory } from './factories/native-stereo-panner-node-faker-factory';\nimport { createNativeWaveShaperNodeFactory } from './factories/native-wave-shaper-node-factory';\nimport { createNativeWaveShaperNodeFakerFactory } from './factories/native-wave-shaper-node-faker-factory';\nimport { createNotSupportedError } from './factories/not-supported-error';\nimport { createOfflineAudioContextConstructor } from './factories/offline-audio-context-constructor';\nimport { createOscillatorNodeConstructor } from './factories/oscillator-node-constructor';\nimport { createOscillatorNodeRendererFactory } from './factories/oscillator-node-renderer-factory';\nimport { createPannerNodeConstructor } from './factories/panner-node-constructor';\nimport { createPannerNodeRendererFactory } from './factories/panner-node-renderer-factory';\nimport { createPeriodicWaveConstructor } from './factories/periodic-wave-constructor';\nimport { createRenderAutomation } from './factories/render-automation';\nimport { createRenderInputsOfAudioNode } from './factories/render-inputs-of-audio-node';\nimport { createRenderInputsOfAudioParam } from './factories/render-inputs-of-audio-param';\nimport { createRenderNativeOfflineAudioContext } from './factories/render-native-offline-audio-context';\nimport { createSetActiveAudioWorkletNodeInputs } from './factories/set-active-audio-worklet-node-inputs';\nimport { createSetAudioNodeTailTime } from './factories/set-audio-node-tail-time';\nimport { createStartRendering } from './factories/start-rendering';\nimport { createStereoPannerNodeConstructor } from './factories/stereo-panner-node-constructor';\nimport { createStereoPannerNodeRendererFactory } from './factories/stereo-panner-node-renderer-factory';\nimport { createTestAudioBufferConstructorSupport } from './factories/test-audio-buffer-constructor-support';\nimport { createTestAudioBufferCopyChannelMethodsSubarraySupport } from './factories/test-audio-buffer-copy-channel-methods-subarray-support';\nimport { createTestAudioContextCloseMethodSupport } from './factories/test-audio-context-close-method-support';\nimport { createTestAudioContextDecodeAudioDataMethodTypeErrorSupport } from './factories/test-audio-context-decode-audio-data-method-type-error-support';\nimport { createTestAudioContextOptionsSupport } from './factories/test-audio-context-options-support';\nimport { createTestAudioNodeConnectMethodSupport } from './factories/test-audio-node-connect-method-support';\nimport { createTestAudioWorkletProcessorNoOutputsSupport } from './factories/test-audio-worklet-processor-no-outputs-support';\nimport { createTestAudioWorkletProcessorPostMessageSupport } from './factories/test-audio-worklet-processor-post-message-support';\nimport { createTestChannelMergerNodeChannelCountSupport } from './factories/test-channel-merger-node-channel-count-support';\nimport { createTestConstantSourceNodeAccurateSchedulingSupport } from './factories/test-constant-source-node-accurate-scheduling-support';\nimport { createTestConvolverNodeBufferReassignabilitySupport } from './factories/test-convolver-node-buffer-reassignability-support';\nimport { createTestConvolverNodeChannelCountSupport } from './factories/test-convolver-node-channel-count-support';\nimport { createTestIsSecureContextSupport } from './factories/test-is-secure-context-support';\nimport { createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport } from './factories/test-media-stream-audio-source-node-media-stream-without-audio-track-support';\nimport { createTestOfflineAudioContextCurrentTimeSupport } from './factories/test-offline-audio-context-current-time-support';\nimport { createTestStereoPannerNodeDefaultValueSupport } from './factories/test-stereo-panner-node-default-value-support';\nimport { createUnknownError } from './factories/unknown-error';\nimport { createWaveShaperNodeConstructor } from './factories/wave-shaper-node-constructor';\nimport { createWaveShaperNodeRendererFactory } from './factories/wave-shaper-node-renderer-factory';\nimport { createWindow } from './factories/window';\nimport { createWrapAudioBufferCopyChannelMethods } from './factories/wrap-audio-buffer-copy-channel-methods';\nimport { createWrapAudioBufferCopyChannelMethodsOutOfBounds } from './factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds';\nimport { createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer } from './factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer';\nimport { createWrapChannelMergerNode } from './factories/wrap-channel-merger-node';\nimport {\n AUDIO_NODE_CONNECTIONS_STORE,\n AUDIO_NODE_STORE,\n AUDIO_PARAM_CONNECTIONS_STORE,\n AUDIO_PARAM_STORE,\n CONTEXT_STORE,\n CYCLE_COUNTERS\n} from './globals';\nimport { connectNativeAudioNodeToNativeAudioNode } from './helpers/connect-native-audio-node-to-native-audio-node';\nimport { disconnectNativeAudioNodeFromNativeAudioNode } from './helpers/disconnect-native-audio-node-from-native-audio-node';\nimport { getAudioNodeConnections } from './helpers/get-audio-node-connections';\nimport { getAudioParamConnections } from './helpers/get-audio-param-connections';\nimport { getEventListenersOfAudioNode } from './helpers/get-event-listeners-of-audio-node';\nimport { getFirstSample } from './helpers/get-first-sample';\nimport { getNativeAudioNode } from './helpers/get-native-audio-node';\nimport { getNativeAudioParam } from './helpers/get-native-audio-param';\nimport { getValueForKey } from './helpers/get-value-for-key';\nimport { insertElementInSet } from './helpers/insert-element-in-set';\nimport { isActiveAudioNode } from './helpers/is-active-audio-node';\nimport { isDCCurve } from './helpers/is-dc-curve';\nimport { isPartOfACycle } from './helpers/is-part-of-a-cycle';\nimport { isPassiveAudioNode } from './helpers/is-passive-audio-node';\nimport { overwriteAccessors } from './helpers/overwrite-accessors';\nimport { pickElementFromSet } from './helpers/pick-element-from-set';\nimport { sanitizeAudioWorkletNodeOptions } from './helpers/sanitize-audio-worklet-node-options';\nimport { sanitizeChannelSplitterOptions } from './helpers/sanitize-channel-splitter-options';\nimport { sanitizePeriodicWaveOptions } from './helpers/sanitize-periodic-wave-options';\nimport { setValueAtTimeUntilPossible } from './helpers/set-value-at-time-until-possible';\nimport { testAudioBufferCopyChannelMethodsOutOfBoundsSupport } from './helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support';\nimport { testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport } from './helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support';\nimport { testAudioBufferSourceNodeStartMethodOffsetClampingSupport } from './helpers/test-audio-buffer-source-node-start-method-offset-clamping-support';\nimport { testAudioBufferSourceNodeStopMethodNullifiedBufferSupport } from './helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support';\nimport { testAudioScheduledSourceNodeStartMethodNegativeParametersSupport } from './helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support';\nimport { testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport } from './helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support';\nimport { testAudioScheduledSourceNodeStopMethodNegativeParametersSupport } from './helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support';\nimport { testAudioWorkletNodeOptionsClonability } from './helpers/test-audio-worklet-node-options-clonability';\nimport { testDomExceptionConstructorSupport } from './helpers/test-dom-exception-constructor-support';\nimport { testPromiseSupport } from './helpers/test-promise-support';\nimport { testTransferablesSupport } from './helpers/test-transferables-support';\nimport { wrapAudioBufferSourceNodeStartMethodOffsetClamping } from './helpers/wrap-audio-buffer-source-node-start-method-offset-clamping';\nimport { wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls } from './helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls';\nimport { wrapEventListener } from './helpers/wrap-event-listener';\nimport {\n IAnalyserNode,\n IAudioBuffer,\n IAudioBufferSourceNode,\n IAudioContext,\n IAudioNode,\n IAudioWorkletNode,\n IBiquadFilterNode,\n IConstantSourceNode,\n IConvolverNode,\n IDelayNode,\n IDynamicsCompressorNode,\n IGainNode,\n IIIRFilterNode,\n IMediaElementAudioSourceNode,\n IMediaStreamAudioDestinationNode,\n IMediaStreamAudioSourceNode,\n IMediaStreamTrackAudioSourceNode,\n IMinimalAudioContext,\n IMinimalOfflineAudioContext,\n IOfflineAudioContext,\n IOfflineAudioContextConstructor,\n IOscillatorNode,\n IPannerNode,\n IPeriodicWave,\n IStereoPannerNode,\n IWaveShaperNode\n} from './interfaces';\nimport {\n TActiveAudioWorkletNodeInputsStore,\n TAddAudioWorkletModuleFunction,\n TAnalyserNodeConstructor,\n TAudioBufferConstructor,\n TAudioBufferSourceNodeConstructor,\n TAudioBufferStore,\n TAudioContextConstructor,\n TAudioParamAudioNodeStore,\n TAudioWorkletNodeConstructor,\n TBackupOfflineAudioContextStore,\n TBiquadFilterNodeConstructor,\n TChannelMergerNodeConstructor,\n TChannelSplitterNodeConstructor,\n TConstantSourceNodeConstructor,\n TContext,\n TConvolverNodeConstructor,\n TDecodeAudioDataFunction,\n TDelayNodeConstructor,\n TDynamicsCompressorNodeConstructor,\n TGainNodeConstructor,\n TIIRFilterNodeConstructor,\n TMediaElementAudioSourceNodeConstructor,\n TMediaStreamAudioDestinationNodeConstructor,\n TMediaStreamAudioSourceNodeConstructor,\n TMediaStreamTrackAudioSourceNodeConstructor,\n TMinimalAudioContextConstructor,\n TMinimalOfflineAudioContextConstructor,\n TOscillatorNodeConstructor,\n TPannerNodeConstructor,\n TPeriodicWaveConstructor,\n TStereoPannerNodeConstructor,\n TUnrenderedAudioWorkletNodeStore,\n TWaveShaperNodeConstructor\n} from './types';\n\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\n\nconst addActiveInputConnectionToAudioNode = createAddActiveInputConnectionToAudioNode(insertElementInSet);\nconst addPassiveInputConnectionToAudioNode = createAddPassiveInputConnectionToAudioNode(insertElementInSet);\nconst deleteActiveInputConnectionToAudioNode = createDeleteActiveInputConnectionToAudioNode(pickElementFromSet);\nconst audioNodeTailTimeStore = new WeakMap();\nconst getAudioNodeTailTime = createGetAudioNodeTailTime(audioNodeTailTimeStore);\nconst cacheTestResult = createCacheTestResult(new Map(), new WeakMap());\nconst window = createWindow();\nconst createNativeAnalyserNode = createNativeAnalyserNodeFactory(cacheTestResult, createIndexSizeError);\nconst getAudioNodeRenderer = createGetAudioNodeRenderer(getAudioNodeConnections);\nconst renderInputsOfAudioNode = createRenderInputsOfAudioNode(getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle);\nconst createAnalyserNodeRenderer = createAnalyserNodeRendererFactory(createNativeAnalyserNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst getNativeContext = createGetNativeContext(CONTEXT_STORE);\nconst nativeOfflineAudioContextConstructor = createNativeOfflineAudioContextConstructor(window);\nconst isNativeOfflineAudioContext = createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor);\nconst audioParamAudioNodeStore: TAudioParamAudioNodeStore = new WeakMap();\nconst eventTargetConstructor = createEventTargetConstructor(wrapEventListener);\nconst nativeAudioContextConstructor = createNativeAudioContextConstructor(window);\nconst isNativeAudioContext = createIsNativeAudioContext(nativeAudioContextConstructor);\nconst isNativeAudioNode = createIsNativeAudioNode(window);\nconst isNativeAudioParam = createIsNativeAudioParam(window);\nconst nativeAudioWorkletNodeConstructor = createNativeAudioWorkletNodeConstructor(window);\nconst audioNodeConstructor = createAudioNodeConstructor(\n createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE),\n createAddConnectionToAudioNode(\n addActiveInputConnectionToAudioNode,\n addPassiveInputConnectionToAudioNode,\n connectNativeAudioNodeToNativeAudioNode,\n deleteActiveInputConnectionToAudioNode,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getAudioNodeConnections,\n getAudioNodeTailTime,\n getEventListenersOfAudioNode,\n getNativeAudioNode,\n insertElementInSet,\n isActiveAudioNode,\n isPartOfACycle,\n isPassiveAudioNode\n ),\n cacheTestResult,\n createIncrementCycleCounterFactory(\n CYCLE_COUNTERS,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getAudioNodeConnections,\n getNativeAudioNode,\n getNativeAudioParam,\n isActiveAudioNode\n ),\n createIndexSizeError,\n createInvalidAccessError,\n createNotSupportedError,\n createDecrementCycleCounter(\n connectNativeAudioNodeToNativeAudioNode,\n CYCLE_COUNTERS,\n getAudioNodeConnections,\n getNativeAudioNode,\n getNativeAudioParam,\n getNativeContext,\n isActiveAudioNode,\n isNativeOfflineAudioContext\n ),\n createDetectCycles(audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey),\n eventTargetConstructor,\n getNativeContext,\n isNativeAudioContext,\n isNativeAudioNode,\n isNativeAudioParam,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor\n);\nconst analyserNodeConstructor: TAnalyserNodeConstructor = createAnalyserNodeConstructor(\n audioNodeConstructor,\n createAnalyserNodeRenderer,\n createIndexSizeError,\n createNativeAnalyserNode,\n getNativeContext,\n isNativeOfflineAudioContext\n);\n\ntype analyserNodeConstructor = IAnalyserNode;\n\nexport { analyserNodeConstructor as AnalyserNode };\n\nconst audioBufferStore: TAudioBufferStore = new WeakSet();\nconst nativeAudioBufferConstructor = createNativeAudioBufferConstructor(window);\nconst convertNumberToUnsignedLong = createConvertNumberToUnsignedLong(new Uint32Array(1));\nconst wrapAudioBufferCopyChannelMethods = createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong, createIndexSizeError);\nconst wrapAudioBufferCopyChannelMethodsOutOfBounds = createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong);\nconst audioBufferConstructor: TAudioBufferConstructor = createAudioBufferConstructor(\n audioBufferStore,\n cacheTestResult,\n createNotSupportedError,\n nativeAudioBufferConstructor,\n nativeOfflineAudioContextConstructor,\n createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor),\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n);\n\ntype audioBufferConstructor = IAudioBuffer;\n\nexport { audioBufferConstructor as AudioBuffer };\n\nconst addSilentConnection = createAddSilentConnection(createNativeGainNode);\nconst renderInputsOfAudioParam = createRenderInputsOfAudioParam(getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle);\nconst connectAudioParam = createConnectAudioParam(renderInputsOfAudioParam);\nconst createNativeAudioBufferSourceNode = createNativeAudioBufferSourceNodeFactory(\n addSilentConnection,\n cacheTestResult,\n testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport,\n testAudioBufferSourceNodeStartMethodOffsetClampingSupport,\n testAudioBufferSourceNodeStopMethodNullifiedBufferSupport,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,\n wrapAudioBufferSourceNodeStartMethodOffsetClamping,\n createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors),\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls\n);\nconst renderAutomation = createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections), renderInputsOfAudioParam);\nconst createAudioBufferSourceNodeRenderer = createAudioBufferSourceNodeRendererFactory(\n connectAudioParam,\n createNativeAudioBufferSourceNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst createAudioParam = createAudioParamFactory(\n createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE),\n audioParamAudioNodeStore,\n AUDIO_PARAM_STORE,\n createAudioParamRenderer,\n createCancelAndHoldAutomationEvent,\n createCancelScheduledValuesAutomationEvent,\n createExponentialRampToValueAutomationEvent,\n createLinearRampToValueAutomationEvent,\n createSetTargetAutomationEvent,\n createSetValueAutomationEvent,\n createSetValueCurveAutomationEvent,\n nativeAudioContextConstructor,\n setValueAtTimeUntilPossible\n);\nconst audioBufferSourceNodeConstructor: TAudioBufferSourceNodeConstructor = createAudioBufferSourceNodeConstructor(\n audioNodeConstructor,\n createAudioBufferSourceNodeRenderer,\n createAudioParam,\n createInvalidStateError,\n createNativeAudioBufferSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n);\n\ntype audioBufferSourceNodeConstructor = IAudioBufferSourceNode;\n\nexport { audioBufferSourceNodeConstructor as AudioBufferSourceNode };\n\nconst audioDestinationNodeConstructor = createAudioDestinationNodeConstructor(\n audioNodeConstructor,\n createAudioDestinationNodeRenderer,\n createIndexSizeError,\n createInvalidStateError,\n createNativeAudioDestinationNodeFactory(createNativeGainNode, overwriteAccessors),\n getNativeContext,\n isNativeOfflineAudioContext,\n renderInputsOfAudioNode\n);\nconst createBiquadFilterNodeRenderer = createBiquadFilterNodeRendererFactory(\n connectAudioParam,\n createNativeBiquadFilterNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst setAudioNodeTailTime = createSetAudioNodeTailTime(audioNodeTailTimeStore);\nconst biquadFilterNodeConstructor: TBiquadFilterNodeConstructor = createBiquadFilterNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createBiquadFilterNodeRenderer,\n createInvalidAccessError,\n createNativeBiquadFilterNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst monitorConnections = createMonitorConnections(insertElementInSet, isNativeAudioNode);\nconst wrapChannelMergerNode = createWrapChannelMergerNode(createInvalidStateError, monitorConnections);\nconst createNativeChannelMergerNode = createNativeChannelMergerNodeFactory(nativeAudioContextConstructor, wrapChannelMergerNode);\nconst createChannelMergerNodeRenderer = createChannelMergerNodeRendererFactory(\n createNativeChannelMergerNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n);\nconst channelMergerNodeConstructor: TChannelMergerNodeConstructor = createChannelMergerNodeConstructor(\n audioNodeConstructor,\n createChannelMergerNodeRenderer,\n createNativeChannelMergerNode,\n getNativeContext,\n isNativeOfflineAudioContext\n);\nconst createChannelSplitterNodeRenderer = createChannelSplitterNodeRendererFactory(\n createNativeChannelSplitterNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n);\nconst channelSplitterNodeConstructor: TChannelSplitterNodeConstructor = createChannelSplitterNodeConstructor(\n audioNodeConstructor,\n createChannelSplitterNodeRenderer,\n createNativeChannelSplitterNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n sanitizeChannelSplitterOptions\n);\nconst createNativeConstantSourceNodeFaker = createNativeConstantSourceNodeFakerFactory(\n addSilentConnection,\n createNativeAudioBufferSourceNode,\n createNativeGainNode,\n monitorConnections\n);\nconst createNativeConstantSourceNode = createNativeConstantSourceNodeFactory(\n addSilentConnection,\n cacheTestResult,\n createNativeConstantSourceNodeFaker,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport\n);\nconst createConstantSourceNodeRenderer = createConstantSourceNodeRendererFactory(\n connectAudioParam,\n createNativeConstantSourceNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst constantSourceNodeConstructor: TConstantSourceNodeConstructor = createConstantSourceNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createConstantSourceNodeRenderer,\n createNativeConstantSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n);\nconst createNativeConvolverNode = createNativeConvolverNodeFactory(createNotSupportedError, overwriteAccessors);\nconst createConvolverNodeRenderer = createConvolverNodeRendererFactory(\n createNativeConvolverNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n);\nconst convolverNodeConstructor: TConvolverNodeConstructor = createConvolverNodeConstructor(\n audioNodeConstructor,\n createConvolverNodeRenderer,\n createNativeConvolverNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst createDelayNodeRenderer = createDelayNodeRendererFactory(\n connectAudioParam,\n createNativeDelayNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst delayNodeConstructor: TDelayNodeConstructor = createDelayNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createDelayNodeRenderer,\n createNativeDelayNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst createNativeDynamicsCompressorNode = createNativeDynamicsCompressorNodeFactory(createNotSupportedError);\nconst createDynamicsCompressorNodeRenderer = createDynamicsCompressorNodeRendererFactory(\n connectAudioParam,\n createNativeDynamicsCompressorNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst dynamicsCompressorNodeConstructor: TDynamicsCompressorNodeConstructor = createDynamicsCompressorNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createDynamicsCompressorNodeRenderer,\n createNativeDynamicsCompressorNode,\n createNotSupportedError,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst createGainNodeRenderer = createGainNodeRendererFactory(\n connectAudioParam,\n createNativeGainNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst gainNodeConstructor: TGainNodeConstructor = createGainNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createGainNodeRenderer,\n createNativeGainNode,\n getNativeContext,\n isNativeOfflineAudioContext\n);\nconst createNativeIIRFilterNodeFaker = createNativeIIRFilterNodeFakerFactory(\n createInvalidAccessError,\n createInvalidStateError,\n createNativeScriptProcessorNode,\n createNotSupportedError\n);\nconst renderNativeOfflineAudioContext = createRenderNativeOfflineAudioContext(\n cacheTestResult,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode, nativeOfflineAudioContextConstructor)\n);\nconst createIIRFilterNodeRenderer = createIIRFilterNodeRendererFactory(\n createNativeAudioBufferSourceNode,\n getNativeAudioNode,\n nativeOfflineAudioContextConstructor,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n);\nconst createNativeIIRFilterNode = createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker);\nconst iIRFilterNodeConstructor: TIIRFilterNodeConstructor = createIIRFilterNodeConstructor(\n audioNodeConstructor,\n createNativeIIRFilterNode,\n createIIRFilterNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst createAudioListener = createAudioListenerFactory(\n createAudioParam,\n createNativeChannelMergerNode,\n createNativeConstantSourceNode,\n createNativeScriptProcessorNode,\n createNotSupportedError,\n getFirstSample,\n isNativeOfflineAudioContext,\n overwriteAccessors\n);\nconst unrenderedAudioWorkletNodeStore: TUnrenderedAudioWorkletNodeStore = new WeakMap();\nconst minimalBaseAudioContextConstructor = createMinimalBaseAudioContextConstructor(\n audioDestinationNodeConstructor,\n createAudioListener,\n eventTargetConstructor,\n isNativeOfflineAudioContext,\n unrenderedAudioWorkletNodeStore,\n wrapEventListener\n);\nconst createNativeOscillatorNode = createNativeOscillatorNodeFactory(\n addSilentConnection,\n cacheTestResult,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls\n);\nconst createOscillatorNodeRenderer = createOscillatorNodeRendererFactory(\n connectAudioParam,\n createNativeOscillatorNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst oscillatorNodeConstructor: TOscillatorNodeConstructor = createOscillatorNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createNativeOscillatorNode,\n createOscillatorNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n);\nconst createConnectedNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode);\nconst createNativeWaveShaperNodeFaker = createNativeWaveShaperNodeFakerFactory(\n createConnectedNativeAudioBufferSourceNode,\n createInvalidStateError,\n createNativeGainNode,\n isDCCurve,\n monitorConnections\n);\nconst createNativeWaveShaperNode = createNativeWaveShaperNodeFactory(\n createConnectedNativeAudioBufferSourceNode,\n createInvalidStateError,\n createNativeWaveShaperNodeFaker,\n isDCCurve,\n monitorConnections,\n nativeAudioContextConstructor,\n overwriteAccessors\n);\nconst createNativePannerNodeFaker = createNativePannerNodeFakerFactory(\n connectNativeAudioNodeToNativeAudioNode,\n createInvalidStateError,\n createNativeChannelMergerNode,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n createNativeWaveShaperNode,\n createNotSupportedError,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getFirstSample,\n monitorConnections\n);\nconst createNativePannerNode = createNativePannerNodeFactory(createNativePannerNodeFaker);\nconst createPannerNodeRenderer = createPannerNodeRendererFactory(\n connectAudioParam,\n createNativeChannelMergerNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n createNativePannerNode,\n getNativeAudioNode,\n nativeOfflineAudioContextConstructor,\n renderAutomation,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n);\nconst pannerNodeConstructor: TPannerNodeConstructor = createPannerNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createNativePannerNode,\n createPannerNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst createNativePeriodicWave = createNativePeriodicWaveFactory(createIndexSizeError);\nconst periodicWaveConstructor: TPeriodicWaveConstructor = createPeriodicWaveConstructor(\n createNativePeriodicWave,\n getNativeContext,\n new WeakSet(),\n sanitizePeriodicWaveOptions\n);\nconst nativeStereoPannerNodeFakerFactory = createNativeStereoPannerNodeFakerFactory(\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeGainNode,\n createNativeWaveShaperNode,\n createNotSupportedError,\n monitorConnections\n);\nconst createNativeStereoPannerNode = createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory, createNotSupportedError);\nconst createStereoPannerNodeRenderer = createStereoPannerNodeRendererFactory(\n connectAudioParam,\n createNativeStereoPannerNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst stereoPannerNodeConstructor: TStereoPannerNodeConstructor = createStereoPannerNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createNativeStereoPannerNode,\n createStereoPannerNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext\n);\nconst createWaveShaperNodeRenderer = createWaveShaperNodeRendererFactory(\n createNativeWaveShaperNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n);\nconst waveShaperNodeConstructor: TWaveShaperNodeConstructor = createWaveShaperNodeConstructor(\n audioNodeConstructor,\n createInvalidStateError,\n createNativeWaveShaperNode,\n createWaveShaperNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst isSecureContext = createIsSecureContext(window);\nconst exposeCurrentFrameAndCurrentTime = createExposeCurrentFrameAndCurrentTime(window);\nconst backupOfflineAudioContextStore: TBackupOfflineAudioContextStore = new WeakMap();\nconst getOrCreateBackupOfflineAudioContext = createGetOrCreateBackupOfflineAudioContext(\n backupOfflineAudioContextStore,\n nativeOfflineAudioContextConstructor\n);\n\n// The addAudioWorkletModule() function is only available in a SecureContext.\nexport const addAudioWorkletModule: undefined | TAddAudioWorkletModuleFunction = isSecureContext\n ? createAddAudioWorkletModule(\n cacheTestResult,\n createNotSupportedError,\n createEvaluateSource(window),\n exposeCurrentFrameAndCurrentTime,\n createFetchSource(createAbortError),\n getNativeContext,\n getOrCreateBackupOfflineAudioContext,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor,\n new WeakMap(),\n new WeakMap(),\n createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor),\n // @todo window is guaranteed to be defined because isSecureContext checks that as well.\n >window\n )\n : undefined;\n\nconst isNativeContext = createIsNativeContext(isNativeAudioContext, isNativeOfflineAudioContext);\n\nexport const decodeAudioData: TDecodeAudioDataFunction = createDecodeAudioData(\n audioBufferStore,\n cacheTestResult,\n createDataCloneError,\n createEncodingError,\n new WeakSet(),\n getNativeContext,\n isNativeContext,\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport,\n testPromiseSupport,\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n);\n\nconst baseAudioContextConstructor = createBaseAudioContextConstructor(\n addAudioWorkletModule,\n analyserNodeConstructor,\n audioBufferConstructor,\n audioBufferSourceNodeConstructor,\n biquadFilterNodeConstructor,\n channelMergerNodeConstructor,\n channelSplitterNodeConstructor,\n constantSourceNodeConstructor,\n convolverNodeConstructor,\n decodeAudioData,\n delayNodeConstructor,\n dynamicsCompressorNodeConstructor,\n gainNodeConstructor,\n iIRFilterNodeConstructor,\n minimalBaseAudioContextConstructor,\n oscillatorNodeConstructor,\n pannerNodeConstructor,\n periodicWaveConstructor,\n stereoPannerNodeConstructor,\n waveShaperNodeConstructor\n);\nconst mediaElementAudioSourceNodeConstructor: TMediaElementAudioSourceNodeConstructor = createMediaElementAudioSourceNodeConstructor(\n audioNodeConstructor,\n createNativeMediaElementAudioSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext\n);\nconst mediaStreamAudioDestinationNodeConstructor: TMediaStreamAudioDestinationNodeConstructor =\n createMediaStreamAudioDestinationNodeConstructor(\n audioNodeConstructor,\n createNativeMediaStreamAudioDestinationNode,\n getNativeContext,\n isNativeOfflineAudioContext\n );\nconst mediaStreamAudioSourceNodeConstructor: TMediaStreamAudioSourceNodeConstructor = createMediaStreamAudioSourceNodeConstructor(\n audioNodeConstructor,\n createNativeMediaStreamAudioSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext\n);\nconst createNativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNodeFactory(\n createInvalidStateError,\n isNativeOfflineAudioContext\n);\nconst mediaStreamTrackAudioSourceNodeConstructor: TMediaStreamTrackAudioSourceNodeConstructor =\n createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext);\nconst audioContextConstructor: TAudioContextConstructor = createAudioContextConstructor(\n baseAudioContextConstructor,\n createInvalidStateError,\n createNotSupportedError,\n createUnknownError,\n mediaElementAudioSourceNodeConstructor,\n mediaStreamAudioDestinationNodeConstructor,\n mediaStreamAudioSourceNodeConstructor,\n mediaStreamTrackAudioSourceNodeConstructor,\n nativeAudioContextConstructor\n);\n\ntype audioContextConstructor = IAudioContext;\n\nexport { audioContextConstructor as AudioContext };\n\nconst getUnrenderedAudioWorkletNodes = createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore);\nconst addUnrenderedAudioWorkletNode = createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes);\nconst connectMultipleOutputs = createConnectMultipleOutputs(createIndexSizeError);\nconst deleteUnrenderedAudioWorkletNode = createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes);\nconst disconnectMultipleOutputs = createDisconnectMultipleOutputs(createIndexSizeError);\nconst activeAudioWorkletNodeInputsStore: TActiveAudioWorkletNodeInputsStore = new WeakMap();\nconst getActiveAudioWorkletNodeInputs = createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore, getValueForKey);\nconst createNativeAudioWorkletNodeFaker = createNativeAudioWorkletNodeFakerFactory(\n connectMultipleOutputs,\n createIndexSizeError,\n createInvalidStateError,\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n createNotSupportedError,\n disconnectMultipleOutputs,\n exposeCurrentFrameAndCurrentTime,\n getActiveAudioWorkletNodeInputs,\n monitorConnections\n);\nconst createNativeAudioWorkletNode = createNativeAudioWorkletNodeFactory(\n createInvalidStateError,\n createNativeAudioWorkletNodeFaker,\n createNativeGainNode,\n createNotSupportedError,\n monitorConnections\n);\nconst createAudioWorkletNodeRenderer = createAudioWorkletNodeRendererFactory(\n connectAudioParam,\n connectMultipleOutputs,\n createNativeAudioBufferSourceNode,\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n deleteUnrenderedAudioWorkletNode,\n disconnectMultipleOutputs,\n exposeCurrentFrameAndCurrentTime,\n getNativeAudioNode,\n nativeAudioWorkletNodeConstructor,\n nativeOfflineAudioContextConstructor,\n renderAutomation,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n);\nconst getBackupOfflineAudioContext = createGetBackupOfflineAudioContext(backupOfflineAudioContextStore);\nconst setActiveAudioWorkletNodeInputs = createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore);\n\n// The AudioWorkletNode constructor is only available in a SecureContext.\nconst audioWorkletNodeConstructor: undefined | TAudioWorkletNodeConstructor = isSecureContext\n ? createAudioWorkletNodeConstructor(\n addUnrenderedAudioWorkletNode,\n audioNodeConstructor,\n createAudioParam,\n createAudioWorkletNodeRenderer,\n createNativeAudioWorkletNode,\n getAudioNodeConnections,\n getBackupOfflineAudioContext,\n getNativeContext,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor,\n sanitizeAudioWorkletNodeOptions,\n setActiveAudioWorkletNodeInputs,\n testAudioWorkletNodeOptionsClonability,\n wrapEventListener\n )\n : undefined;\n\ntype audioWorkletNodeConstructor = undefined | IAudioWorkletNode;\n\nexport { audioWorkletNodeConstructor as AudioWorkletNode };\n\ntype biquadFilterNodeConstructor = IBiquadFilterNode;\n\nexport { biquadFilterNodeConstructor as BiquadFilterNode };\n\ntype channelMergerNodeConstructor = IAudioNode;\n\nexport { channelMergerNodeConstructor as ChannelMergerNode };\n\ntype channelSplitterNodeConstructor = IAudioNode;\n\nexport { channelSplitterNodeConstructor as ChannelSplitterNode };\n\ntype constantSourceNodeConstructor = IConstantSourceNode;\n\nexport { convolverNodeConstructor as ConvolverNode };\n\ntype convolverNodeConstructor = IConvolverNode;\n\nexport { constantSourceNodeConstructor as ConstantSourceNode };\n\ntype delayNodeConstructor = IDelayNode;\n\nexport { delayNodeConstructor as DelayNode };\n\ntype dynamicsCompressorNodeConstructor = IDynamicsCompressorNode;\n\nexport { dynamicsCompressorNodeConstructor as DynamicsCompressorNode };\n\ntype gainNodeConstructor = IGainNode;\n\nexport { gainNodeConstructor as GainNode };\n\ntype iIRFilterNodeConstructor = IIIRFilterNode;\n\nexport { iIRFilterNodeConstructor as IIRFilterNode };\n\ntype mediaElementAudioSourceNodeConstructor = IMediaElementAudioSourceNode;\n\nexport { mediaElementAudioSourceNodeConstructor as MediaElementAudioSourceNode };\n\ntype mediaStreamAudioDestinationNodeConstructor = IMediaStreamAudioDestinationNode;\n\nexport { mediaStreamAudioDestinationNodeConstructor as MediaStreamAudioDestinationNode };\n\ntype mediaStreamAudioSourceNodeConstructor = IMediaStreamAudioSourceNode;\n\nexport { mediaStreamAudioSourceNodeConstructor as MediaStreamAudioSourceNode };\n\ntype mediaStreamTrackAudioSourceNodeConstructor = IMediaStreamTrackAudioSourceNode;\n\nexport { mediaStreamTrackAudioSourceNodeConstructor as MediaStreamTrackAudioSourceNode };\n\nconst minimalAudioContextConstructor: TMinimalAudioContextConstructor = createMinimalAudioContextConstructor(\n createInvalidStateError,\n createNotSupportedError,\n createUnknownError,\n minimalBaseAudioContextConstructor,\n nativeAudioContextConstructor\n);\n\ntype minimalAudioContextConstructor = IMinimalAudioContext;\n\nexport { minimalAudioContextConstructor as MinimalAudioContext };\n\nconst createNativeOfflineAudioContext = createCreateNativeOfflineAudioContext(\n createNotSupportedError,\n nativeOfflineAudioContextConstructor\n);\nconst startRendering = createStartRendering(\n audioBufferStore,\n cacheTestResult,\n getAudioNodeRenderer,\n getUnrenderedAudioWorkletNodes,\n renderNativeOfflineAudioContext,\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport,\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n);\nconst minimalOfflineAudioContextConstructor: TMinimalOfflineAudioContextConstructor = createMinimalOfflineAudioContextConstructor(\n cacheTestResult,\n createInvalidStateError,\n createNativeOfflineAudioContext,\n minimalBaseAudioContextConstructor,\n startRendering\n);\n\ntype minimalOfflineAudioContextConstructor = IMinimalOfflineAudioContext;\n\nexport { minimalOfflineAudioContextConstructor as MinimalOfflineAudioContext };\n\nconst offlineAudioContextConstructor: IOfflineAudioContextConstructor = createOfflineAudioContextConstructor(\n baseAudioContextConstructor,\n cacheTestResult,\n createInvalidStateError,\n createNativeOfflineAudioContext,\n startRendering\n);\n\ntype offlineAudioContextConstructor = IOfflineAudioContext;\n\nexport { offlineAudioContextConstructor as OfflineAudioContext };\n\ntype oscillatorNodeConstructor = IOscillatorNode;\n\nexport { oscillatorNodeConstructor as OscillatorNode };\n\ntype pannerNodeConstructor = IPannerNode;\n\nexport { pannerNodeConstructor as PannerNode };\n\ntype periodicWaveConstructor = IPeriodicWave;\n\nexport { periodicWaveConstructor as PeriodicWave };\n\ntype stereoPannerNodeConstructor = IStereoPannerNode;\n\nexport { stereoPannerNodeConstructor as StereoPannerNode };\n\ntype waveShaperNodeConstructor = IWaveShaperNode;\n\nexport { waveShaperNodeConstructor as WaveShaperNode };\n\nexport const isAnyAudioContext = createIsAnyAudioContext(CONTEXT_STORE, isNativeAudioContext);\n\nexport const isAnyAudioNode = createIsAnyAudioNode(AUDIO_NODE_STORE, isNativeAudioNode);\n\nexport const isAnyAudioParam = createIsAnyAudioParam(AUDIO_PARAM_STORE, isNativeAudioParam);\n\nexport const isAnyOfflineAudioContext = createIsAnyOfflineAudioContext(CONTEXT_STORE, isNativeOfflineAudioContext);\n\nexport const isSupported = () =>\n createIsSupportedPromise(\n cacheTestResult,\n createTestAudioBufferCopyChannelMethodsSubarraySupport(nativeOfflineAudioContextConstructor),\n createTestAudioContextCloseMethodSupport(nativeAudioContextConstructor),\n createTestAudioContextDecodeAudioDataMethodTypeErrorSupport(nativeOfflineAudioContextConstructor),\n createTestAudioContextOptionsSupport(nativeAudioContextConstructor),\n createTestAudioNodeConnectMethodSupport(nativeOfflineAudioContextConstructor),\n createTestAudioWorkletProcessorNoOutputsSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor),\n createTestChannelMergerNodeChannelCountSupport(nativeOfflineAudioContextConstructor),\n createTestConstantSourceNodeAccurateSchedulingSupport(nativeOfflineAudioContextConstructor),\n createTestConvolverNodeBufferReassignabilitySupport(nativeOfflineAudioContextConstructor),\n createTestConvolverNodeChannelCountSupport(nativeOfflineAudioContextConstructor),\n testDomExceptionConstructorSupport,\n createTestIsSecureContextSupport(window),\n createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport(nativeAudioContextConstructor),\n createTestStereoPannerNodeDefaultValueSupport(nativeOfflineAudioContextConstructor),\n testTransferablesSupport\n );\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/runtime/helpers/slicedToArray'), require('@babel/runtime/helpers/classCallCheck'), require('@babel/runtime/helpers/createClass')) :\n typeof define === 'function' && define.amd ? define(['exports', '@babel/runtime/helpers/slicedToArray', '@babel/runtime/helpers/classCallCheck', '@babel/runtime/helpers/createClass'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.automationEvents = {}, global._slicedToArray, global._classCallCheck, global._createClass));\n})(this, (function (exports, _slicedToArray, _classCallCheck, _createClass) { 'use strict';\n\n function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);\n var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\n var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\n\n var createExtendedExponentialRampToValueAutomationEvent = function createExtendedExponentialRampToValueAutomationEvent(value, endTime, insertTime) {\n return {\n endTime: endTime,\n insertTime: insertTime,\n type: 'exponentialRampToValue',\n value: value\n };\n };\n\n var createExtendedLinearRampToValueAutomationEvent = function createExtendedLinearRampToValueAutomationEvent(value, endTime, insertTime) {\n return {\n endTime: endTime,\n insertTime: insertTime,\n type: 'linearRampToValue',\n value: value\n };\n };\n\n var createSetValueAutomationEvent = function createSetValueAutomationEvent(value, startTime) {\n return {\n startTime: startTime,\n type: 'setValue',\n value: value\n };\n };\n\n var createSetValueCurveAutomationEvent = function createSetValueCurveAutomationEvent(values, startTime, duration) {\n return {\n duration: duration,\n startTime: startTime,\n type: 'setValueCurve',\n values: values\n };\n };\n\n var getTargetValueAtTime = function getTargetValueAtTime(time, valueAtStartTime, _ref) {\n var startTime = _ref.startTime,\n target = _ref.target,\n timeConstant = _ref.timeConstant;\n return target + (valueAtStartTime - target) * Math.exp((startTime - time) / timeConstant);\n };\n\n var isExponentialRampToValueAutomationEvent = function isExponentialRampToValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'exponentialRampToValue';\n };\n\n var isLinearRampToValueAutomationEvent = function isLinearRampToValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'linearRampToValue';\n };\n\n var isAnyRampToValueAutomationEvent = function isAnyRampToValueAutomationEvent(automationEvent) {\n return isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent);\n };\n\n var isSetValueAutomationEvent = function isSetValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'setValue';\n };\n\n var isSetValueCurveAutomationEvent = function isSetValueCurveAutomationEvent(automationEvent) {\n return automationEvent.type === 'setValueCurve';\n };\n\n var getValueOfAutomationEventAtIndexAtTime = function getValueOfAutomationEventAtIndexAtTime(automationEvents, index, time, defaultValue) {\n var automationEvent = automationEvents[index];\n return automationEvent === undefined ? defaultValue : isAnyRampToValueAutomationEvent(automationEvent) || isSetValueAutomationEvent(automationEvent) ? automationEvent.value : isSetValueCurveAutomationEvent(automationEvent) ? automationEvent.values[automationEvent.values.length - 1] : getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, automationEvent.startTime, defaultValue), automationEvent);\n };\n\n var getEndTimeAndValueOfPreviousAutomationEvent = function getEndTimeAndValueOfPreviousAutomationEvent(automationEvents, index, currentAutomationEvent, nextAutomationEvent, defaultValue) {\n return currentAutomationEvent === undefined ? [nextAutomationEvent.insertTime, defaultValue] : isAnyRampToValueAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.endTime, currentAutomationEvent.value] : isSetValueAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.startTime, currentAutomationEvent.value] : isSetValueCurveAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.startTime + currentAutomationEvent.duration, currentAutomationEvent.values[currentAutomationEvent.values.length - 1]] : [currentAutomationEvent.startTime, getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, currentAutomationEvent.startTime, defaultValue)];\n };\n\n var isCancelAndHoldAutomationEvent = function isCancelAndHoldAutomationEvent(automationEvent) {\n return automationEvent.type === 'cancelAndHold';\n };\n\n var isCancelScheduledValuesAutomationEvent = function isCancelScheduledValuesAutomationEvent(automationEvent) {\n return automationEvent.type === 'cancelScheduledValues';\n };\n\n var getEventTime = function getEventTime(automationEvent) {\n if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) {\n return automationEvent.cancelTime;\n }\n\n if (isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent)) {\n return automationEvent.endTime;\n }\n\n return automationEvent.startTime;\n };\n\n var getExponentialRampValueAtTime = function getExponentialRampValueAtTime(time, startTime, valueAtStartTime, _ref) {\n var endTime = _ref.endTime,\n value = _ref.value;\n\n if (valueAtStartTime === value) {\n return value;\n }\n\n if (0 < valueAtStartTime && 0 < value || valueAtStartTime < 0 && value < 0) {\n return valueAtStartTime * Math.pow(value / valueAtStartTime, (time - startTime) / (endTime - startTime));\n }\n\n return 0;\n };\n\n var getLinearRampValueAtTime = function getLinearRampValueAtTime(time, startTime, valueAtStartTime, _ref) {\n var endTime = _ref.endTime,\n value = _ref.value;\n return valueAtStartTime + (time - startTime) / (endTime - startTime) * (value - valueAtStartTime);\n };\n\n var interpolateValue = function interpolateValue(values, theoreticIndex) {\n var lowerIndex = Math.floor(theoreticIndex);\n var upperIndex = Math.ceil(theoreticIndex);\n\n if (lowerIndex === upperIndex) {\n return values[lowerIndex];\n }\n\n return (1 - (theoreticIndex - lowerIndex)) * values[lowerIndex] + (1 - (upperIndex - theoreticIndex)) * values[upperIndex];\n };\n\n var getValueCurveValueAtTime = function getValueCurveValueAtTime(time, _ref) {\n var duration = _ref.duration,\n startTime = _ref.startTime,\n values = _ref.values;\n var theoreticIndex = (time - startTime) / duration * (values.length - 1);\n return interpolateValue(values, theoreticIndex);\n };\n\n var isSetTargetAutomationEvent = function isSetTargetAutomationEvent(automationEvent) {\n return automationEvent.type === 'setTarget';\n };\n\n var AutomationEventList = /*#__PURE__*/function (_Symbol$iterator) {\n function AutomationEventList(defaultValue) {\n _classCallCheck__default[\"default\"](this, AutomationEventList);\n\n this._automationEvents = [];\n this._currenTime = 0;\n this._defaultValue = defaultValue;\n }\n\n _createClass__default[\"default\"](AutomationEventList, [{\n key: _Symbol$iterator,\n value: function value() {\n return this._automationEvents[Symbol.iterator]();\n }\n }, {\n key: \"add\",\n value: function add(automationEvent) {\n var eventTime = getEventTime(automationEvent);\n\n if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) {\n var index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n if (isCancelScheduledValuesAutomationEvent(automationEvent) && isSetValueCurveAutomationEvent(currentAutomationEvent)) {\n return currentAutomationEvent.startTime + currentAutomationEvent.duration >= eventTime;\n }\n\n return getEventTime(currentAutomationEvent) >= eventTime;\n });\n\n var removedAutomationEvent = this._automationEvents[index];\n\n if (index !== -1) {\n this._automationEvents = this._automationEvents.slice(0, index);\n }\n\n if (isCancelAndHoldAutomationEvent(automationEvent)) {\n var lastAutomationEvent = this._automationEvents[this._automationEvents.length - 1];\n\n if (removedAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(removedAutomationEvent)) {\n if (isSetTargetAutomationEvent(lastAutomationEvent)) {\n throw new Error('The internal list is malformed.');\n }\n\n var startTime = isSetValueCurveAutomationEvent(lastAutomationEvent) ? lastAutomationEvent.startTime + lastAutomationEvent.duration : getEventTime(lastAutomationEvent);\n var startValue = isSetValueCurveAutomationEvent(lastAutomationEvent) ? lastAutomationEvent.values[lastAutomationEvent.values.length - 1] : lastAutomationEvent.value;\n var value = isExponentialRampToValueAutomationEvent(removedAutomationEvent) ? getExponentialRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent) : getLinearRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent);\n var truncatedAutomationEvent = isExponentialRampToValueAutomationEvent(removedAutomationEvent) ? createExtendedExponentialRampToValueAutomationEvent(value, eventTime, this._currenTime) : createExtendedLinearRampToValueAutomationEvent(value, eventTime, this._currenTime);\n\n this._automationEvents.push(truncatedAutomationEvent);\n }\n\n if (lastAutomationEvent !== undefined && isSetTargetAutomationEvent(lastAutomationEvent)) {\n this._automationEvents.push(createSetValueAutomationEvent(this.getValue(eventTime), eventTime));\n }\n\n if (lastAutomationEvent !== undefined && isSetValueCurveAutomationEvent(lastAutomationEvent) && lastAutomationEvent.startTime + lastAutomationEvent.duration > eventTime) {\n this._automationEvents[this._automationEvents.length - 1] = createSetValueCurveAutomationEvent(new Float32Array([6, 7]), lastAutomationEvent.startTime, eventTime - lastAutomationEvent.startTime);\n }\n }\n } else {\n var _index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n return getEventTime(currentAutomationEvent) > eventTime;\n });\n\n var previousAutomationEvent = _index === -1 ? this._automationEvents[this._automationEvents.length - 1] : this._automationEvents[_index - 1];\n\n if (previousAutomationEvent !== undefined && isSetValueCurveAutomationEvent(previousAutomationEvent) && getEventTime(previousAutomationEvent) + previousAutomationEvent.duration > eventTime) {\n return false;\n }\n\n var persistentAutomationEvent = isExponentialRampToValueAutomationEvent(automationEvent) ? createExtendedExponentialRampToValueAutomationEvent(automationEvent.value, automationEvent.endTime, this._currenTime) : isLinearRampToValueAutomationEvent(automationEvent) ? createExtendedLinearRampToValueAutomationEvent(automationEvent.value, eventTime, this._currenTime) : automationEvent;\n\n if (_index === -1) {\n this._automationEvents.push(persistentAutomationEvent);\n } else {\n if (isSetValueCurveAutomationEvent(automationEvent) && eventTime + automationEvent.duration > getEventTime(this._automationEvents[_index])) {\n return false;\n }\n\n this._automationEvents.splice(_index, 0, persistentAutomationEvent);\n }\n }\n\n return true;\n }\n }, {\n key: \"flush\",\n value: function flush(time) {\n var index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n return getEventTime(currentAutomationEvent) > time;\n });\n\n if (index > 1) {\n var remainingAutomationEvents = this._automationEvents.slice(index - 1);\n\n var firstRemainingAutomationEvent = remainingAutomationEvents[0];\n\n if (isSetTargetAutomationEvent(firstRemainingAutomationEvent)) {\n remainingAutomationEvents.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents, index - 2, firstRemainingAutomationEvent.startTime, this._defaultValue), firstRemainingAutomationEvent.startTime));\n }\n\n this._automationEvents = remainingAutomationEvents;\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue(time) {\n if (this._automationEvents.length === 0) {\n return this._defaultValue;\n }\n\n var indexOfNextEvent = this._automationEvents.findIndex(function (automationEvent) {\n return getEventTime(automationEvent) > time;\n });\n\n var nextAutomationEvent = this._automationEvents[indexOfNextEvent];\n var indexOfCurrentEvent = (indexOfNextEvent === -1 ? this._automationEvents.length : indexOfNextEvent) - 1;\n var currentAutomationEvent = this._automationEvents[indexOfCurrentEvent];\n\n if (currentAutomationEvent !== undefined && isSetTargetAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent) || nextAutomationEvent.insertTime > time)) {\n return getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(this._automationEvents, indexOfCurrentEvent - 1, currentAutomationEvent.startTime, this._defaultValue), currentAutomationEvent);\n }\n\n if (currentAutomationEvent !== undefined && isSetValueAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\n\n if (currentAutomationEvent !== undefined && isSetValueCurveAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent) || currentAutomationEvent.startTime + currentAutomationEvent.duration > time)) {\n if (time < currentAutomationEvent.startTime + currentAutomationEvent.duration) {\n return getValueCurveValueAtTime(time, currentAutomationEvent);\n }\n\n return currentAutomationEvent.values[currentAutomationEvent.values.length - 1];\n }\n\n if (currentAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\n\n if (nextAutomationEvent !== undefined && isExponentialRampToValueAutomationEvent(nextAutomationEvent)) {\n var _getEndTimeAndValueOf = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue),\n _getEndTimeAndValueOf2 = _slicedToArray__default[\"default\"](_getEndTimeAndValueOf, 2),\n startTime = _getEndTimeAndValueOf2[0],\n value = _getEndTimeAndValueOf2[1];\n\n return getExponentialRampValueAtTime(time, startTime, value, nextAutomationEvent);\n }\n\n if (nextAutomationEvent !== undefined && isLinearRampToValueAutomationEvent(nextAutomationEvent)) {\n var _getEndTimeAndValueOf3 = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue),\n _getEndTimeAndValueOf4 = _slicedToArray__default[\"default\"](_getEndTimeAndValueOf3, 2),\n _startTime = _getEndTimeAndValueOf4[0],\n _value = _getEndTimeAndValueOf4[1];\n\n return getLinearRampValueAtTime(time, _startTime, _value, nextAutomationEvent);\n }\n\n return this._defaultValue;\n }\n }]);\n\n return AutomationEventList;\n }(Symbol.iterator);\n\n var createCancelAndHoldAutomationEvent = function createCancelAndHoldAutomationEvent(cancelTime) {\n return {\n cancelTime: cancelTime,\n type: 'cancelAndHold'\n };\n };\n\n var createCancelScheduledValuesAutomationEvent = function createCancelScheduledValuesAutomationEvent(cancelTime) {\n return {\n cancelTime: cancelTime,\n type: 'cancelScheduledValues'\n };\n };\n\n var createExponentialRampToValueAutomationEvent = function createExponentialRampToValueAutomationEvent(value, endTime) {\n return {\n endTime: endTime,\n type: 'exponentialRampToValue',\n value: value\n };\n };\n\n var createLinearRampToValueAutomationEvent = function createLinearRampToValueAutomationEvent(value, endTime) {\n return {\n endTime: endTime,\n type: 'linearRampToValue',\n value: value\n };\n };\n\n var createSetTargetAutomationEvent = function createSetTargetAutomationEvent(target, startTime, timeConstant) {\n return {\n startTime: startTime,\n target: target,\n timeConstant: timeConstant,\n type: 'setTarget'\n };\n };\n\n exports.AutomationEventList = AutomationEventList;\n exports.createCancelAndHoldAutomationEvent = createCancelAndHoldAutomationEvent;\n exports.createCancelScheduledValuesAutomationEvent = createCancelScheduledValuesAutomationEvent;\n exports.createExponentialRampToValueAutomationEvent = createExponentialRampToValueAutomationEvent;\n exports.createLinearRampToValueAutomationEvent = createLinearRampToValueAutomationEvent;\n exports.createSetTargetAutomationEvent = createSetTargetAutomationEvent;\n exports.createSetValueAutomationEvent = createSetValueAutomationEvent;\n exports.createSetValueCurveAutomationEvent = createSetValueCurveAutomationEvent;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export const createAbortError = () => new DOMException('', 'AbortError');\n//# sourceMappingURL=abort-error.js.map","import { TAbortErrorFactory } from '../types';\n\nexport const createAbortError: TAbortErrorFactory = () => new DOMException('', 'AbortError');\n","export const createAddActiveInputConnectionToAudioNode = (insertElementInSet) => {\n return (activeInputs, source, [output, input, eventListener], ignoreDuplicates) => {\n insertElementInSet(activeInputs[input], [source, output, eventListener], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output, ignoreDuplicates);\n };\n};\n//# sourceMappingURL=add-active-input-connection-to-audio-node.js.map","import { TAddActiveInputConnectionToAudioNodeFactory } from '../types/add-active-input-connection-to-audio-node-factory';\n\nexport const createAddActiveInputConnectionToAudioNode: TAddActiveInputConnectionToAudioNodeFactory = (insertElementInSet) => {\n return (activeInputs, source, [output, input, eventListener], ignoreDuplicates) => {\n insertElementInSet(\n activeInputs[input],\n [source, output, eventListener],\n (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output,\n ignoreDuplicates\n );\n };\n};\n","export const createAddAudioNodeConnections = (audioNodeConnectionsStore) => {\n return (audioNode, audioNodeRenderer, nativeAudioNode) => {\n const activeInputs = [];\n for (let i = 0; i < nativeAudioNode.numberOfInputs; i += 1) {\n activeInputs.push(new Set());\n }\n audioNodeConnectionsStore.set(audioNode, {\n activeInputs,\n outputs: new Set(),\n passiveInputs: new WeakMap(),\n renderer: audioNodeRenderer\n });\n };\n};\n//# sourceMappingURL=add-audio-node-connections.js.map","import { IAudioNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TActiveInputConnection, TAddAudioNodeConnectionsFactory, TContext, TNativeAudioNode } from '../types';\n\nexport const createAddAudioNodeConnections: TAddAudioNodeConnectionsFactory = (audioNodeConnectionsStore) => {\n return (\n audioNode: IAudioNode,\n audioNodeRenderer: T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? IAudioNodeRenderer> : null,\n nativeAudioNode: TNativeAudioNode\n ) => {\n const activeInputs = [];\n\n for (let i = 0; i < nativeAudioNode.numberOfInputs; i += 1) {\n activeInputs.push(new Set>());\n }\n\n audioNodeConnectionsStore.set(audioNode, {\n activeInputs,\n outputs: new Set(),\n passiveInputs: new WeakMap(),\n renderer: audioNodeRenderer\n });\n };\n};\n","export const createAddAudioParamConnections = (audioParamConnectionsStore) => {\n return (audioParam, audioParamRenderer) => {\n audioParamConnectionsStore.set(audioParam, { activeInputs: new Set(), passiveInputs: new WeakMap(), renderer: audioParamRenderer });\n };\n};\n//# sourceMappingURL=add-audio-param-connections.js.map","import { IAudioParam, IAudioParamRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TAddAudioParamConnectionsFactory, TContext } from '../types';\n\nexport const createAddAudioParamConnections: TAddAudioParamConnectionsFactory = (audioParamConnectionsStore) => {\n return (\n audioParam: IAudioParam,\n audioParamRenderer: T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? IAudioParamRenderer : null\n ) => {\n audioParamConnectionsStore.set(audioParam, { activeInputs: new Set(), passiveInputs: new WeakMap(), renderer: audioParamRenderer });\n };\n};\n","import { NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS } from '../globals';\nimport { isConstructible } from '../helpers/is-constructible';\nimport { splitImportStatements } from '../helpers/split-import-statements';\nconst verifyParameterDescriptors = (parameterDescriptors) => {\n if (parameterDescriptors !== undefined && !Array.isArray(parameterDescriptors)) {\n throw new TypeError('The parameterDescriptors property of given value for processorCtor is not an array.');\n }\n};\nconst verifyProcessorCtor = (processorCtor) => {\n if (!isConstructible(processorCtor)) {\n throw new TypeError('The given value for processorCtor should be a constructor.');\n }\n if (processorCtor.prototype === null || typeof processorCtor.prototype !== 'object') {\n throw new TypeError('The given value for processorCtor should have a prototype.');\n }\n};\nexport const createAddAudioWorkletModule = (cacheTestResult, createNotSupportedError, evaluateSource, exposeCurrentFrameAndCurrentTime, fetchSource, getNativeContext, getOrCreateBackupOfflineAudioContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, ongoingRequests, resolvedRequests, testAudioWorkletProcessorPostMessageSupport, window) => {\n let index = 0;\n return (context, moduleURL, options = { credentials: 'omit' }) => {\n const resolvedRequestsOfContext = resolvedRequests.get(context);\n if (resolvedRequestsOfContext !== undefined && resolvedRequestsOfContext.has(moduleURL)) {\n return Promise.resolve();\n }\n const ongoingRequestsOfContext = ongoingRequests.get(context);\n if (ongoingRequestsOfContext !== undefined) {\n const promiseOfOngoingRequest = ongoingRequestsOfContext.get(moduleURL);\n if (promiseOfOngoingRequest !== undefined) {\n return promiseOfOngoingRequest;\n }\n }\n const nativeContext = getNativeContext(context);\n // Bug #59: Safari does not implement the audioWorklet property.\n const promise = nativeContext.audioWorklet === undefined\n ? fetchSource(moduleURL)\n .then(([source, absoluteUrl]) => {\n const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl);\n /*\n * This is the unminified version of the code used below:\n *\n * ```js\n * ${ importStatements };\n * ((a, b) => {\n * (a[b] = a[b] || [ ]).push(\n * (AudioWorkletProcessor, global, registerProcessor, sampleRate, self, window) => {\n * ${ sourceWithoutImportStatements }\n * }\n * );\n * })(window, '_AWGS');\n * ```\n */\n // tslint:disable-next-line:max-line-length\n const wrappedSource = `${importStatements};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${sourceWithoutImportStatements}\n})})(window,'_AWGS')`;\n // @todo Evaluating the given source code is a possible security problem.\n return evaluateSource(wrappedSource);\n })\n .then(() => {\n const evaluateAudioWorkletGlobalScope = window._AWGS.pop();\n if (evaluateAudioWorkletGlobalScope === undefined) {\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n throw new SyntaxError();\n }\n exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () => evaluateAudioWorkletGlobalScope(class AudioWorkletProcessor {\n }, undefined, (name, processorCtor) => {\n if (name.trim() === '') {\n throw createNotSupportedError();\n }\n const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext);\n if (nodeNameToProcessorConstructorMap !== undefined) {\n if (nodeNameToProcessorConstructorMap.has(name)) {\n throw createNotSupportedError();\n }\n verifyProcessorCtor(processorCtor);\n verifyParameterDescriptors(processorCtor.parameterDescriptors);\n nodeNameToProcessorConstructorMap.set(name, processorCtor);\n }\n else {\n verifyProcessorCtor(processorCtor);\n verifyParameterDescriptors(processorCtor.parameterDescriptors);\n NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(nativeContext, new Map([[name, processorCtor]]));\n }\n }, nativeContext.sampleRate, undefined, undefined));\n })\n : Promise.all([\n fetchSource(moduleURL),\n Promise.resolve(cacheTestResult(testAudioWorkletProcessorPostMessageSupport, testAudioWorkletProcessorPostMessageSupport))\n ]).then(([[source, absoluteUrl], isSupportingPostMessage]) => {\n const currentIndex = index + 1;\n index = currentIndex;\n const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl);\n /*\n * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\n *\n * This is the unminified version of the code used below.\n *\n * ```js\n * class extends AudioWorkletProcessor {\n *\n * __buffers = new WeakSet();\n *\n * constructor () {\n * super();\n *\n * this.port.postMessage = ((postMessage) => {\n * return (message, transferables) => {\n * const filteredTransferables = (transferables)\n * ? transferables.filter((transferable) => !this.__buffers.has(transferable))\n * : transferables;\n *\n * return postMessage.call(this.port, message, filteredTransferables);\n * };\n * })(this.port.postMessage);\n * }\n * }\n * ```\n */\n const patchedAudioWorkletProcessor = isSupportingPostMessage\n ? 'AudioWorkletProcessor'\n : 'class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}';\n /*\n * Bug #170: Chrome and Edge do call process() with an array with empty channelData for each input if no input is connected.\n *\n * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\n *\n * Bug #190: Safari doesn't throw an error when loading an unparsable module.\n *\n * This is the unminified version of the code used below:\n *\n * ```js\n * `${ importStatements };\n * ((AudioWorkletProcessor, registerProcessor) => {${ sourceWithoutImportStatements }\n * })(\n * ${ patchedAudioWorkletProcessor },\n * (name, processorCtor) => registerProcessor(name, class extends processorCtor {\n *\n * __collectBuffers = (array) => {\n * array.forEach((element) => this.__buffers.add(element.buffer));\n * };\n *\n * process (inputs, outputs, parameters) {\n * inputs.forEach(this.__collectBuffers);\n * outputs.forEach(this.__collectBuffers);\n * this.__collectBuffers(Object.values(parameters));\n *\n * return super.process(\n * (inputs.map((input) => input.some((channelData) => channelData.length === 0)) ? [ ] : input),\n * outputs,\n * parameters\n * );\n * }\n *\n * })\n * );\n *\n * registerProcessor(`__sac${currentIndex}`, class extends AudioWorkletProcessor{\n *\n * process () {\n * return false;\n * }\n *\n * })`\n * ```\n */\n const memberDefinition = isSupportingPostMessage ? '' : '__c = (a) => a.forEach(e=>this.__b.add(e.buffer));';\n const bufferRegistration = isSupportingPostMessage\n ? ''\n : 'i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));';\n const wrappedSource = `${importStatements};((AudioWorkletProcessor,registerProcessor)=>{${sourceWithoutImportStatements}\n})(${patchedAudioWorkletProcessor},(n,p)=>registerProcessor(n,class extends p{${memberDefinition}process(i,o,p){${bufferRegistration}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${currentIndex}',class extends AudioWorkletProcessor{process(){return !1}})`;\n const blob = new Blob([wrappedSource], { type: 'application/javascript; charset=utf-8' });\n const url = URL.createObjectURL(blob);\n return nativeContext.audioWorklet\n .addModule(url, options)\n .then(() => {\n if (isNativeOfflineAudioContext(nativeContext)) {\n return nativeContext;\n }\n // Bug #186: Chrome, Edge and Opera do not allow to create an AudioWorkletNode on a closed AudioContext.\n const backupOfflineAudioContext = getOrCreateBackupOfflineAudioContext(nativeContext);\n return backupOfflineAudioContext.audioWorklet.addModule(url, options).then(() => backupOfflineAudioContext);\n })\n .then((nativeContextOrBackupOfflineAudioContext) => {\n if (nativeAudioWorkletNodeConstructor === null) {\n throw new SyntaxError();\n }\n try {\n // Bug #190: Safari doesn't throw an error when loading an unparsable module.\n new nativeAudioWorkletNodeConstructor(nativeContextOrBackupOfflineAudioContext, `__sac${currentIndex}`); // tslint:disable-line:no-unused-expression\n }\n catch {\n throw new SyntaxError();\n }\n })\n .finally(() => URL.revokeObjectURL(url));\n });\n if (ongoingRequestsOfContext === undefined) {\n ongoingRequests.set(context, new Map([[moduleURL, promise]]));\n }\n else {\n ongoingRequestsOfContext.set(moduleURL, promise);\n }\n promise\n .then(() => {\n const updatedResolvedRequestsOfContext = resolvedRequests.get(context);\n if (updatedResolvedRequestsOfContext === undefined) {\n resolvedRequests.set(context, new Set([moduleURL]));\n }\n else {\n updatedResolvedRequestsOfContext.add(moduleURL);\n }\n })\n .finally(() => {\n const updatedOngoingRequestsOfContext = ongoingRequests.get(context);\n if (updatedOngoingRequestsOfContext !== undefined) {\n updatedOngoingRequestsOfContext.delete(moduleURL);\n }\n });\n return promise;\n };\n};\n//# sourceMappingURL=add-audio-worklet-module.js.map","import { NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS } from '../globals';\nimport { isConstructible } from '../helpers/is-constructible';\nimport { splitImportStatements } from '../helpers/split-import-statements';\nimport { IAudioWorkletProcessorConstructor } from '../interfaces';\nimport { TAddAudioWorkletModuleFactory, TEvaluateAudioWorkletGlobalScopeFunction } from '../types';\n\nconst verifyParameterDescriptors = (parameterDescriptors: IAudioWorkletProcessorConstructor['parameterDescriptors']) => {\n if (parameterDescriptors !== undefined && !Array.isArray(parameterDescriptors)) {\n throw new TypeError('The parameterDescriptors property of given value for processorCtor is not an array.');\n }\n};\n\nconst verifyProcessorCtor = (processorCtor: T) => {\n if (!isConstructible(processorCtor)) {\n throw new TypeError('The given value for processorCtor should be a constructor.');\n }\n\n if (processorCtor.prototype === null || typeof processorCtor.prototype !== 'object') {\n throw new TypeError('The given value for processorCtor should have a prototype.');\n }\n};\n\nexport const createAddAudioWorkletModule: TAddAudioWorkletModuleFactory = (\n cacheTestResult,\n createNotSupportedError,\n evaluateSource,\n exposeCurrentFrameAndCurrentTime,\n fetchSource,\n getNativeContext,\n getOrCreateBackupOfflineAudioContext,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor,\n ongoingRequests,\n resolvedRequests,\n testAudioWorkletProcessorPostMessageSupport,\n window\n) => {\n let index = 0;\n\n return (context, moduleURL, options = { credentials: 'omit' }) => {\n const resolvedRequestsOfContext = resolvedRequests.get(context);\n\n if (resolvedRequestsOfContext !== undefined && resolvedRequestsOfContext.has(moduleURL)) {\n return Promise.resolve();\n }\n\n const ongoingRequestsOfContext = ongoingRequests.get(context);\n\n if (ongoingRequestsOfContext !== undefined) {\n const promiseOfOngoingRequest = ongoingRequestsOfContext.get(moduleURL);\n\n if (promiseOfOngoingRequest !== undefined) {\n return promiseOfOngoingRequest;\n }\n }\n\n const nativeContext = getNativeContext(context);\n\n // Bug #59: Safari does not implement the audioWorklet property.\n const promise =\n nativeContext.audioWorklet === undefined\n ? fetchSource(moduleURL)\n .then(([source, absoluteUrl]) => {\n const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl);\n\n /*\n * This is the unminified version of the code used below:\n *\n * ```js\n * ${ importStatements };\n * ((a, b) => {\n * (a[b] = a[b] || [ ]).push(\n * (AudioWorkletProcessor, global, registerProcessor, sampleRate, self, window) => {\n * ${ sourceWithoutImportStatements }\n * }\n * );\n * })(window, '_AWGS');\n * ```\n */\n // tslint:disable-next-line:max-line-length\n const wrappedSource = `${importStatements};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${sourceWithoutImportStatements}\n})})(window,'_AWGS')`;\n\n // @todo Evaluating the given source code is a possible security problem.\n return evaluateSource(wrappedSource);\n })\n .then(() => {\n const evaluateAudioWorkletGlobalScope = ((window)._AWGS).pop();\n\n if (evaluateAudioWorkletGlobalScope === undefined) {\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n throw new SyntaxError();\n }\n\n exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () =>\n evaluateAudioWorkletGlobalScope(\n class AudioWorkletProcessor {},\n undefined,\n (name, processorCtor) => {\n if (name.trim() === '') {\n throw createNotSupportedError();\n }\n\n const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext);\n\n if (nodeNameToProcessorConstructorMap !== undefined) {\n if (nodeNameToProcessorConstructorMap.has(name)) {\n throw createNotSupportedError();\n }\n\n verifyProcessorCtor(processorCtor);\n verifyParameterDescriptors(processorCtor.parameterDescriptors);\n\n nodeNameToProcessorConstructorMap.set(name, processorCtor);\n } else {\n verifyProcessorCtor(processorCtor);\n verifyParameterDescriptors(processorCtor.parameterDescriptors);\n\n NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(nativeContext, new Map([[name, processorCtor]]));\n }\n },\n nativeContext.sampleRate,\n undefined,\n undefined\n )\n );\n })\n : Promise.all([\n fetchSource(moduleURL),\n Promise.resolve(\n cacheTestResult(testAudioWorkletProcessorPostMessageSupport, testAudioWorkletProcessorPostMessageSupport)\n )\n ]).then(([[source, absoluteUrl], isSupportingPostMessage]) => {\n const currentIndex = index + 1;\n\n index = currentIndex;\n\n const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl);\n /*\n * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\n *\n * This is the unminified version of the code used below.\n *\n * ```js\n * class extends AudioWorkletProcessor {\n *\n * __buffers = new WeakSet();\n *\n * constructor () {\n * super();\n *\n * this.port.postMessage = ((postMessage) => {\n * return (message, transferables) => {\n * const filteredTransferables = (transferables)\n * ? transferables.filter((transferable) => !this.__buffers.has(transferable))\n * : transferables;\n *\n * return postMessage.call(this.port, message, filteredTransferables);\n * };\n * })(this.port.postMessage);\n * }\n * }\n * ```\n */\n const patchedAudioWorkletProcessor = isSupportingPostMessage\n ? 'AudioWorkletProcessor'\n : 'class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}';\n /*\n * Bug #170: Chrome and Edge do call process() with an array with empty channelData for each input if no input is connected.\n *\n * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\n *\n * Bug #190: Safari doesn't throw an error when loading an unparsable module.\n *\n * This is the unminified version of the code used below:\n *\n * ```js\n * `${ importStatements };\n * ((AudioWorkletProcessor, registerProcessor) => {${ sourceWithoutImportStatements }\n * })(\n * ${ patchedAudioWorkletProcessor },\n * (name, processorCtor) => registerProcessor(name, class extends processorCtor {\n *\n * __collectBuffers = (array) => {\n * array.forEach((element) => this.__buffers.add(element.buffer));\n * };\n *\n * process (inputs, outputs, parameters) {\n * inputs.forEach(this.__collectBuffers);\n * outputs.forEach(this.__collectBuffers);\n * this.__collectBuffers(Object.values(parameters));\n *\n * return super.process(\n * (inputs.map((input) => input.some((channelData) => channelData.length === 0)) ? [ ] : input),\n * outputs,\n * parameters\n * );\n * }\n *\n * })\n * );\n *\n * registerProcessor(`__sac${currentIndex}`, class extends AudioWorkletProcessor{\n *\n * process () {\n * return false;\n * }\n *\n * })`\n * ```\n */\n const memberDefinition = isSupportingPostMessage ? '' : '__c = (a) => a.forEach(e=>this.__b.add(e.buffer));';\n const bufferRegistration = isSupportingPostMessage\n ? ''\n : 'i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));';\n const wrappedSource = `${importStatements};((AudioWorkletProcessor,registerProcessor)=>{${sourceWithoutImportStatements}\n})(${patchedAudioWorkletProcessor},(n,p)=>registerProcessor(n,class extends p{${memberDefinition}process(i,o,p){${bufferRegistration}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${currentIndex}',class extends AudioWorkletProcessor{process(){return !1}})`;\n const blob = new Blob([wrappedSource], { type: 'application/javascript; charset=utf-8' });\n const url = URL.createObjectURL(blob);\n\n return nativeContext.audioWorklet\n .addModule(url, options)\n .then(() => {\n if (isNativeOfflineAudioContext(nativeContext)) {\n return nativeContext;\n }\n\n // Bug #186: Chrome, Edge and Opera do not allow to create an AudioWorkletNode on a closed AudioContext.\n const backupOfflineAudioContext = getOrCreateBackupOfflineAudioContext(nativeContext);\n\n return backupOfflineAudioContext.audioWorklet.addModule(url, options).then(() => backupOfflineAudioContext);\n })\n .then((nativeContextOrBackupOfflineAudioContext) => {\n if (nativeAudioWorkletNodeConstructor === null) {\n throw new SyntaxError();\n }\n\n try {\n // Bug #190: Safari doesn't throw an error when loading an unparsable module.\n new nativeAudioWorkletNodeConstructor(nativeContextOrBackupOfflineAudioContext, `__sac${currentIndex}`); // tslint:disable-line:no-unused-expression\n } catch {\n throw new SyntaxError();\n }\n })\n .finally(() => URL.revokeObjectURL(url));\n });\n\n if (ongoingRequestsOfContext === undefined) {\n ongoingRequests.set(context, new Map([[moduleURL, promise]]));\n } else {\n ongoingRequestsOfContext.set(moduleURL, promise);\n }\n\n promise\n .then(() => {\n const updatedResolvedRequestsOfContext = resolvedRequests.get(context);\n\n if (updatedResolvedRequestsOfContext === undefined) {\n resolvedRequests.set(context, new Set([moduleURL]));\n } else {\n updatedResolvedRequestsOfContext.add(moduleURL);\n }\n })\n .finally(() => {\n const updatedOngoingRequestsOfContext = ongoingRequests.get(context);\n\n if (updatedOngoingRequestsOfContext !== undefined) {\n updatedOngoingRequestsOfContext.delete(moduleURL);\n }\n });\n\n return promise;\n };\n};\n","export const ACTIVE_AUDIO_NODE_STORE = new WeakSet();\nexport const AUDIO_NODE_CONNECTIONS_STORE = new WeakMap();\nexport const AUDIO_NODE_STORE = new WeakMap();\nexport const AUDIO_PARAM_CONNECTIONS_STORE = new WeakMap();\nexport const AUDIO_PARAM_STORE = new WeakMap();\nexport const CONTEXT_STORE = new WeakMap();\nexport const EVENT_LISTENERS = new WeakMap();\nexport const CYCLE_COUNTERS = new WeakMap();\n// This clunky name is borrowed from the spec. :-)\nexport const NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS = new WeakMap();\nexport const NODE_TO_PROCESSOR_MAPS = new WeakMap();\n//# sourceMappingURL=globals.js.map","import { IAudioNode, IAudioWorkletProcessor, IAudioWorkletProcessorConstructor } from './interfaces';\nimport {\n TAudioNodeConnectionsStore,\n TAudioNodeStore,\n TAudioParamConnectionsStore,\n TAudioParamStore,\n TContext,\n TContextStore,\n TCycleCounters,\n TInternalStateEventListener,\n TNativeAudioWorkletNode,\n TNativeContext\n} from './types';\n\nexport const ACTIVE_AUDIO_NODE_STORE: WeakSet> = new WeakSet();\n\nexport const AUDIO_NODE_CONNECTIONS_STORE: TAudioNodeConnectionsStore = new WeakMap();\n\nexport const AUDIO_NODE_STORE: TAudioNodeStore = new WeakMap();\n\nexport const AUDIO_PARAM_CONNECTIONS_STORE: TAudioParamConnectionsStore = new WeakMap();\n\nexport const AUDIO_PARAM_STORE: TAudioParamStore = new WeakMap();\n\nexport const CONTEXT_STORE: TContextStore = new WeakMap();\n\nexport const EVENT_LISTENERS: WeakMap, Set> = new WeakMap();\n\nexport const CYCLE_COUNTERS: TCycleCounters = new WeakMap();\n\n// This clunky name is borrowed from the spec. :-)\nexport const NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS: WeakMap<\n TNativeContext,\n Map\n> = new WeakMap();\n\nexport const NODE_TO_PROCESSOR_MAPS: WeakMap<\n TNativeContext,\n WeakMap>\n> = new WeakMap();\n","const handler = {\n construct() {\n return handler;\n }\n};\nexport const isConstructible = (constructible) => {\n try {\n const proxy = new Proxy(constructible, handler);\n new proxy(); // tslint:disable-line:no-unused-expression\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=is-constructible.js.map","import { TConstructor } from '../types';\n\nconst handler = {\n construct(): any {\n return handler;\n }\n};\n\nexport const isConstructible = (constructible: TConstructor): boolean => {\n try {\n const proxy = new Proxy(constructible, handler);\n\n new proxy(); // tslint:disable-line:no-unused-expression\n } catch {\n return false;\n }\n\n return true;\n};\n","/*\n * This massive regex tries to cover all the following cases.\n *\n * import './path';\n * import defaultImport from './path';\n * import { namedImport } from './path';\n * import { namedImport as renamendImport } from './path';\n * import * as namespaceImport from './path';\n * import defaultImport, { namedImport } from './path';\n * import defaultImport, { namedImport as renamendImport } from './path';\n * import defaultImport, * as namespaceImport from './path';\n */\nconst IMPORT_STATEMENT_REGEX = /^import(?:(?:[\\s]+[\\w]+|(?:[\\s]+[\\w]+[\\s]*,)?[\\s]*\\{[\\s]*[\\w]+(?:[\\s]+as[\\s]+[\\w]+)?(?:[\\s]*,[\\s]*[\\w]+(?:[\\s]+as[\\s]+[\\w]+)?)*[\\s]*}|(?:[\\s]+[\\w]+[\\s]*,)?[\\s]*\\*[\\s]+as[\\s]+[\\w]+)[\\s]+from)?(?:[\\s]*)(\"([^\"\\\\]|\\\\.)+\"|'([^'\\\\]|\\\\.)+')(?:[\\s]*);?/; // tslint:disable-line:max-line-length\nexport const splitImportStatements = (source, url) => {\n const importStatements = [];\n let sourceWithoutImportStatements = source.replace(/^[\\s]+/, '');\n let result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX);\n while (result !== null) {\n const unresolvedUrl = result[1].slice(1, -1);\n const importStatementWithResolvedUrl = result[0]\n .replace(/([\\s]+)?;?$/, '')\n .replace(unresolvedUrl, new URL(unresolvedUrl, url).toString());\n importStatements.push(importStatementWithResolvedUrl);\n sourceWithoutImportStatements = sourceWithoutImportStatements.slice(result[0].length).replace(/^[\\s]+/, '');\n result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX);\n }\n return [importStatements.join(';'), sourceWithoutImportStatements];\n};\n//# sourceMappingURL=split-import-statements.js.map","/*\n * This massive regex tries to cover all the following cases.\n *\n * import './path';\n * import defaultImport from './path';\n * import { namedImport } from './path';\n * import { namedImport as renamendImport } from './path';\n * import * as namespaceImport from './path';\n * import defaultImport, { namedImport } from './path';\n * import defaultImport, { namedImport as renamendImport } from './path';\n * import defaultImport, * as namespaceImport from './path';\n */\nconst IMPORT_STATEMENT_REGEX = /^import(?:(?:[\\s]+[\\w]+|(?:[\\s]+[\\w]+[\\s]*,)?[\\s]*\\{[\\s]*[\\w]+(?:[\\s]+as[\\s]+[\\w]+)?(?:[\\s]*,[\\s]*[\\w]+(?:[\\s]+as[\\s]+[\\w]+)?)*[\\s]*}|(?:[\\s]+[\\w]+[\\s]*,)?[\\s]*\\*[\\s]+as[\\s]+[\\w]+)[\\s]+from)?(?:[\\s]*)(\"([^\"\\\\]|\\\\.)+\"|'([^'\\\\]|\\\\.)+')(?:[\\s]*);?/; // tslint:disable-line:max-line-length\n\nexport const splitImportStatements = (source: string, url: string): [string, string] => {\n const importStatements = [];\n\n let sourceWithoutImportStatements = source.replace(/^[\\s]+/, '');\n let result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX);\n\n while (result !== null) {\n const unresolvedUrl = result[1].slice(1, -1);\n\n const importStatementWithResolvedUrl = result[0]\n .replace(/([\\s]+)?;?$/, '')\n .replace(unresolvedUrl, new URL(unresolvedUrl, url).toString());\n importStatements.push(importStatementWithResolvedUrl);\n\n sourceWithoutImportStatements = sourceWithoutImportStatements.slice(result[0].length).replace(/^[\\s]+/, '');\n result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX);\n }\n\n return [importStatements.join(';'), sourceWithoutImportStatements];\n};\n","import { deletePassiveInputConnectionToAudioNode } from '../helpers/delete-passive-input-connection-to-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassiveWhenNecessary } from '../helpers/set-internal-state-to-passive-when-necessary';\nexport const createAddConnectionToAudioNode = (addActiveInputConnectionToAudioNode, addPassiveInputConnectionToAudioNode, connectNativeAudioNodeToNativeAudioNode, deleteActiveInputConnectionToAudioNode, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getAudioNodeTailTime, getEventListenersOfAudioNode, getNativeAudioNode, insertElementInSet, isActiveAudioNode, isPartOfACycle, isPassiveAudioNode) => {\n const tailTimeTimeoutIds = new WeakMap();\n return (source, destination, output, input, isOffline) => {\n const { activeInputs, passiveInputs } = getAudioNodeConnections(destination);\n const { outputs } = getAudioNodeConnections(source);\n const eventListeners = getEventListenersOfAudioNode(source);\n const eventListener = (isActive) => {\n const nativeDestinationAudioNode = getNativeAudioNode(destination);\n const nativeSourceAudioNode = getNativeAudioNode(source);\n if (isActive) {\n const partialConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input);\n addActiveInputConnectionToAudioNode(activeInputs, source, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input);\n }\n if (isPassiveAudioNode(destination)) {\n setInternalStateToActive(destination);\n }\n }\n else {\n const partialConnection = deleteActiveInputConnectionToAudioNode(activeInputs, source, output, input);\n addPassiveInputConnectionToAudioNode(passiveInputs, input, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input);\n }\n const tailTime = getAudioNodeTailTime(destination);\n if (tailTime === 0) {\n if (isActiveAudioNode(destination)) {\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n }\n else {\n const tailTimeTimeoutId = tailTimeTimeoutIds.get(destination);\n if (tailTimeTimeoutId !== undefined) {\n clearTimeout(tailTimeTimeoutId);\n }\n tailTimeTimeoutIds.set(destination, setTimeout(() => {\n if (isActiveAudioNode(destination)) {\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n }, tailTime * 1000));\n }\n }\n };\n if (insertElementInSet(outputs, [destination, output, input], (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output && outputConnection[2] === input, true)) {\n eventListeners.add(eventListener);\n if (isActiveAudioNode(source)) {\n addActiveInputConnectionToAudioNode(activeInputs, source, [output, input, eventListener], true);\n }\n else {\n addPassiveInputConnectionToAudioNode(passiveInputs, input, [source, output, eventListener], true);\n }\n return true;\n }\n return false;\n };\n};\n//# sourceMappingURL=add-connection-to-audio-node.js.map","import { deletePassiveInputConnectionToAudioNode } from '../helpers/delete-passive-input-connection-to-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassiveWhenNecessary } from '../helpers/set-internal-state-to-passive-when-necessary';\nimport { IAudioNode } from '../interfaces';\nimport { TAddConnectionToAudioNodeFactory, TContext, TInternalStateEventListener } from '../types';\n\nexport const createAddConnectionToAudioNode: TAddConnectionToAudioNodeFactory = (\n addActiveInputConnectionToAudioNode,\n addPassiveInputConnectionToAudioNode,\n connectNativeAudioNodeToNativeAudioNode,\n deleteActiveInputConnectionToAudioNode,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getAudioNodeConnections,\n getAudioNodeTailTime,\n getEventListenersOfAudioNode,\n getNativeAudioNode,\n insertElementInSet,\n isActiveAudioNode,\n isPartOfACycle,\n isPassiveAudioNode\n) => {\n const tailTimeTimeoutIds = new WeakMap, number>();\n\n return (source, destination, output, input, isOffline) => {\n const { activeInputs, passiveInputs } = getAudioNodeConnections(destination);\n const { outputs } = getAudioNodeConnections(source);\n const eventListeners = getEventListenersOfAudioNode(source);\n\n const eventListener: TInternalStateEventListener = (isActive) => {\n const nativeDestinationAudioNode = getNativeAudioNode(destination);\n const nativeSourceAudioNode = getNativeAudioNode(source);\n\n if (isActive) {\n const partialConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input);\n\n addActiveInputConnectionToAudioNode(activeInputs, source, partialConnection, false);\n\n if (!isOffline && !isPartOfACycle(source)) {\n connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input);\n }\n\n if (isPassiveAudioNode(destination)) {\n setInternalStateToActive(destination);\n }\n } else {\n const partialConnection = deleteActiveInputConnectionToAudioNode(activeInputs, source, output, input);\n\n addPassiveInputConnectionToAudioNode(passiveInputs, input, partialConnection, false);\n\n if (!isOffline && !isPartOfACycle(source)) {\n disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input);\n }\n\n const tailTime = getAudioNodeTailTime(destination);\n\n if (tailTime === 0) {\n if (isActiveAudioNode(destination)) {\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n } else {\n const tailTimeTimeoutId = tailTimeTimeoutIds.get(destination);\n\n if (tailTimeTimeoutId !== undefined) {\n clearTimeout(tailTimeTimeoutId);\n }\n\n tailTimeTimeoutIds.set(\n destination,\n setTimeout(() => {\n if (isActiveAudioNode(destination)) {\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n }, tailTime * 1000)\n );\n }\n }\n };\n\n if (\n insertElementInSet(\n outputs,\n [destination, output, input],\n (outputConnection) =>\n outputConnection[0] === destination && outputConnection[1] === output && outputConnection[2] === input,\n true\n )\n ) {\n eventListeners.add(eventListener);\n\n if (isActiveAudioNode(source)) {\n addActiveInputConnectionToAudioNode(activeInputs, source, [output, input, eventListener], true);\n } else {\n addPassiveInputConnectionToAudioNode(passiveInputs, input, [source, output, eventListener], true);\n }\n\n return true;\n }\n\n return false;\n };\n};\n","import { getValueForKey } from './get-value-for-key';\nimport { pickElementFromSet } from './pick-element-from-set';\nexport const deletePassiveInputConnectionToAudioNode = (passiveInputs, source, output, input) => {\n const passiveInputConnections = getValueForKey(passiveInputs, source);\n const matchingConnection = pickElementFromSet(passiveInputConnections, (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input);\n if (passiveInputConnections.size === 0) {\n passiveInputs.delete(source);\n }\n return matchingConnection;\n};\n//# sourceMappingURL=delete-passive-input-connection-to-audio-node.js.map","import { IAudioNode } from '../interfaces';\nimport { TContext, TPassiveAudioNodeInputConnection } from '../types';\nimport { getValueForKey } from './get-value-for-key';\nimport { pickElementFromSet } from './pick-element-from-set';\n\nexport const deletePassiveInputConnectionToAudioNode = (\n passiveInputs: WeakMap, Set>,\n source: IAudioNode,\n output: number,\n input: number\n) => {\n const passiveInputConnections = getValueForKey(passiveInputs, source);\n const matchingConnection = pickElementFromSet(\n passiveInputConnections,\n (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input\n );\n\n if (passiveInputConnections.size === 0) {\n passiveInputs.delete(source);\n }\n\n return matchingConnection;\n};\n","export const getValueForKey = (map, key) => {\n const value = map.get(key);\n if (value === undefined) {\n throw new Error('A value with the given key could not be found.');\n }\n return value;\n};\n//# sourceMappingURL=get-value-for-key.js.map","import { TGetValueForKeyFunction } from '../types';\n\nexport const getValueForKey: TGetValueForKeyFunction = (map, key) => {\n const value = map.get(key);\n\n if (value === undefined) {\n throw new Error('A value with the given key could not be found.');\n }\n\n return value;\n};\n","export const pickElementFromSet = (set, predicate) => {\n const matchingElements = Array.from(set).filter(predicate);\n if (matchingElements.length > 1) {\n throw Error('More than one element was found.');\n }\n if (matchingElements.length === 0) {\n throw Error('No element was found.');\n }\n const [matchingElement] = matchingElements;\n set.delete(matchingElement);\n return matchingElement;\n};\n//# sourceMappingURL=pick-element-from-set.js.map","import { TPickElementFromSetFunction } from '../types';\n\nexport const pickElementFromSet: TPickElementFromSetFunction = (set, predicate) => {\n const matchingElements = Array.from(set).filter(predicate);\n\n if (matchingElements.length > 1) {\n throw Error('More than one element was found.');\n }\n\n if (matchingElements.length === 0) {\n throw Error('No element was found.');\n }\n\n const [matchingElement] = matchingElements;\n\n set.delete(matchingElement);\n\n return matchingElement;\n};\n","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\nexport const setInternalStateToActive = (audioNode) => {\n if (ACTIVE_AUDIO_NODE_STORE.has(audioNode)) {\n throw new Error('The AudioNode is already stored.');\n }\n ACTIVE_AUDIO_NODE_STORE.add(audioNode);\n getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(true));\n};\n//# sourceMappingURL=set-internal-state-to-active.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { IAudioNode } from '../interfaces';\nimport { TContext } from '../types';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\n\nexport const setInternalStateToActive = (audioNode: IAudioNode) => {\n if (ACTIVE_AUDIO_NODE_STORE.has(audioNode)) {\n throw new Error('The AudioNode is already stored.');\n }\n\n ACTIVE_AUDIO_NODE_STORE.add(audioNode);\n\n getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(true));\n};\n","import { EVENT_LISTENERS } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getEventListenersOfAudioNode = (audioNode) => {\n return getValueForKey(EVENT_LISTENERS, audioNode);\n};\n//# sourceMappingURL=get-event-listeners-of-audio-node.js.map","import { EVENT_LISTENERS } from '../globals';\nimport { TGetEventListenersOfAudioNodeFunction } from '../types';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getEventListenersOfAudioNode: TGetEventListenersOfAudioNodeFunction = (audioNode) => {\n return getValueForKey(EVENT_LISTENERS, audioNode);\n};\n","import { isAudioWorkletNode } from '../guards/audio-worklet-node';\nimport { setInternalStateToPassive } from './set-internal-state-to-passive';\n// Set the internalState of the audioNode to 'passive' if it is not an AudioWorkletNode and if it has no 'active' input connections.\nexport const setInternalStateToPassiveWhenNecessary = (audioNode, activeInputs) => {\n if (!isAudioWorkletNode(audioNode) && activeInputs.every((connections) => connections.size === 0)) {\n setInternalStateToPassive(audioNode);\n }\n};\n//# sourceMappingURL=set-internal-state-to-passive-when-necessary.js.map","import { isAudioWorkletNode } from '../guards/audio-worklet-node';\nimport { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection, TContext } from '../types';\nimport { setInternalStateToPassive } from './set-internal-state-to-passive';\n\n// Set the internalState of the audioNode to 'passive' if it is not an AudioWorkletNode and if it has no 'active' input connections.\nexport const setInternalStateToPassiveWhenNecessary = (\n audioNode: IAudioNode,\n activeInputs: Set>[]\n) => {\n if (!isAudioWorkletNode(audioNode) && activeInputs.every((connections) => connections.size === 0)) {\n setInternalStateToPassive(audioNode);\n }\n};\n","export const isAudioWorkletNode = (audioNode) => {\n return 'port' in audioNode;\n};\n//# sourceMappingURL=audio-worklet-node.js.map","import { IAudioNode, IAudioWorkletNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isAudioWorkletNode = (audioNode: IAudioNode): audioNode is IAudioWorkletNode => {\n return 'port' in audioNode;\n};\n","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\nexport const setInternalStateToPassive = (audioNode) => {\n if (!ACTIVE_AUDIO_NODE_STORE.has(audioNode)) {\n throw new Error('The AudioNode is not stored.');\n }\n ACTIVE_AUDIO_NODE_STORE.delete(audioNode);\n getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(false));\n};\n//# sourceMappingURL=set-internal-state-to-passive.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { IAudioNode } from '../interfaces';\nimport { TContext } from '../types';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\n\nexport const setInternalStateToPassive = (audioNode: IAudioNode) => {\n if (!ACTIVE_AUDIO_NODE_STORE.has(audioNode)) {\n throw new Error('The AudioNode is not stored.');\n }\n\n ACTIVE_AUDIO_NODE_STORE.delete(audioNode);\n\n getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(false));\n};\n","export const createAddPassiveInputConnectionToAudioNode = (insertElementInSet) => {\n return (passiveInputs, input, [source, output, eventListener], ignoreDuplicates) => {\n const passiveInputConnections = passiveInputs.get(source);\n if (passiveInputConnections === undefined) {\n passiveInputs.set(source, new Set([[output, input, eventListener]]));\n }\n else {\n insertElementInSet(passiveInputConnections, [output, input, eventListener], (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input, ignoreDuplicates);\n }\n };\n};\n//# sourceMappingURL=add-passive-input-connection-to-audio-node.js.map","import { TAddPassiveInputConnectionToAudioNodeFactory } from '../types';\n\nexport const createAddPassiveInputConnectionToAudioNode: TAddPassiveInputConnectionToAudioNodeFactory = (insertElementInSet) => {\n return (passiveInputs, input, [source, output, eventListener], ignoreDuplicates) => {\n const passiveInputConnections = passiveInputs.get(source);\n\n if (passiveInputConnections === undefined) {\n passiveInputs.set(source, new Set([[output, input, eventListener]]));\n } else {\n insertElementInSet(\n passiveInputConnections,\n [output, input, eventListener],\n (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input,\n ignoreDuplicates\n );\n }\n };\n};\n","export const createAddSilentConnection = (createNativeGainNode) => {\n return (nativeContext, nativeAudioScheduledSourceNode) => {\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n nativeAudioScheduledSourceNode.connect(nativeGainNode).connect(nativeContext.destination);\n const disconnect = () => {\n nativeAudioScheduledSourceNode.removeEventListener('ended', disconnect);\n nativeAudioScheduledSourceNode.disconnect(nativeGainNode);\n nativeGainNode.disconnect();\n };\n nativeAudioScheduledSourceNode.addEventListener('ended', disconnect);\n };\n};\n//# sourceMappingURL=add-silent-connection.js.map","import { TAddSilentConnectionFactory } from '../types';\n\nexport const createAddSilentConnection: TAddSilentConnectionFactory = (createNativeGainNode) => {\n return (nativeContext, nativeAudioScheduledSourceNode) => {\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n\n nativeAudioScheduledSourceNode.connect(nativeGainNode).connect(nativeContext.destination);\n\n const disconnect = () => {\n nativeAudioScheduledSourceNode.removeEventListener('ended', disconnect);\n nativeAudioScheduledSourceNode.disconnect(nativeGainNode);\n nativeGainNode.disconnect();\n };\n\n nativeAudioScheduledSourceNode.addEventListener('ended', disconnect);\n };\n};\n","export const createAddUnrenderedAudioWorkletNode = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).add(audioWorkletNode);\n };\n};\n//# sourceMappingURL=add-unrendered-audio-worklet-node.js.map","import { TAddUnrenderedAudioWorkletNodeFactory } from '../types';\n\nexport const createAddUnrenderedAudioWorkletNode: TAddUnrenderedAudioWorkletNodeFactory = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).add(audioWorkletNode);\n };\n};\n","const DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n fftSize: 2048,\n maxDecibels: -30,\n minDecibels: -100,\n smoothingTimeConstant: 0.8\n};\nexport const createAnalyserNodeConstructor = (audionNodeConstructor, createAnalyserNodeRenderer, createIndexSizeError, createNativeAnalyserNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class AnalyserNode extends audionNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeAnalyserNode = createNativeAnalyserNode(nativeContext, mergedOptions);\n const analyserNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createAnalyserNodeRenderer() : null));\n super(context, false, nativeAnalyserNode, analyserNodeRenderer);\n this._nativeAnalyserNode = nativeAnalyserNode;\n }\n get fftSize() {\n return this._nativeAnalyserNode.fftSize;\n }\n set fftSize(value) {\n this._nativeAnalyserNode.fftSize = value;\n }\n get frequencyBinCount() {\n return this._nativeAnalyserNode.frequencyBinCount;\n }\n get maxDecibels() {\n return this._nativeAnalyserNode.maxDecibels;\n }\n set maxDecibels(value) {\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n const maxDecibels = this._nativeAnalyserNode.maxDecibels;\n this._nativeAnalyserNode.maxDecibels = value;\n if (!(value > this._nativeAnalyserNode.minDecibels)) {\n this._nativeAnalyserNode.maxDecibels = maxDecibels;\n throw createIndexSizeError();\n }\n }\n get minDecibels() {\n return this._nativeAnalyserNode.minDecibels;\n }\n set minDecibels(value) {\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n const minDecibels = this._nativeAnalyserNode.minDecibels;\n this._nativeAnalyserNode.minDecibels = value;\n if (!(this._nativeAnalyserNode.maxDecibels > value)) {\n this._nativeAnalyserNode.minDecibels = minDecibels;\n throw createIndexSizeError();\n }\n }\n get smoothingTimeConstant() {\n return this._nativeAnalyserNode.smoothingTimeConstant;\n }\n set smoothingTimeConstant(value) {\n this._nativeAnalyserNode.smoothingTimeConstant = value;\n }\n getByteFrequencyData(array) {\n this._nativeAnalyserNode.getByteFrequencyData(array);\n }\n getByteTimeDomainData(array) {\n this._nativeAnalyserNode.getByteTimeDomainData(array);\n }\n getFloatFrequencyData(array) {\n this._nativeAnalyserNode.getFloatFrequencyData(array);\n }\n getFloatTimeDomainData(array) {\n this._nativeAnalyserNode.getFloatTimeDomainData(array);\n }\n };\n};\n//# sourceMappingURL=analyser-node-constructor.js.map","import { IAnalyserNode, IAnalyserOptions } from '../interfaces';\nimport { TAnalyserNodeConstructorFactory, TAudioNodeRenderer, TContext, TNativeAnalyserNode } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n fftSize: 2048,\n maxDecibels: -30,\n minDecibels: -100,\n smoothingTimeConstant: 0.8\n} as const;\n\nexport const createAnalyserNodeConstructor: TAnalyserNodeConstructorFactory = (\n audionNodeConstructor,\n createAnalyserNodeRenderer,\n createIndexSizeError,\n createNativeAnalyserNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class AnalyserNode extends audionNodeConstructor implements IAnalyserNode {\n private _nativeAnalyserNode: TNativeAnalyserNode;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeAnalyserNode = createNativeAnalyserNode(nativeContext, mergedOptions);\n const analyserNodeRenderer = >(\n (isNativeOfflineAudioContext(nativeContext) ? createAnalyserNodeRenderer() : null)\n );\n\n super(context, false, nativeAnalyserNode, analyserNodeRenderer);\n\n this._nativeAnalyserNode = nativeAnalyserNode;\n }\n\n get fftSize(): number {\n return this._nativeAnalyserNode.fftSize;\n }\n\n set fftSize(value) {\n this._nativeAnalyserNode.fftSize = value;\n }\n\n get frequencyBinCount(): number {\n return this._nativeAnalyserNode.frequencyBinCount;\n }\n\n get maxDecibels(): number {\n return this._nativeAnalyserNode.maxDecibels;\n }\n\n set maxDecibels(value) {\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n const maxDecibels = this._nativeAnalyserNode.maxDecibels;\n\n this._nativeAnalyserNode.maxDecibels = value;\n\n if (!(value > this._nativeAnalyserNode.minDecibels)) {\n this._nativeAnalyserNode.maxDecibels = maxDecibels;\n\n throw createIndexSizeError();\n }\n }\n\n get minDecibels(): number {\n return this._nativeAnalyserNode.minDecibels;\n }\n\n set minDecibels(value) {\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n const minDecibels = this._nativeAnalyserNode.minDecibels;\n\n this._nativeAnalyserNode.minDecibels = value;\n\n if (!(this._nativeAnalyserNode.maxDecibels > value)) {\n this._nativeAnalyserNode.minDecibels = minDecibels;\n\n throw createIndexSizeError();\n }\n }\n\n get smoothingTimeConstant(): number {\n return this._nativeAnalyserNode.smoothingTimeConstant;\n }\n\n set smoothingTimeConstant(value) {\n this._nativeAnalyserNode.smoothingTimeConstant = value;\n }\n\n public getByteFrequencyData(array: Uint8Array): void {\n this._nativeAnalyserNode.getByteFrequencyData(array);\n }\n\n public getByteTimeDomainData(array: Uint8Array): void {\n this._nativeAnalyserNode.getByteTimeDomainData(array);\n }\n\n public getFloatFrequencyData(array: Float32Array): void {\n this._nativeAnalyserNode.getFloatFrequencyData(array);\n }\n\n public getFloatTimeDomainData(array: Float32Array): void {\n this._nativeAnalyserNode.getFloatTimeDomainData(array);\n }\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createAnalyserNodeRendererFactory = (createNativeAnalyserNode, getNativeAudioNode, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeAnalyserNodes = new WeakMap();\n const createAnalyserNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeAnalyserNode = getNativeAudioNode(proxy);\n // If the initially used nativeAnalyserNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAnalyserNodeIsOwnedByContext = isOwnedByContext(nativeAnalyserNode, nativeOfflineAudioContext);\n if (!nativeAnalyserNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAnalyserNode.channelCount,\n channelCountMode: nativeAnalyserNode.channelCountMode,\n channelInterpretation: nativeAnalyserNode.channelInterpretation,\n fftSize: nativeAnalyserNode.fftSize,\n maxDecibels: nativeAnalyserNode.maxDecibels,\n minDecibels: nativeAnalyserNode.minDecibels,\n smoothingTimeConstant: nativeAnalyserNode.smoothingTimeConstant\n };\n nativeAnalyserNode = createNativeAnalyserNode(nativeOfflineAudioContext, options);\n }\n renderedNativeAnalyserNodes.set(nativeOfflineAudioContext, nativeAnalyserNode);\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAnalyserNode);\n return nativeAnalyserNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeAnalyserNode = renderedNativeAnalyserNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAnalyserNode !== undefined) {\n return Promise.resolve(renderedNativeAnalyserNode);\n }\n return createAnalyserNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=analyser-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAnalyserNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TAnalyserNodeRendererFactoryFactory, TNativeAnalyserNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createAnalyserNodeRendererFactory: TAnalyserNodeRendererFactoryFactory = (\n createNativeAnalyserNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeAnalyserNodes = new WeakMap();\n\n const createAnalyserNode = async (proxy: IAnalyserNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeAnalyserNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeAnalyserNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAnalyserNodeIsOwnedByContext = isOwnedByContext(nativeAnalyserNode, nativeOfflineAudioContext);\n\n if (!nativeAnalyserNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAnalyserNode.channelCount,\n channelCountMode: nativeAnalyserNode.channelCountMode,\n channelInterpretation: nativeAnalyserNode.channelInterpretation,\n fftSize: nativeAnalyserNode.fftSize,\n maxDecibels: nativeAnalyserNode.maxDecibels,\n minDecibels: nativeAnalyserNode.minDecibels,\n smoothingTimeConstant: nativeAnalyserNode.smoothingTimeConstant\n };\n\n nativeAnalyserNode = createNativeAnalyserNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeAnalyserNodes.set(nativeOfflineAudioContext, nativeAnalyserNode);\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAnalyserNode);\n\n return nativeAnalyserNode;\n };\n\n return {\n render(proxy: IAnalyserNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeAnalyserNode = renderedNativeAnalyserNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAnalyserNode !== undefined) {\n return Promise.resolve(renderedNativeAnalyserNode);\n }\n\n return createAnalyserNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","export const isOwnedByContext = (nativeAudioNode, nativeContext) => {\n return nativeAudioNode.context === nativeContext;\n};\n//# sourceMappingURL=is-owned-by-context.js.map","import { TNativeAudioNode, TNativeContext } from '../types';\n\nexport const isOwnedByContext = (nativeAudioNode: TNativeAudioNode, nativeContext: TNativeContext): boolean => {\n return nativeAudioNode.context === nativeContext;\n};\n","import { testAudioBufferCopyChannelMethodsOutOfBoundsSupport } from '../helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support';\nimport { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n};\nexport const createAudioBufferConstructor = (audioBufferStore, cacheTestResult, createNotSupportedError, nativeAudioBufferConstructor, nativeOfflineAudioContextConstructor, testNativeAudioBufferConstructorSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => {\n let nativeOfflineAudioContext = null;\n return class AudioBuffer {\n constructor(options) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n if (nativeOfflineAudioContext === null) {\n nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n }\n /*\n * Bug #99: Firefox does not throw a NotSupportedError when the numberOfChannels is zero. But it only does it when using the\n * factory function. But since Firefox also supports the constructor everything should be fine.\n */\n const audioBuffer = nativeAudioBufferConstructor !== null &&\n cacheTestResult(testNativeAudioBufferConstructorSupport, testNativeAudioBufferConstructorSupport)\n ? new nativeAudioBufferConstructor({ length, numberOfChannels, sampleRate })\n : nativeOfflineAudioContext.createBuffer(numberOfChannels, length, sampleRate);\n // Bug #99: Safari does not throw an error when the numberOfChannels is zero.\n if (audioBuffer.numberOfChannels === 0) {\n throw createNotSupportedError();\n }\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n }\n else if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n audioBufferStore.add(audioBuffer);\n /*\n * This does violate all good pratices but it is necessary to allow this AudioBuffer to be used with native\n * (Offline)AudioContexts.\n */\n return audioBuffer;\n }\n static [Symbol.hasInstance](instance) {\n return ((instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === AudioBuffer.prototype) ||\n audioBufferStore.has(instance));\n }\n };\n};\n//# sourceMappingURL=audio-buffer-constructor.js.map","import { testAudioBufferCopyChannelMethodsOutOfBoundsSupport } from '../helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support';\nimport { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nimport { IAudioBuffer, IAudioBufferOptions } from '../interfaces';\nimport { TAudioBufferConstructorFactory, TNativeOfflineAudioContext } from '../types';\n\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n} as const;\n\nexport const createAudioBufferConstructor: TAudioBufferConstructorFactory = (\n audioBufferStore,\n cacheTestResult,\n createNotSupportedError,\n nativeAudioBufferConstructor,\n nativeOfflineAudioContextConstructor,\n testNativeAudioBufferConstructorSupport,\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n) => {\n let nativeOfflineAudioContext: null | TNativeOfflineAudioContext = null;\n\n return class AudioBuffer implements IAudioBuffer {\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public copyFromChannel!: (destination: Float32Array, channelNumber: number, bufferOffset?: number) => void;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public copyToChannel!: (source: Float32Array, channelNumber: number, bufferOffset?: number) => void;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public duration!: number;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public getChannelData!: (channel: number) => Float32Array;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public length!: number;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public numberOfChannels!: number;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public sampleRate!: number;\n\n constructor(options: IAudioBufferOptions) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n\n if (nativeOfflineAudioContext === null) {\n nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n }\n\n /*\n * Bug #99: Firefox does not throw a NotSupportedError when the numberOfChannels is zero. But it only does it when using the\n * factory function. But since Firefox also supports the constructor everything should be fine.\n */\n const audioBuffer =\n nativeAudioBufferConstructor !== null &&\n cacheTestResult(testNativeAudioBufferConstructorSupport, testNativeAudioBufferConstructorSupport)\n ? new nativeAudioBufferConstructor({ length, numberOfChannels, sampleRate })\n : nativeOfflineAudioContext.createBuffer(numberOfChannels, length, sampleRate);\n\n // Bug #99: Safari does not throw an error when the numberOfChannels is zero.\n if (audioBuffer.numberOfChannels === 0) {\n throw createNotSupportedError();\n }\n\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n } else if (\n !cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () =>\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer)\n )\n ) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n\n audioBufferStore.add(audioBuffer);\n\n /*\n * This does violate all good pratices but it is necessary to allow this AudioBuffer to be used with native\n * (Offline)AudioContexts.\n */\n return audioBuffer;\n }\n\n public static [Symbol.hasInstance](instance: unknown): boolean {\n return (\n (instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === AudioBuffer.prototype) ||\n audioBufferStore.has(instance)\n );\n }\n };\n};\n","export const testAudioBufferCopyChannelMethodsOutOfBoundsSupport = (nativeAudioBuffer) => {\n try {\n nativeAudioBuffer.copyToChannel(new Float32Array(1), 0, -1);\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=test-audio-buffer-copy-channel-methods-out-of-bounds-support.js.map","import { TNativeAudioBuffer } from '../types';\n\nexport const testAudioBufferCopyChannelMethodsOutOfBoundsSupport = (nativeAudioBuffer: TNativeAudioBuffer): boolean => {\n try {\n nativeAudioBuffer.copyToChannel(new Float32Array(1), 0, -1);\n } catch {\n return false;\n }\n\n return true;\n};\n","import { createIndexSizeError } from '../factories/index-size-error';\nexport const wrapAudioBufferGetChannelDataMethod = (audioBuffer) => {\n audioBuffer.getChannelData = ((getChannelData) => {\n return (channel) => {\n try {\n return getChannelData.call(audioBuffer, channel);\n }\n catch (err) {\n if (err.code === 12) {\n throw createIndexSizeError();\n }\n throw err;\n }\n };\n })(audioBuffer.getChannelData);\n};\n//# sourceMappingURL=wrap-audio-buffer-get-channel-data-method.js.map","import { createIndexSizeError } from '../factories/index-size-error';\nimport { TNativeAudioBuffer } from '../types';\n\nexport const wrapAudioBufferGetChannelDataMethod = (audioBuffer: TNativeAudioBuffer): void => {\n audioBuffer.getChannelData = ((getChannelData) => {\n return (channel: number) => {\n try {\n return getChannelData.call(audioBuffer, channel);\n } catch (err) {\n if (err.code === 12) {\n throw createIndexSizeError();\n }\n\n throw err;\n }\n };\n })(audioBuffer.getChannelData);\n};\n","export const createIndexSizeError = () => new DOMException('', 'IndexSizeError');\n//# sourceMappingURL=index-size-error.js.map","import { TIndexSizeErrorFactory } from '../types';\n\nexport const createIndexSizeError: TIndexSizeErrorFactory = () => new DOMException('', 'IndexSizeError');\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nconst DEFAULT_OPTIONS = {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n // Bug #149: Safari does not yet support the detune AudioParam.\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n};\nexport const createAudioBufferSourceNodeConstructor = (audioNodeConstructor, createAudioBufferSourceNodeRenderer, createAudioParam, createInvalidStateError, createNativeAudioBufferSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => {\n return class AudioBufferSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const audioBufferSourceNodeRenderer = ((isOffline ? createAudioBufferSourceNodeRenderer() : null));\n super(context, false, nativeAudioBufferSourceNode, audioBufferSourceNodeRenderer);\n this._audioBufferSourceNodeRenderer = audioBufferSourceNodeRenderer;\n this._isBufferNullified = false;\n this._isBufferSet = mergedOptions.buffer !== null;\n this._nativeAudioBufferSourceNode = nativeAudioBufferSourceNode;\n this._onended = null;\n // Bug #73: Safari does not export the correct values for maxValue and minValue.\n this._playbackRate = createAudioParam(this, isOffline, nativeAudioBufferSourceNode.playbackRate, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n }\n get buffer() {\n if (this._isBufferNullified) {\n return null;\n }\n return this._nativeAudioBufferSourceNode.buffer;\n }\n set buffer(value) {\n this._nativeAudioBufferSourceNode.buffer = value;\n // Bug #72: Only Chrome, Edge & Opera do not allow to reassign the buffer yet.\n if (value !== null) {\n if (this._isBufferSet) {\n throw createInvalidStateError();\n }\n this._isBufferSet = true;\n }\n }\n get loop() {\n return this._nativeAudioBufferSourceNode.loop;\n }\n set loop(value) {\n this._nativeAudioBufferSourceNode.loop = value;\n }\n get loopEnd() {\n return this._nativeAudioBufferSourceNode.loopEnd;\n }\n set loopEnd(value) {\n this._nativeAudioBufferSourceNode.loopEnd = value;\n }\n get loopStart() {\n return this._nativeAudioBufferSourceNode.loopStart;\n }\n set loopStart(value) {\n this._nativeAudioBufferSourceNode.loopStart = value;\n }\n get onended() {\n return this._onended;\n }\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeAudioBufferSourceNode.onended = wrappedListener;\n const nativeOnEnded = this._nativeAudioBufferSourceNode.onended;\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n get playbackRate() {\n return this._playbackRate;\n }\n start(when = 0, offset = 0, duration) {\n this._nativeAudioBufferSourceNode.start(when, offset, duration);\n if (this._audioBufferSourceNodeRenderer !== null) {\n this._audioBufferSourceNodeRenderer.start = duration === undefined ? [when, offset] : [when, offset, duration];\n }\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n const resetInternalStateToPassive = () => {\n this._nativeAudioBufferSourceNode.removeEventListener('ended', resetInternalStateToPassive);\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n this._nativeAudioBufferSourceNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n stop(when = 0) {\n this._nativeAudioBufferSourceNode.stop(when);\n if (this._audioBufferSourceNodeRenderer !== null) {\n this._audioBufferSourceNodeRenderer.stop = when;\n }\n }\n };\n};\n//# sourceMappingURL=audio-buffer-source-node-constructor.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nimport { IAudioBufferSourceNode, IAudioBufferSourceOptions, IAudioParam, IAudioScheduledSourceNodeEventMap } from '../interfaces';\nimport {\n TAnyAudioBuffer,\n TAudioBufferSourceNodeConstructorFactory,\n TAudioBufferSourceNodeRenderer,\n TContext,\n TEventHandler,\n TNativeAudioBufferSourceNode\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n // Bug #149: Safari does not yet support the detune AudioParam.\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n} as const;\n\nexport const createAudioBufferSourceNodeConstructor: TAudioBufferSourceNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioBufferSourceNodeRenderer,\n createAudioParam,\n createInvalidStateError,\n createNativeAudioBufferSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n) => {\n return class AudioBufferSourceNode\n extends audioNodeConstructor\n implements IAudioBufferSourceNode\n {\n private _audioBufferSourceNodeRenderer: TAudioBufferSourceNodeRenderer;\n\n private _isBufferNullified: boolean;\n\n private _isBufferSet: boolean;\n\n private _nativeAudioBufferSourceNode: TNativeAudioBufferSourceNode;\n\n private _onended: null | TEventHandler;\n\n private _playbackRate: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const audioBufferSourceNodeRenderer = >(\n (isOffline ? createAudioBufferSourceNodeRenderer() : null)\n );\n\n super(context, false, nativeAudioBufferSourceNode, audioBufferSourceNodeRenderer);\n\n this._audioBufferSourceNodeRenderer = audioBufferSourceNodeRenderer;\n this._isBufferNullified = false;\n this._isBufferSet = mergedOptions.buffer !== null;\n this._nativeAudioBufferSourceNode = nativeAudioBufferSourceNode;\n this._onended = null;\n // Bug #73: Safari does not export the correct values for maxValue and minValue.\n this._playbackRate = createAudioParam(\n this,\n isOffline,\n nativeAudioBufferSourceNode.playbackRate,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n }\n\n get buffer(): null | TAnyAudioBuffer {\n if (this._isBufferNullified) {\n return null;\n }\n\n return this._nativeAudioBufferSourceNode.buffer;\n }\n\n set buffer(value) {\n this._nativeAudioBufferSourceNode.buffer = value;\n\n // Bug #72: Only Chrome, Edge & Opera do not allow to reassign the buffer yet.\n if (value !== null) {\n if (this._isBufferSet) {\n throw createInvalidStateError();\n }\n\n this._isBufferSet = true;\n }\n }\n\n get loop(): boolean {\n return this._nativeAudioBufferSourceNode.loop;\n }\n\n set loop(value) {\n this._nativeAudioBufferSourceNode.loop = value;\n }\n\n get loopEnd(): number {\n return this._nativeAudioBufferSourceNode.loopEnd;\n }\n\n set loopEnd(value) {\n this._nativeAudioBufferSourceNode.loopEnd = value;\n }\n\n get loopStart(): number {\n return this._nativeAudioBufferSourceNode.loopStart;\n }\n\n set loopStart(value) {\n this._nativeAudioBufferSourceNode.loopStart = value;\n }\n\n get onended(): null | TEventHandler {\n return this._onended;\n }\n\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n\n this._nativeAudioBufferSourceNode.onended = wrappedListener;\n\n const nativeOnEnded = this._nativeAudioBufferSourceNode.onended;\n\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n\n get playbackRate(): IAudioParam {\n return this._playbackRate;\n }\n\n public start(when = 0, offset = 0, duration?: number): void {\n this._nativeAudioBufferSourceNode.start(when, offset, duration);\n\n if (this._audioBufferSourceNodeRenderer !== null) {\n this._audioBufferSourceNodeRenderer.start = duration === undefined ? [when, offset] : [when, offset, duration];\n }\n\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n\n const resetInternalStateToPassive = () => {\n this._nativeAudioBufferSourceNode.removeEventListener('ended', resetInternalStateToPassive);\n\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n\n this._nativeAudioBufferSourceNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n\n public stop(when = 0): void {\n this._nativeAudioBufferSourceNode.stop(when);\n\n if (this._audioBufferSourceNodeRenderer !== null) {\n this._audioBufferSourceNodeRenderer.stop = when;\n }\n }\n };\n};\n","export const MOST_NEGATIVE_SINGLE_FLOAT = -3.4028234663852886e38;\nexport const MOST_POSITIVE_SINGLE_FLOAT = -MOST_NEGATIVE_SINGLE_FLOAT;\n//# sourceMappingURL=constants.js.map","export const MOST_NEGATIVE_SINGLE_FLOAT = -3.4028234663852886e38;\n\nexport const MOST_POSITIVE_SINGLE_FLOAT = -MOST_NEGATIVE_SINGLE_FLOAT;\n","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nexport const isActiveAudioNode = (audioNode) => ACTIVE_AUDIO_NODE_STORE.has(audioNode);\n//# sourceMappingURL=is-active-audio-node.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { TIsActiveAudioNodeFunction } from '../types';\n\nexport const isActiveAudioNode: TIsActiveAudioNodeFunction = (audioNode) => ACTIVE_AUDIO_NODE_STORE.has(audioNode);\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createAudioBufferSourceNodeRendererFactory = (connectAudioParam, createNativeAudioBufferSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeAudioBufferSourceNodes = new WeakMap();\n let start = null;\n let stop = null;\n const createAudioBufferSourceNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeAudioBufferSourceNode = getNativeAudioNode(proxy);\n /*\n * If the initially used nativeAudioBufferSourceNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeAudioBufferSourceNodeIsOwnedByContext = isOwnedByContext(nativeAudioBufferSourceNode, nativeOfflineAudioContext);\n if (!nativeAudioBufferSourceNodeIsOwnedByContext) {\n const options = {\n buffer: nativeAudioBufferSourceNode.buffer,\n channelCount: nativeAudioBufferSourceNode.channelCount,\n channelCountMode: nativeAudioBufferSourceNode.channelCountMode,\n channelInterpretation: nativeAudioBufferSourceNode.channelInterpretation,\n // Bug #149: Safari does not yet support the detune AudioParam.\n loop: nativeAudioBufferSourceNode.loop,\n loopEnd: nativeAudioBufferSourceNode.loopEnd,\n loopStart: nativeAudioBufferSourceNode.loopStart,\n playbackRate: nativeAudioBufferSourceNode.playbackRate.value\n };\n nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, options);\n if (start !== null) {\n nativeAudioBufferSourceNode.start(...start);\n }\n if (stop !== null) {\n nativeAudioBufferSourceNode.stop(stop);\n }\n }\n renderedNativeAudioBufferSourceNodes.set(nativeOfflineAudioContext, nativeAudioBufferSourceNode);\n if (!nativeAudioBufferSourceNodeIsOwnedByContext) {\n // Bug #149: Safari does not yet support the detune AudioParam.\n await renderAutomation(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate);\n }\n else {\n // Bug #149: Safari does not yet support the detune AudioParam.\n await connectAudioParam(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioBufferSourceNode);\n return nativeAudioBufferSourceNode;\n };\n return {\n set start(value) {\n start = value;\n },\n set stop(value) {\n stop = value;\n },\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeAudioBufferSourceNode = renderedNativeAudioBufferSourceNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioBufferSourceNode !== undefined) {\n return Promise.resolve(renderedNativeAudioBufferSourceNode);\n }\n return createAudioBufferSourceNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=audio-buffer-source-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioBufferSourceNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TAudioBufferSourceNodeRendererFactoryFactory, TNativeAudioBufferSourceNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createAudioBufferSourceNodeRendererFactory: TAudioBufferSourceNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeAudioBufferSourceNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeAudioBufferSourceNodes = new WeakMap();\n\n let start: null | [number, number] | [number, number, number] = null;\n let stop: null | number = null;\n\n const createAudioBufferSourceNode = async (\n proxy: IAudioBufferSourceNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ) => {\n let nativeAudioBufferSourceNode = getNativeAudioNode(proxy);\n\n /*\n * If the initially used nativeAudioBufferSourceNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeAudioBufferSourceNodeIsOwnedByContext = isOwnedByContext(nativeAudioBufferSourceNode, nativeOfflineAudioContext);\n\n if (!nativeAudioBufferSourceNodeIsOwnedByContext) {\n const options = {\n buffer: nativeAudioBufferSourceNode.buffer,\n channelCount: nativeAudioBufferSourceNode.channelCount,\n channelCountMode: nativeAudioBufferSourceNode.channelCountMode,\n channelInterpretation: nativeAudioBufferSourceNode.channelInterpretation,\n // Bug #149: Safari does not yet support the detune AudioParam.\n loop: nativeAudioBufferSourceNode.loop,\n loopEnd: nativeAudioBufferSourceNode.loopEnd,\n loopStart: nativeAudioBufferSourceNode.loopStart,\n playbackRate: nativeAudioBufferSourceNode.playbackRate.value\n };\n\n nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, options);\n\n if (start !== null) {\n nativeAudioBufferSourceNode.start(...start);\n }\n\n if (stop !== null) {\n nativeAudioBufferSourceNode.stop(stop);\n }\n }\n\n renderedNativeAudioBufferSourceNodes.set(nativeOfflineAudioContext, nativeAudioBufferSourceNode);\n\n if (!nativeAudioBufferSourceNodeIsOwnedByContext) {\n // Bug #149: Safari does not yet support the detune AudioParam.\n await renderAutomation(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate);\n } else {\n // Bug #149: Safari does not yet support the detune AudioParam.\n await connectAudioParam(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioBufferSourceNode);\n\n return nativeAudioBufferSourceNode;\n };\n\n return {\n set start(value: [number, number] | [number, number, number]) {\n start = value;\n },\n set stop(value: number) {\n stop = value;\n },\n render(\n proxy: IAudioBufferSourceNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeAudioBufferSourceNode = renderedNativeAudioBufferSourceNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioBufferSourceNode !== undefined) {\n return Promise.resolve(renderedNativeAudioBufferSourceNode);\n }\n\n return createAudioBufferSourceNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { isValidLatencyHint } from '../helpers/is-valid-latency-hint';\nexport const createAudioContextConstructor = (baseAudioContextConstructor, createInvalidStateError, createNotSupportedError, createUnknownError, mediaElementAudioSourceNodeConstructor, mediaStreamAudioDestinationNodeConstructor, mediaStreamAudioSourceNodeConstructor, mediaStreamTrackAudioSourceNodeConstructor, nativeAudioContextConstructor) => {\n return class AudioContext extends baseAudioContextConstructor {\n constructor(options = {}) {\n if (nativeAudioContextConstructor === null) {\n throw new Error('Missing the native AudioContext constructor.');\n }\n let nativeAudioContext;\n try {\n nativeAudioContext = new nativeAudioContextConstructor(options);\n }\n catch (err) {\n // Bug #192 Safari does throw a SyntaxError if the sampleRate is not supported.\n if (err.code === 12 && err.message === 'sampleRate is not in range') {\n throw createNotSupportedError();\n }\n throw err;\n }\n // Bug #131 Safari returns null when there are four other AudioContexts running already.\n if (nativeAudioContext === null) {\n throw createUnknownError();\n }\n // Bug #51 Only Chrome, Edge and Opera throw an error if the given latencyHint is invalid.\n if (!isValidLatencyHint(options.latencyHint)) {\n throw new TypeError(`The provided value '${options.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);\n }\n // Bug #150 Safari does not support setting the sampleRate.\n if (options.sampleRate !== undefined && nativeAudioContext.sampleRate !== options.sampleRate) {\n throw createNotSupportedError();\n }\n super(nativeAudioContext, 2);\n const { latencyHint } = options;\n const { sampleRate } = nativeAudioContext;\n // @todo The values for 'balanced', 'interactive' and 'playback' are just copied from Chrome's implementation.\n this._baseLatency =\n typeof nativeAudioContext.baseLatency === 'number'\n ? nativeAudioContext.baseLatency\n : latencyHint === 'balanced'\n ? 512 / sampleRate\n : latencyHint === 'interactive' || latencyHint === undefined\n ? 256 / sampleRate\n : latencyHint === 'playback'\n ? 1024 / sampleRate\n : /*\n * @todo The min (256) and max (16384) values are taken from the allowed bufferSize values of a\n * ScriptProcessorNode.\n */\n (Math.max(2, Math.min(128, Math.round((latencyHint * sampleRate) / 128))) * 128) / sampleRate;\n this._nativeAudioContext = nativeAudioContext;\n // Bug #188: Safari will set the context's state to 'interrupted' in case the user switches tabs.\n if (nativeAudioContextConstructor.name === 'webkitAudioContext') {\n this._nativeGainNode = nativeAudioContext.createGain();\n this._nativeOscillatorNode = nativeAudioContext.createOscillator();\n this._nativeGainNode.gain.value = 1e-37;\n this._nativeOscillatorNode.connect(this._nativeGainNode).connect(nativeAudioContext.destination);\n this._nativeOscillatorNode.start();\n }\n else {\n this._nativeGainNode = null;\n this._nativeOscillatorNode = null;\n }\n this._state = null;\n /*\n * Bug #34: Chrome, Edge and Opera pretend to be running right away, but fire an onstatechange event when the state actually\n * changes to 'running'.\n */\n if (nativeAudioContext.state === 'running') {\n this._state = 'suspended';\n const revokeState = () => {\n if (this._state === 'suspended') {\n this._state = null;\n }\n nativeAudioContext.removeEventListener('statechange', revokeState);\n };\n nativeAudioContext.addEventListener('statechange', revokeState);\n }\n }\n get baseLatency() {\n return this._baseLatency;\n }\n get state() {\n return this._state !== null ? this._state : this._nativeAudioContext.state;\n }\n close() {\n // Bug #35: Firefox does not throw an error if the AudioContext was closed before.\n if (this.state === 'closed') {\n return this._nativeAudioContext.close().then(() => {\n throw createInvalidStateError();\n });\n }\n // Bug #34: If the state was set to suspended before it should be revoked now.\n if (this._state === 'suspended') {\n this._state = null;\n }\n return this._nativeAudioContext.close().then(() => {\n if (this._nativeGainNode !== null && this._nativeOscillatorNode !== null) {\n this._nativeOscillatorNode.stop();\n this._nativeGainNode.disconnect();\n this._nativeOscillatorNode.disconnect();\n }\n deactivateAudioGraph(this);\n });\n }\n createMediaElementSource(mediaElement) {\n return new mediaElementAudioSourceNodeConstructor(this, { mediaElement });\n }\n createMediaStreamDestination() {\n return new mediaStreamAudioDestinationNodeConstructor(this);\n }\n createMediaStreamSource(mediaStream) {\n return new mediaStreamAudioSourceNodeConstructor(this, { mediaStream });\n }\n createMediaStreamTrackSource(mediaStreamTrack) {\n return new mediaStreamTrackAudioSourceNodeConstructor(this, { mediaStreamTrack });\n }\n resume() {\n if (this._state === 'suspended') {\n return new Promise((resolve, reject) => {\n const resolvePromise = () => {\n this._nativeAudioContext.removeEventListener('statechange', resolvePromise);\n if (this._nativeAudioContext.state === 'running') {\n resolve();\n }\n else {\n this.resume().then(resolve, reject);\n }\n };\n this._nativeAudioContext.addEventListener('statechange', resolvePromise);\n });\n }\n return this._nativeAudioContext.resume().catch((err) => {\n // Bug #55: Chrome, Edge and Opera do throw an InvalidAccessError instead of an InvalidStateError.\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined || err.code === 15) {\n throw createInvalidStateError();\n }\n throw err;\n });\n }\n suspend() {\n return this._nativeAudioContext.suspend().catch((err) => {\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined) {\n throw createInvalidStateError();\n }\n throw err;\n });\n }\n };\n};\n//# sourceMappingURL=audio-context-constructor.js.map","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { isValidLatencyHint } from '../helpers/is-valid-latency-hint';\nimport {\n IAudioContext,\n IAudioContextOptions,\n IMediaElementAudioSourceNode,\n IMediaStreamAudioDestinationNode,\n IMediaStreamAudioSourceNode,\n IMediaStreamTrackAudioSourceNode\n} from '../interfaces';\nimport { TAudioContextConstructorFactory, TAudioContextState, TNativeAudioContext, TNativeGainNode, TNativeOscillatorNode } from '../types';\n\nexport const createAudioContextConstructor: TAudioContextConstructorFactory = (\n baseAudioContextConstructor,\n createInvalidStateError,\n createNotSupportedError,\n createUnknownError,\n mediaElementAudioSourceNodeConstructor,\n mediaStreamAudioDestinationNodeConstructor,\n mediaStreamAudioSourceNodeConstructor,\n mediaStreamTrackAudioSourceNodeConstructor,\n nativeAudioContextConstructor\n) => {\n return class AudioContext extends baseAudioContextConstructor implements IAudioContext {\n private _baseLatency: number;\n\n private _nativeAudioContext: TNativeAudioContext;\n\n private _nativeGainNode: null | TNativeGainNode;\n\n private _nativeOscillatorNode: null | TNativeOscillatorNode;\n\n private _state: null | 'suspended';\n\n constructor(options: IAudioContextOptions = {}) {\n if (nativeAudioContextConstructor === null) {\n throw new Error('Missing the native AudioContext constructor.');\n }\n\n let nativeAudioContext: TNativeAudioContext;\n\n try {\n nativeAudioContext = new nativeAudioContextConstructor(options);\n } catch (err) {\n // Bug #192 Safari does throw a SyntaxError if the sampleRate is not supported.\n if (err.code === 12 && err.message === 'sampleRate is not in range') {\n throw createNotSupportedError();\n }\n\n throw err;\n }\n\n // Bug #131 Safari returns null when there are four other AudioContexts running already.\n if (nativeAudioContext === null) {\n throw createUnknownError();\n }\n\n // Bug #51 Only Chrome, Edge and Opera throw an error if the given latencyHint is invalid.\n if (!isValidLatencyHint(options.latencyHint)) {\n throw new TypeError(\n `The provided value '${options.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`\n );\n }\n\n // Bug #150 Safari does not support setting the sampleRate.\n if (options.sampleRate !== undefined && nativeAudioContext.sampleRate !== options.sampleRate) {\n throw createNotSupportedError();\n }\n\n super(nativeAudioContext, 2);\n\n const { latencyHint } = options;\n const { sampleRate } = nativeAudioContext;\n\n // @todo The values for 'balanced', 'interactive' and 'playback' are just copied from Chrome's implementation.\n this._baseLatency =\n typeof nativeAudioContext.baseLatency === 'number'\n ? nativeAudioContext.baseLatency\n : latencyHint === 'balanced'\n ? 512 / sampleRate\n : latencyHint === 'interactive' || latencyHint === undefined\n ? 256 / sampleRate\n : latencyHint === 'playback'\n ? 1024 / sampleRate\n : /*\n * @todo The min (256) and max (16384) values are taken from the allowed bufferSize values of a\n * ScriptProcessorNode.\n */\n (Math.max(2, Math.min(128, Math.round((latencyHint * sampleRate) / 128))) * 128) / sampleRate;\n this._nativeAudioContext = nativeAudioContext;\n\n // Bug #188: Safari will set the context's state to 'interrupted' in case the user switches tabs.\n if (nativeAudioContextConstructor.name === 'webkitAudioContext') {\n this._nativeGainNode = nativeAudioContext.createGain();\n this._nativeOscillatorNode = nativeAudioContext.createOscillator();\n\n this._nativeGainNode.gain.value = 1e-37;\n\n this._nativeOscillatorNode.connect(this._nativeGainNode).connect(nativeAudioContext.destination);\n this._nativeOscillatorNode.start();\n } else {\n this._nativeGainNode = null;\n this._nativeOscillatorNode = null;\n }\n\n this._state = null;\n\n /*\n * Bug #34: Chrome, Edge and Opera pretend to be running right away, but fire an onstatechange event when the state actually\n * changes to 'running'.\n */\n if (nativeAudioContext.state === 'running') {\n this._state = 'suspended';\n\n const revokeState = () => {\n if (this._state === 'suspended') {\n this._state = null;\n }\n\n nativeAudioContext.removeEventListener('statechange', revokeState);\n };\n\n nativeAudioContext.addEventListener('statechange', revokeState);\n }\n }\n\n get baseLatency(): number {\n return this._baseLatency;\n }\n\n get state(): TAudioContextState {\n return this._state !== null ? this._state : this._nativeAudioContext.state;\n }\n\n public close(): Promise {\n // Bug #35: Firefox does not throw an error if the AudioContext was closed before.\n if (this.state === 'closed') {\n return this._nativeAudioContext.close().then(() => {\n throw createInvalidStateError();\n });\n }\n\n // Bug #34: If the state was set to suspended before it should be revoked now.\n if (this._state === 'suspended') {\n this._state = null;\n }\n\n return this._nativeAudioContext.close().then(() => {\n if (this._nativeGainNode !== null && this._nativeOscillatorNode !== null) {\n this._nativeOscillatorNode.stop();\n\n this._nativeGainNode.disconnect();\n this._nativeOscillatorNode.disconnect();\n }\n\n deactivateAudioGraph(this);\n });\n }\n\n public createMediaElementSource(mediaElement: HTMLMediaElement): IMediaElementAudioSourceNode {\n return new mediaElementAudioSourceNodeConstructor(this, { mediaElement });\n }\n\n public createMediaStreamDestination(): IMediaStreamAudioDestinationNode {\n return new mediaStreamAudioDestinationNodeConstructor(this);\n }\n\n public createMediaStreamSource(mediaStream: MediaStream): IMediaStreamAudioSourceNode {\n return new mediaStreamAudioSourceNodeConstructor(this, { mediaStream });\n }\n\n public createMediaStreamTrackSource(mediaStreamTrack: MediaStreamTrack): IMediaStreamTrackAudioSourceNode {\n return new mediaStreamTrackAudioSourceNodeConstructor(this, { mediaStreamTrack });\n }\n\n public resume(): Promise {\n if (this._state === 'suspended') {\n return new Promise((resolve, reject) => {\n const resolvePromise = () => {\n this._nativeAudioContext.removeEventListener('statechange', resolvePromise);\n\n if (this._nativeAudioContext.state === 'running') {\n resolve();\n } else {\n this.resume().then(resolve, reject);\n }\n };\n\n this._nativeAudioContext.addEventListener('statechange', resolvePromise);\n });\n }\n\n return this._nativeAudioContext.resume().catch((err) => {\n // Bug #55: Chrome, Edge and Opera do throw an InvalidAccessError instead of an InvalidStateError.\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined || err.code === 15) {\n throw createInvalidStateError();\n }\n\n throw err;\n });\n }\n\n public suspend(): Promise {\n return this._nativeAudioContext.suspend().catch((err) => {\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined) {\n throw createInvalidStateError();\n }\n\n throw err;\n });\n }\n };\n};\n","import { deactivateActiveAudioNodeInputConnections } from './deactivate-active-audio-node-input-connections';\nexport const deactivateAudioGraph = (context) => {\n deactivateActiveAudioNodeInputConnections(context.destination, []);\n};\n//# sourceMappingURL=deactivate-audio-graph.js.map","import { IAudioDestinationNode } from '../interfaces';\nimport { TContext } from '../types';\nimport { deactivateActiveAudioNodeInputConnections } from './deactivate-active-audio-node-input-connections';\n\nexport const deactivateAudioGraph = (context: T): void => {\n deactivateActiveAudioNodeInputConnections(>context.destination, []);\n};\n","import { isAudioBufferSourceNode } from '../guards/audio-buffer-source-node';\nimport { isAudioWorkletNode } from '../guards/audio-worklet-node';\nimport { isBiquadFilterNode } from '../guards/biquad-filter-node';\nimport { isConstantSourceNode } from '../guards/constant-source-node';\nimport { isGainNode } from '../guards/gain-node';\nimport { isOscillatorNode } from '../guards/oscillator-node';\nimport { isStereoPannerNode } from '../guards/stereo-panner-node';\nimport { getAudioNodeConnections } from './get-audio-node-connections';\nimport { getAudioParamConnections } from './get-audio-param-connections';\nimport { isActiveAudioNode } from './is-active-audio-node';\nimport { setInternalStateToPassive } from './set-internal-state-to-passive';\nexport const deactivateActiveAudioNodeInputConnections = (audioNode, trace) => {\n const { activeInputs } = getAudioNodeConnections(audioNode);\n activeInputs.forEach((connections) => connections.forEach(([source]) => {\n if (!trace.includes(audioNode)) {\n deactivateActiveAudioNodeInputConnections(source, [...trace, audioNode]);\n }\n }));\n const audioParams = isAudioBufferSourceNode(audioNode)\n ? [\n // Bug #149: Safari does not yet support the detune AudioParam.\n audioNode.playbackRate\n ]\n : isAudioWorkletNode(audioNode)\n ? Array.from(audioNode.parameters.values())\n : isBiquadFilterNode(audioNode)\n ? [audioNode.Q, audioNode.detune, audioNode.frequency, audioNode.gain]\n : isConstantSourceNode(audioNode)\n ? [audioNode.offset]\n : isGainNode(audioNode)\n ? [audioNode.gain]\n : isOscillatorNode(audioNode)\n ? [audioNode.detune, audioNode.frequency]\n : isStereoPannerNode(audioNode)\n ? [audioNode.pan]\n : [];\n for (const audioParam of audioParams) {\n const audioParamConnections = getAudioParamConnections(audioParam);\n if (audioParamConnections !== undefined) {\n audioParamConnections.activeInputs.forEach(([source]) => deactivateActiveAudioNodeInputConnections(source, trace));\n }\n }\n if (isActiveAudioNode(audioNode)) {\n setInternalStateToPassive(audioNode);\n }\n};\n//# sourceMappingURL=deactivate-active-audio-node-input-connections.js.map","import { isAudioBufferSourceNode } from '../guards/audio-buffer-source-node';\nimport { isAudioWorkletNode } from '../guards/audio-worklet-node';\nimport { isBiquadFilterNode } from '../guards/biquad-filter-node';\nimport { isConstantSourceNode } from '../guards/constant-source-node';\nimport { isGainNode } from '../guards/gain-node';\nimport { isOscillatorNode } from '../guards/oscillator-node';\nimport { isStereoPannerNode } from '../guards/stereo-panner-node';\nimport { IAudioNode } from '../interfaces';\nimport { TContext } from '../types';\nimport { getAudioNodeConnections } from './get-audio-node-connections';\nimport { getAudioParamConnections } from './get-audio-param-connections';\nimport { isActiveAudioNode } from './is-active-audio-node';\nimport { setInternalStateToPassive } from './set-internal-state-to-passive';\n\nexport const deactivateActiveAudioNodeInputConnections = (\n audioNode: IAudioNode,\n trace: readonly IAudioNode[]\n) => {\n const { activeInputs } = getAudioNodeConnections(audioNode);\n\n activeInputs.forEach((connections) =>\n connections.forEach(([source]) => {\n if (!trace.includes(audioNode)) {\n deactivateActiveAudioNodeInputConnections(source, [...trace, audioNode]);\n }\n })\n );\n\n const audioParams = isAudioBufferSourceNode(audioNode)\n ? [\n // Bug #149: Safari does not yet support the detune AudioParam.\n audioNode.playbackRate\n ]\n : isAudioWorkletNode(audioNode)\n ? Array.from(audioNode.parameters.values())\n : isBiquadFilterNode(audioNode)\n ? [audioNode.Q, audioNode.detune, audioNode.frequency, audioNode.gain]\n : isConstantSourceNode(audioNode)\n ? [audioNode.offset]\n : isGainNode(audioNode)\n ? [audioNode.gain]\n : isOscillatorNode(audioNode)\n ? [audioNode.detune, audioNode.frequency]\n : isStereoPannerNode(audioNode)\n ? [audioNode.pan]\n : [];\n\n for (const audioParam of audioParams) {\n const audioParamConnections = getAudioParamConnections(audioParam);\n\n if (audioParamConnections !== undefined) {\n audioParamConnections.activeInputs.forEach(([source]) => deactivateActiveAudioNodeInputConnections(source, trace));\n }\n }\n\n if (isActiveAudioNode(audioNode)) {\n setInternalStateToPassive(audioNode);\n }\n};\n","export const isAudioBufferSourceNode = (audioNode) => {\n return 'playbackRate' in audioNode;\n};\n//# sourceMappingURL=audio-buffer-source-node.js.map","import { IAudioBufferSourceNode, IAudioNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isAudioBufferSourceNode = (audioNode: IAudioNode): audioNode is IAudioBufferSourceNode => {\n return 'playbackRate' in audioNode;\n};\n","export const isBiquadFilterNode = (audioNode) => {\n return 'frequency' in audioNode && 'gain' in audioNode;\n};\n//# sourceMappingURL=biquad-filter-node.js.map","import { IAudioNode, IBiquadFilterNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isBiquadFilterNode = (audioNode: IAudioNode): audioNode is IBiquadFilterNode => {\n return 'frequency' in audioNode && 'gain' in audioNode;\n};\n","export const isConstantSourceNode = (audioNode) => {\n return 'offset' in audioNode;\n};\n//# sourceMappingURL=constant-source-node.js.map","import { IAudioNode, IConstantSourceNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isConstantSourceNode = (audioNode: IAudioNode): audioNode is IConstantSourceNode => {\n return 'offset' in audioNode;\n};\n","export const isGainNode = (audioNode) => {\n return !('frequency' in audioNode) && 'gain' in audioNode;\n};\n//# sourceMappingURL=gain-node.js.map","import { IAudioNode, IGainNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isGainNode = (audioNode: IAudioNode): audioNode is IGainNode => {\n return !('frequency' in audioNode) && 'gain' in audioNode;\n};\n","export const isOscillatorNode = (audioNode) => {\n return 'detune' in audioNode && 'frequency' in audioNode;\n};\n//# sourceMappingURL=oscillator-node.js.map","import { IAudioNode, IOscillatorNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isOscillatorNode = (audioNode: IAudioNode): audioNode is IOscillatorNode => {\n return 'detune' in audioNode && 'frequency' in audioNode;\n};\n","export const isStereoPannerNode = (audioNode) => {\n return 'pan' in audioNode;\n};\n//# sourceMappingURL=stereo-panner-node.js.map","import { IAudioNode, IStereoPannerNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isStereoPannerNode = (audioNode: IAudioNode): audioNode is IStereoPannerNode => {\n return 'pan' in audioNode;\n};\n","import { AUDIO_NODE_CONNECTIONS_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getAudioNodeConnections = (audioNode) => {\n return getValueForKey(AUDIO_NODE_CONNECTIONS_STORE, audioNode);\n};\n//# sourceMappingURL=get-audio-node-connections.js.map","import { AUDIO_NODE_CONNECTIONS_STORE } from '../globals';\nimport { IAudioNode } from '../interfaces';\nimport { TAudioNodeConnections, TContext, TGetAudioNodeConnectionsFunction } from '../types';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getAudioNodeConnections: TGetAudioNodeConnectionsFunction = (\n audioNode: IAudioNode\n): TAudioNodeConnections => {\n return >getValueForKey(AUDIO_NODE_CONNECTIONS_STORE, audioNode);\n};\n","import { AUDIO_PARAM_CONNECTIONS_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getAudioParamConnections = (audioParam) => {\n return getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE, audioParam);\n};\n//# sourceMappingURL=get-audio-param-connections.js.map","import { AUDIO_PARAM_CONNECTIONS_STORE } from '../globals';\nimport { IAudioParam } from '../interfaces';\nimport { TAudioParamConnections, TContext, TGetAudioParamConnectionsFunction } from '../types';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getAudioParamConnections: TGetAudioParamConnectionsFunction = (\n audioParam: IAudioParam\n): TAudioParamConnections => {\n return >getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE, audioParam);\n};\n","export const isValidLatencyHint = (latencyHint) => {\n return (latencyHint === undefined ||\n typeof latencyHint === 'number' ||\n (typeof latencyHint === 'string' && (latencyHint === 'balanced' || latencyHint === 'interactive' || latencyHint === 'playback')));\n};\n//# sourceMappingURL=is-valid-latency-hint.js.map","import { IAudioContextOptions } from '../interfaces';\n\nexport const isValidLatencyHint = (latencyHint: IAudioContextOptions['latencyHint']) => {\n return (\n latencyHint === undefined ||\n typeof latencyHint === 'number' ||\n (typeof latencyHint === 'string' && (latencyHint === 'balanced' || latencyHint === 'interactive' || latencyHint === 'playback'))\n );\n};\n","export const createAudioDestinationNodeConstructor = (audioNodeConstructor, createAudioDestinationNodeRenderer, createIndexSizeError, createInvalidStateError, createNativeAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext, renderInputsOfAudioNode) => {\n return class AudioDestinationNode extends audioNodeConstructor {\n constructor(context, channelCount) {\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const nativeAudioDestinationNode = createNativeAudioDestinationNode(nativeContext, channelCount, isOffline);\n const audioDestinationNodeRenderer = ((isOffline ? createAudioDestinationNodeRenderer(renderInputsOfAudioNode) : null));\n super(context, false, nativeAudioDestinationNode, audioDestinationNodeRenderer);\n this._isNodeOfNativeOfflineAudioContext = isOffline;\n this._nativeAudioDestinationNode = nativeAudioDestinationNode;\n }\n get channelCount() {\n return this._nativeAudioDestinationNode.channelCount;\n }\n set channelCount(value) {\n // Bug #52: Chrome, Edge, Opera & Safari do not throw an exception at all.\n // Bug #54: Firefox does throw an IndexSizeError.\n if (this._isNodeOfNativeOfflineAudioContext) {\n throw createInvalidStateError();\n }\n // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly.\n if (value > this._nativeAudioDestinationNode.maxChannelCount) {\n throw createIndexSizeError();\n }\n this._nativeAudioDestinationNode.channelCount = value;\n }\n get channelCountMode() {\n return this._nativeAudioDestinationNode.channelCountMode;\n }\n set channelCountMode(value) {\n // Bug #53: No browser does throw an exception yet.\n if (this._isNodeOfNativeOfflineAudioContext) {\n throw createInvalidStateError();\n }\n this._nativeAudioDestinationNode.channelCountMode = value;\n }\n get maxChannelCount() {\n return this._nativeAudioDestinationNode.maxChannelCount;\n }\n };\n};\n//# sourceMappingURL=audio-destination-node-constructor.js.map","import { IAudioDestinationNode } from '../interfaces';\nimport {\n TAudioDestinationNodeConstructorFactory,\n TAudioNodeRenderer,\n TChannelCountMode,\n TContext,\n TNativeAudioDestinationNode\n} from '../types';\n\nexport const createAudioDestinationNodeConstructor: TAudioDestinationNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioDestinationNodeRenderer,\n createIndexSizeError,\n createInvalidStateError,\n createNativeAudioDestinationNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n renderInputsOfAudioNode\n) => {\n return class AudioDestinationNode extends audioNodeConstructor implements IAudioDestinationNode {\n private _isNodeOfNativeOfflineAudioContext: boolean;\n\n private _nativeAudioDestinationNode: TNativeAudioDestinationNode;\n\n constructor(context: T, channelCount: number) {\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const nativeAudioDestinationNode = createNativeAudioDestinationNode(nativeContext, channelCount, isOffline);\n const audioDestinationNodeRenderer = >(\n (isOffline ? createAudioDestinationNodeRenderer(renderInputsOfAudioNode) : null)\n );\n\n super(context, false, nativeAudioDestinationNode, audioDestinationNodeRenderer);\n\n this._isNodeOfNativeOfflineAudioContext = isOffline;\n this._nativeAudioDestinationNode = nativeAudioDestinationNode;\n }\n\n get channelCount(): number {\n return this._nativeAudioDestinationNode.channelCount;\n }\n\n set channelCount(value) {\n // Bug #52: Chrome, Edge, Opera & Safari do not throw an exception at all.\n // Bug #54: Firefox does throw an IndexSizeError.\n if (this._isNodeOfNativeOfflineAudioContext) {\n throw createInvalidStateError();\n }\n\n // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly.\n if (value > this._nativeAudioDestinationNode.maxChannelCount) {\n throw createIndexSizeError();\n }\n\n this._nativeAudioDestinationNode.channelCount = value;\n }\n\n get channelCountMode(): TChannelCountMode {\n return this._nativeAudioDestinationNode.channelCountMode;\n }\n\n set channelCountMode(value) {\n // Bug #53: No browser does throw an exception yet.\n if (this._isNodeOfNativeOfflineAudioContext) {\n throw createInvalidStateError();\n }\n\n this._nativeAudioDestinationNode.channelCountMode = value;\n }\n\n get maxChannelCount(): number {\n return this._nativeAudioDestinationNode.maxChannelCount;\n }\n };\n};\n","export const createAudioDestinationNodeRenderer = (renderInputsOfAudioNode) => {\n const renderedNativeAudioDestinationNodes = new WeakMap();\n const createAudioDestinationNode = async (proxy, nativeOfflineAudioContext) => {\n const nativeAudioDestinationNode = nativeOfflineAudioContext.destination;\n renderedNativeAudioDestinationNodes.set(nativeOfflineAudioContext, nativeAudioDestinationNode);\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioDestinationNode);\n return nativeAudioDestinationNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeAudioDestinationNode = renderedNativeAudioDestinationNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioDestinationNode !== undefined) {\n return Promise.resolve(renderedNativeAudioDestinationNode);\n }\n return createAudioDestinationNode(proxy, nativeOfflineAudioContext);\n }\n };\n};\n//# sourceMappingURL=audio-destination-node-renderer-factory.js.map","import { IAudioDestinationNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport {\n TAudioDestinationNodeRendererFactory,\n TNativeAudioDestinationNode,\n TNativeOfflineAudioContext,\n TRenderInputsOfAudioNodeFunction\n} from '../types';\n\nexport const createAudioDestinationNodeRenderer: TAudioDestinationNodeRendererFactory = <\n T extends IMinimalOfflineAudioContext | IOfflineAudioContext\n>(\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => {\n const renderedNativeAudioDestinationNodes = new WeakMap();\n\n const createAudioDestinationNode = async (proxy: IAudioDestinationNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n const nativeAudioDestinationNode = nativeOfflineAudioContext.destination;\n\n renderedNativeAudioDestinationNodes.set(nativeOfflineAudioContext, nativeAudioDestinationNode);\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioDestinationNode);\n\n return nativeAudioDestinationNode;\n };\n\n return {\n render(\n proxy: IAudioDestinationNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeAudioDestinationNode = renderedNativeAudioDestinationNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioDestinationNode !== undefined) {\n return Promise.resolve(renderedNativeAudioDestinationNode);\n }\n\n return createAudioDestinationNode(proxy, nativeOfflineAudioContext);\n }\n };\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nexport const createAudioListenerFactory = (createAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeScriptProcessorNode, createNotSupportedError, getFirstSample, isNativeOfflineAudioContext, overwriteAccessors) => {\n return (context, nativeContext) => {\n const nativeListener = nativeContext.listener;\n // Bug #117: Only Chrome, Edge & Opera support the new interface already.\n const createFakeAudioParams = () => {\n const buffer = new Float32Array(1);\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 9\n });\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n let isScriptProcessorNodeCreated = false;\n let lastOrientation = [0, 0, -1, 0, 1, 0];\n let lastPosition = [0, 0, 0];\n const createScriptProcessorNode = () => {\n if (isScriptProcessorNodeCreated) {\n return;\n }\n isScriptProcessorNodeCreated = true;\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 9, 0);\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => {\n const orientation = [\n getFirstSample(inputBuffer, buffer, 0),\n getFirstSample(inputBuffer, buffer, 1),\n getFirstSample(inputBuffer, buffer, 2),\n getFirstSample(inputBuffer, buffer, 3),\n getFirstSample(inputBuffer, buffer, 4),\n getFirstSample(inputBuffer, buffer, 5)\n ];\n if (orientation.some((value, index) => value !== lastOrientation[index])) {\n nativeListener.setOrientation(...orientation); // tslint:disable-line:deprecation\n lastOrientation = orientation;\n }\n const positon = [\n getFirstSample(inputBuffer, buffer, 6),\n getFirstSample(inputBuffer, buffer, 7),\n getFirstSample(inputBuffer, buffer, 8)\n ];\n if (positon.some((value, index) => value !== lastPosition[index])) {\n nativeListener.setPosition(...positon); // tslint:disable-line:deprecation\n lastPosition = positon;\n }\n };\n channelMergerNode.connect(scriptProcessorNode);\n };\n const createSetOrientation = (index) => (value) => {\n if (value !== lastOrientation[index]) {\n lastOrientation[index] = value;\n nativeListener.setOrientation(...lastOrientation); // tslint:disable-line:deprecation\n }\n };\n const createSetPosition = (index) => (value) => {\n if (value !== lastPosition[index]) {\n lastPosition[index] = value;\n nativeListener.setPosition(...lastPosition); // tslint:disable-line:deprecation\n }\n };\n const createFakeAudioParam = (input, initialValue, setValue) => {\n const constantSourceNode = createNativeConstantSourceNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: initialValue\n });\n constantSourceNode.connect(channelMergerNode, 0, input);\n // @todo This should be stopped when the context is closed.\n constantSourceNode.start();\n Object.defineProperty(constantSourceNode.offset, 'defaultValue', {\n get() {\n return initialValue;\n }\n });\n /*\n * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and\n * minValue for GainNodes.\n */\n const audioParam = createAudioParam({ context }, isOffline, constantSourceNode.offset, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n overwriteAccessors(audioParam, 'value', (get) => () => get.call(audioParam), (set) => (value) => {\n try {\n set.call(audioParam, value);\n }\n catch (err) {\n if (err.code !== 9) {\n throw err;\n }\n }\n createScriptProcessorNode();\n if (isOffline) {\n // Bug #117: Using setOrientation() and setPosition() doesn't work with an OfflineAudioContext.\n setValue(value);\n }\n });\n audioParam.cancelAndHoldAtTime = ((cancelAndHoldAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = cancelAndHoldAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.cancelAndHoldAtTime);\n audioParam.cancelScheduledValues = ((cancelScheduledValues) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = cancelScheduledValues.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.cancelScheduledValues);\n audioParam.exponentialRampToValueAtTime = ((exponentialRampToValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = exponentialRampToValueAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.exponentialRampToValueAtTime);\n audioParam.linearRampToValueAtTime = ((linearRampToValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = linearRampToValueAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.linearRampToValueAtTime);\n audioParam.setTargetAtTime = ((setTargetAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = setTargetAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.setTargetAtTime);\n audioParam.setValueAtTime = ((setValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = setValueAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.setValueAtTime);\n audioParam.setValueCurveAtTime = ((setValueCurveAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n return (...args) => {\n const value = setValueCurveAtTime.apply(audioParam, args);\n createScriptProcessorNode();\n return value;\n };\n })(audioParam.setValueCurveAtTime);\n return audioParam;\n };\n return {\n forwardX: createFakeAudioParam(0, 0, createSetOrientation(0)),\n forwardY: createFakeAudioParam(1, 0, createSetOrientation(1)),\n forwardZ: createFakeAudioParam(2, -1, createSetOrientation(2)),\n positionX: createFakeAudioParam(6, 0, createSetPosition(0)),\n positionY: createFakeAudioParam(7, 0, createSetPosition(1)),\n positionZ: createFakeAudioParam(8, 0, createSetPosition(2)),\n upX: createFakeAudioParam(3, 0, createSetOrientation(3)),\n upY: createFakeAudioParam(4, 1, createSetOrientation(4)),\n upZ: createFakeAudioParam(5, 0, createSetOrientation(5))\n };\n };\n const { forwardX, forwardY, forwardZ, positionX, positionY, positionZ, upX, upY, upZ } = nativeListener.forwardX === undefined ? createFakeAudioParams() : nativeListener;\n return {\n get forwardX() {\n return forwardX;\n },\n get forwardY() {\n return forwardY;\n },\n get forwardZ() {\n return forwardZ;\n },\n get positionX() {\n return positionX;\n },\n get positionY() {\n return positionY;\n },\n get positionZ() {\n return positionZ;\n },\n get upX() {\n return upX;\n },\n get upY() {\n return upY;\n },\n get upZ() {\n return upZ;\n }\n };\n };\n};\n//# sourceMappingURL=audio-listener-factory.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { IAudioParam } from '../interfaces';\nimport { TAudioListenerFactoryFactory } from '../types';\n\nexport const createAudioListenerFactory: TAudioListenerFactoryFactory = (\n createAudioParam,\n createNativeChannelMergerNode,\n createNativeConstantSourceNode,\n createNativeScriptProcessorNode,\n createNotSupportedError,\n getFirstSample,\n isNativeOfflineAudioContext,\n overwriteAccessors\n) => {\n return (context, nativeContext) => {\n const nativeListener = nativeContext.listener;\n\n // Bug #117: Only Chrome, Edge & Opera support the new interface already.\n const createFakeAudioParams = () => {\n const buffer = new Float32Array(1);\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 9\n });\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n\n let isScriptProcessorNodeCreated = false;\n let lastOrientation: [number, number, number, number, number, number] = [0, 0, -1, 0, 1, 0];\n let lastPosition: [number, number, number] = [0, 0, 0];\n\n const createScriptProcessorNode = () => {\n if (isScriptProcessorNodeCreated) {\n return;\n }\n\n isScriptProcessorNodeCreated = true;\n\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 9, 0);\n\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => {\n const orientation: [number, number, number, number, number, number] = [\n getFirstSample(inputBuffer, buffer, 0),\n getFirstSample(inputBuffer, buffer, 1),\n getFirstSample(inputBuffer, buffer, 2),\n getFirstSample(inputBuffer, buffer, 3),\n getFirstSample(inputBuffer, buffer, 4),\n getFirstSample(inputBuffer, buffer, 5)\n ];\n\n if (orientation.some((value, index) => value !== lastOrientation[index])) {\n nativeListener.setOrientation(...orientation); // tslint:disable-line:deprecation\n\n lastOrientation = orientation;\n }\n\n const positon: [number, number, number] = [\n getFirstSample(inputBuffer, buffer, 6),\n getFirstSample(inputBuffer, buffer, 7),\n getFirstSample(inputBuffer, buffer, 8)\n ];\n\n if (positon.some((value, index) => value !== lastPosition[index])) {\n nativeListener.setPosition(...positon); // tslint:disable-line:deprecation\n\n lastPosition = positon;\n }\n };\n\n channelMergerNode.connect(scriptProcessorNode);\n };\n const createSetOrientation = (index: number) => (value: number) => {\n if (value !== lastOrientation[index]) {\n lastOrientation[index] = value;\n\n nativeListener.setOrientation(...lastOrientation); // tslint:disable-line:deprecation\n }\n };\n const createSetPosition = (index: number) => (value: number) => {\n if (value !== lastPosition[index]) {\n lastPosition[index] = value;\n\n nativeListener.setPosition(...lastPosition); // tslint:disable-line:deprecation\n }\n };\n const createFakeAudioParam = (input: number, initialValue: number, setValue: (value: number) => void) => {\n const constantSourceNode = createNativeConstantSourceNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: initialValue\n });\n\n constantSourceNode.connect(channelMergerNode, 0, input);\n\n // @todo This should be stopped when the context is closed.\n constantSourceNode.start();\n\n Object.defineProperty(constantSourceNode.offset, 'defaultValue', {\n get(): number {\n return initialValue;\n }\n });\n\n /*\n * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and\n * minValue for GainNodes.\n */\n const audioParam = createAudioParam(\n { context },\n isOffline,\n constantSourceNode.offset,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n\n overwriteAccessors(\n audioParam,\n 'value',\n (get) => () => get.call(audioParam),\n (set) => (value) => {\n try {\n set.call(audioParam, value);\n } catch (err) {\n if (err.code !== 9) {\n throw err;\n }\n }\n\n createScriptProcessorNode();\n\n if (isOffline) {\n // Bug #117: Using setOrientation() and setPosition() doesn't work with an OfflineAudioContext.\n setValue(value);\n }\n }\n );\n\n audioParam.cancelAndHoldAtTime = ((cancelAndHoldAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = cancelAndHoldAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.cancelAndHoldAtTime);\n audioParam.cancelScheduledValues = ((cancelScheduledValues) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = cancelScheduledValues.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.cancelScheduledValues);\n audioParam.exponentialRampToValueAtTime = ((exponentialRampToValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = exponentialRampToValueAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.exponentialRampToValueAtTime);\n audioParam.linearRampToValueAtTime = ((linearRampToValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = linearRampToValueAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.linearRampToValueAtTime);\n audioParam.setTargetAtTime = ((setTargetAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = setTargetAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.setTargetAtTime);\n audioParam.setValueAtTime = ((setValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = setValueAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.setValueAtTime);\n audioParam.setValueCurveAtTime = ((setValueCurveAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = setValueCurveAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.setValueCurveAtTime);\n\n return audioParam;\n };\n\n return {\n forwardX: createFakeAudioParam(0, 0, createSetOrientation(0)),\n forwardY: createFakeAudioParam(1, 0, createSetOrientation(1)),\n forwardZ: createFakeAudioParam(2, -1, createSetOrientation(2)),\n positionX: createFakeAudioParam(6, 0, createSetPosition(0)),\n positionY: createFakeAudioParam(7, 0, createSetPosition(1)),\n positionZ: createFakeAudioParam(8, 0, createSetPosition(2)),\n upX: createFakeAudioParam(3, 0, createSetOrientation(3)),\n upY: createFakeAudioParam(4, 1, createSetOrientation(4)),\n upZ: createFakeAudioParam(5, 0, createSetOrientation(5))\n };\n };\n\n const { forwardX, forwardY, forwardZ, positionX, positionY, positionZ, upX, upY, upZ } =\n nativeListener.forwardX === undefined ? createFakeAudioParams() : nativeListener;\n\n return {\n get forwardX(): IAudioParam {\n return forwardX;\n },\n get forwardY(): IAudioParam {\n return forwardY;\n },\n get forwardZ(): IAudioParam {\n return forwardZ;\n },\n get positionX(): IAudioParam {\n return positionX;\n },\n get positionY(): IAudioParam {\n return positionY;\n },\n get positionZ(): IAudioParam {\n return positionZ;\n },\n get upX(): IAudioParam {\n return upX;\n },\n get upY(): IAudioParam {\n return upY;\n },\n get upZ(): IAudioParam {\n return upZ;\n }\n };\n };\n};\n","import { AUDIO_NODE_STORE, EVENT_LISTENERS } from '../globals';\nimport { isAudioNode } from '../guards/audio-node';\nimport { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nimport { addActiveInputConnectionToAudioParam } from '../helpers/add-active-input-connection-to-audio-param';\nimport { addPassiveInputConnectionToAudioParam } from '../helpers/add-passive-input-connection-to-audio-param';\nimport { connectNativeAudioNodeToNativeAudioNode } from '../helpers/connect-native-audio-node-to-native-audio-node';\nimport { deleteActiveInputConnection } from '../helpers/delete-active-input-connection';\nimport { deleteActiveInputConnectionToAudioParam } from '../helpers/delete-active-input-connection-to-audio-param';\nimport { deleteEventListenerOfAudioNode } from '../helpers/delete-event-listeners-of-audio-node';\nimport { deletePassiveInputConnectionToAudioNode } from '../helpers/delete-passive-input-connection-to-audio-node';\nimport { deletePassiveInputConnectionToAudioParam } from '../helpers/delete-passive-input-connection-to-audio-param';\nimport { disconnectNativeAudioNodeFromNativeAudioNode } from '../helpers/disconnect-native-audio-node-from-native-audio-node';\nimport { getAudioNodeConnections } from '../helpers/get-audio-node-connections';\nimport { getAudioParamConnections } from '../helpers/get-audio-param-connections';\nimport { getEventListenersOfAudioNode } from '../helpers/get-event-listeners-of-audio-node';\nimport { getNativeAudioNode } from '../helpers/get-native-audio-node';\nimport { getNativeAudioParam } from '../helpers/get-native-audio-param';\nimport { insertElementInSet } from '../helpers/insert-element-in-set';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { isPartOfACycle } from '../helpers/is-part-of-a-cycle';\nimport { isPassiveAudioNode } from '../helpers/is-passive-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassiveWhenNecessary } from '../helpers/set-internal-state-to-passive-when-necessary';\nimport { testAudioNodeDisconnectMethodSupport } from '../helpers/test-audio-node-disconnect-method-support';\nimport { visitEachAudioNodeOnce } from '../helpers/visit-each-audio-node-once';\nimport { wrapAudioNodeDisconnectMethod } from '../helpers/wrap-audio-node-disconnect-method';\nconst addConnectionToAudioParamOfAudioContext = (source, destination, output, isOffline) => {\n const { activeInputs, passiveInputs } = getAudioParamConnections(destination);\n const { outputs } = getAudioNodeConnections(source);\n const eventListeners = getEventListenersOfAudioNode(source);\n const eventListener = (isActive) => {\n const nativeAudioNode = getNativeAudioNode(source);\n const nativeAudioParam = getNativeAudioParam(destination);\n if (isActive) {\n const partialConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output);\n addActiveInputConnectionToAudioParam(activeInputs, source, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n nativeAudioNode.connect(nativeAudioParam, output);\n }\n }\n else {\n const partialConnection = deleteActiveInputConnectionToAudioParam(activeInputs, source, output);\n addPassiveInputConnectionToAudioParam(passiveInputs, partialConnection, false);\n if (!isOffline && !isPartOfACycle(source)) {\n nativeAudioNode.disconnect(nativeAudioParam, output);\n }\n }\n };\n if (insertElementInSet(outputs, [destination, output], (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output, true)) {\n eventListeners.add(eventListener);\n if (isActiveAudioNode(source)) {\n addActiveInputConnectionToAudioParam(activeInputs, source, [output, eventListener], true);\n }\n else {\n addPassiveInputConnectionToAudioParam(passiveInputs, [source, output, eventListener], true);\n }\n return true;\n }\n return false;\n};\nconst deleteInputConnectionOfAudioNode = (source, destination, output, input) => {\n const { activeInputs, passiveInputs } = getAudioNodeConnections(destination);\n const activeInputConnection = deleteActiveInputConnection(activeInputs[input], source, output);\n if (activeInputConnection === null) {\n const passiveInputConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input);\n return [passiveInputConnection[2], false];\n }\n return [activeInputConnection[2], true];\n};\nconst deleteInputConnectionOfAudioParam = (source, destination, output) => {\n const { activeInputs, passiveInputs } = getAudioParamConnections(destination);\n const activeInputConnection = deleteActiveInputConnection(activeInputs, source, output);\n if (activeInputConnection === null) {\n const passiveInputConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output);\n return [passiveInputConnection[1], false];\n }\n return [activeInputConnection[2], true];\n};\nconst deleteInputsOfAudioNode = (source, isOffline, destination, output, input) => {\n const [listener, isActive] = deleteInputConnectionOfAudioNode(source, destination, output, input);\n if (listener !== null) {\n deleteEventListenerOfAudioNode(source, listener);\n if (isActive && !isOffline && !isPartOfACycle(source)) {\n disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(source), getNativeAudioNode(destination), output, input);\n }\n }\n if (isActiveAudioNode(destination)) {\n const { activeInputs } = getAudioNodeConnections(destination);\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n};\nconst deleteInputsOfAudioParam = (source, isOffline, destination, output) => {\n const [listener, isActive] = deleteInputConnectionOfAudioParam(source, destination, output);\n if (listener !== null) {\n deleteEventListenerOfAudioNode(source, listener);\n if (isActive && !isOffline && !isPartOfACycle(source)) {\n getNativeAudioNode(source).disconnect(getNativeAudioParam(destination), output);\n }\n }\n};\nconst deleteAnyConnection = (source, isOffline) => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n const destinations = [];\n for (const outputConnection of audioNodeConnectionsOfSource.outputs) {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n }\n else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n destinations.push(outputConnection[0]);\n }\n audioNodeConnectionsOfSource.outputs.clear();\n return destinations;\n};\nconst deleteConnectionAtOutput = (source, isOffline, output) => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n const destinations = [];\n for (const outputConnection of audioNodeConnectionsOfSource.outputs) {\n if (outputConnection[1] === output) {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n }\n else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n destinations.push(outputConnection[0]);\n audioNodeConnectionsOfSource.outputs.delete(outputConnection);\n }\n }\n return destinations;\n};\nconst deleteConnectionToDestination = (source, isOffline, destination, output, input) => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n return Array.from(audioNodeConnectionsOfSource.outputs)\n .filter((outputConnection) => outputConnection[0] === destination &&\n (output === undefined || outputConnection[1] === output) &&\n (input === undefined || outputConnection[2] === input))\n .map((outputConnection) => {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n }\n else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n audioNodeConnectionsOfSource.outputs.delete(outputConnection);\n return outputConnection[0];\n });\n};\nexport const createAudioNodeConstructor = (addAudioNodeConnections, addConnectionToAudioNode, cacheTestResult, createIncrementCycleCounter, createIndexSizeError, createInvalidAccessError, createNotSupportedError, decrementCycleCounter, detectCycles, eventTargetConstructor, getNativeContext, isNativeAudioContext, isNativeAudioNode, isNativeAudioParam, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor) => {\n return class AudioNode extends eventTargetConstructor {\n constructor(context, isActive, nativeAudioNode, audioNodeRenderer) {\n super(nativeAudioNode);\n this._context = context;\n this._nativeAudioNode = nativeAudioNode;\n const nativeContext = getNativeContext(context);\n // Bug #12: Safari does not support to disconnect a specific destination.\n if (isNativeAudioContext(nativeContext) &&\n true !==\n cacheTestResult(testAudioNodeDisconnectMethodSupport, () => {\n return testAudioNodeDisconnectMethodSupport(nativeContext, nativeAudioWorkletNodeConstructor);\n })) {\n wrapAudioNodeDisconnectMethod(nativeAudioNode);\n }\n AUDIO_NODE_STORE.set(this, nativeAudioNode);\n EVENT_LISTENERS.set(this, new Set());\n if (context.state !== 'closed' && isActive) {\n setInternalStateToActive(this);\n }\n addAudioNodeConnections(this, audioNodeRenderer, nativeAudioNode);\n }\n get channelCount() {\n return this._nativeAudioNode.channelCount;\n }\n set channelCount(value) {\n this._nativeAudioNode.channelCount = value;\n }\n get channelCountMode() {\n return this._nativeAudioNode.channelCountMode;\n }\n set channelCountMode(value) {\n this._nativeAudioNode.channelCountMode = value;\n }\n get channelInterpretation() {\n return this._nativeAudioNode.channelInterpretation;\n }\n set channelInterpretation(value) {\n this._nativeAudioNode.channelInterpretation = value;\n }\n get context() {\n return this._context;\n }\n get numberOfInputs() {\n return this._nativeAudioNode.numberOfInputs;\n }\n get numberOfOutputs() {\n return this._nativeAudioNode.numberOfOutputs;\n }\n // tslint:disable-next-line:invalid-void\n connect(destination, output = 0, input = 0) {\n // Bug #174: Safari does expose a wrong numberOfOutputs for MediaStreamAudioDestinationNodes.\n if (output < 0 || output >= this._nativeAudioNode.numberOfOutputs) {\n throw createIndexSizeError();\n }\n const nativeContext = getNativeContext(this._context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n if (isNativeAudioNode(destination) || isNativeAudioParam(destination)) {\n throw createInvalidAccessError();\n }\n if (isAudioNode(destination)) {\n const nativeDestinationAudioNode = getNativeAudioNode(destination);\n try {\n const connection = connectNativeAudioNodeToNativeAudioNode(this._nativeAudioNode, nativeDestinationAudioNode, output, input);\n const isPassive = isPassiveAudioNode(this);\n if (isOffline || isPassive) {\n this._nativeAudioNode.disconnect(...connection);\n }\n if (this.context.state !== 'closed' && !isPassive && isPassiveAudioNode(destination)) {\n setInternalStateToActive(destination);\n }\n }\n catch (err) {\n // Bug #41: Safari does not throw the correct exception so far.\n if (err.code === 12) {\n throw createInvalidAccessError();\n }\n throw err;\n }\n const isNewConnectionToAudioNode = addConnectionToAudioNode(this, destination, output, input, isOffline);\n // Bug #164: Only Firefox detects cycles so far.\n if (isNewConnectionToAudioNode) {\n const cycles = detectCycles([this], destination);\n visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline));\n }\n return destination;\n }\n const nativeAudioParam = getNativeAudioParam(destination);\n /*\n * Bug #73, #147 & #153: Safari does not support to connect an input signal to the playbackRate AudioParam of an\n * AudioBufferSourceNode. This can't be easily detected and that's why the outdated name property is used here to identify\n * Safari. In addition to that the maxValue property is used to only detect the affected versions below v14.0.2.\n */\n if (nativeAudioParam.name === 'playbackRate' && nativeAudioParam.maxValue === 1024) {\n throw createNotSupportedError();\n }\n try {\n this._nativeAudioNode.connect(nativeAudioParam, output);\n if (isOffline || isPassiveAudioNode(this)) {\n this._nativeAudioNode.disconnect(nativeAudioParam, output);\n }\n }\n catch (err) {\n // Bug #58: Safari doesn't throw an InvalidAccessError yet.\n if (err.code === 12) {\n throw createInvalidAccessError();\n }\n throw err;\n }\n const isNewConnectionToAudioParam = addConnectionToAudioParamOfAudioContext(this, destination, output, isOffline);\n // Bug #164: Only Firefox detects cycles so far.\n if (isNewConnectionToAudioParam) {\n const cycles = detectCycles([this], destination);\n visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline));\n }\n }\n disconnect(destinationOrOutput, output, input) {\n let destinations;\n const nativeContext = getNativeContext(this._context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n if (destinationOrOutput === undefined) {\n destinations = deleteAnyConnection(this, isOffline);\n }\n else if (typeof destinationOrOutput === 'number') {\n if (destinationOrOutput < 0 || destinationOrOutput >= this.numberOfOutputs) {\n throw createIndexSizeError();\n }\n destinations = deleteConnectionAtOutput(this, isOffline, destinationOrOutput);\n }\n else {\n if (output !== undefined && (output < 0 || output >= this.numberOfOutputs)) {\n throw createIndexSizeError();\n }\n if (isAudioNode(destinationOrOutput) && input !== undefined && (input < 0 || input >= destinationOrOutput.numberOfInputs)) {\n throw createIndexSizeError();\n }\n destinations = deleteConnectionToDestination(this, isOffline, destinationOrOutput, output, input);\n if (destinations.length === 0) {\n throw createInvalidAccessError();\n }\n }\n // Bug #164: Only Firefox detects cycles so far.\n for (const destination of destinations) {\n const cycles = detectCycles([this], destination);\n visitEachAudioNodeOnce(cycles, decrementCycleCounter);\n }\n }\n };\n};\n//# sourceMappingURL=audio-node-constructor.js.map","import { AUDIO_NODE_STORE, EVENT_LISTENERS } from '../globals';\nimport { isAudioNode } from '../guards/audio-node';\nimport { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nimport { addActiveInputConnectionToAudioParam } from '../helpers/add-active-input-connection-to-audio-param';\nimport { addPassiveInputConnectionToAudioParam } from '../helpers/add-passive-input-connection-to-audio-param';\nimport { connectNativeAudioNodeToNativeAudioNode } from '../helpers/connect-native-audio-node-to-native-audio-node';\nimport { deleteActiveInputConnection } from '../helpers/delete-active-input-connection';\nimport { deleteActiveInputConnectionToAudioParam } from '../helpers/delete-active-input-connection-to-audio-param';\nimport { deleteEventListenerOfAudioNode } from '../helpers/delete-event-listeners-of-audio-node';\nimport { deletePassiveInputConnectionToAudioNode } from '../helpers/delete-passive-input-connection-to-audio-node';\nimport { deletePassiveInputConnectionToAudioParam } from '../helpers/delete-passive-input-connection-to-audio-param';\nimport { disconnectNativeAudioNodeFromNativeAudioNode } from '../helpers/disconnect-native-audio-node-from-native-audio-node';\nimport { getAudioNodeConnections } from '../helpers/get-audio-node-connections';\nimport { getAudioParamConnections } from '../helpers/get-audio-param-connections';\nimport { getEventListenersOfAudioNode } from '../helpers/get-event-listeners-of-audio-node';\nimport { getNativeAudioNode } from '../helpers/get-native-audio-node';\nimport { getNativeAudioParam } from '../helpers/get-native-audio-param';\nimport { insertElementInSet } from '../helpers/insert-element-in-set';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { isPartOfACycle } from '../helpers/is-part-of-a-cycle';\nimport { isPassiveAudioNode } from '../helpers/is-passive-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassiveWhenNecessary } from '../helpers/set-internal-state-to-passive-when-necessary';\nimport { testAudioNodeDisconnectMethodSupport } from '../helpers/test-audio-node-disconnect-method-support';\nimport { visitEachAudioNodeOnce } from '../helpers/visit-each-audio-node-once';\nimport { wrapAudioNodeDisconnectMethod } from '../helpers/wrap-audio-node-disconnect-method';\nimport {\n IAudioNode,\n IAudioNodeRenderer,\n IAudioParam,\n IMinimalOfflineAudioContext,\n INativeAudioNodeFaker,\n IOfflineAudioContext\n} from '../interfaces';\nimport {\n TAudioNodeConstructorFactory,\n TChannelCountMode,\n TChannelInterpretation,\n TContext,\n TInternalStateEventListener,\n TNativeAudioNode,\n TNativeAudioParam\n} from '../types';\n\nconst addConnectionToAudioParamOfAudioContext = (\n source: IAudioNode,\n destination: IAudioParam,\n output: number,\n isOffline: boolean\n): boolean => {\n const { activeInputs, passiveInputs } = getAudioParamConnections(destination);\n const { outputs } = getAudioNodeConnections(source);\n const eventListeners = getEventListenersOfAudioNode(source);\n\n const eventListener: TInternalStateEventListener = (isActive) => {\n const nativeAudioNode = getNativeAudioNode(source);\n const nativeAudioParam = getNativeAudioParam(destination);\n\n if (isActive) {\n const partialConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output);\n\n addActiveInputConnectionToAudioParam(activeInputs, source, partialConnection, false);\n\n if (!isOffline && !isPartOfACycle(source)) {\n nativeAudioNode.connect(nativeAudioParam, output);\n }\n } else {\n const partialConnection = deleteActiveInputConnectionToAudioParam(activeInputs, source, output);\n\n addPassiveInputConnectionToAudioParam(passiveInputs, partialConnection, false);\n\n if (!isOffline && !isPartOfACycle(source)) {\n nativeAudioNode.disconnect(nativeAudioParam, output);\n }\n }\n };\n\n if (\n insertElementInSet(\n outputs,\n [destination, output],\n (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output,\n true\n )\n ) {\n eventListeners.add(eventListener);\n\n if (isActiveAudioNode(source)) {\n addActiveInputConnectionToAudioParam(activeInputs, source, [output, eventListener], true);\n } else {\n addPassiveInputConnectionToAudioParam(passiveInputs, [source, output, eventListener], true);\n }\n\n return true;\n }\n\n return false;\n};\n\nconst deleteInputConnectionOfAudioNode = (\n source: IAudioNode,\n destination: IAudioNode,\n output: number,\n input: number\n): [null | TInternalStateEventListener, boolean] => {\n const { activeInputs, passiveInputs } = getAudioNodeConnections(destination);\n\n const activeInputConnection = deleteActiveInputConnection(activeInputs[input], source, output);\n\n if (activeInputConnection === null) {\n const passiveInputConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input);\n\n return [passiveInputConnection[2], false];\n }\n\n return [activeInputConnection[2], true];\n};\n\nconst deleteInputConnectionOfAudioParam = (\n source: IAudioNode,\n destination: IAudioParam,\n output: number\n): [null | TInternalStateEventListener, boolean] => {\n const { activeInputs, passiveInputs } = getAudioParamConnections(destination);\n\n const activeInputConnection = deleteActiveInputConnection(activeInputs, source, output);\n\n if (activeInputConnection === null) {\n const passiveInputConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output);\n\n return [passiveInputConnection[1], false];\n }\n\n return [activeInputConnection[2], true];\n};\n\nconst deleteInputsOfAudioNode = (\n source: IAudioNode,\n isOffline: boolean,\n destination: IAudioNode,\n output: number,\n input: number\n) => {\n const [listener, isActive] = deleteInputConnectionOfAudioNode(source, destination, output, input);\n\n if (listener !== null) {\n deleteEventListenerOfAudioNode(source, listener);\n\n if (isActive && !isOffline && !isPartOfACycle(source)) {\n disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(source), getNativeAudioNode(destination), output, input);\n }\n }\n\n if (isActiveAudioNode(destination)) {\n const { activeInputs } = getAudioNodeConnections(destination);\n\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n};\n\nconst deleteInputsOfAudioParam = (\n source: IAudioNode,\n isOffline: boolean,\n destination: IAudioParam,\n output: number\n) => {\n const [listener, isActive] = deleteInputConnectionOfAudioParam(source, destination, output);\n\n if (listener !== null) {\n deleteEventListenerOfAudioNode(source, listener);\n\n if (isActive && !isOffline && !isPartOfACycle(source)) {\n getNativeAudioNode(source).disconnect(getNativeAudioParam(destination), output);\n }\n }\n};\n\nconst deleteAnyConnection = (source: IAudioNode, isOffline: boolean): (IAudioNode | IAudioParam)[] => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n const destinations = [];\n\n for (const outputConnection of audioNodeConnectionsOfSource.outputs) {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n } else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n\n destinations.push(outputConnection[0]);\n }\n\n audioNodeConnectionsOfSource.outputs.clear();\n\n return destinations;\n};\n\nconst deleteConnectionAtOutput = (\n source: IAudioNode,\n isOffline: boolean,\n output: number\n): (IAudioNode | IAudioParam)[] => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n const destinations = [];\n\n for (const outputConnection of audioNodeConnectionsOfSource.outputs) {\n if (outputConnection[1] === output) {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n } else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n\n destinations.push(outputConnection[0]);\n audioNodeConnectionsOfSource.outputs.delete(outputConnection);\n }\n }\n\n return destinations;\n};\n\nconst deleteConnectionToDestination = (\n source: IAudioNode,\n isOffline: boolean,\n destination: IAudioNode | IAudioParam,\n output?: number,\n input?: number\n): (IAudioNode | IAudioParam)[] => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n\n return Array.from(audioNodeConnectionsOfSource.outputs)\n .filter(\n (outputConnection) =>\n outputConnection[0] === destination &&\n (output === undefined || outputConnection[1] === output) &&\n (input === undefined || outputConnection[2] === input)\n )\n .map((outputConnection) => {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n } else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n\n audioNodeConnectionsOfSource.outputs.delete(outputConnection);\n\n return outputConnection[0];\n });\n};\n\nexport const createAudioNodeConstructor: TAudioNodeConstructorFactory = (\n addAudioNodeConnections,\n addConnectionToAudioNode,\n cacheTestResult,\n createIncrementCycleCounter,\n createIndexSizeError,\n createInvalidAccessError,\n createNotSupportedError,\n decrementCycleCounter,\n detectCycles,\n eventTargetConstructor,\n getNativeContext,\n isNativeAudioContext,\n isNativeAudioNode,\n isNativeAudioParam,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor\n) => {\n return class AudioNode = {}>\n extends eventTargetConstructor\n implements IAudioNode\n {\n private _context: T;\n\n private _nativeAudioNode: INativeAudioNodeFaker | TNativeAudioNode;\n\n constructor(\n context: T,\n isActive: boolean,\n nativeAudioNode: INativeAudioNodeFaker | TNativeAudioNode,\n audioNodeRenderer: T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? IAudioNodeRenderer> : null\n ) {\n super(nativeAudioNode);\n\n this._context = context;\n this._nativeAudioNode = nativeAudioNode;\n\n const nativeContext = getNativeContext(context);\n\n // Bug #12: Safari does not support to disconnect a specific destination.\n if (\n isNativeAudioContext(nativeContext) &&\n true !==\n cacheTestResult(testAudioNodeDisconnectMethodSupport, () => {\n return testAudioNodeDisconnectMethodSupport(nativeContext, nativeAudioWorkletNodeConstructor);\n })\n ) {\n wrapAudioNodeDisconnectMethod(nativeAudioNode);\n }\n\n AUDIO_NODE_STORE.set(this, nativeAudioNode);\n EVENT_LISTENERS.set(this, new Set());\n\n if (context.state !== 'closed' && isActive) {\n setInternalStateToActive(this);\n }\n\n addAudioNodeConnections(this, audioNodeRenderer, nativeAudioNode);\n }\n\n get channelCount(): number {\n return this._nativeAudioNode.channelCount;\n }\n\n set channelCount(value) {\n this._nativeAudioNode.channelCount = value;\n }\n\n get channelCountMode(): TChannelCountMode {\n return this._nativeAudioNode.channelCountMode;\n }\n\n set channelCountMode(value) {\n this._nativeAudioNode.channelCountMode = value;\n }\n\n get channelInterpretation(): TChannelInterpretation {\n return this._nativeAudioNode.channelInterpretation;\n }\n\n set channelInterpretation(value) {\n this._nativeAudioNode.channelInterpretation = value;\n }\n\n get context(): T {\n return this._context;\n }\n\n get numberOfInputs(): number {\n return this._nativeAudioNode.numberOfInputs;\n }\n\n get numberOfOutputs(): number {\n return this._nativeAudioNode.numberOfOutputs;\n }\n\n public connect>(destinationNode: V, output?: number, input?: number): V;\n public connect(destinationParam: IAudioParam, output?: number): void;\n // tslint:disable-next-line:invalid-void\n public connect>(destination: V | IAudioParam, output = 0, input = 0): void | V {\n // Bug #174: Safari does expose a wrong numberOfOutputs for MediaStreamAudioDestinationNodes.\n if (output < 0 || output >= this._nativeAudioNode.numberOfOutputs) {\n throw createIndexSizeError();\n }\n\n const nativeContext = getNativeContext(this._context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n\n if (isNativeAudioNode(destination) || isNativeAudioParam(destination)) {\n throw createInvalidAccessError();\n }\n\n if (isAudioNode(destination)) {\n const nativeDestinationAudioNode = getNativeAudioNode(destination);\n\n try {\n const connection = connectNativeAudioNodeToNativeAudioNode(\n this._nativeAudioNode,\n nativeDestinationAudioNode,\n output,\n input\n );\n\n const isPassive = isPassiveAudioNode(this);\n\n if (isOffline || isPassive) {\n this._nativeAudioNode.disconnect(...connection);\n }\n\n if (this.context.state !== 'closed' && !isPassive && isPassiveAudioNode(destination)) {\n setInternalStateToActive(destination);\n }\n } catch (err) {\n // Bug #41: Safari does not throw the correct exception so far.\n if (err.code === 12) {\n throw createInvalidAccessError();\n }\n\n throw err;\n }\n\n const isNewConnectionToAudioNode = addConnectionToAudioNode(\n this,\n >destination,\n output,\n input,\n isOffline\n );\n\n // Bug #164: Only Firefox detects cycles so far.\n if (isNewConnectionToAudioNode) {\n const cycles = detectCycles([this], >(destination));\n\n visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline));\n }\n\n return destination;\n }\n\n const nativeAudioParam = getNativeAudioParam(destination);\n\n /*\n * Bug #73, #147 & #153: Safari does not support to connect an input signal to the playbackRate AudioParam of an\n * AudioBufferSourceNode. This can't be easily detected and that's why the outdated name property is used here to identify\n * Safari. In addition to that the maxValue property is used to only detect the affected versions below v14.0.2.\n */\n if ((nativeAudioParam).name === 'playbackRate' && nativeAudioParam.maxValue === 1024) {\n throw createNotSupportedError();\n }\n\n try {\n this._nativeAudioNode.connect(nativeAudioParam, output);\n\n if (isOffline || isPassiveAudioNode(this)) {\n this._nativeAudioNode.disconnect(nativeAudioParam, output);\n }\n } catch (err) {\n // Bug #58: Safari doesn't throw an InvalidAccessError yet.\n if (err.code === 12) {\n throw createInvalidAccessError();\n }\n\n throw err;\n }\n\n const isNewConnectionToAudioParam = addConnectionToAudioParamOfAudioContext(this, destination, output, isOffline);\n\n // Bug #164: Only Firefox detects cycles so far.\n if (isNewConnectionToAudioParam) {\n const cycles = detectCycles([this], destination);\n\n visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline));\n }\n }\n\n public disconnect(output?: number): void;\n public disconnect(destinationNode: IAudioNode, output?: number, input?: number): void;\n public disconnect(destinationParam: IAudioParam, output?: number): void;\n public disconnect(\n destinationOrOutput?: number | IAudioNode | IAudioParam,\n output?: number,\n input?: number\n ): void {\n let destinations: (IAudioNode | IAudioParam)[];\n\n const nativeContext = getNativeContext(this._context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n\n if (destinationOrOutput === undefined) {\n destinations = deleteAnyConnection(this, isOffline);\n } else if (typeof destinationOrOutput === 'number') {\n if (destinationOrOutput < 0 || destinationOrOutput >= this.numberOfOutputs) {\n throw createIndexSizeError();\n }\n\n destinations = deleteConnectionAtOutput(this, isOffline, destinationOrOutput);\n } else {\n if (output !== undefined && (output < 0 || output >= this.numberOfOutputs)) {\n throw createIndexSizeError();\n }\n\n if (isAudioNode(destinationOrOutput) && input !== undefined && (input < 0 || input >= destinationOrOutput.numberOfInputs)) {\n throw createIndexSizeError();\n }\n\n destinations = deleteConnectionToDestination(this, isOffline, destinationOrOutput, output, input);\n\n if (destinations.length === 0) {\n throw createInvalidAccessError();\n }\n }\n\n // Bug #164: Only Firefox detects cycles so far.\n for (const destination of destinations) {\n const cycles = detectCycles([this], destination);\n\n visitEachAudioNodeOnce(cycles, decrementCycleCounter);\n }\n }\n };\n};\n","export const isAudioNode = (audioNodeOrAudioParam) => {\n return 'context' in audioNodeOrAudioParam;\n};\n//# sourceMappingURL=audio-node.js.map","import { IAudioNode, IAudioParam } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isAudioNode = (\n audioNodeOrAudioParam: IAudioNode | IAudioParam\n): audioNodeOrAudioParam is IAudioNode => {\n return 'context' in audioNodeOrAudioParam;\n};\n","import { isAudioNode } from './audio-node';\nexport const isAudioNodeOutputConnection = (outputConnection) => {\n return isAudioNode(outputConnection[0]);\n};\n//# sourceMappingURL=audio-node-output-connection.js.map","import { TAudioNodeOutputConnection, TContext, TOutputConnection } from '../types';\nimport { isAudioNode } from './audio-node';\n\nexport const isAudioNodeOutputConnection = (\n outputConnection: TOutputConnection\n): outputConnection is TAudioNodeOutputConnection => {\n return isAudioNode(outputConnection[0]);\n};\n","import { insertElementInSet } from './insert-element-in-set';\nexport const addActiveInputConnectionToAudioParam = (activeInputs, source, [output, eventListener], ignoreDuplicates) => {\n insertElementInSet(activeInputs, [source, output, eventListener], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output, ignoreDuplicates);\n};\n//# sourceMappingURL=add-active-input-connection-to-audio-param.js.map","import { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection, TContext, TPassiveAudioParamInputConnection } from '../types';\nimport { insertElementInSet } from './insert-element-in-set';\n\nexport const addActiveInputConnectionToAudioParam = (\n activeInputs: Set>,\n source: IAudioNode,\n [output, eventListener]: TPassiveAudioParamInputConnection,\n ignoreDuplicates: boolean\n) => {\n insertElementInSet(\n activeInputs,\n [source, output, eventListener],\n (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output,\n ignoreDuplicates\n );\n};\n","export const insertElementInSet = (set, element, predicate, ignoreDuplicates) => {\n for (const lmnt of set) {\n if (predicate(lmnt)) {\n if (ignoreDuplicates) {\n return false;\n }\n throw Error('The set contains at least one similar element.');\n }\n }\n set.add(element);\n return true;\n};\n//# sourceMappingURL=insert-element-in-set.js.map","import { TInsertElementInSetFunction } from '../types';\n\nexport const insertElementInSet: TInsertElementInSetFunction = (set, element, predicate, ignoreDuplicates) => {\n for (const lmnt of set) {\n if (predicate(lmnt)) {\n if (ignoreDuplicates) {\n return false;\n }\n\n throw Error('The set contains at least one similar element.');\n }\n }\n\n set.add(element);\n\n return true;\n};\n","import { insertElementInSet } from './insert-element-in-set';\nexport const addPassiveInputConnectionToAudioParam = (passiveInputs, [source, output, eventListener], ignoreDuplicates) => {\n const passiveInputConnections = passiveInputs.get(source);\n if (passiveInputConnections === undefined) {\n passiveInputs.set(source, new Set([[output, eventListener]]));\n }\n else {\n insertElementInSet(passiveInputConnections, [output, eventListener], (passiveInputConnection) => passiveInputConnection[0] === output, ignoreDuplicates);\n }\n};\n//# sourceMappingURL=add-passive-input-connection-to-audio-param.js.map","import { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection, TContext, TPassiveAudioParamInputConnection } from '../types';\nimport { insertElementInSet } from './insert-element-in-set';\n\nexport const addPassiveInputConnectionToAudioParam = (\n passiveInputs: WeakMap, Set>,\n [source, output, eventListener]: TActiveInputConnection,\n ignoreDuplicates: boolean\n) => {\n const passiveInputConnections = passiveInputs.get(source);\n\n if (passiveInputConnections === undefined) {\n passiveInputs.set(source, new Set([[output, eventListener]]));\n } else {\n insertElementInSet(\n passiveInputConnections,\n [output, eventListener],\n (passiveInputConnection) => passiveInputConnection[0] === output,\n ignoreDuplicates\n );\n }\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nexport const connectNativeAudioNodeToNativeAudioNode = (nativeSourceAudioNode, nativeDestinationAudioNode, output, input) => {\n if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) {\n const fakeNativeDestinationAudioNode = nativeDestinationAudioNode.inputs[input];\n nativeSourceAudioNode.connect(fakeNativeDestinationAudioNode, output, 0);\n return [fakeNativeDestinationAudioNode, output, 0];\n }\n nativeSourceAudioNode.connect(nativeDestinationAudioNode, output, input);\n return [nativeDestinationAudioNode, output, input];\n};\n//# sourceMappingURL=connect-native-audio-node-to-native-audio-node.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { INativeAudioNodeFaker } from '../interfaces';\nimport { TConnectNativeAudioNodeToNativeAudioNodeFunction, TNativeAudioNode } from '../types';\n\nexport const connectNativeAudioNodeToNativeAudioNode: TConnectNativeAudioNodeToNativeAudioNodeFunction = (\n nativeSourceAudioNode: INativeAudioNodeFaker | TNativeAudioNode,\n nativeDestinationAudioNode: INativeAudioNodeFaker | TNativeAudioNode,\n output: number,\n input: number\n): [TNativeAudioNode, number, number] => {\n if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) {\n const fakeNativeDestinationAudioNode = nativeDestinationAudioNode.inputs[input];\n\n nativeSourceAudioNode.connect(fakeNativeDestinationAudioNode, output, 0);\n\n return [fakeNativeDestinationAudioNode, output, 0];\n }\n\n nativeSourceAudioNode.connect(nativeDestinationAudioNode, output, input);\n\n return [nativeDestinationAudioNode, output, input];\n};\n","export const isNativeAudioNodeFaker = (nativeAudioNodeOrNativeAudioNodeFaker) => {\n return 'inputs' in nativeAudioNodeOrNativeAudioNodeFaker;\n};\n//# sourceMappingURL=native-audio-node-faker.js.map","import { INativeAudioNodeFaker } from '../interfaces';\nimport { TNativeAudioNode } from '../types';\n\nexport const isNativeAudioNodeFaker = (\n nativeAudioNodeOrNativeAudioNodeFaker: TNativeAudioNode | INativeAudioNodeFaker\n): nativeAudioNodeOrNativeAudioNodeFaker is INativeAudioNodeFaker => {\n return 'inputs' in nativeAudioNodeOrNativeAudioNodeFaker;\n};\n","export const deleteActiveInputConnection = (activeInputConnections, source, output) => {\n for (const activeInputConnection of activeInputConnections) {\n if (activeInputConnection[0] === source && activeInputConnection[1] === output) {\n activeInputConnections.delete(activeInputConnection);\n return activeInputConnection;\n }\n }\n return null;\n};\n//# sourceMappingURL=delete-active-input-connection.js.map","import { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection, TContext } from '../types';\n\nexport const deleteActiveInputConnection = (\n activeInputConnections: Set>,\n source: IAudioNode,\n output: number\n): null | TActiveInputConnection => {\n for (const activeInputConnection of activeInputConnections) {\n if (activeInputConnection[0] === source && activeInputConnection[1] === output) {\n activeInputConnections.delete(activeInputConnection);\n\n return activeInputConnection;\n }\n }\n\n return null;\n};\n","import { pickElementFromSet } from './pick-element-from-set';\nexport const deleteActiveInputConnectionToAudioParam = (activeInputs, source, output) => {\n return pickElementFromSet(activeInputs, (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output);\n};\n//# sourceMappingURL=delete-active-input-connection-to-audio-param.js.map","import { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection, TContext } from '../types';\nimport { pickElementFromSet } from './pick-element-from-set';\n\nexport const deleteActiveInputConnectionToAudioParam = (\n activeInputs: Set>,\n source: IAudioNode,\n output: number\n) => {\n return pickElementFromSet(\n activeInputs,\n (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output\n );\n};\n","import { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\nexport const deleteEventListenerOfAudioNode = (audioNode, eventListener) => {\n const eventListeners = getEventListenersOfAudioNode(audioNode);\n if (!eventListeners.delete(eventListener)) {\n throw new Error('Missing the expected event listener.');\n }\n};\n//# sourceMappingURL=delete-event-listeners-of-audio-node.js.map","import { IAudioNode } from '../interfaces';\nimport { TContext, TInternalStateEventListener } from '../types';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\n\nexport const deleteEventListenerOfAudioNode = (\n audioNode: IAudioNode,\n eventListener: TInternalStateEventListener\n) => {\n const eventListeners = getEventListenersOfAudioNode(audioNode);\n\n if (!eventListeners.delete(eventListener)) {\n throw new Error('Missing the expected event listener.');\n }\n};\n","import { getValueForKey } from './get-value-for-key';\nimport { pickElementFromSet } from './pick-element-from-set';\nexport const deletePassiveInputConnectionToAudioParam = (passiveInputs, source, output) => {\n const passiveInputConnections = getValueForKey(passiveInputs, source);\n const matchingConnection = pickElementFromSet(passiveInputConnections, (passiveInputConnection) => passiveInputConnection[0] === output);\n if (passiveInputConnections.size === 0) {\n passiveInputs.delete(source);\n }\n return matchingConnection;\n};\n//# sourceMappingURL=delete-passive-input-connection-to-audio-param.js.map","import { IAudioNode } from '../interfaces';\nimport { TContext, TPassiveAudioParamInputConnection } from '../types';\nimport { getValueForKey } from './get-value-for-key';\nimport { pickElementFromSet } from './pick-element-from-set';\n\nexport const deletePassiveInputConnectionToAudioParam = (\n passiveInputs: WeakMap, Set>,\n source: IAudioNode,\n output: number\n) => {\n const passiveInputConnections = getValueForKey(passiveInputs, source);\n const matchingConnection = pickElementFromSet(\n passiveInputConnections,\n (passiveInputConnection) => passiveInputConnection[0] === output\n );\n\n if (passiveInputConnections.size === 0) {\n passiveInputs.delete(source);\n }\n\n return matchingConnection;\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nexport const disconnectNativeAudioNodeFromNativeAudioNode = (nativeSourceAudioNode, nativeDestinationAudioNode, output, input) => {\n if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) {\n nativeSourceAudioNode.disconnect(nativeDestinationAudioNode.inputs[input], output, 0);\n }\n else {\n nativeSourceAudioNode.disconnect(nativeDestinationAudioNode, output, input);\n }\n};\n//# sourceMappingURL=disconnect-native-audio-node-from-native-audio-node.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { TDisconnectNativeAudioNodeFromNativeAudioNodeFunction } from '../types';\n\nexport const disconnectNativeAudioNodeFromNativeAudioNode: TDisconnectNativeAudioNodeFromNativeAudioNodeFunction = (\n nativeSourceAudioNode,\n nativeDestinationAudioNode,\n output,\n input\n) => {\n if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) {\n nativeSourceAudioNode.disconnect(nativeDestinationAudioNode.inputs[input], output, 0);\n } else {\n nativeSourceAudioNode.disconnect(nativeDestinationAudioNode, output, input);\n }\n};\n","import { AUDIO_NODE_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getNativeAudioNode = (audioNode) => {\n return getValueForKey(AUDIO_NODE_STORE, audioNode);\n};\n//# sourceMappingURL=get-native-audio-node.js.map","import { AUDIO_NODE_STORE } from '../globals';\nimport { IAudioNode, INativeAudioNodeFaker } from '../interfaces';\nimport { TContext, TGetNativeAudioNodeFunction, TNativeAudioNode } from '../types';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getNativeAudioNode: TGetNativeAudioNodeFunction = (\n audioNode: IAudioNode\n): U => {\n return getValueForKey(AUDIO_NODE_STORE, audioNode);\n};\n","import { AUDIO_PARAM_STORE } from '../globals';\nimport { getValueForKey } from './get-value-for-key';\nexport const getNativeAudioParam = (audioParam) => {\n return getValueForKey(AUDIO_PARAM_STORE, audioParam);\n};\n//# sourceMappingURL=get-native-audio-param.js.map","import { AUDIO_PARAM_STORE } from '../globals';\nimport { IAudioParam } from '../interfaces';\nimport { TNativeAudioParam } from '../types';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getNativeAudioParam = (audioParam: IAudioParam): TNativeAudioParam => {\n return getValueForKey(AUDIO_PARAM_STORE, audioParam);\n};\n","import { CYCLE_COUNTERS } from '../globals';\nexport const isPartOfACycle = (audioNode) => {\n return CYCLE_COUNTERS.has(audioNode);\n};\n//# sourceMappingURL=is-part-of-a-cycle.js.map","import { CYCLE_COUNTERS } from '../globals';\nimport { TIsPartOfACycleFunction } from '../types';\n\nexport const isPartOfACycle: TIsPartOfACycleFunction = (audioNode) => {\n return CYCLE_COUNTERS.has(audioNode);\n};\n","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nexport const isPassiveAudioNode = (audioNode) => {\n return !ACTIVE_AUDIO_NODE_STORE.has(audioNode);\n};\n//# sourceMappingURL=is-passive-audio-node.js.map","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { TIsPassiveAudioNodeFunction } from '../types';\n\nexport const isPassiveAudioNode: TIsPassiveAudioNodeFunction = (audioNode) => {\n return !ACTIVE_AUDIO_NODE_STORE.has(audioNode);\n};\n","export const testAudioNodeDisconnectMethodSupport = (nativeAudioContext, nativeAudioWorkletNodeConstructor) => {\n return new Promise((resolve) => {\n /*\n * This bug existed in Safari up until v14.0.2. Since AudioWorklets were not supported in Safari until v14.1 the presence of the\n * constructor for an AudioWorkletNode can be used here to skip the test.\n */\n if (nativeAudioWorkletNodeConstructor !== null) {\n resolve(true);\n }\n else {\n const analyzer = nativeAudioContext.createScriptProcessor(256, 1, 1); // tslint:disable-line deprecation\n const dummy = nativeAudioContext.createGain();\n // Bug #95: Safari does not play one sample buffers.\n const ones = nativeAudioContext.createBuffer(1, 2, 44100);\n const channelData = ones.getChannelData(0);\n channelData[0] = 1;\n channelData[1] = 1;\n const source = nativeAudioContext.createBufferSource();\n source.buffer = ones;\n source.loop = true;\n source.connect(analyzer).connect(nativeAudioContext.destination);\n source.connect(dummy);\n source.disconnect(dummy);\n // tslint:disable-next-line:deprecation\n analyzer.onaudioprocess = (event) => {\n const chnnlDt = event.inputBuffer.getChannelData(0); // tslint:disable-line deprecation\n if (Array.prototype.some.call(chnnlDt, (sample) => sample === 1)) {\n resolve(true);\n }\n else {\n resolve(false);\n }\n source.stop();\n analyzer.onaudioprocess = null; // tslint:disable-line:deprecation\n source.disconnect(analyzer);\n analyzer.disconnect(nativeAudioContext.destination);\n };\n source.start();\n }\n });\n};\n//# sourceMappingURL=test-audio-node-disconnect-method-support.js.map","import { TNativeAudioContext, TNativeAudioWorkletNodeConstructor } from '../types';\n\nexport const testAudioNodeDisconnectMethodSupport = (\n nativeAudioContext: TNativeAudioContext,\n nativeAudioWorkletNodeConstructor: null | TNativeAudioWorkletNodeConstructor\n): Promise => {\n return new Promise((resolve) => {\n /*\n * This bug existed in Safari up until v14.0.2. Since AudioWorklets were not supported in Safari until v14.1 the presence of the\n * constructor for an AudioWorkletNode can be used here to skip the test.\n */\n if (nativeAudioWorkletNodeConstructor !== null) {\n resolve(true);\n } else {\n const analyzer = nativeAudioContext.createScriptProcessor(256, 1, 1); // tslint:disable-line deprecation\n const dummy = nativeAudioContext.createGain();\n // Bug #95: Safari does not play one sample buffers.\n const ones = nativeAudioContext.createBuffer(1, 2, 44100);\n const channelData = ones.getChannelData(0);\n\n channelData[0] = 1;\n channelData[1] = 1;\n\n const source = nativeAudioContext.createBufferSource();\n\n source.buffer = ones;\n source.loop = true;\n\n source.connect(analyzer).connect(nativeAudioContext.destination);\n source.connect(dummy);\n source.disconnect(dummy);\n\n // tslint:disable-next-line:deprecation\n analyzer.onaudioprocess = (event) => {\n const chnnlDt = event.inputBuffer.getChannelData(0); // tslint:disable-line deprecation\n\n if (Array.prototype.some.call(chnnlDt, (sample: number) => sample === 1)) {\n resolve(true);\n } else {\n resolve(false);\n }\n\n source.stop();\n\n analyzer.onaudioprocess = null; // tslint:disable-line:deprecation\n\n source.disconnect(analyzer);\n analyzer.disconnect(nativeAudioContext.destination);\n };\n\n source.start();\n }\n });\n};\n","export const visitEachAudioNodeOnce = (cycles, visitor) => {\n const counts = new Map();\n for (const cycle of cycles) {\n for (const audioNode of cycle) {\n const count = counts.get(audioNode);\n counts.set(audioNode, count === undefined ? 1 : count + 1);\n }\n }\n counts.forEach((count, audioNode) => visitor(audioNode, count));\n};\n//# sourceMappingURL=visit-each-audio-node-once.js.map","import { IAudioNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const visitEachAudioNodeOnce = (\n cycles: IAudioNode[][],\n visitor: (audioNode: IAudioNode, count: number) => void\n): void => {\n const counts = new Map, number>();\n\n for (const cycle of cycles) {\n for (const audioNode of cycle) {\n const count = counts.get(audioNode);\n\n counts.set(audioNode, count === undefined ? 1 : count + 1);\n }\n }\n\n counts.forEach((count, audioNode) => visitor(audioNode, count));\n};\n","import { isNativeAudioNode } from '../guards/native-audio-node';\nexport const wrapAudioNodeDisconnectMethod = (nativeAudioNode) => {\n const connections = new Map();\n nativeAudioNode.connect = ((connect) => {\n // tslint:disable-next-line:invalid-void no-inferrable-types\n return (destination, output = 0, input = 0) => {\n const returnValue = isNativeAudioNode(destination) ? connect(destination, output, input) : connect(destination, output);\n // Save the new connection only if the calls to connect above didn't throw an error.\n const connectionsToDestination = connections.get(destination);\n if (connectionsToDestination === undefined) {\n connections.set(destination, [{ input, output }]);\n }\n else {\n if (connectionsToDestination.every((connection) => connection.input !== input || connection.output !== output)) {\n connectionsToDestination.push({ input, output });\n }\n }\n return returnValue;\n };\n })(nativeAudioNode.connect.bind(nativeAudioNode));\n nativeAudioNode.disconnect = ((disconnect) => {\n return (destinationOrOutput, output, input) => {\n disconnect.apply(nativeAudioNode);\n if (destinationOrOutput === undefined) {\n connections.clear();\n }\n else if (typeof destinationOrOutput === 'number') {\n for (const [destination, connectionsToDestination] of connections) {\n const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== destinationOrOutput);\n if (filteredConnections.length === 0) {\n connections.delete(destination);\n }\n else {\n connections.set(destination, filteredConnections);\n }\n }\n }\n else if (connections.has(destinationOrOutput)) {\n if (output === undefined) {\n connections.delete(destinationOrOutput);\n }\n else {\n const connectionsToDestination = connections.get(destinationOrOutput);\n if (connectionsToDestination !== undefined) {\n const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== output && (connection.input !== input || input === undefined));\n if (filteredConnections.length === 0) {\n connections.delete(destinationOrOutput);\n }\n else {\n connections.set(destinationOrOutput, filteredConnections);\n }\n }\n }\n }\n for (const [destination, connectionsToDestination] of connections) {\n connectionsToDestination.forEach((connection) => {\n if (isNativeAudioNode(destination)) {\n nativeAudioNode.connect(destination, connection.output, connection.input);\n }\n else {\n nativeAudioNode.connect(destination, connection.output);\n }\n });\n }\n };\n })(nativeAudioNode.disconnect);\n};\n//# sourceMappingURL=wrap-audio-node-disconnect-method.js.map","import { isNativeAudioNode } from '../guards/native-audio-node';\nimport { TNativeAudioNode, TNativeAudioParam } from '../types';\n\nexport const wrapAudioNodeDisconnectMethod = (nativeAudioNode: TNativeAudioNode): void => {\n const connections = new Map();\n\n nativeAudioNode.connect = ((connect) => {\n // tslint:disable-next-line:invalid-void no-inferrable-types\n return (destination: TNativeAudioNode | TNativeAudioParam, output = 0, input: number = 0): void | TNativeAudioNode => {\n const returnValue = isNativeAudioNode(destination) ? connect(destination, output, input) : connect(destination, output);\n\n // Save the new connection only if the calls to connect above didn't throw an error.\n const connectionsToDestination = connections.get(destination);\n\n if (connectionsToDestination === undefined) {\n connections.set(destination, [{ input, output }]);\n } else {\n if (connectionsToDestination.every((connection) => connection.input !== input || connection.output !== output)) {\n connectionsToDestination.push({ input, output });\n }\n }\n\n return returnValue;\n };\n })(nativeAudioNode.connect.bind(nativeAudioNode));\n\n nativeAudioNode.disconnect = ((disconnect) => {\n return (destinationOrOutput?: number | TNativeAudioNode | TNativeAudioParam, output?: number, input?: number): void => {\n disconnect.apply(nativeAudioNode);\n\n if (destinationOrOutput === undefined) {\n connections.clear();\n } else if (typeof destinationOrOutput === 'number') {\n for (const [destination, connectionsToDestination] of connections) {\n const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== destinationOrOutput);\n\n if (filteredConnections.length === 0) {\n connections.delete(destination);\n } else {\n connections.set(destination, filteredConnections);\n }\n }\n } else if (connections.has(destinationOrOutput)) {\n if (output === undefined) {\n connections.delete(destinationOrOutput);\n } else {\n const connectionsToDestination = connections.get(destinationOrOutput);\n\n if (connectionsToDestination !== undefined) {\n const filteredConnections = connectionsToDestination.filter(\n (connection) => connection.output !== output && (connection.input !== input || input === undefined)\n );\n\n if (filteredConnections.length === 0) {\n connections.delete(destinationOrOutput);\n } else {\n connections.set(destinationOrOutput, filteredConnections);\n }\n }\n }\n }\n\n for (const [destination, connectionsToDestination] of connections) {\n connectionsToDestination.forEach((connection) => {\n if (isNativeAudioNode(destination)) {\n nativeAudioNode.connect(destination, connection.output, connection.input);\n } else {\n nativeAudioNode.connect(destination, connection.output);\n }\n });\n }\n };\n })(nativeAudioNode.disconnect);\n};\n","export const isNativeAudioNode = (nativeAudioNodeOrAudioParam) => {\n return 'context' in nativeAudioNodeOrAudioParam;\n};\n//# sourceMappingURL=native-audio-node.js.map","import { TNativeAudioNode, TNativeAudioParam } from '../types';\n\nexport const isNativeAudioNode = (\n nativeAudioNodeOrAudioParam: TNativeAudioNode | TNativeAudioParam\n): nativeAudioNodeOrAudioParam is TNativeAudioNode => {\n return 'context' in nativeAudioNodeOrAudioParam;\n};\n","import { AutomationEventList } from 'automation-events';\nexport const createAudioParamFactory = (addAudioParamConnections, audioParamAudioNodeStore, audioParamStore, createAudioParamRenderer, createCancelAndHoldAutomationEvent, createCancelScheduledValuesAutomationEvent, createExponentialRampToValueAutomationEvent, createLinearRampToValueAutomationEvent, createSetTargetAutomationEvent, createSetValueAutomationEvent, createSetValueCurveAutomationEvent, nativeAudioContextConstructor, setValueAtTimeUntilPossible) => {\n return (audioNode, isAudioParamOfOfflineAudioContext, nativeAudioParam, maxValue = null, minValue = null) => {\n const automationEventList = new AutomationEventList(nativeAudioParam.defaultValue);\n const audioParamRenderer = isAudioParamOfOfflineAudioContext ? createAudioParamRenderer(automationEventList) : null;\n const audioParam = {\n get defaultValue() {\n return nativeAudioParam.defaultValue;\n },\n get maxValue() {\n return maxValue === null ? nativeAudioParam.maxValue : maxValue;\n },\n get minValue() {\n return minValue === null ? nativeAudioParam.minValue : minValue;\n },\n get value() {\n return nativeAudioParam.value;\n },\n set value(value) {\n nativeAudioParam.value = value;\n // Bug #98: Firefox & Safari do not yet treat the value setter like a call to setValueAtTime().\n audioParam.setValueAtTime(value, audioNode.context.currentTime);\n },\n cancelAndHoldAtTime(cancelTime) {\n // Bug #28: Firefox & Safari do not yet implement cancelAndHoldAtTime().\n if (typeof nativeAudioParam.cancelAndHoldAtTime === 'function') {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime));\n nativeAudioParam.cancelAndHoldAtTime(cancelTime);\n }\n else {\n const previousLastEvent = Array.from(automationEventList).pop();\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime));\n const currentLastEvent = Array.from(automationEventList).pop();\n nativeAudioParam.cancelScheduledValues(cancelTime);\n if (previousLastEvent !== currentLastEvent && currentLastEvent !== undefined) {\n if (currentLastEvent.type === 'exponentialRampToValue') {\n nativeAudioParam.exponentialRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime);\n }\n else if (currentLastEvent.type === 'linearRampToValue') {\n nativeAudioParam.linearRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime);\n }\n else if (currentLastEvent.type === 'setValue') {\n nativeAudioParam.setValueAtTime(currentLastEvent.value, currentLastEvent.startTime);\n }\n else if (currentLastEvent.type === 'setValueCurve') {\n nativeAudioParam.setValueCurveAtTime(currentLastEvent.values, currentLastEvent.startTime, currentLastEvent.duration);\n }\n }\n }\n return audioParam;\n },\n cancelScheduledValues(cancelTime) {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createCancelScheduledValuesAutomationEvent(cancelTime));\n nativeAudioParam.cancelScheduledValues(cancelTime);\n return audioParam;\n },\n exponentialRampToValueAtTime(value, endTime) {\n // Bug #45: Safari does not throw an error yet.\n if (value === 0) {\n throw new RangeError();\n }\n // Bug #187: Safari does not throw an error yet.\n if (!Number.isFinite(endTime) || endTime < 0) {\n throw new RangeError();\n }\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createExponentialRampToValueAutomationEvent(value, endTime));\n nativeAudioParam.exponentialRampToValueAtTime(value, endTime);\n return audioParam;\n },\n linearRampToValueAtTime(value, endTime) {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createLinearRampToValueAutomationEvent(value, endTime));\n nativeAudioParam.linearRampToValueAtTime(value, endTime);\n return audioParam;\n },\n setTargetAtTime(target, startTime, timeConstant) {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetTargetAutomationEvent(target, startTime, timeConstant));\n nativeAudioParam.setTargetAtTime(target, startTime, timeConstant);\n return audioParam;\n },\n setValueAtTime(value, startTime) {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetValueAutomationEvent(value, startTime));\n nativeAudioParam.setValueAtTime(value, startTime);\n return audioParam;\n },\n setValueCurveAtTime(values, startTime, duration) {\n // Bug 183: Safari only accepts a Float32Array.\n const convertedValues = values instanceof Float32Array ? values : new Float32Array(values);\n /*\n * Bug #152: Safari does not correctly interpolate the values of the curve.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the\n * existence of the webkitAudioContext is used as a workaround here.\n */\n if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') {\n const endTime = startTime + duration;\n const sampleRate = audioNode.context.sampleRate;\n const firstSample = Math.ceil(startTime * sampleRate);\n const lastSample = Math.floor(endTime * sampleRate);\n const numberOfInterpolatedValues = lastSample - firstSample;\n const interpolatedValues = new Float32Array(numberOfInterpolatedValues);\n for (let i = 0; i < numberOfInterpolatedValues; i += 1) {\n const theoreticIndex = ((convertedValues.length - 1) / duration) * ((firstSample + i) / sampleRate - startTime);\n const lowerIndex = Math.floor(theoreticIndex);\n const upperIndex = Math.ceil(theoreticIndex);\n interpolatedValues[i] =\n lowerIndex === upperIndex\n ? convertedValues[lowerIndex]\n : (1 - (theoreticIndex - lowerIndex)) * convertedValues[lowerIndex] +\n (1 - (upperIndex - theoreticIndex)) * convertedValues[upperIndex];\n }\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetValueCurveAutomationEvent(interpolatedValues, startTime, duration));\n nativeAudioParam.setValueCurveAtTime(interpolatedValues, startTime, duration);\n const timeOfLastSample = lastSample / sampleRate;\n if (timeOfLastSample < endTime) {\n setValueAtTimeUntilPossible(audioParam, interpolatedValues[interpolatedValues.length - 1], timeOfLastSample);\n }\n setValueAtTimeUntilPossible(audioParam, convertedValues[convertedValues.length - 1], endTime);\n }\n else {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n automationEventList.add(createSetValueCurveAutomationEvent(convertedValues, startTime, duration));\n nativeAudioParam.setValueCurveAtTime(convertedValues, startTime, duration);\n }\n return audioParam;\n }\n };\n audioParamStore.set(audioParam, nativeAudioParam);\n audioParamAudioNodeStore.set(audioParam, audioNode);\n addAudioParamConnections(audioParam, audioParamRenderer);\n return audioParam;\n };\n};\n//# sourceMappingURL=audio-param-factory.js.map","import { AutomationEventList } from 'automation-events';\nimport { IAudioNode, IAudioParam, IAudioParamRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TAudioParamFactoryFactory, TContext, TNativeAudioParam } from '../types';\n\nexport const createAudioParamFactory: TAudioParamFactoryFactory = (\n addAudioParamConnections,\n audioParamAudioNodeStore,\n audioParamStore,\n createAudioParamRenderer,\n createCancelAndHoldAutomationEvent,\n createCancelScheduledValuesAutomationEvent,\n createExponentialRampToValueAutomationEvent,\n createLinearRampToValueAutomationEvent,\n createSetTargetAutomationEvent,\n createSetValueAutomationEvent,\n createSetValueCurveAutomationEvent,\n nativeAudioContextConstructor,\n setValueAtTimeUntilPossible\n) => {\n return (\n audioNode: IAudioNode,\n isAudioParamOfOfflineAudioContext: boolean,\n nativeAudioParam: TNativeAudioParam,\n maxValue: null | number = null,\n minValue: null | number = null\n ): IAudioParam => {\n const automationEventList = new AutomationEventList(nativeAudioParam.defaultValue);\n const audioParamRenderer = isAudioParamOfOfflineAudioContext ? createAudioParamRenderer(automationEventList) : null;\n const audioParam = {\n get defaultValue(): number {\n return nativeAudioParam.defaultValue;\n },\n get maxValue(): number {\n return maxValue === null ? nativeAudioParam.maxValue : maxValue;\n },\n get minValue(): number {\n return minValue === null ? nativeAudioParam.minValue : minValue;\n },\n get value(): number {\n return nativeAudioParam.value;\n },\n set value(value) {\n nativeAudioParam.value = value;\n\n // Bug #98: Firefox & Safari do not yet treat the value setter like a call to setValueAtTime().\n audioParam.setValueAtTime(value, audioNode.context.currentTime);\n },\n cancelAndHoldAtTime(cancelTime: number): IAudioParam {\n // Bug #28: Firefox & Safari do not yet implement cancelAndHoldAtTime().\n if (typeof nativeAudioParam.cancelAndHoldAtTime === 'function') {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime));\n nativeAudioParam.cancelAndHoldAtTime(cancelTime);\n } else {\n const previousLastEvent = Array.from(automationEventList).pop();\n\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime));\n\n const currentLastEvent = Array.from(automationEventList).pop();\n\n nativeAudioParam.cancelScheduledValues(cancelTime);\n\n if (previousLastEvent !== currentLastEvent && currentLastEvent !== undefined) {\n if (currentLastEvent.type === 'exponentialRampToValue') {\n nativeAudioParam.exponentialRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime);\n } else if (currentLastEvent.type === 'linearRampToValue') {\n nativeAudioParam.linearRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime);\n } else if (currentLastEvent.type === 'setValue') {\n nativeAudioParam.setValueAtTime(currentLastEvent.value, currentLastEvent.startTime);\n } else if (currentLastEvent.type === 'setValueCurve') {\n nativeAudioParam.setValueCurveAtTime(\n currentLastEvent.values,\n currentLastEvent.startTime,\n currentLastEvent.duration\n );\n }\n }\n }\n\n return audioParam;\n },\n cancelScheduledValues(cancelTime: number): IAudioParam {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createCancelScheduledValuesAutomationEvent(cancelTime));\n nativeAudioParam.cancelScheduledValues(cancelTime);\n\n return audioParam;\n },\n exponentialRampToValueAtTime(value: number, endTime: number): IAudioParam {\n // Bug #45: Safari does not throw an error yet.\n if (value === 0) {\n throw new RangeError();\n }\n\n // Bug #187: Safari does not throw an error yet.\n if (!Number.isFinite(endTime) || endTime < 0) {\n throw new RangeError();\n }\n\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createExponentialRampToValueAutomationEvent(value, endTime));\n nativeAudioParam.exponentialRampToValueAtTime(value, endTime);\n\n return audioParam;\n },\n linearRampToValueAtTime(value: number, endTime: number): IAudioParam {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createLinearRampToValueAutomationEvent(value, endTime));\n nativeAudioParam.linearRampToValueAtTime(value, endTime);\n\n return audioParam;\n },\n setTargetAtTime(target: number, startTime: number, timeConstant: number): IAudioParam {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createSetTargetAutomationEvent(target, startTime, timeConstant));\n nativeAudioParam.setTargetAtTime(target, startTime, timeConstant);\n\n return audioParam;\n },\n setValueAtTime(value: number, startTime: number): IAudioParam {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createSetValueAutomationEvent(value, startTime));\n nativeAudioParam.setValueAtTime(value, startTime);\n\n return audioParam;\n },\n setValueCurveAtTime(values: Iterable, startTime: number, duration: number): IAudioParam {\n // Bug 183: Safari only accepts a Float32Array.\n const convertedValues = values instanceof Float32Array ? values : new Float32Array(values);\n /*\n * Bug #152: Safari does not correctly interpolate the values of the curve.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the\n * existence of the webkitAudioContext is used as a workaround here.\n */\n if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') {\n const endTime = startTime + duration;\n const sampleRate = audioNode.context.sampleRate;\n const firstSample = Math.ceil(startTime * sampleRate);\n const lastSample = Math.floor(endTime * sampleRate);\n const numberOfInterpolatedValues = lastSample - firstSample;\n const interpolatedValues = new Float32Array(numberOfInterpolatedValues);\n\n for (let i = 0; i < numberOfInterpolatedValues; i += 1) {\n const theoreticIndex = ((convertedValues.length - 1) / duration) * ((firstSample + i) / sampleRate - startTime);\n const lowerIndex = Math.floor(theoreticIndex);\n const upperIndex = Math.ceil(theoreticIndex);\n\n interpolatedValues[i] =\n lowerIndex === upperIndex\n ? convertedValues[lowerIndex]\n : (1 - (theoreticIndex - lowerIndex)) * convertedValues[lowerIndex] +\n (1 - (upperIndex - theoreticIndex)) * convertedValues[upperIndex];\n }\n\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createSetValueCurveAutomationEvent(interpolatedValues, startTime, duration));\n nativeAudioParam.setValueCurveAtTime(interpolatedValues, startTime, duration);\n\n const timeOfLastSample = lastSample / sampleRate;\n\n if (timeOfLastSample < endTime) {\n setValueAtTimeUntilPossible(audioParam, interpolatedValues[interpolatedValues.length - 1], timeOfLastSample);\n }\n\n setValueAtTimeUntilPossible(audioParam, convertedValues[convertedValues.length - 1], endTime);\n } else {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createSetValueCurveAutomationEvent(convertedValues, startTime, duration));\n nativeAudioParam.setValueCurveAtTime(convertedValues, startTime, duration);\n }\n\n return audioParam;\n }\n };\n\n audioParamStore.set(audioParam, nativeAudioParam);\n audioParamAudioNodeStore.set(audioParam, audioNode);\n\n addAudioParamConnections(\n audioParam,\n audioParamRenderer\n );\n\n return audioParam;\n };\n};\n","export const createAudioParamRenderer = (automationEventList) => {\n return {\n replay(audioParam) {\n for (const automationEvent of automationEventList) {\n if (automationEvent.type === 'exponentialRampToValue') {\n const { endTime, value } = automationEvent;\n audioParam.exponentialRampToValueAtTime(value, endTime);\n }\n else if (automationEvent.type === 'linearRampToValue') {\n const { endTime, value } = automationEvent;\n audioParam.linearRampToValueAtTime(value, endTime);\n }\n else if (automationEvent.type === 'setTarget') {\n const { startTime, target, timeConstant } = automationEvent;\n audioParam.setTargetAtTime(target, startTime, timeConstant);\n }\n else if (automationEvent.type === 'setValue') {\n const { startTime, value } = automationEvent;\n audioParam.setValueAtTime(value, startTime);\n }\n else if (automationEvent.type === 'setValueCurve') {\n const { duration, startTime, values } = automationEvent;\n audioParam.setValueCurveAtTime(values, startTime, duration);\n }\n else {\n throw new Error(\"Can't apply an unknown automation.\");\n }\n }\n }\n };\n};\n//# sourceMappingURL=audio-param-renderer.js.map","import { TAudioParamRendererFactory, TNativeAudioParam } from '../types';\n\nexport const createAudioParamRenderer: TAudioParamRendererFactory = (automationEventList) => {\n return {\n replay(audioParam: TNativeAudioParam): void {\n for (const automationEvent of automationEventList) {\n if (automationEvent.type === 'exponentialRampToValue') {\n const { endTime, value } = automationEvent;\n\n audioParam.exponentialRampToValueAtTime(value, endTime);\n } else if (automationEvent.type === 'linearRampToValue') {\n const { endTime, value } = automationEvent;\n\n audioParam.linearRampToValueAtTime(value, endTime);\n } else if (automationEvent.type === 'setTarget') {\n const { startTime, target, timeConstant } = automationEvent;\n\n audioParam.setTargetAtTime(target, startTime, timeConstant);\n } else if (automationEvent.type === 'setValue') {\n const { startTime, value } = automationEvent;\n\n audioParam.setValueAtTime(value, startTime);\n } else if (automationEvent.type === 'setValueCurve') {\n const { duration, startTime, values } = automationEvent;\n\n audioParam.setValueCurveAtTime(values, startTime, duration);\n } else {\n throw new Error(\"Can't apply an unknown automation.\");\n }\n }\n }\n };\n};\n","import { NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS } from '../globals';\nimport { ReadOnlyMap } from '../read-only-map';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n // Bug #61: The channelCountMode should be 'max' according to the spec but is set to 'explicit' to achieve consistent behavior.\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 1,\n numberOfOutputs: 1,\n parameterData: {},\n processorOptions: {}\n};\nexport const createAudioWorkletNodeConstructor = (addUnrenderedAudioWorkletNode, audioNodeConstructor, createAudioParam, createAudioWorkletNodeRenderer, createNativeAudioWorkletNode, getAudioNodeConnections, getBackupOfflineAudioContext, getNativeContext, isNativeOfflineAudioContext, nativeAudioWorkletNodeConstructor, sanitizeAudioWorkletNodeOptions, setActiveAudioWorkletNodeInputs, testAudioWorkletNodeOptionsClonability, wrapEventListener) => {\n return class AudioWorkletNode extends audioNodeConstructor {\n constructor(context, name, options) {\n var _a;\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const mergedOptions = sanitizeAudioWorkletNodeOptions({ ...DEFAULT_OPTIONS, ...options });\n // Bug #191: Safari doesn't throw an error if the options aren't clonable.\n testAudioWorkletNodeOptionsClonability(mergedOptions);\n const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext);\n const processorConstructor = nodeNameToProcessorConstructorMap === null || nodeNameToProcessorConstructorMap === void 0 ? void 0 : nodeNameToProcessorConstructorMap.get(name);\n // Bug #186: Chrome, Edge and Opera do not allow to create an AudioWorkletNode on a closed AudioContext.\n const nativeContextOrBackupOfflineAudioContext = isOffline || nativeContext.state !== 'closed'\n ? nativeContext\n : (_a = getBackupOfflineAudioContext(nativeContext)) !== null && _a !== void 0 ? _a : nativeContext;\n const nativeAudioWorkletNode = createNativeAudioWorkletNode(nativeContextOrBackupOfflineAudioContext, isOffline ? null : context.baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, mergedOptions);\n const audioWorkletNodeRenderer = ((isOffline ? createAudioWorkletNodeRenderer(name, mergedOptions, processorConstructor) : null));\n /*\n * @todo Add a mechanism to switch an AudioWorkletNode to passive once the process() function of the AudioWorkletProcessor\n * returns false.\n */\n super(context, true, nativeAudioWorkletNode, audioWorkletNodeRenderer);\n const parameters = [];\n nativeAudioWorkletNode.parameters.forEach((nativeAudioParam, nm) => {\n const audioParam = createAudioParam(this, isOffline, nativeAudioParam);\n parameters.push([nm, audioParam]);\n });\n this._nativeAudioWorkletNode = nativeAudioWorkletNode;\n this._onprocessorerror = null;\n this._parameters = new ReadOnlyMap(parameters);\n /*\n * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to\n * the destination.\n */\n if (isOffline) {\n addUnrenderedAudioWorkletNode(nativeContext, this);\n }\n const { activeInputs } = getAudioNodeConnections(this);\n setActiveAudioWorkletNodeInputs(nativeAudioWorkletNode, activeInputs);\n }\n get onprocessorerror() {\n return this._onprocessorerror;\n }\n set onprocessorerror(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeAudioWorkletNode.onprocessorerror = wrappedListener;\n const nativeOnProcessorError = this._nativeAudioWorkletNode.onprocessorerror;\n this._onprocessorerror =\n nativeOnProcessorError !== null && nativeOnProcessorError === wrappedListener\n ? value\n : nativeOnProcessorError;\n }\n get parameters() {\n if (this._parameters === null) {\n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n return this._nativeAudioWorkletNode.parameters;\n }\n return this._parameters;\n }\n get port() {\n return this._nativeAudioWorkletNode.port;\n }\n };\n};\n//# sourceMappingURL=audio-worklet-node-constructor.js.map","import { NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS } from '../globals';\nimport {\n IAudioParam,\n IAudioWorkletNode,\n IAudioWorkletNodeEventMap,\n IAudioWorkletNodeOptions,\n IMinimalAudioContext,\n IMinimalOfflineAudioContext,\n IOfflineAudioContext,\n IReadOnlyMap\n} from '../interfaces';\nimport { ReadOnlyMap } from '../read-only-map';\nimport {\n TAudioNodeRenderer,\n TAudioParamMap,\n TAudioWorkletNodeConstructorFactory,\n TContext,\n TErrorEventHandler,\n TNativeAudioContext,\n TNativeAudioParam,\n TNativeAudioWorkletNode\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n // Bug #61: The channelCountMode should be 'max' according to the spec but is set to 'explicit' to achieve consistent behavior.\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 1,\n numberOfOutputs: 1,\n parameterData: {},\n processorOptions: {}\n} as const;\n\nexport const createAudioWorkletNodeConstructor: TAudioWorkletNodeConstructorFactory = (\n addUnrenderedAudioWorkletNode,\n audioNodeConstructor,\n createAudioParam,\n createAudioWorkletNodeRenderer,\n createNativeAudioWorkletNode,\n getAudioNodeConnections,\n getBackupOfflineAudioContext,\n getNativeContext,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor,\n sanitizeAudioWorkletNodeOptions,\n setActiveAudioWorkletNodeInputs,\n testAudioWorkletNodeOptionsClonability,\n wrapEventListener\n) => {\n return class AudioWorkletNode\n extends audioNodeConstructor\n implements IAudioWorkletNode\n {\n private _nativeAudioWorkletNode: TNativeAudioWorkletNode;\n\n private _onprocessorerror: null | TErrorEventHandler;\n\n private _parameters: null | TAudioParamMap;\n\n constructor(context: T, name: string, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const mergedOptions = sanitizeAudioWorkletNodeOptions({ ...DEFAULT_OPTIONS, ...options });\n\n // Bug #191: Safari doesn't throw an error if the options aren't clonable.\n testAudioWorkletNodeOptionsClonability(mergedOptions);\n\n const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext);\n const processorConstructor = nodeNameToProcessorConstructorMap?.get(name);\n // Bug #186: Chrome, Edge and Opera do not allow to create an AudioWorkletNode on a closed AudioContext.\n const nativeContextOrBackupOfflineAudioContext =\n isOffline || nativeContext.state !== 'closed'\n ? nativeContext\n : getBackupOfflineAudioContext(nativeContext) ?? nativeContext;\n const nativeAudioWorkletNode = createNativeAudioWorkletNode(\n nativeContextOrBackupOfflineAudioContext,\n isOffline ? null : ((context)).baseLatency,\n nativeAudioWorkletNodeConstructor,\n name,\n processorConstructor,\n mergedOptions\n );\n const audioWorkletNodeRenderer = >(\n (isOffline ? createAudioWorkletNodeRenderer(name, mergedOptions, processorConstructor) : null)\n );\n\n /*\n * @todo Add a mechanism to switch an AudioWorkletNode to passive once the process() function of the AudioWorkletProcessor\n * returns false.\n */\n super(context, true, nativeAudioWorkletNode, audioWorkletNodeRenderer);\n\n const parameters: [string, IAudioParam][] = [];\n\n nativeAudioWorkletNode.parameters.forEach((nativeAudioParam, nm) => {\n const audioParam = createAudioParam(this, isOffline, nativeAudioParam);\n\n parameters.push([nm, audioParam]);\n });\n\n this._nativeAudioWorkletNode = nativeAudioWorkletNode;\n this._onprocessorerror = null;\n this._parameters = new ReadOnlyMap(parameters);\n\n /*\n * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to\n * the destination.\n */\n if (isOffline) {\n addUnrenderedAudioWorkletNode(nativeContext, >this);\n }\n\n const { activeInputs } = getAudioNodeConnections(this);\n\n setActiveAudioWorkletNodeInputs(nativeAudioWorkletNode, activeInputs);\n }\n\n get onprocessorerror(): null | TErrorEventHandler {\n return this._onprocessorerror;\n }\n\n set onprocessorerror(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n\n this._nativeAudioWorkletNode.onprocessorerror = wrappedListener;\n\n const nativeOnProcessorError = this._nativeAudioWorkletNode.onprocessorerror;\n\n this._onprocessorerror =\n nativeOnProcessorError !== null && nativeOnProcessorError === wrappedListener\n ? value\n : >nativeOnProcessorError;\n }\n\n get parameters(): TAudioParamMap {\n if (this._parameters === null) {\n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n return >this._nativeAudioWorkletNode.parameters;\n }\n\n return this._parameters;\n }\n\n get port(): MessagePort {\n return this._nativeAudioWorkletNode.port;\n }\n };\n};\n","export class ReadOnlyMap {\n constructor(parameters) {\n this._map = new Map(parameters);\n }\n get size() {\n return this._map.size;\n }\n entries() {\n return this._map.entries();\n }\n forEach(callback, thisArg = null) {\n return this._map.forEach((value, key) => callback.call(thisArg, value, key, this));\n }\n get(name) {\n return this._map.get(name);\n }\n has(name) {\n return this._map.has(name);\n }\n keys() {\n return this._map.keys();\n }\n values() {\n return this._map.values();\n }\n}\n//# sourceMappingURL=read-only-map.js.map","import { IReadOnlyMap } from './interfaces';\n\nexport class ReadOnlyMap implements IReadOnlyMap {\n private _map: Map;\n\n constructor(parameters: [T, U][]) {\n this._map = new Map(parameters);\n }\n\n get size(): number {\n return this._map.size;\n }\n\n public entries(): IterableIterator<[T, U]> {\n return this._map.entries();\n }\n\n public forEach(callback: (audioParam: U, name: T, map: ReadOnlyMap) => void, thisArg: any = null): void {\n return this._map.forEach((value: U, key: T) => callback.call(thisArg, value, key, this));\n }\n\n public get(name: T): undefined | U {\n return this._map.get(name);\n }\n\n public has(name: T): boolean {\n return this._map.has(name);\n }\n\n public keys(): IterableIterator {\n return this._map.keys();\n }\n\n public values(): IterableIterator {\n return this._map.values();\n }\n}\n","import { copyFromChannel } from '../helpers/copy-from-channel';\nimport { copyToChannel } from '../helpers/copy-to-channel';\nimport { createNestedArrays } from '../helpers/create-nested-arrays';\nimport { getAudioNodeConnections } from '../helpers/get-audio-node-connections';\nimport { getAudioWorkletProcessor } from '../helpers/get-audio-worklet-processor';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nconst processBuffer = async (proxy, renderedBuffer, nativeOfflineAudioContext, options, outputChannelCount, processorConstructor, exposeCurrentFrameAndCurrentTime) => {\n // Ceil the length to the next full render quantum.\n // Bug #17: Safari does not yet expose the length.\n const length = renderedBuffer === null ? Math.ceil(proxy.context.length / 128) * 128 : renderedBuffer.length;\n const numberOfInputChannels = options.channelCount * options.numberOfInputs;\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const processedBuffer = numberOfOutputChannels === 0\n ? null\n : nativeOfflineAudioContext.createBuffer(numberOfOutputChannels, length, nativeOfflineAudioContext.sampleRate);\n if (processorConstructor === undefined) {\n throw new Error('Missing the processor constructor.');\n }\n const audioNodeConnections = getAudioNodeConnections(proxy);\n const audioWorkletProcessor = await getAudioWorkletProcessor(nativeOfflineAudioContext, proxy);\n const inputs = createNestedArrays(options.numberOfInputs, options.channelCount);\n const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount);\n const parameters = Array.from(proxy.parameters.keys()).reduce((prmtrs, name) => ({ ...prmtrs, [name]: new Float32Array(128) }), {});\n for (let i = 0; i < length; i += 128) {\n if (options.numberOfInputs > 0 && renderedBuffer !== null) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < options.channelCount; k += 1) {\n copyFromChannel(renderedBuffer, inputs[j], k, k, i);\n }\n }\n }\n if (processorConstructor.parameterDescriptors !== undefined && renderedBuffer !== null) {\n processorConstructor.parameterDescriptors.forEach(({ name }, index) => {\n copyFromChannel(renderedBuffer, parameters, name, numberOfInputChannels + index, i);\n });\n }\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (outputs[j][k].byteLength === 0) {\n outputs[j][k] = new Float32Array(128);\n }\n }\n }\n try {\n const potentiallyEmptyInputs = inputs.map((input, index) => {\n if (audioNodeConnections.activeInputs[index].size === 0) {\n return [];\n }\n return input;\n });\n const activeSourceFlag = exposeCurrentFrameAndCurrentTime(i / nativeOfflineAudioContext.sampleRate, nativeOfflineAudioContext.sampleRate, () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters));\n if (processedBuffer !== null) {\n for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n copyToChannel(processedBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[j];\n }\n }\n if (!activeSourceFlag) {\n break;\n }\n }\n catch (error) {\n proxy.dispatchEvent(new ErrorEvent('processorerror', {\n colno: error.colno,\n filename: error.filename,\n lineno: error.lineno,\n message: error.message\n }));\n break;\n }\n }\n return processedBuffer;\n};\nexport const createAudioWorkletNodeRendererFactory = (connectAudioParam, connectMultipleOutputs, createNativeAudioBufferSourceNode, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, deleteUnrenderedAudioWorkletNode, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getNativeAudioNode, nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => {\n return (name, options, processorConstructor) => {\n const renderedNativeAudioNodes = new WeakMap();\n let processedBufferPromise = null;\n const createAudioNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeAudioWorkletNode = getNativeAudioNode(proxy);\n let nativeOutputNodes = null;\n const nativeAudioWorkletNodeIsOwnedByContext = isOwnedByContext(nativeAudioWorkletNode, nativeOfflineAudioContext);\n const outputChannelCount = Array.isArray(options.outputChannelCount)\n ? options.outputChannelCount\n : Array.from(options.outputChannelCount);\n // Bug #61: Only Chrome, Edge, Firefox & Opera have an implementation of the AudioWorkletNode yet.\n if (nativeAudioWorkletNodeConstructor === null) {\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, {\n channelCount: Math.max(1, numberOfOutputChannels),\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: Math.max(1, numberOfOutputChannels)\n });\n const outputChannelMergerNodes = [];\n for (let i = 0; i < proxy.numberOfOutputs; i += 1) {\n outputChannelMergerNodes.push(createNativeChannelMergerNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: outputChannelCount[i]\n }));\n }\n const outputGainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n });\n outputGainNode.connect = connectMultipleOutputs.bind(null, outputChannelMergerNodes);\n outputGainNode.disconnect = disconnectMultipleOutputs.bind(null, outputChannelMergerNodes);\n nativeOutputNodes = [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode];\n }\n else if (!nativeAudioWorkletNodeIsOwnedByContext) {\n nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeOfflineAudioContext, name);\n }\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeOutputNodes === null ? nativeAudioWorkletNode : nativeOutputNodes[2]);\n if (nativeOutputNodes !== null) {\n if (processedBufferPromise === null) {\n if (processorConstructor === undefined) {\n throw new Error('Missing the processor constructor.');\n }\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly.\n const numberOfInputChannels = proxy.channelCount * proxy.numberOfInputs;\n const numberOfParameters = processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length;\n const numberOfChannels = numberOfInputChannels + numberOfParameters;\n const renderBuffer = async () => {\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(numberOfChannels, \n // Ceil the length to the next full render quantum.\n // Bug #17: Safari does not yet expose the length.\n Math.ceil(proxy.context.length / 128) * 128, nativeOfflineAudioContext.sampleRate);\n const gainNodes = [];\n const inputChannelSplitterNodes = [];\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes.push(createNativeGainNode(partialOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n }));\n inputChannelSplitterNodes.push(createNativeChannelSplitterNode(partialOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: options.channelCount\n }));\n }\n const constantSourceNodes = await Promise.all(Array.from(proxy.parameters.values()).map(async (audioParam) => {\n const constantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: audioParam.value\n });\n await renderAutomation(partialOfflineAudioContext, audioParam, constantSourceNode.offset);\n return constantSourceNode;\n }));\n const inputChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters)\n });\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes[i].connect(inputChannelSplitterNodes[i]);\n for (let j = 0; j < options.channelCount; j += 1) {\n inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j);\n }\n }\n for (const [index, constantSourceNode] of constantSourceNodes.entries()) {\n constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index);\n constantSourceNode.start(0);\n }\n inputChannelMergerNode.connect(partialOfflineAudioContext.destination);\n await Promise.all(gainNodes.map((gainNode) => renderInputsOfAudioNode(proxy, partialOfflineAudioContext, gainNode)));\n return renderNativeOfflineAudioContext(partialOfflineAudioContext);\n };\n processedBufferPromise = processBuffer(proxy, numberOfChannels === 0 ? null : await renderBuffer(), nativeOfflineAudioContext, options, outputChannelCount, processorConstructor, exposeCurrentFrameAndCurrentTime);\n }\n const processedBuffer = await processedBufferPromise;\n const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode] = nativeOutputNodes;\n if (processedBuffer !== null) {\n audioBufferSourceNode.buffer = processedBuffer;\n audioBufferSourceNode.start(0);\n }\n audioBufferSourceNode.connect(outputChannelSplitterNode);\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < proxy.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n return outputGainNode;\n }\n if (!nativeAudioWorkletNodeIsOwnedByContext) {\n for (const [nm, audioParam] of proxy.parameters.entries()) {\n await renderAutomation(nativeOfflineAudioContext, audioParam, \n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n nativeAudioWorkletNode.parameters.get(nm));\n }\n }\n else {\n for (const [nm, audioParam] of proxy.parameters.entries()) {\n await connectAudioParam(nativeOfflineAudioContext, audioParam, \n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n nativeAudioWorkletNode.parameters.get(nm));\n }\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioWorkletNode);\n return nativeAudioWorkletNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n deleteUnrenderedAudioWorkletNode(nativeOfflineAudioContext, proxy);\n const renderedNativeAudioWorkletNodeOrGainNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioWorkletNodeOrGainNode !== undefined) {\n return Promise.resolve(renderedNativeAudioWorkletNodeOrGainNode);\n }\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=audio-worklet-node-renderer-factory.js.map","import { copyFromChannel } from '../helpers/copy-from-channel';\nimport { copyToChannel } from '../helpers/copy-to-channel';\nimport { createNestedArrays } from '../helpers/create-nested-arrays';\nimport { getAudioNodeConnections } from '../helpers/get-audio-node-connections';\nimport { getAudioWorkletProcessor } from '../helpers/get-audio-worklet-processor';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport {\n IAudioWorkletNode,\n IAudioWorkletNodeOptions,\n IAudioWorkletProcessorConstructor,\n IMinimalOfflineAudioContext,\n IOfflineAudioContext,\n IReadOnlyMap\n} from '../interfaces';\nimport {\n TAudioWorkletNodeRendererFactoryFactory,\n TExposeCurrentFrameAndCurrentTimeFunction,\n TNativeAudioBuffer,\n TNativeAudioNode,\n TNativeAudioParam,\n TNativeAudioWorkletNode,\n TNativeChannelMergerNode,\n TNativeChannelSplitterNode,\n TNativeGainNode,\n TNativeOfflineAudioContext\n} from '../types';\n\nconst processBuffer = async (\n proxy: IAudioWorkletNode,\n renderedBuffer: null | TNativeAudioBuffer,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n options: IAudioWorkletNodeOptions,\n outputChannelCount: number[],\n processorConstructor: undefined | IAudioWorkletProcessorConstructor,\n exposeCurrentFrameAndCurrentTime: TExposeCurrentFrameAndCurrentTimeFunction\n): Promise => {\n // Ceil the length to the next full render quantum.\n // Bug #17: Safari does not yet expose the length.\n const length = renderedBuffer === null ? Math.ceil(proxy.context.length / 128) * 128 : renderedBuffer.length;\n const numberOfInputChannels = options.channelCount * options.numberOfInputs;\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const processedBuffer =\n numberOfOutputChannels === 0\n ? null\n : nativeOfflineAudioContext.createBuffer(numberOfOutputChannels, length, nativeOfflineAudioContext.sampleRate);\n\n if (processorConstructor === undefined) {\n throw new Error('Missing the processor constructor.');\n }\n\n const audioNodeConnections = getAudioNodeConnections(proxy);\n const audioWorkletProcessor = await getAudioWorkletProcessor(nativeOfflineAudioContext, proxy);\n const inputs = createNestedArrays(options.numberOfInputs, options.channelCount);\n const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount);\n const parameters: { [name: string]: Float32Array } = Array.from(proxy.parameters.keys()).reduce(\n (prmtrs, name) => ({ ...prmtrs, [name]: new Float32Array(128) }),\n {}\n );\n\n for (let i = 0; i < length; i += 128) {\n if (options.numberOfInputs > 0 && renderedBuffer !== null) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < options.channelCount; k += 1) {\n copyFromChannel(renderedBuffer, inputs[j], k, k, i);\n }\n }\n }\n\n if (processorConstructor.parameterDescriptors !== undefined && renderedBuffer !== null) {\n processorConstructor.parameterDescriptors.forEach(({ name }, index) => {\n copyFromChannel(renderedBuffer, parameters, name, numberOfInputChannels + index, i);\n });\n }\n\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (outputs[j][k].byteLength === 0) {\n outputs[j][k] = new Float32Array(128);\n }\n }\n }\n\n try {\n const potentiallyEmptyInputs = inputs.map((input, index) => {\n if (audioNodeConnections.activeInputs[index].size === 0) {\n return [];\n }\n\n return input;\n });\n const activeSourceFlag = exposeCurrentFrameAndCurrentTime(\n i / nativeOfflineAudioContext.sampleRate,\n nativeOfflineAudioContext.sampleRate,\n () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters)\n );\n\n if (processedBuffer !== null) {\n for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n copyToChannel(processedBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i);\n }\n\n outputChannelSplitterNodeOutput += outputChannelCount[j];\n }\n }\n\n if (!activeSourceFlag) {\n break;\n }\n } catch (error) {\n proxy.dispatchEvent(\n new ErrorEvent('processorerror', {\n colno: error.colno,\n filename: error.filename,\n lineno: error.lineno,\n message: error.message\n })\n );\n\n break;\n }\n }\n\n return processedBuffer;\n};\n\nexport const createAudioWorkletNodeRendererFactory: TAudioWorkletNodeRendererFactoryFactory = (\n connectAudioParam,\n connectMultipleOutputs,\n createNativeAudioBufferSourceNode,\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n deleteUnrenderedAudioWorkletNode,\n disconnectMultipleOutputs,\n exposeCurrentFrameAndCurrentTime,\n getNativeAudioNode,\n nativeAudioWorkletNodeConstructor,\n nativeOfflineAudioContextConstructor,\n renderAutomation,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n) => {\n return (\n name: string,\n options: IAudioWorkletNodeOptions,\n processorConstructor: undefined | IAudioWorkletProcessorConstructor\n ) => {\n const renderedNativeAudioNodes = new WeakMap();\n\n let processedBufferPromise: null | Promise = null;\n\n const createAudioNode = async (proxy: IAudioWorkletNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeAudioWorkletNode = getNativeAudioNode(proxy);\n let nativeOutputNodes: null | [TNativeChannelSplitterNode, TNativeChannelMergerNode[], TNativeGainNode] = null;\n\n const nativeAudioWorkletNodeIsOwnedByContext = isOwnedByContext(nativeAudioWorkletNode, nativeOfflineAudioContext);\n const outputChannelCount = Array.isArray(options.outputChannelCount)\n ? options.outputChannelCount\n : Array.from(options.outputChannelCount);\n\n // Bug #61: Only Chrome, Edge, Firefox & Opera have an implementation of the AudioWorkletNode yet.\n if (nativeAudioWorkletNodeConstructor === null) {\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, {\n channelCount: Math.max(1, numberOfOutputChannels),\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: Math.max(1, numberOfOutputChannels)\n });\n const outputChannelMergerNodes: TNativeChannelMergerNode[] = [];\n\n for (let i = 0; i < proxy.numberOfOutputs; i += 1) {\n outputChannelMergerNodes.push(\n createNativeChannelMergerNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: outputChannelCount[i]\n })\n );\n }\n\n const outputGainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n });\n\n outputGainNode.connect = connectMultipleOutputs.bind(null, outputChannelMergerNodes);\n outputGainNode.disconnect = disconnectMultipleOutputs.bind(null, outputChannelMergerNodes);\n\n nativeOutputNodes = [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode];\n } else if (!nativeAudioWorkletNodeIsOwnedByContext) {\n nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeOfflineAudioContext, name);\n }\n\n renderedNativeAudioNodes.set(\n nativeOfflineAudioContext,\n nativeOutputNodes === null ? nativeAudioWorkletNode : nativeOutputNodes[2]\n );\n\n if (nativeOutputNodes !== null) {\n if (processedBufferPromise === null) {\n if (processorConstructor === undefined) {\n throw new Error('Missing the processor constructor.');\n }\n\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly.\n const numberOfInputChannels = proxy.channelCount * proxy.numberOfInputs;\n const numberOfParameters =\n processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length;\n const numberOfChannels = numberOfInputChannels + numberOfParameters;\n\n const renderBuffer = async () => {\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(\n numberOfChannels,\n // Ceil the length to the next full render quantum.\n // Bug #17: Safari does not yet expose the length.\n Math.ceil(proxy.context.length / 128) * 128,\n nativeOfflineAudioContext.sampleRate\n );\n const gainNodes: TNativeGainNode[] = [];\n const inputChannelSplitterNodes = [];\n\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes.push(\n createNativeGainNode(partialOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n })\n );\n inputChannelSplitterNodes.push(\n createNativeChannelSplitterNode(partialOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: options.channelCount\n })\n );\n }\n\n const constantSourceNodes = await Promise.all(\n Array.from(proxy.parameters.values()).map(async (audioParam) => {\n const constantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: audioParam.value\n });\n\n await renderAutomation(partialOfflineAudioContext, audioParam, constantSourceNode.offset);\n\n return constantSourceNode;\n })\n );\n\n const inputChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters)\n });\n\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes[i].connect(inputChannelSplitterNodes[i]);\n\n for (let j = 0; j < options.channelCount; j += 1) {\n inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j);\n }\n }\n\n for (const [index, constantSourceNode] of constantSourceNodes.entries()) {\n constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index);\n constantSourceNode.start(0);\n }\n\n inputChannelMergerNode.connect(partialOfflineAudioContext.destination);\n\n await Promise.all(\n gainNodes.map((gainNode) => renderInputsOfAudioNode(proxy, partialOfflineAudioContext, gainNode))\n );\n\n return renderNativeOfflineAudioContext(partialOfflineAudioContext);\n };\n\n processedBufferPromise = processBuffer(\n proxy,\n numberOfChannels === 0 ? null : await renderBuffer(),\n nativeOfflineAudioContext,\n options,\n outputChannelCount,\n processorConstructor,\n exposeCurrentFrameAndCurrentTime\n );\n }\n\n const processedBuffer = await processedBufferPromise;\n const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode] = nativeOutputNodes;\n\n if (processedBuffer !== null) {\n audioBufferSourceNode.buffer = processedBuffer;\n audioBufferSourceNode.start(0);\n }\n\n audioBufferSourceNode.connect(outputChannelSplitterNode);\n\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < proxy.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n\n return outputGainNode;\n }\n\n if (!nativeAudioWorkletNodeIsOwnedByContext) {\n for (const [nm, audioParam] of proxy.parameters.entries()) {\n await renderAutomation(\n nativeOfflineAudioContext,\n audioParam,\n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n (>nativeAudioWorkletNode.parameters).get(nm)\n );\n }\n } else {\n for (const [nm, audioParam] of proxy.parameters.entries()) {\n await connectAudioParam(\n nativeOfflineAudioContext,\n audioParam,\n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n (>nativeAudioWorkletNode.parameters).get(nm)\n );\n }\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioWorkletNode);\n\n return nativeAudioWorkletNode;\n };\n\n return {\n render(\n proxy: IAudioWorkletNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n deleteUnrenderedAudioWorkletNode(nativeOfflineAudioContext, proxy);\n\n const renderedNativeAudioWorkletNodeOrGainNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioWorkletNodeOrGainNode !== undefined) {\n return Promise.resolve(renderedNativeAudioWorkletNodeOrGainNode);\n }\n\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","export function copyFromChannel(audioBuffer, \n// @todo There is currently no way to define something like { [ key: number | string ]: Float32Array }\nparent, key, channelNumber, bufferOffset) {\n if (typeof audioBuffer.copyFromChannel === 'function') {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength === 0) {\n parent[key] = new Float32Array(128);\n }\n audioBuffer.copyFromChannel(parent[key], channelNumber, bufferOffset);\n // Bug #5: Safari does not support copyFromChannel().\n }\n else {\n const channelData = audioBuffer.getChannelData(channelNumber);\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength === 0) {\n parent[key] = channelData.slice(bufferOffset, bufferOffset + 128);\n }\n else {\n const slicedInput = new Float32Array(channelData.buffer, bufferOffset * Float32Array.BYTES_PER_ELEMENT, 128);\n parent[key].set(slicedInput);\n }\n }\n}\n//# sourceMappingURL=copy-from-channel.js.map","import { TNativeAudioBuffer } from '../types';\n\nexport function copyFromChannel(\n audioBuffer: TNativeAudioBuffer,\n parent: { [key: number]: Float32Array },\n key: number,\n channelNumber: number,\n bufferOffset: number\n): void;\nexport function copyFromChannel(\n audioBuffer: TNativeAudioBuffer,\n parent: { [key: string]: Float32Array },\n key: string,\n channelNumber: number,\n bufferOffset: number\n): void;\nexport function copyFromChannel(\n audioBuffer: TNativeAudioBuffer,\n // @todo There is currently no way to define something like { [ key: number | string ]: Float32Array }\n parent: any,\n key: number | string,\n channelNumber: number,\n bufferOffset: number\n): void {\n if (typeof audioBuffer.copyFromChannel === 'function') {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength === 0) {\n parent[key] = new Float32Array(128);\n }\n\n audioBuffer.copyFromChannel(parent[key], channelNumber, bufferOffset);\n\n // Bug #5: Safari does not support copyFromChannel().\n } else {\n const channelData = audioBuffer.getChannelData(channelNumber);\n\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength === 0) {\n parent[key] = channelData.slice(bufferOffset, bufferOffset + 128);\n } else {\n const slicedInput = new Float32Array(channelData.buffer, bufferOffset * Float32Array.BYTES_PER_ELEMENT, 128);\n\n parent[key].set(slicedInput);\n }\n }\n}\n","export const copyToChannel = (audioBuffer, parent, key, channelNumber, bufferOffset) => {\n if (typeof audioBuffer.copyToChannel === 'function') {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength !== 0) {\n audioBuffer.copyToChannel(parent[key], channelNumber, bufferOffset);\n }\n // Bug #5: Safari does not support copyToChannel().\n }\n else {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength !== 0) {\n audioBuffer.getChannelData(channelNumber).set(parent[key], bufferOffset);\n }\n }\n};\n//# sourceMappingURL=copy-to-channel.js.map","import { TNativeAudioBuffer } from '../types';\n\nexport const copyToChannel = (\n audioBuffer: TNativeAudioBuffer,\n parent: { [key: number]: Float32Array },\n key: number,\n channelNumber: number,\n bufferOffset: number\n): void => {\n if (typeof audioBuffer.copyToChannel === 'function') {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength !== 0) {\n audioBuffer.copyToChannel(parent[key], channelNumber, bufferOffset);\n }\n\n // Bug #5: Safari does not support copyToChannel().\n } else {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength !== 0) {\n audioBuffer.getChannelData(channelNumber).set(parent[key], bufferOffset);\n }\n }\n};\n","export const createNestedArrays = (x, y) => {\n const arrays = [];\n for (let i = 0; i < x; i += 1) {\n const array = [];\n const length = typeof y === 'number' ? y : y[i];\n for (let j = 0; j < length; j += 1) {\n array.push(new Float32Array(128));\n }\n arrays.push(array);\n }\n return arrays;\n};\n//# sourceMappingURL=create-nested-arrays.js.map","export const createNestedArrays = (x: number, y: number | number[]): Float32Array[][] => {\n const arrays: Float32Array[][] = [];\n\n for (let i = 0; i < x; i += 1) {\n const array = [];\n\n const length = typeof y === 'number' ? y : y[i];\n\n for (let j = 0; j < length; j += 1) {\n array.push(new Float32Array(128));\n }\n\n arrays.push(array);\n }\n\n return arrays;\n};\n","import { NODE_TO_PROCESSOR_MAPS } from '../globals';\nimport { getNativeAudioNode } from './get-native-audio-node';\nimport { getValueForKey } from './get-value-for-key';\nexport const getAudioWorkletProcessor = (nativeOfflineAudioContext, proxy) => {\n const nodeToProcessorMap = getValueForKey(NODE_TO_PROCESSOR_MAPS, nativeOfflineAudioContext);\n const nativeAudioWorkletNode = getNativeAudioNode(proxy);\n return getValueForKey(nodeToProcessorMap, nativeAudioWorkletNode);\n};\n//# sourceMappingURL=get-audio-worklet-processor.js.map","import { NODE_TO_PROCESSOR_MAPS } from '../globals';\nimport { IAudioNode, IAudioWorkletProcessor } from '../interfaces';\nimport { TContext, TNativeAudioWorkletNode, TNativeOfflineAudioContext } from '../types';\nimport { getNativeAudioNode } from './get-native-audio-node';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getAudioWorkletProcessor = (\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n proxy: IAudioNode\n): Promise => {\n const nodeToProcessorMap = getValueForKey(NODE_TO_PROCESSOR_MAPS, nativeOfflineAudioContext);\n const nativeAudioWorkletNode = getNativeAudioNode(proxy);\n\n return getValueForKey(nodeToProcessorMap, nativeAudioWorkletNode);\n};\n","export const createBaseAudioContextConstructor = (addAudioWorkletModule, analyserNodeConstructor, audioBufferConstructor, audioBufferSourceNodeConstructor, biquadFilterNodeConstructor, channelMergerNodeConstructor, channelSplitterNodeConstructor, constantSourceNodeConstructor, convolverNodeConstructor, decodeAudioData, delayNodeConstructor, dynamicsCompressorNodeConstructor, gainNodeConstructor, iIRFilterNodeConstructor, minimalBaseAudioContextConstructor, oscillatorNodeConstructor, pannerNodeConstructor, periodicWaveConstructor, stereoPannerNodeConstructor, waveShaperNodeConstructor) => {\n return class BaseAudioContext extends minimalBaseAudioContextConstructor {\n constructor(_nativeContext, numberOfChannels) {\n super(_nativeContext, numberOfChannels);\n this._nativeContext = _nativeContext;\n this._audioWorklet =\n addAudioWorkletModule === undefined\n ? undefined\n : {\n addModule: (moduleURL, options) => {\n return addAudioWorkletModule(this, moduleURL, options);\n }\n };\n }\n get audioWorklet() {\n return this._audioWorklet;\n }\n createAnalyser() {\n return new analyserNodeConstructor(this);\n }\n createBiquadFilter() {\n return new biquadFilterNodeConstructor(this);\n }\n createBuffer(numberOfChannels, length, sampleRate) {\n return new audioBufferConstructor({ length, numberOfChannels, sampleRate });\n }\n createBufferSource() {\n return new audioBufferSourceNodeConstructor(this);\n }\n createChannelMerger(numberOfInputs = 6) {\n return new channelMergerNodeConstructor(this, { numberOfInputs });\n }\n createChannelSplitter(numberOfOutputs = 6) {\n return new channelSplitterNodeConstructor(this, { numberOfOutputs });\n }\n createConstantSource() {\n return new constantSourceNodeConstructor(this);\n }\n createConvolver() {\n return new convolverNodeConstructor(this);\n }\n createDelay(maxDelayTime = 1) {\n return new delayNodeConstructor(this, { maxDelayTime });\n }\n createDynamicsCompressor() {\n return new dynamicsCompressorNodeConstructor(this);\n }\n createGain() {\n return new gainNodeConstructor(this);\n }\n createIIRFilter(feedforward, feedback) {\n return new iIRFilterNodeConstructor(this, { feedback, feedforward });\n }\n createOscillator() {\n return new oscillatorNodeConstructor(this);\n }\n createPanner() {\n return new pannerNodeConstructor(this);\n }\n createPeriodicWave(real, imag, constraints = { disableNormalization: false }) {\n return new periodicWaveConstructor(this, { ...constraints, imag, real });\n }\n createStereoPanner() {\n return new stereoPannerNodeConstructor(this);\n }\n createWaveShaper() {\n return new waveShaperNodeConstructor(this);\n }\n decodeAudioData(audioData, successCallback, errorCallback) {\n return decodeAudioData(this._nativeContext, audioData).then((audioBuffer) => {\n if (typeof successCallback === 'function') {\n successCallback(audioBuffer);\n }\n return audioBuffer;\n }, (err) => {\n if (typeof errorCallback === 'function') {\n errorCallback(err);\n }\n throw err;\n });\n }\n };\n};\n//# sourceMappingURL=base-audio-context-constructor.js.map","import {\n IAnalyserNode,\n IAudioBuffer,\n IAudioBufferSourceNode,\n IAudioNode,\n IAudioWorklet,\n IBaseAudioContext,\n IBiquadFilterNode,\n IConstantSourceNode,\n IConvolverNode,\n IDelayNode,\n IDynamicsCompressorNode,\n IGainNode,\n IIIRFilterNode,\n IOscillatorNode,\n IPannerNode,\n IPeriodicWave,\n IPeriodicWaveConstraints,\n IStereoPannerNode,\n IWaveShaperNode,\n IWorkletOptions\n} from '../interfaces';\nimport { TBaseAudioContextConstructorFactory, TContext, TDecodeErrorCallback, TDecodeSuccessCallback, TNativeContext } from '../types';\n\nexport const createBaseAudioContextConstructor: TBaseAudioContextConstructorFactory = (\n addAudioWorkletModule,\n analyserNodeConstructor,\n audioBufferConstructor,\n audioBufferSourceNodeConstructor,\n biquadFilterNodeConstructor,\n channelMergerNodeConstructor,\n channelSplitterNodeConstructor,\n constantSourceNodeConstructor,\n convolverNodeConstructor,\n decodeAudioData,\n delayNodeConstructor,\n dynamicsCompressorNodeConstructor,\n gainNodeConstructor,\n iIRFilterNodeConstructor,\n minimalBaseAudioContextConstructor,\n oscillatorNodeConstructor,\n pannerNodeConstructor,\n periodicWaveConstructor,\n stereoPannerNodeConstructor,\n waveShaperNodeConstructor\n) => {\n return class BaseAudioContext extends minimalBaseAudioContextConstructor implements IBaseAudioContext {\n private _audioWorklet: undefined | IAudioWorklet;\n\n constructor(private _nativeContext: TNativeContext, numberOfChannels: number) {\n super(_nativeContext, numberOfChannels);\n\n this._audioWorklet =\n addAudioWorkletModule === undefined\n ? undefined\n : {\n addModule: (moduleURL: string, options?: IWorkletOptions) => {\n return addAudioWorkletModule((this), moduleURL, options);\n }\n };\n }\n\n get audioWorklet(): undefined | IAudioWorklet {\n return this._audioWorklet;\n }\n\n public createAnalyser(): IAnalyserNode {\n return new analyserNodeConstructor((this));\n }\n\n public createBiquadFilter(): IBiquadFilterNode {\n return new biquadFilterNodeConstructor((this));\n }\n\n public createBuffer(numberOfChannels: number, length: number, sampleRate: number): IAudioBuffer {\n return new audioBufferConstructor({ length, numberOfChannels, sampleRate });\n }\n\n public createBufferSource(): IAudioBufferSourceNode {\n return new audioBufferSourceNodeConstructor((this));\n }\n\n public createChannelMerger(numberOfInputs = 6): IAudioNode {\n return new channelMergerNodeConstructor((this), { numberOfInputs });\n }\n\n public createChannelSplitter(numberOfOutputs = 6): IAudioNode {\n return new channelSplitterNodeConstructor((this), { numberOfOutputs });\n }\n\n public createConstantSource(): IConstantSourceNode {\n return new constantSourceNodeConstructor((this));\n }\n\n public createConvolver(): IConvolverNode {\n return new convolverNodeConstructor((this));\n }\n\n public createDelay(maxDelayTime = 1): IDelayNode {\n return new delayNodeConstructor((this), { maxDelayTime });\n }\n\n public createDynamicsCompressor(): IDynamicsCompressorNode {\n return new dynamicsCompressorNodeConstructor((this));\n }\n\n public createGain(): IGainNode {\n return new gainNodeConstructor((this));\n }\n\n public createIIRFilter(feedforward: Iterable, feedback: Iterable): IIIRFilterNode {\n return new iIRFilterNodeConstructor((this), { feedback, feedforward });\n }\n\n public createOscillator(): IOscillatorNode {\n return new oscillatorNodeConstructor((this));\n }\n\n public createPanner(): IPannerNode {\n return new pannerNodeConstructor((this));\n }\n\n public createPeriodicWave(\n real: Iterable,\n imag: Iterable,\n constraints: Partial = { disableNormalization: false }\n ): IPeriodicWave {\n return new periodicWaveConstructor((this), { ...constraints, imag, real });\n }\n\n public createStereoPanner(): IStereoPannerNode {\n return new stereoPannerNodeConstructor((this));\n }\n\n public createWaveShaper(): IWaveShaperNode {\n return new waveShaperNodeConstructor((this));\n }\n\n public decodeAudioData(\n audioData: ArrayBuffer,\n successCallback?: TDecodeSuccessCallback,\n errorCallback?: TDecodeErrorCallback\n ): Promise {\n return decodeAudioData(this._nativeContext, audioData).then(\n (audioBuffer) => {\n if (typeof successCallback === 'function') {\n successCallback(audioBuffer);\n }\n\n return audioBuffer;\n },\n (err) => {\n if (typeof errorCallback === 'function') {\n errorCallback(err);\n }\n\n throw err;\n }\n );\n }\n };\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nconst DEFAULT_OPTIONS = {\n Q: 1,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n detune: 0,\n frequency: 350,\n gain: 0,\n type: 'lowpass'\n};\nexport const createBiquadFilterNodeConstructor = (audioNodeConstructor, createAudioParam, createBiquadFilterNodeRenderer, createInvalidAccessError, createNativeBiquadFilterNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class BiquadFilterNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const biquadFilterNodeRenderer = (isOffline ? createBiquadFilterNodeRenderer() : null);\n super(context, false, nativeBiquadFilterNode, biquadFilterNodeRenderer);\n // Bug #80: Safari does not export the correct values for maxValue and minValue.\n this._Q = createAudioParam(this, isOffline, nativeBiquadFilterNode.Q, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n // Bug #78: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._detune = createAudioParam(this, isOffline, nativeBiquadFilterNode.detune, 1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT), -1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT));\n // Bug #77: Firefox & Safari do not export the correct value for minValue.\n this._frequency = createAudioParam(this, isOffline, nativeBiquadFilterNode.frequency, context.sampleRate / 2, 0);\n // Bug #79: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._gain = createAudioParam(this, isOffline, nativeBiquadFilterNode.gain, 40 * Math.log10(MOST_POSITIVE_SINGLE_FLOAT), MOST_NEGATIVE_SINGLE_FLOAT);\n this._nativeBiquadFilterNode = nativeBiquadFilterNode;\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n get detune() {\n return this._detune;\n }\n get frequency() {\n return this._frequency;\n }\n get gain() {\n return this._gain;\n }\n get Q() {\n return this._Q;\n }\n get type() {\n return this._nativeBiquadFilterNode.type;\n }\n set type(value) {\n this._nativeBiquadFilterNode.type = value;\n }\n getFrequencyResponse(frequencyHz, magResponse, phaseResponse) {\n // Bug #189: Safari does throw an InvalidStateError.\n try {\n this._nativeBiquadFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse);\n }\n catch (err) {\n if (err.code === 11) {\n throw createInvalidAccessError();\n }\n throw err;\n }\n // Bug #68: Safari does not throw an error if the parameters differ in their length.\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n }\n };\n};\n//# sourceMappingURL=biquad-filter-node-constructor.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { IAudioParam, IBiquadFilterNode, IBiquadFilterOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TBiquadFilterNodeConstructorFactory, TBiquadFilterType, TContext, TNativeBiquadFilterNode } from '../types';\n\nconst DEFAULT_OPTIONS = {\n Q: 1,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n detune: 0,\n frequency: 350,\n gain: 0,\n type: 'lowpass'\n} as const;\n\nexport const createBiquadFilterNodeConstructor: TBiquadFilterNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createBiquadFilterNodeRenderer,\n createInvalidAccessError,\n createNativeBiquadFilterNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class BiquadFilterNode extends audioNodeConstructor implements IBiquadFilterNode {\n private _detune: IAudioParam;\n\n private _frequency: IAudioParam;\n\n private _gain: IAudioParam;\n\n private _nativeBiquadFilterNode: TNativeBiquadFilterNode;\n\n private _Q: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const biquadFilterNodeRenderer = >(isOffline ? createBiquadFilterNodeRenderer() : null);\n\n super(context, false, nativeBiquadFilterNode, biquadFilterNodeRenderer);\n\n // Bug #80: Safari does not export the correct values for maxValue and minValue.\n this._Q = createAudioParam(this, isOffline, nativeBiquadFilterNode.Q, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n // Bug #78: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._detune = createAudioParam(\n this,\n isOffline,\n nativeBiquadFilterNode.detune,\n 1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT),\n -1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT)\n );\n // Bug #77: Firefox & Safari do not export the correct value for minValue.\n this._frequency = createAudioParam(this, isOffline, nativeBiquadFilterNode.frequency, context.sampleRate / 2, 0);\n // Bug #79: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._gain = createAudioParam(\n this,\n isOffline,\n nativeBiquadFilterNode.gain,\n 40 * Math.log10(MOST_POSITIVE_SINGLE_FLOAT),\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._nativeBiquadFilterNode = nativeBiquadFilterNode;\n\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n\n get detune(): IAudioParam {\n return this._detune;\n }\n\n get frequency(): IAudioParam {\n return this._frequency;\n }\n\n get gain(): IAudioParam {\n return this._gain;\n }\n\n get Q(): IAudioParam {\n return this._Q;\n }\n\n get type(): TBiquadFilterType {\n return this._nativeBiquadFilterNode.type;\n }\n\n set type(value) {\n this._nativeBiquadFilterNode.type = value;\n }\n\n public getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void {\n // Bug #189: Safari does throw an InvalidStateError.\n try {\n this._nativeBiquadFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse);\n } catch (err) {\n if (err.code === 11) {\n throw createInvalidAccessError();\n }\n\n throw err;\n }\n\n // Bug #68: Safari does not throw an error if the parameters differ in their length.\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n }\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createBiquadFilterNodeRendererFactory = (connectAudioParam, createNativeBiquadFilterNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeBiquadFilterNodes = new WeakMap();\n const createBiquadFilterNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeBiquadFilterNode = getNativeAudioNode(proxy);\n /*\n * If the initially used nativeBiquadFilterNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeBiquadFilterNodeIsOwnedByContext = isOwnedByContext(nativeBiquadFilterNode, nativeOfflineAudioContext);\n if (!nativeBiquadFilterNodeIsOwnedByContext) {\n const options = {\n Q: nativeBiquadFilterNode.Q.value,\n channelCount: nativeBiquadFilterNode.channelCount,\n channelCountMode: nativeBiquadFilterNode.channelCountMode,\n channelInterpretation: nativeBiquadFilterNode.channelInterpretation,\n detune: nativeBiquadFilterNode.detune.value,\n frequency: nativeBiquadFilterNode.frequency.value,\n gain: nativeBiquadFilterNode.gain.value,\n type: nativeBiquadFilterNode.type\n };\n nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeOfflineAudioContext, options);\n }\n renderedNativeBiquadFilterNodes.set(nativeOfflineAudioContext, nativeBiquadFilterNode);\n if (!nativeBiquadFilterNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q);\n await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune);\n await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency);\n await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q);\n await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune);\n await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency);\n await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeBiquadFilterNode);\n return nativeBiquadFilterNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeBiquadFilterNode = renderedNativeBiquadFilterNodes.get(nativeOfflineAudioContext);\n if (renderedNativeBiquadFilterNode !== undefined) {\n return Promise.resolve(renderedNativeBiquadFilterNode);\n }\n return createBiquadFilterNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=biquad-filter-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IBiquadFilterNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TBiquadFilterNodeRendererFactoryFactory, TNativeBiquadFilterNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createBiquadFilterNodeRendererFactory: TBiquadFilterNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeBiquadFilterNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeBiquadFilterNodes = new WeakMap();\n\n const createBiquadFilterNode = async (proxy: IBiquadFilterNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeBiquadFilterNode = getNativeAudioNode(proxy);\n\n /*\n * If the initially used nativeBiquadFilterNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeBiquadFilterNodeIsOwnedByContext = isOwnedByContext(nativeBiquadFilterNode, nativeOfflineAudioContext);\n\n if (!nativeBiquadFilterNodeIsOwnedByContext) {\n const options = {\n Q: nativeBiquadFilterNode.Q.value,\n channelCount: nativeBiquadFilterNode.channelCount,\n channelCountMode: nativeBiquadFilterNode.channelCountMode,\n channelInterpretation: nativeBiquadFilterNode.channelInterpretation,\n detune: nativeBiquadFilterNode.detune.value,\n frequency: nativeBiquadFilterNode.frequency.value,\n gain: nativeBiquadFilterNode.gain.value,\n type: nativeBiquadFilterNode.type\n };\n\n nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeBiquadFilterNodes.set(nativeOfflineAudioContext, nativeBiquadFilterNode);\n\n if (!nativeBiquadFilterNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q);\n await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune);\n await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency);\n await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q);\n await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune);\n await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency);\n await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeBiquadFilterNode);\n\n return nativeBiquadFilterNode;\n };\n\n return {\n render(proxy: IBiquadFilterNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeBiquadFilterNode = renderedNativeBiquadFilterNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeBiquadFilterNode !== undefined) {\n return Promise.resolve(renderedNativeBiquadFilterNode);\n }\n\n return createBiquadFilterNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","export const createCacheTestResult = (ongoingTests, testResults) => {\n return (tester, test) => {\n const cachedTestResult = testResults.get(tester);\n if (cachedTestResult !== undefined) {\n return cachedTestResult;\n }\n const ongoingTest = ongoingTests.get(tester);\n if (ongoingTest !== undefined) {\n return ongoingTest;\n }\n try {\n const synchronousTestResult = test();\n if (synchronousTestResult instanceof Promise) {\n ongoingTests.set(tester, synchronousTestResult);\n return synchronousTestResult\n .catch(() => false)\n .then((finalTestResult) => {\n ongoingTests.delete(tester);\n testResults.set(tester, finalTestResult);\n return finalTestResult;\n });\n }\n testResults.set(tester, synchronousTestResult);\n return synchronousTestResult;\n }\n catch {\n testResults.set(tester, false);\n return false;\n }\n };\n};\n//# sourceMappingURL=cache-test-result.js.map","import { TCacheTestResultFactory } from '../types';\n\nexport const createCacheTestResult: TCacheTestResultFactory = (ongoingTests, testResults) => {\n return (tester, test) => {\n const cachedTestResult = testResults.get(tester);\n\n if (cachedTestResult !== undefined) {\n return cachedTestResult;\n }\n\n const ongoingTest = ongoingTests.get(tester);\n\n if (ongoingTest !== undefined) {\n return ongoingTest;\n }\n\n try {\n const synchronousTestResult = test();\n\n if (synchronousTestResult instanceof Promise) {\n ongoingTests.set(tester, synchronousTestResult);\n\n return synchronousTestResult\n .catch(() => false)\n .then((finalTestResult) => {\n ongoingTests.delete(tester);\n testResults.set(tester, finalTestResult);\n\n return finalTestResult;\n });\n }\n\n testResults.set(tester, synchronousTestResult);\n\n return synchronousTestResult;\n } catch {\n testResults.set(tester, false);\n\n return false;\n }\n };\n};\n","const DEFAULT_OPTIONS = {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n};\nexport const createChannelMergerNodeConstructor = (audioNodeConstructor, createChannelMergerNodeRenderer, createNativeChannelMergerNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class ChannelMergerNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeChannelMergerNode = createNativeChannelMergerNode(nativeContext, mergedOptions);\n const channelMergerNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createChannelMergerNodeRenderer() : null));\n super(context, false, nativeChannelMergerNode, channelMergerNodeRenderer);\n }\n };\n};\n//# sourceMappingURL=channel-merger-node-constructor.js.map","import { IChannelMergerOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TChannelMergerNodeConstructorFactory, TContext } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n} as const;\n\nexport const createChannelMergerNodeConstructor: TChannelMergerNodeConstructorFactory = (\n audioNodeConstructor,\n createChannelMergerNodeRenderer,\n createNativeChannelMergerNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class ChannelMergerNode extends audioNodeConstructor {\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeChannelMergerNode = createNativeChannelMergerNode(nativeContext, mergedOptions);\n const channelMergerNodeRenderer = >(\n (isNativeOfflineAudioContext(nativeContext) ? createChannelMergerNodeRenderer() : null)\n );\n\n super(context, false, nativeChannelMergerNode, channelMergerNodeRenderer);\n }\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createChannelMergerNodeRendererFactory = (createNativeChannelMergerNode, getNativeAudioNode, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n const createAudioNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeAudioNode = getNativeAudioNode(proxy);\n // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext);\n if (!nativeAudioNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAudioNode.channelCount,\n channelCountMode: nativeAudioNode.channelCountMode,\n channelInterpretation: nativeAudioNode.channelInterpretation,\n numberOfInputs: nativeAudioNode.numberOfInputs\n };\n nativeAudioNode = createNativeChannelMergerNode(nativeOfflineAudioContext, options);\n }\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode);\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode);\n return nativeAudioNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=channel-merger-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TChannelMergerNodeRendererFactoryFactory, TNativeAudioNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createChannelMergerNodeRendererFactory: TChannelMergerNodeRendererFactoryFactory = (\n createNativeChannelMergerNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n\n const createAudioNode = async (proxy: IAudioNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeAudioNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext);\n\n if (!nativeAudioNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAudioNode.channelCount,\n channelCountMode: nativeAudioNode.channelCountMode,\n channelInterpretation: nativeAudioNode.channelInterpretation,\n numberOfInputs: nativeAudioNode.numberOfInputs\n };\n\n nativeAudioNode = createNativeChannelMergerNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode);\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode);\n\n return nativeAudioNode;\n };\n\n return {\n render(proxy: IAudioNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","const DEFAULT_OPTIONS = {\n channelCount: 6,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: 6\n};\nexport const createChannelSplitterNodeConstructor = (audioNodeConstructor, createChannelSplitterNodeRenderer, createNativeChannelSplitterNode, getNativeContext, isNativeOfflineAudioContext, sanitizeChannelSplitterOptions) => {\n return class ChannelSplitterNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = sanitizeChannelSplitterOptions({ ...DEFAULT_OPTIONS, ...options });\n const nativeChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, mergedOptions);\n const channelSplitterNodeRenderer = ((isNativeOfflineAudioContext(nativeContext) ? createChannelSplitterNodeRenderer() : null));\n super(context, false, nativeChannelSplitterNode, channelSplitterNodeRenderer);\n }\n };\n};\n//# sourceMappingURL=channel-splitter-node-constructor.js.map","import { IChannelSplitterOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TChannelSplitterNodeConstructorFactory, TContext } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 6,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: 6\n} as const;\n\nexport const createChannelSplitterNodeConstructor: TChannelSplitterNodeConstructorFactory = (\n audioNodeConstructor,\n createChannelSplitterNodeRenderer,\n createNativeChannelSplitterNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n sanitizeChannelSplitterOptions\n) => {\n return class ChannelSplitterNode extends audioNodeConstructor {\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = sanitizeChannelSplitterOptions({ ...DEFAULT_OPTIONS, ...options });\n const nativeChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, mergedOptions);\n const channelSplitterNodeRenderer = >(\n (isNativeOfflineAudioContext(nativeContext) ? createChannelSplitterNodeRenderer() : null)\n );\n\n super(context, false, nativeChannelSplitterNode, channelSplitterNodeRenderer);\n }\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createChannelSplitterNodeRendererFactory = (createNativeChannelSplitterNode, getNativeAudioNode, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n const createAudioNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeAudioNode = getNativeAudioNode(proxy);\n // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext);\n if (!nativeAudioNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAudioNode.channelCount,\n channelCountMode: nativeAudioNode.channelCountMode,\n channelInterpretation: nativeAudioNode.channelInterpretation,\n numberOfOutputs: nativeAudioNode.numberOfOutputs\n };\n nativeAudioNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, options);\n }\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode);\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode);\n return nativeAudioNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=channel-splitter-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TChannelSplitterNodeRendererFactoryFactory, TNativeAudioNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createChannelSplitterNodeRendererFactory: TChannelSplitterNodeRendererFactoryFactory = (\n createNativeChannelSplitterNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n\n const createAudioNode = async (proxy: IAudioNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeAudioNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext);\n\n if (!nativeAudioNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAudioNode.channelCount,\n channelCountMode: nativeAudioNode.channelCountMode,\n channelInterpretation: nativeAudioNode.channelInterpretation,\n numberOfOutputs: nativeAudioNode.numberOfOutputs\n };\n\n nativeAudioNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode);\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode);\n\n return nativeAudioNode;\n };\n\n return {\n render(proxy: IAudioNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","export const createConnectAudioParam = (renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => {\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam);\n };\n};\n//# sourceMappingURL=connect-audio-param.js.map","import { TConnectAudioParamFactory } from '../types';\n\nexport const createConnectAudioParam: TConnectAudioParamFactory = (renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => {\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam);\n };\n};\n","import { isNativeAudioNode } from '../guards/native-audio-node';\nexport const createConnectMultipleOutputs = (createIndexSizeError) => {\n return (outputAudioNodes, destination, output = 0, input = 0) => {\n const outputAudioNode = outputAudioNodes[output];\n if (outputAudioNode === undefined) {\n throw createIndexSizeError();\n }\n if (isNativeAudioNode(destination)) {\n return outputAudioNode.connect(destination, 0, input);\n }\n return outputAudioNode.connect(destination, 0);\n };\n};\n//# sourceMappingURL=connect-multiple-outputs.js.map","import { isNativeAudioNode } from '../guards/native-audio-node';\nimport { TConnectMultipleOutputsFactory } from '../types';\n\nexport const createConnectMultipleOutputs: TConnectMultipleOutputsFactory = (createIndexSizeError) => {\n return (outputAudioNodes, destination, output = 0, input = 0) => {\n const outputAudioNode = outputAudioNodes[output];\n\n if (outputAudioNode === undefined) {\n throw createIndexSizeError();\n }\n\n if (isNativeAudioNode(destination)) {\n return outputAudioNode.connect(destination, 0, input);\n }\n\n return outputAudioNode.connect(destination, 0);\n };\n};\n","export const createConnectedNativeAudioBufferSourceNodeFactory = (createNativeAudioBufferSourceNode) => {\n return (nativeContext, nativeAudioNode) => {\n const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const nativeAudioBuffer = nativeContext.createBuffer(1, 2, 44100);\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n nativeAudioBufferSourceNode.loop = true;\n nativeAudioBufferSourceNode.connect(nativeAudioNode);\n nativeAudioBufferSourceNode.start();\n return () => {\n nativeAudioBufferSourceNode.stop();\n nativeAudioBufferSourceNode.disconnect(nativeAudioNode);\n };\n };\n};\n//# sourceMappingURL=connected-native-audio-buffer-source-node-factory.js.map","import { TConnectedNativeAudioBufferSourceNodeFactoryFactory } from '../types';\n\nexport const createConnectedNativeAudioBufferSourceNodeFactory: TConnectedNativeAudioBufferSourceNodeFactoryFactory = (\n createNativeAudioBufferSourceNode\n) => {\n return (nativeContext, nativeAudioNode) => {\n const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const nativeAudioBuffer = nativeContext.createBuffer(1, 2, 44100);\n\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n nativeAudioBufferSourceNode.loop = true;\n\n nativeAudioBufferSourceNode.connect(nativeAudioNode);\n nativeAudioBufferSourceNode.start();\n\n return () => {\n nativeAudioBufferSourceNode.stop();\n nativeAudioBufferSourceNode.disconnect(nativeAudioNode);\n };\n };\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n offset: 1\n};\nexport const createConstantSourceNodeConstructor = (audioNodeConstructor, createAudioParam, createConstantSourceNodeRendererFactory, createNativeConstantSourceNode, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => {\n return class ConstantSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeConstantSourceNode = createNativeConstantSourceNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const constantSourceNodeRenderer = ((isOffline ? createConstantSourceNodeRendererFactory() : null));\n super(context, false, nativeConstantSourceNode, constantSourceNodeRenderer);\n this._constantSourceNodeRenderer = constantSourceNodeRenderer;\n this._nativeConstantSourceNode = nativeConstantSourceNode;\n /*\n * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and minValue\n * for GainNodes.\n */\n this._offset = createAudioParam(this, isOffline, nativeConstantSourceNode.offset, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._onended = null;\n }\n get offset() {\n return this._offset;\n }\n get onended() {\n return this._onended;\n }\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeConstantSourceNode.onended = wrappedListener;\n const nativeOnEnded = this._nativeConstantSourceNode.onended;\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n start(when = 0) {\n this._nativeConstantSourceNode.start(when);\n if (this._constantSourceNodeRenderer !== null) {\n this._constantSourceNodeRenderer.start = when;\n }\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n const resetInternalStateToPassive = () => {\n this._nativeConstantSourceNode.removeEventListener('ended', resetInternalStateToPassive);\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n this._nativeConstantSourceNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n stop(when = 0) {\n this._nativeConstantSourceNode.stop(when);\n if (this._constantSourceNodeRenderer !== null) {\n this._constantSourceNodeRenderer.stop = when;\n }\n }\n };\n};\n//# sourceMappingURL=constant-source-node-constructor.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nimport { IAudioParam, IAudioScheduledSourceNodeEventMap, IConstantSourceNode, IConstantSourceOptions } from '../interfaces';\nimport {\n TConstantSourceNodeConstructorFactory,\n TConstantSourceNodeRenderer,\n TContext,\n TEventHandler,\n TNativeConstantSourceNode\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n offset: 1\n} as const;\n\nexport const createConstantSourceNodeConstructor: TConstantSourceNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createConstantSourceNodeRendererFactory,\n createNativeConstantSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n) => {\n return class ConstantSourceNode\n extends audioNodeConstructor\n implements IConstantSourceNode\n {\n private _constantSourceNodeRenderer: TConstantSourceNodeRenderer;\n\n private _nativeConstantSourceNode: TNativeConstantSourceNode;\n\n private _offset: IAudioParam;\n\n private _onended: null | TEventHandler;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeConstantSourceNode = createNativeConstantSourceNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const constantSourceNodeRenderer = >(\n (isOffline ? createConstantSourceNodeRendererFactory() : null)\n );\n\n super(context, false, nativeConstantSourceNode, constantSourceNodeRenderer);\n\n this._constantSourceNodeRenderer = constantSourceNodeRenderer;\n this._nativeConstantSourceNode = nativeConstantSourceNode;\n /*\n * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and minValue\n * for GainNodes.\n */\n this._offset = createAudioParam(\n this,\n isOffline,\n nativeConstantSourceNode.offset,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._onended = null;\n }\n\n get offset(): IAudioParam {\n return this._offset;\n }\n\n get onended(): null | TEventHandler {\n return this._onended;\n }\n\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n\n this._nativeConstantSourceNode.onended = wrappedListener;\n\n const nativeOnEnded = this._nativeConstantSourceNode.onended;\n\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n\n public start(when = 0): void {\n this._nativeConstantSourceNode.start(when);\n\n if (this._constantSourceNodeRenderer !== null) {\n this._constantSourceNodeRenderer.start = when;\n }\n\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n\n const resetInternalStateToPassive = () => {\n this._nativeConstantSourceNode.removeEventListener('ended', resetInternalStateToPassive);\n\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n\n this._nativeConstantSourceNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n\n public stop(when = 0): void {\n this._nativeConstantSourceNode.stop(when);\n\n if (this._constantSourceNodeRenderer !== null) {\n this._constantSourceNodeRenderer.stop = when;\n }\n }\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createConstantSourceNodeRendererFactory = (connectAudioParam, createNativeConstantSourceNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeConstantSourceNodes = new WeakMap();\n let start = null;\n let stop = null;\n const createConstantSourceNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeConstantSourceNode = getNativeAudioNode(proxy);\n /*\n * If the initially used nativeConstantSourceNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeConstantSourceNodeIsOwnedByContext = isOwnedByContext(nativeConstantSourceNode, nativeOfflineAudioContext);\n if (!nativeConstantSourceNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeConstantSourceNode.channelCount,\n channelCountMode: nativeConstantSourceNode.channelCountMode,\n channelInterpretation: nativeConstantSourceNode.channelInterpretation,\n offset: nativeConstantSourceNode.offset.value\n };\n nativeConstantSourceNode = createNativeConstantSourceNode(nativeOfflineAudioContext, options);\n if (start !== null) {\n nativeConstantSourceNode.start(start);\n }\n if (stop !== null) {\n nativeConstantSourceNode.stop(stop);\n }\n }\n renderedNativeConstantSourceNodes.set(nativeOfflineAudioContext, nativeConstantSourceNode);\n if (!nativeConstantSourceNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConstantSourceNode);\n return nativeConstantSourceNode;\n };\n return {\n set start(value) {\n start = value;\n },\n set stop(value) {\n stop = value;\n },\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeConstantSourceNode = renderedNativeConstantSourceNodes.get(nativeOfflineAudioContext);\n if (renderedNativeConstantSourceNode !== undefined) {\n return Promise.resolve(renderedNativeConstantSourceNode);\n }\n return createConstantSourceNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=constant-source-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IConstantSourceNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TConstantSourceNodeRendererFactoryFactory, TNativeConstantSourceNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createConstantSourceNodeRendererFactory: TConstantSourceNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeConstantSourceNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeConstantSourceNodes = new WeakMap();\n\n let start: null | number = null;\n let stop: null | number = null;\n\n const createConstantSourceNode = async (proxy: IConstantSourceNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeConstantSourceNode = getNativeAudioNode(proxy);\n\n /*\n * If the initially used nativeConstantSourceNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeConstantSourceNodeIsOwnedByContext = isOwnedByContext(nativeConstantSourceNode, nativeOfflineAudioContext);\n\n if (!nativeConstantSourceNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeConstantSourceNode.channelCount,\n channelCountMode: nativeConstantSourceNode.channelCountMode,\n channelInterpretation: nativeConstantSourceNode.channelInterpretation,\n offset: nativeConstantSourceNode.offset.value\n };\n\n nativeConstantSourceNode = createNativeConstantSourceNode(nativeOfflineAudioContext, options);\n\n if (start !== null) {\n nativeConstantSourceNode.start(start);\n }\n\n if (stop !== null) {\n nativeConstantSourceNode.stop(stop);\n }\n }\n\n renderedNativeConstantSourceNodes.set(nativeOfflineAudioContext, nativeConstantSourceNode);\n\n if (!nativeConstantSourceNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConstantSourceNode);\n\n return nativeConstantSourceNode;\n };\n\n return {\n set start(value: number) {\n start = value;\n },\n set stop(value: number) {\n stop = value;\n },\n render(\n proxy: IConstantSourceNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeConstantSourceNode = renderedNativeConstantSourceNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeConstantSourceNode !== undefined) {\n return Promise.resolve(renderedNativeConstantSourceNode);\n }\n\n return createConstantSourceNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","export const createConvertNumberToUnsignedLong = (unit32Array) => {\n return (value) => {\n unit32Array[0] = value;\n return unit32Array[0];\n };\n};\n//# sourceMappingURL=convert-number-to-unsigned-long.js.map","import { TConvertNumberToUnsignedLongFactory } from '../types';\n\nexport const createConvertNumberToUnsignedLong: TConvertNumberToUnsignedLongFactory = (unit32Array) => {\n return (value) => {\n unit32Array[0] = value;\n\n return unit32Array[0];\n };\n};\n","const DEFAULT_OPTIONS = {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n disableNormalization: false\n};\nexport const createConvolverNodeConstructor = (audioNodeConstructor, createConvolverNodeRenderer, createNativeConvolverNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class ConvolverNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeConvolverNode = createNativeConvolverNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const convolverNodeRenderer = (isOffline ? createConvolverNodeRenderer() : null);\n super(context, false, nativeConvolverNode, convolverNodeRenderer);\n this._isBufferNullified = false;\n this._nativeConvolverNode = nativeConvolverNode;\n if (mergedOptions.buffer !== null) {\n setAudioNodeTailTime(this, mergedOptions.buffer.duration);\n }\n }\n get buffer() {\n if (this._isBufferNullified) {\n return null;\n }\n return this._nativeConvolverNode.buffer;\n }\n set buffer(value) {\n this._nativeConvolverNode.buffer = value;\n // Bug #115: Safari does not allow to set the buffer to null.\n if (value === null && this._nativeConvolverNode.buffer !== null) {\n const nativeContext = this._nativeConvolverNode.context;\n this._nativeConvolverNode.buffer = nativeContext.createBuffer(1, 1, 44100);\n this._isBufferNullified = true;\n setAudioNodeTailTime(this, 0);\n }\n else {\n this._isBufferNullified = false;\n setAudioNodeTailTime(this, this._nativeConvolverNode.buffer === null ? 0 : this._nativeConvolverNode.buffer.duration);\n }\n }\n get normalize() {\n return this._nativeConvolverNode.normalize;\n }\n set normalize(value) {\n this._nativeConvolverNode.normalize = value;\n }\n };\n};\n//# sourceMappingURL=convolver-node-constructor.js.map","import { IConvolverNode, IConvolverOptions } from '../interfaces';\nimport { TAnyAudioBuffer, TAudioNodeRenderer, TContext, TConvolverNodeConstructorFactory, TNativeConvolverNode } from '../types';\n\nconst DEFAULT_OPTIONS = {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n disableNormalization: false\n} as const;\n\nexport const createConvolverNodeConstructor: TConvolverNodeConstructorFactory = (\n audioNodeConstructor,\n createConvolverNodeRenderer,\n createNativeConvolverNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class ConvolverNode extends audioNodeConstructor implements IConvolverNode {\n private _isBufferNullified: boolean;\n\n private _nativeConvolverNode: TNativeConvolverNode;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeConvolverNode = createNativeConvolverNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const convolverNodeRenderer = >(isOffline ? createConvolverNodeRenderer() : null);\n\n super(context, false, nativeConvolverNode, convolverNodeRenderer);\n\n this._isBufferNullified = false;\n this._nativeConvolverNode = nativeConvolverNode;\n\n if (mergedOptions.buffer !== null) {\n setAudioNodeTailTime(this, mergedOptions.buffer.duration);\n }\n }\n\n get buffer(): null | TAnyAudioBuffer {\n if (this._isBufferNullified) {\n return null;\n }\n\n return this._nativeConvolverNode.buffer;\n }\n\n set buffer(value) {\n this._nativeConvolverNode.buffer = value;\n\n // Bug #115: Safari does not allow to set the buffer to null.\n if (value === null && this._nativeConvolverNode.buffer !== null) {\n const nativeContext = this._nativeConvolverNode.context;\n\n this._nativeConvolverNode.buffer = nativeContext.createBuffer(1, 1, 44100);\n this._isBufferNullified = true;\n\n setAudioNodeTailTime(this, 0);\n } else {\n this._isBufferNullified = false;\n\n setAudioNodeTailTime(this, this._nativeConvolverNode.buffer === null ? 0 : this._nativeConvolverNode.buffer.duration);\n }\n }\n\n get normalize(): boolean {\n return this._nativeConvolverNode.normalize;\n }\n\n set normalize(value) {\n this._nativeConvolverNode.normalize = value;\n }\n };\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createConvolverNodeRendererFactory = (createNativeConvolverNode, getNativeAudioNode, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeConvolverNodes = new WeakMap();\n const createConvolverNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeConvolverNode = getNativeAudioNode(proxy);\n // If the initially used nativeConvolverNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeConvolverNodeIsOwnedByContext = isOwnedByContext(nativeConvolverNode, nativeOfflineAudioContext);\n if (!nativeConvolverNodeIsOwnedByContext) {\n const options = {\n buffer: nativeConvolverNode.buffer,\n channelCount: nativeConvolverNode.channelCount,\n channelCountMode: nativeConvolverNode.channelCountMode,\n channelInterpretation: nativeConvolverNode.channelInterpretation,\n disableNormalization: !nativeConvolverNode.normalize\n };\n nativeConvolverNode = createNativeConvolverNode(nativeOfflineAudioContext, options);\n }\n renderedNativeConvolverNodes.set(nativeOfflineAudioContext, nativeConvolverNode);\n if (isNativeAudioNodeFaker(nativeConvolverNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode.inputs[0]);\n }\n else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode);\n }\n return nativeConvolverNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeConvolverNode = renderedNativeConvolverNodes.get(nativeOfflineAudioContext);\n if (renderedNativeConvolverNode !== undefined) {\n return Promise.resolve(renderedNativeConvolverNode);\n }\n return createConvolverNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=convolver-node-renderer-factory.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IConvolverNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TConvolverNodeRendererFactoryFactory, TNativeConvolverNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createConvolverNodeRendererFactory: TConvolverNodeRendererFactoryFactory = (\n createNativeConvolverNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeConvolverNodes = new WeakMap();\n\n const createConvolverNode = async (proxy: IConvolverNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeConvolverNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeConvolverNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeConvolverNodeIsOwnedByContext = isOwnedByContext(nativeConvolverNode, nativeOfflineAudioContext);\n\n if (!nativeConvolverNodeIsOwnedByContext) {\n const options = {\n buffer: nativeConvolverNode.buffer,\n channelCount: nativeConvolverNode.channelCount,\n channelCountMode: nativeConvolverNode.channelCountMode,\n channelInterpretation: nativeConvolverNode.channelInterpretation,\n disableNormalization: !nativeConvolverNode.normalize\n };\n\n nativeConvolverNode = createNativeConvolverNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeConvolverNodes.set(nativeOfflineAudioContext, nativeConvolverNode);\n\n if (isNativeAudioNodeFaker(nativeConvolverNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode.inputs[0]);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode);\n }\n\n return nativeConvolverNode;\n };\n\n return {\n render(proxy: IConvolverNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeConvolverNode = renderedNativeConvolverNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeConvolverNode !== undefined) {\n return Promise.resolve(renderedNativeConvolverNode);\n }\n\n return createConvolverNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","export const createCreateNativeOfflineAudioContext = (createNotSupportedError, nativeOfflineAudioContextConstructor) => {\n return (numberOfChannels, length, sampleRate) => {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n try {\n return new nativeOfflineAudioContextConstructor(numberOfChannels, length, sampleRate);\n }\n catch (err) {\n // Bug #143, #144 & #146: Safari throws a SyntaxError when numberOfChannels, length or sampleRate are invalid.\n if (err.name === 'SyntaxError') {\n throw createNotSupportedError();\n }\n throw err;\n }\n };\n};\n//# sourceMappingURL=create-native-offline-audio-context.js.map","import { TCreateNativeOfflineAudioContextFactory } from '../types';\n\nexport const createCreateNativeOfflineAudioContext: TCreateNativeOfflineAudioContextFactory = (\n createNotSupportedError,\n nativeOfflineAudioContextConstructor\n) => {\n return (numberOfChannels, length, sampleRate) => {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n try {\n return new nativeOfflineAudioContextConstructor(numberOfChannels, length, sampleRate);\n } catch (err) {\n // Bug #143, #144 & #146: Safari throws a SyntaxError when numberOfChannels, length or sampleRate are invalid.\n if (err.name === 'SyntaxError') {\n throw createNotSupportedError();\n }\n\n throw err;\n }\n };\n};\n","export const createDataCloneError = () => new DOMException('', 'DataCloneError');\n//# sourceMappingURL=data-clone-error.js.map","import { TDataCloneErrorFactory } from '../types';\n\nexport const createDataCloneError: TDataCloneErrorFactory = () => new DOMException('', 'DataCloneError');\n","import { detachArrayBuffer } from '../helpers/detach-array-buffer';\nimport { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nexport const createDecodeAudioData = (audioBufferStore, cacheTestResult, createDataCloneError, createEncodingError, detachedArrayBuffers, getNativeContext, isNativeContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, testPromiseSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => {\n return (anyContext, audioData) => {\n const nativeContext = isNativeContext(anyContext) ? anyContext : getNativeContext(anyContext);\n // Bug #43: Only Chrome, Edge and Opera do throw a DataCloneError.\n if (detachedArrayBuffers.has(audioData)) {\n const err = createDataCloneError();\n return Promise.reject(err);\n }\n // The audioData parameter maybe of a type which can't be added to a WeakSet.\n try {\n detachedArrayBuffers.add(audioData);\n }\n catch {\n // Ignore errors.\n }\n // Bug #21: Safari does not support promises yet.\n if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeContext))) {\n return nativeContext.decodeAudioData(audioData).then((audioBuffer) => {\n // Bug #133: Safari does neuter the ArrayBuffer.\n detachArrayBuffer(audioData).catch(() => {\n // Ignore errors.\n });\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n audioBufferStore.add(audioBuffer);\n return audioBuffer;\n });\n }\n // Bug #21: Safari does not return a Promise yet.\n return new Promise((resolve, reject) => {\n const complete = async () => {\n // Bug #133: Safari does neuter the ArrayBuffer.\n try {\n await detachArrayBuffer(audioData);\n }\n catch {\n // Ignore errors.\n }\n };\n const fail = (err) => {\n reject(err);\n complete();\n };\n // Bug #26: Safari throws a synchronous error.\n try {\n // Bug #1: Safari requires a successCallback.\n nativeContext.decodeAudioData(audioData, (audioBuffer) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n }\n audioBufferStore.add(audioBuffer);\n complete().then(() => resolve(audioBuffer));\n }, (err) => {\n // Bug #4: Safari returns null instead of an error.\n if (err === null) {\n fail(createEncodingError());\n }\n else {\n fail(err);\n }\n });\n }\n catch (err) {\n fail(err);\n }\n });\n };\n};\n//# sourceMappingURL=decode-audio-data.js.map","import { detachArrayBuffer } from '../helpers/detach-array-buffer';\nimport { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nimport { TDecodeAudioDataFactory } from '../types';\n\nexport const createDecodeAudioData: TDecodeAudioDataFactory = (\n audioBufferStore,\n cacheTestResult,\n createDataCloneError,\n createEncodingError,\n detachedArrayBuffers,\n getNativeContext,\n isNativeContext,\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport,\n testPromiseSupport,\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n) => {\n return (anyContext, audioData) => {\n const nativeContext = isNativeContext(anyContext) ? anyContext : getNativeContext(anyContext);\n\n // Bug #43: Only Chrome, Edge and Opera do throw a DataCloneError.\n if (detachedArrayBuffers.has(audioData)) {\n const err = createDataCloneError();\n\n return Promise.reject(err);\n }\n\n // The audioData parameter maybe of a type which can't be added to a WeakSet.\n try {\n detachedArrayBuffers.add(audioData);\n } catch {\n // Ignore errors.\n }\n\n // Bug #21: Safari does not support promises yet.\n if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeContext))) {\n return nativeContext.decodeAudioData(audioData).then((audioBuffer) => {\n // Bug #133: Safari does neuter the ArrayBuffer.\n detachArrayBuffer(audioData).catch(() => {\n // Ignore errors.\n });\n\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n if (\n !cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () =>\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer)\n )\n ) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n\n audioBufferStore.add(audioBuffer);\n\n return audioBuffer;\n });\n }\n\n // Bug #21: Safari does not return a Promise yet.\n return new Promise((resolve, reject) => {\n const complete = async () => {\n // Bug #133: Safari does neuter the ArrayBuffer.\n try {\n await detachArrayBuffer(audioData);\n } catch {\n // Ignore errors.\n }\n };\n\n const fail = (err: DOMException | Error) => {\n reject(err);\n complete();\n };\n\n // Bug #26: Safari throws a synchronous error.\n try {\n // Bug #1: Safari requires a successCallback.\n nativeContext.decodeAudioData(\n audioData,\n (audioBuffer) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n }\n\n audioBufferStore.add(audioBuffer);\n\n complete().then(() => resolve(audioBuffer));\n },\n (err: DOMException | Error) => {\n // Bug #4: Safari returns null instead of an error.\n if (err === null) {\n fail(createEncodingError());\n } else {\n fail(err);\n }\n }\n );\n } catch (err) {\n fail(err);\n }\n });\n };\n};\n","export const detachArrayBuffer = (arrayBuffer) => {\n const { port1, port2 } = new MessageChannel();\n return new Promise((resolve) => {\n const closeAndResolve = () => {\n port2.onmessage = null;\n port1.close();\n port2.close();\n resolve();\n };\n port2.onmessage = () => closeAndResolve();\n try {\n port1.postMessage(arrayBuffer, [arrayBuffer]);\n }\n finally {\n closeAndResolve();\n }\n });\n};\n//# sourceMappingURL=detach-array-buffer.js.map","export const detachArrayBuffer = (arrayBuffer: ArrayBuffer): Promise => {\n const { port1, port2 } = new MessageChannel();\n\n return new Promise((resolve) => {\n const closeAndResolve = () => {\n port2.onmessage = null;\n\n port1.close();\n port2.close();\n\n resolve();\n };\n\n port2.onmessage = () => closeAndResolve();\n\n try {\n port1.postMessage(arrayBuffer, [arrayBuffer]);\n } finally {\n closeAndResolve();\n }\n });\n};\n","import { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nexport const createDecrementCycleCounter = (connectNativeAudioNodeToNativeAudioNode, cycleCounters, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, getNativeContext, isActiveAudioNode, isNativeOfflineAudioContext) => {\n return (audioNode, count) => {\n const cycleCounter = cycleCounters.get(audioNode);\n if (cycleCounter === undefined) {\n throw new Error('Missing the expected cycle count.');\n }\n const nativeContext = getNativeContext(audioNode.context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n if (cycleCounter === count) {\n cycleCounters.delete(audioNode);\n if (!isOffline && isActiveAudioNode(audioNode)) {\n const nativeSourceAudioNode = getNativeAudioNode(audioNode);\n const { outputs } = getAudioNodeConnections(audioNode);\n for (const output of outputs) {\n if (isAudioNodeOutputConnection(output)) {\n const nativeDestinationAudioNode = getNativeAudioNode(output[0]);\n connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]);\n }\n else {\n const nativeDestinationAudioParam = getNativeAudioParam(output[0]);\n nativeSourceAudioNode.connect(nativeDestinationAudioParam, output[1]);\n }\n }\n }\n }\n else {\n cycleCounters.set(audioNode, cycleCounter - count);\n }\n };\n};\n//# sourceMappingURL=decrement-cycle-counter.js.map","import { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nimport { TDecrementCycleCounterFactory } from '../types';\n\nexport const createDecrementCycleCounter: TDecrementCycleCounterFactory = (\n connectNativeAudioNodeToNativeAudioNode,\n cycleCounters,\n getAudioNodeConnections,\n getNativeAudioNode,\n getNativeAudioParam,\n getNativeContext,\n isActiveAudioNode,\n isNativeOfflineAudioContext\n) => {\n return (audioNode, count) => {\n const cycleCounter = cycleCounters.get(audioNode);\n\n if (cycleCounter === undefined) {\n throw new Error('Missing the expected cycle count.');\n }\n\n const nativeContext = getNativeContext(audioNode.context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n\n if (cycleCounter === count) {\n cycleCounters.delete(audioNode);\n\n if (!isOffline && isActiveAudioNode(audioNode)) {\n const nativeSourceAudioNode = getNativeAudioNode(audioNode);\n const { outputs } = getAudioNodeConnections(audioNode);\n\n for (const output of outputs) {\n if (isAudioNodeOutputConnection(output)) {\n const nativeDestinationAudioNode = getNativeAudioNode(output[0]);\n\n connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]);\n } else {\n const nativeDestinationAudioParam = getNativeAudioParam(output[0]);\n\n nativeSourceAudioNode.connect(nativeDestinationAudioParam, output[1]);\n }\n }\n }\n } else {\n cycleCounters.set(audioNode, cycleCounter - count);\n }\n };\n};\n","const DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n delayTime: 0,\n maxDelayTime: 1\n};\nexport const createDelayNodeConstructor = (audioNodeConstructor, createAudioParam, createDelayNodeRenderer, createNativeDelayNode, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class DelayNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeDelayNode = createNativeDelayNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const delayNodeRenderer = (isOffline ? createDelayNodeRenderer(mergedOptions.maxDelayTime) : null);\n super(context, false, nativeDelayNode, delayNodeRenderer);\n this._delayTime = createAudioParam(this, isOffline, nativeDelayNode.delayTime);\n setAudioNodeTailTime(this, mergedOptions.maxDelayTime);\n }\n get delayTime() {\n return this._delayTime;\n }\n };\n};\n//# sourceMappingURL=delay-node-constructor.js.map","import { IAudioParam, IDelayNode, IDelayOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TContext, TDelayNodeConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n delayTime: 0,\n maxDelayTime: 1\n} as const;\n\nexport const createDelayNodeConstructor: TDelayNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createDelayNodeRenderer,\n createNativeDelayNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class DelayNode extends audioNodeConstructor implements IDelayNode {\n private _delayTime: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeDelayNode = createNativeDelayNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const delayNodeRenderer = >(isOffline ? createDelayNodeRenderer(mergedOptions.maxDelayTime) : null);\n\n super(context, false, nativeDelayNode, delayNodeRenderer);\n\n this._delayTime = createAudioParam(this, isOffline, nativeDelayNode.delayTime);\n\n setAudioNodeTailTime(this, mergedOptions.maxDelayTime);\n }\n\n get delayTime(): IAudioParam {\n return this._delayTime;\n }\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createDelayNodeRendererFactory = (connectAudioParam, createNativeDelayNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return (maxDelayTime) => {\n const renderedNativeDelayNodes = new WeakMap();\n const createDelayNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeDelayNode = getNativeAudioNode(proxy);\n // If the initially used nativeDelayNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeDelayNodeIsOwnedByContext = isOwnedByContext(nativeDelayNode, nativeOfflineAudioContext);\n if (!nativeDelayNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeDelayNode.channelCount,\n channelCountMode: nativeDelayNode.channelCountMode,\n channelInterpretation: nativeDelayNode.channelInterpretation,\n delayTime: nativeDelayNode.delayTime.value,\n maxDelayTime\n };\n nativeDelayNode = createNativeDelayNode(nativeOfflineAudioContext, options);\n }\n renderedNativeDelayNodes.set(nativeOfflineAudioContext, nativeDelayNode);\n if (!nativeDelayNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDelayNode);\n return nativeDelayNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeDelayNode = renderedNativeDelayNodes.get(nativeOfflineAudioContext);\n if (renderedNativeDelayNode !== undefined) {\n return Promise.resolve(renderedNativeDelayNode);\n }\n return createDelayNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=delay-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IDelayNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TDelayNodeRendererFactoryFactory, TNativeDelayNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createDelayNodeRendererFactory: TDelayNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeDelayNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return (maxDelayTime: number) => {\n const renderedNativeDelayNodes = new WeakMap();\n\n const createDelayNode = async (proxy: IDelayNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeDelayNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeDelayNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeDelayNodeIsOwnedByContext = isOwnedByContext(nativeDelayNode, nativeOfflineAudioContext);\n\n if (!nativeDelayNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeDelayNode.channelCount,\n channelCountMode: nativeDelayNode.channelCountMode,\n channelInterpretation: nativeDelayNode.channelInterpretation,\n delayTime: nativeDelayNode.delayTime.value,\n maxDelayTime\n };\n\n nativeDelayNode = createNativeDelayNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeDelayNodes.set(nativeOfflineAudioContext, nativeDelayNode);\n\n if (!nativeDelayNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDelayNode);\n\n return nativeDelayNode;\n };\n\n return {\n render(proxy: IDelayNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeDelayNode = renderedNativeDelayNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeDelayNode !== undefined) {\n return Promise.resolve(renderedNativeDelayNode);\n }\n\n return createDelayNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","export const createDeleteActiveInputConnectionToAudioNode = (pickElementFromSet) => {\n return (activeInputs, source, output, input) => {\n return pickElementFromSet(activeInputs[input], (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output);\n };\n};\n//# sourceMappingURL=delete-active-input-connection-to-audio-node.js.map","import { TDeleteActiveInputConnectionToAudioNodeFactory } from '../types';\n\nexport const createDeleteActiveInputConnectionToAudioNode: TDeleteActiveInputConnectionToAudioNodeFactory = (pickElementFromSet) => {\n return (activeInputs, source, output, input) => {\n return pickElementFromSet(\n activeInputs[input],\n (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output\n );\n };\n};\n","export const createDeleteUnrenderedAudioWorkletNode = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).delete(audioWorkletNode);\n };\n};\n//# sourceMappingURL=delete-unrendered-audio-worklet-node.js.map","import { TDeleteUnrenderedAudioWorkletNodeFactory } from '../types';\n\nexport const createDeleteUnrenderedAudioWorkletNode: TDeleteUnrenderedAudioWorkletNodeFactory = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).delete(audioWorkletNode);\n };\n};\n","import { isAudioNode } from '../guards/audio-node';\nimport { isDelayNode } from '../guards/delay-node';\nexport const createDetectCycles = (audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey) => {\n return function detectCycles(chain, nextLink) {\n const audioNode = isAudioNode(nextLink) ? nextLink : getValueForKey(audioParamAudioNodeStore, nextLink);\n if (isDelayNode(audioNode)) {\n return [];\n }\n if (chain[0] === audioNode) {\n return [chain];\n }\n if (chain.includes(audioNode)) {\n return [];\n }\n const { outputs } = getAudioNodeConnections(audioNode);\n return Array.from(outputs)\n .map((outputConnection) => detectCycles([...chain, audioNode], outputConnection[0]))\n .reduce((mergedCycles, nestedCycles) => mergedCycles.concat(nestedCycles), []);\n };\n};\n//# sourceMappingURL=detect-cycles.js.map","import { isAudioNode } from '../guards/audio-node';\nimport { isDelayNode } from '../guards/delay-node';\nimport { IAudioNode, IAudioParam } from '../interfaces';\nimport { TContext, TDetectCyclesFactory } from '../types';\n\nexport const createDetectCycles: TDetectCyclesFactory = (audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey) => {\n return function detectCycles(chain: IAudioNode[], nextLink: IAudioNode | IAudioParam): IAudioNode[][] {\n const audioNode = isAudioNode(nextLink) ? nextLink : >getValueForKey(audioParamAudioNodeStore, nextLink);\n\n if (isDelayNode(audioNode)) {\n return [];\n }\n\n if (chain[0] === audioNode) {\n return [chain];\n }\n\n if (chain.includes(audioNode)) {\n return [];\n }\n\n const { outputs } = getAudioNodeConnections(audioNode);\n\n return Array.from(outputs)\n .map((outputConnection) => detectCycles([...chain, audioNode], outputConnection[0]))\n .reduce((mergedCycles, nestedCycles) => mergedCycles.concat(nestedCycles), []);\n };\n};\n","export const isDelayNode = (audioNode) => {\n return 'delayTime' in audioNode;\n};\n//# sourceMappingURL=delay-node.js.map","import { IAudioNode, IDelayNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isDelayNode = (audioNode: IAudioNode): audioNode is IDelayNode => {\n return 'delayTime' in audioNode;\n};\n","import { isNativeAudioNode } from '../guards/native-audio-node';\nconst getOutputAudioNodeAtIndex = (createIndexSizeError, outputAudioNodes, output) => {\n const outputAudioNode = outputAudioNodes[output];\n if (outputAudioNode === undefined) {\n throw createIndexSizeError();\n }\n return outputAudioNode;\n};\nexport const createDisconnectMultipleOutputs = (createIndexSizeError) => {\n return (outputAudioNodes, destinationOrOutput = undefined, output = undefined, input = 0) => {\n if (destinationOrOutput === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect());\n }\n if (typeof destinationOrOutput === 'number') {\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, destinationOrOutput).disconnect();\n }\n if (isNativeAudioNode(destinationOrOutput)) {\n if (output === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput));\n }\n if (input === undefined) {\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0);\n }\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0, input);\n }\n if (output === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput));\n }\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0);\n };\n};\n//# sourceMappingURL=disconnect-multiple-outputs.js.map","import { isNativeAudioNode } from '../guards/native-audio-node';\nimport { TDisconnectMultipleOutputsFactory, TIndexSizeErrorFactory, TNativeAudioNode } from '../types';\n\nconst getOutputAudioNodeAtIndex = (\n createIndexSizeError: TIndexSizeErrorFactory,\n outputAudioNodes: TNativeAudioNode[],\n output: number\n): TNativeAudioNode => {\n const outputAudioNode = outputAudioNodes[output];\n\n if (outputAudioNode === undefined) {\n throw createIndexSizeError();\n }\n\n return outputAudioNode;\n};\n\nexport const createDisconnectMultipleOutputs: TDisconnectMultipleOutputsFactory = (createIndexSizeError) => {\n return (outputAudioNodes, destinationOrOutput = undefined, output = undefined, input = 0) => {\n if (destinationOrOutput === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect());\n }\n\n if (typeof destinationOrOutput === 'number') {\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, destinationOrOutput).disconnect();\n }\n\n if (isNativeAudioNode(destinationOrOutput)) {\n if (output === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput));\n }\n\n if (input === undefined) {\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0);\n }\n\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0, input);\n }\n\n if (output === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput));\n }\n\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0);\n };\n};\n","const DEFAULT_OPTIONS = {\n attack: 0.003,\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n knee: 30,\n ratio: 12,\n release: 0.25,\n threshold: -24\n};\nexport const createDynamicsCompressorNodeConstructor = (audioNodeConstructor, createAudioParam, createDynamicsCompressorNodeRenderer, createNativeDynamicsCompressorNode, createNotSupportedError, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class DynamicsCompressorNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const dynamicsCompressorNodeRenderer = (isOffline ? createDynamicsCompressorNodeRenderer() : null);\n super(context, false, nativeDynamicsCompressorNode, dynamicsCompressorNodeRenderer);\n this._attack = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.attack);\n this._knee = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.knee);\n this._nativeDynamicsCompressorNode = nativeDynamicsCompressorNode;\n this._ratio = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.ratio);\n this._release = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.release);\n this._threshold = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.threshold);\n setAudioNodeTailTime(this, 0.006);\n }\n get attack() {\n return this._attack;\n }\n // Bug #108: Safari allows a channelCount of three and above which is why the getter and setter needs to be overwritten here.\n get channelCount() {\n return this._nativeDynamicsCompressorNode.channelCount;\n }\n set channelCount(value) {\n const previousChannelCount = this._nativeDynamicsCompressorNode.channelCount;\n this._nativeDynamicsCompressorNode.channelCount = value;\n if (value > 2) {\n this._nativeDynamicsCompressorNode.channelCount = previousChannelCount;\n throw createNotSupportedError();\n }\n }\n /*\n * Bug #109: Only Chrome, Firefox and Opera disallow a channelCountMode of 'max' yet which is why the getter and setter needs to be\n * overwritten here.\n */\n get channelCountMode() {\n return this._nativeDynamicsCompressorNode.channelCountMode;\n }\n set channelCountMode(value) {\n const previousChannelCount = this._nativeDynamicsCompressorNode.channelCountMode;\n this._nativeDynamicsCompressorNode.channelCountMode = value;\n if (value === 'max') {\n this._nativeDynamicsCompressorNode.channelCountMode = previousChannelCount;\n throw createNotSupportedError();\n }\n }\n get knee() {\n return this._knee;\n }\n get ratio() {\n return this._ratio;\n }\n get reduction() {\n // Bug #111: Safari returns an AudioParam instead of a number.\n if (typeof this._nativeDynamicsCompressorNode.reduction.value === 'number') {\n return this._nativeDynamicsCompressorNode.reduction.value;\n }\n return this._nativeDynamicsCompressorNode.reduction;\n }\n get release() {\n return this._release;\n }\n get threshold() {\n return this._threshold;\n }\n };\n};\n//# sourceMappingURL=dynamics-compressor-node-constructor.js.map","import { IAudioParam, IDynamicsCompressorNode, IDynamicsCompressorOptions } from '../interfaces';\nimport {\n TAudioNodeRenderer,\n TChannelCountMode,\n TContext,\n TDynamicsCompressorNodeConstructorFactory,\n TNativeAudioParam,\n TNativeDynamicsCompressorNode\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n attack: 0.003,\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n knee: 30,\n ratio: 12,\n release: 0.25,\n threshold: -24\n} as const;\n\nexport const createDynamicsCompressorNodeConstructor: TDynamicsCompressorNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createDynamicsCompressorNodeRenderer,\n createNativeDynamicsCompressorNode,\n createNotSupportedError,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class DynamicsCompressorNode extends audioNodeConstructor implements IDynamicsCompressorNode {\n private _attack: IAudioParam;\n\n private _knee: IAudioParam;\n\n private _nativeDynamicsCompressorNode: TNativeDynamicsCompressorNode;\n\n private _ratio: IAudioParam;\n\n private _release: IAudioParam;\n\n private _threshold: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const dynamicsCompressorNodeRenderer = >(isOffline ? createDynamicsCompressorNodeRenderer() : null);\n\n super(context, false, nativeDynamicsCompressorNode, dynamicsCompressorNodeRenderer);\n\n this._attack = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.attack);\n this._knee = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.knee);\n this._nativeDynamicsCompressorNode = nativeDynamicsCompressorNode;\n this._ratio = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.ratio);\n this._release = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.release);\n this._threshold = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.threshold);\n\n setAudioNodeTailTime(this, 0.006);\n }\n\n get attack(): IAudioParam {\n return this._attack;\n }\n\n // Bug #108: Safari allows a channelCount of three and above which is why the getter and setter needs to be overwritten here.\n get channelCount(): number {\n return this._nativeDynamicsCompressorNode.channelCount;\n }\n\n set channelCount(value) {\n const previousChannelCount = this._nativeDynamicsCompressorNode.channelCount;\n\n this._nativeDynamicsCompressorNode.channelCount = value;\n\n if (value > 2) {\n this._nativeDynamicsCompressorNode.channelCount = previousChannelCount;\n\n throw createNotSupportedError();\n }\n }\n\n /*\n * Bug #109: Only Chrome, Firefox and Opera disallow a channelCountMode of 'max' yet which is why the getter and setter needs to be\n * overwritten here.\n */\n get channelCountMode(): TChannelCountMode {\n return this._nativeDynamicsCompressorNode.channelCountMode;\n }\n\n set channelCountMode(value) {\n const previousChannelCount = this._nativeDynamicsCompressorNode.channelCountMode;\n\n this._nativeDynamicsCompressorNode.channelCountMode = value;\n\n if (value === 'max') {\n this._nativeDynamicsCompressorNode.channelCountMode = previousChannelCount;\n\n throw createNotSupportedError();\n }\n }\n\n get knee(): IAudioParam {\n return this._knee;\n }\n\n get ratio(): IAudioParam {\n return this._ratio;\n }\n\n get reduction(): number {\n // Bug #111: Safari returns an AudioParam instead of a number.\n if (typeof ((this._nativeDynamicsCompressorNode.reduction)).value === 'number') {\n return ((this._nativeDynamicsCompressorNode.reduction)).value;\n }\n\n return this._nativeDynamicsCompressorNode.reduction;\n }\n\n get release(): IAudioParam {\n return this._release;\n }\n\n get threshold(): IAudioParam {\n return this._threshold;\n }\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createDynamicsCompressorNodeRendererFactory = (connectAudioParam, createNativeDynamicsCompressorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeDynamicsCompressorNodes = new WeakMap();\n const createDynamicsCompressorNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeDynamicsCompressorNode = getNativeAudioNode(proxy);\n /*\n * If the initially used nativeDynamicsCompressorNode was not constructed on the same OfflineAudioContext it needs to be\n * created again.\n */\n const nativeDynamicsCompressorNodeIsOwnedByContext = isOwnedByContext(nativeDynamicsCompressorNode, nativeOfflineAudioContext);\n if (!nativeDynamicsCompressorNodeIsOwnedByContext) {\n const options = {\n attack: nativeDynamicsCompressorNode.attack.value,\n channelCount: nativeDynamicsCompressorNode.channelCount,\n channelCountMode: nativeDynamicsCompressorNode.channelCountMode,\n channelInterpretation: nativeDynamicsCompressorNode.channelInterpretation,\n knee: nativeDynamicsCompressorNode.knee.value,\n ratio: nativeDynamicsCompressorNode.ratio.value,\n release: nativeDynamicsCompressorNode.release.value,\n threshold: nativeDynamicsCompressorNode.threshold.value\n };\n nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeOfflineAudioContext, options);\n }\n renderedNativeDynamicsCompressorNodes.set(nativeOfflineAudioContext, nativeDynamicsCompressorNode);\n if (!nativeDynamicsCompressorNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack);\n await renderAutomation(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee);\n await renderAutomation(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio);\n await renderAutomation(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release);\n await renderAutomation(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack);\n await connectAudioParam(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee);\n await connectAudioParam(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio);\n await connectAudioParam(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release);\n await connectAudioParam(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDynamicsCompressorNode);\n return nativeDynamicsCompressorNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeDynamicsCompressorNode = renderedNativeDynamicsCompressorNodes.get(nativeOfflineAudioContext);\n if (renderedNativeDynamicsCompressorNode !== undefined) {\n return Promise.resolve(renderedNativeDynamicsCompressorNode);\n }\n return createDynamicsCompressorNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=dynamics-compressor-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IDynamicsCompressorNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TDynamicsCompressorNodeRendererFactoryFactory, TNativeDynamicsCompressorNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createDynamicsCompressorNodeRendererFactory: TDynamicsCompressorNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeDynamicsCompressorNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeDynamicsCompressorNodes = new WeakMap();\n\n const createDynamicsCompressorNode = async (\n proxy: IDynamicsCompressorNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ) => {\n let nativeDynamicsCompressorNode = getNativeAudioNode(proxy);\n\n /*\n * If the initially used nativeDynamicsCompressorNode was not constructed on the same OfflineAudioContext it needs to be\n * created again.\n */\n const nativeDynamicsCompressorNodeIsOwnedByContext = isOwnedByContext(nativeDynamicsCompressorNode, nativeOfflineAudioContext);\n\n if (!nativeDynamicsCompressorNodeIsOwnedByContext) {\n const options = {\n attack: nativeDynamicsCompressorNode.attack.value,\n channelCount: nativeDynamicsCompressorNode.channelCount,\n channelCountMode: nativeDynamicsCompressorNode.channelCountMode,\n channelInterpretation: nativeDynamicsCompressorNode.channelInterpretation,\n knee: nativeDynamicsCompressorNode.knee.value,\n ratio: nativeDynamicsCompressorNode.ratio.value,\n release: nativeDynamicsCompressorNode.release.value,\n threshold: nativeDynamicsCompressorNode.threshold.value\n };\n\n nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeDynamicsCompressorNodes.set(nativeOfflineAudioContext, nativeDynamicsCompressorNode);\n\n if (!nativeDynamicsCompressorNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack);\n await renderAutomation(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee);\n await renderAutomation(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio);\n await renderAutomation(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release);\n await renderAutomation(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack);\n await connectAudioParam(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee);\n await connectAudioParam(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio);\n await connectAudioParam(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release);\n await connectAudioParam(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDynamicsCompressorNode);\n\n return nativeDynamicsCompressorNode;\n };\n\n return {\n render(\n proxy: IDynamicsCompressorNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeDynamicsCompressorNode = renderedNativeDynamicsCompressorNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeDynamicsCompressorNode !== undefined) {\n return Promise.resolve(renderedNativeDynamicsCompressorNode);\n }\n\n return createDynamicsCompressorNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","export const createEncodingError = () => new DOMException('', 'EncodingError');\n//# sourceMappingURL=encoding-error.js.map","import { TEncodingErrorFactory } from '../types';\n\nexport const createEncodingError: TEncodingErrorFactory = () => new DOMException('', 'EncodingError');\n","export const createEvaluateSource = (window) => {\n return (source) => new Promise((resolve, reject) => {\n if (window === null) {\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n return;\n }\n const head = window.document.head;\n if (head === null) {\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n }\n else {\n const script = window.document.createElement('script');\n // @todo Safari doesn't like URLs with a type of 'application/javascript; charset=utf-8'.\n const blob = new Blob([source], { type: 'application/javascript' });\n const url = URL.createObjectURL(blob);\n const originalOnErrorHandler = window.onerror;\n const removeErrorEventListenerAndRevokeUrl = () => {\n window.onerror = originalOnErrorHandler;\n URL.revokeObjectURL(url);\n };\n window.onerror = (message, src, lineno, colno, error) => {\n // @todo Edge thinks the source is the one of the html document.\n if (src === url || (src === window.location.href && lineno === 1 && colno === 1)) {\n removeErrorEventListenerAndRevokeUrl();\n reject(error);\n return false;\n }\n if (originalOnErrorHandler !== null) {\n return originalOnErrorHandler(message, src, lineno, colno, error);\n }\n };\n script.onerror = () => {\n removeErrorEventListenerAndRevokeUrl();\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n };\n script.onload = () => {\n removeErrorEventListenerAndRevokeUrl();\n resolve();\n };\n script.src = url;\n script.type = 'module';\n head.appendChild(script);\n }\n });\n};\n//# sourceMappingURL=evaluate-source.js.map","import { TEvaluateSourceFactory } from '../types';\n\nexport const createEvaluateSource: TEvaluateSourceFactory = (window) => {\n return (source) =>\n new Promise((resolve, reject) => {\n if (window === null) {\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n\n return;\n }\n\n const head = window.document.head;\n\n if (head === null) {\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n } else {\n const script = window.document.createElement('script');\n // @todo Safari doesn't like URLs with a type of 'application/javascript; charset=utf-8'.\n const blob = new Blob([source], { type: 'application/javascript' });\n const url = URL.createObjectURL(blob);\n\n const originalOnErrorHandler = window.onerror;\n\n const removeErrorEventListenerAndRevokeUrl = () => {\n window.onerror = originalOnErrorHandler;\n\n URL.revokeObjectURL(url);\n };\n\n window.onerror = (message, src, lineno, colno, error) => {\n // @todo Edge thinks the source is the one of the html document.\n if (src === url || (src === window.location.href && lineno === 1 && colno === 1)) {\n removeErrorEventListenerAndRevokeUrl();\n reject(error);\n\n return false;\n }\n\n if (originalOnErrorHandler !== null) {\n return originalOnErrorHandler(message, src, lineno, colno, error);\n }\n };\n\n script.onerror = () => {\n removeErrorEventListenerAndRevokeUrl();\n // Bug #182 Chrome, Edge and Opera do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n };\n script.onload = () => {\n removeErrorEventListenerAndRevokeUrl();\n resolve();\n };\n script.src = url;\n script.type = 'module';\n\n head.appendChild(script);\n }\n });\n};\n","export const createEventTargetConstructor = (wrapEventListener) => {\n return class EventTarget {\n constructor(_nativeEventTarget) {\n this._nativeEventTarget = _nativeEventTarget;\n this._listeners = new WeakMap();\n }\n addEventListener(type, listener, options) {\n if (listener !== null) {\n let wrappedEventListener = this._listeners.get(listener);\n if (wrappedEventListener === undefined) {\n wrappedEventListener = wrapEventListener(this, listener);\n if (typeof listener === 'function') {\n this._listeners.set(listener, wrappedEventListener);\n }\n }\n this._nativeEventTarget.addEventListener(type, wrappedEventListener, options);\n }\n }\n dispatchEvent(event) {\n return this._nativeEventTarget.dispatchEvent(event);\n }\n removeEventListener(type, listener, options) {\n const wrappedEventListener = listener === null ? undefined : this._listeners.get(listener);\n this._nativeEventTarget.removeEventListener(type, wrappedEventListener === undefined ? null : wrappedEventListener, options);\n }\n };\n};\n//# sourceMappingURL=event-target-constructor.js.map","import { IEventTarget } from '../interfaces';\nimport { TEventHandler, TEventTargetConstructorFactory, TNativeEventTarget } from '../types';\n\nexport const createEventTargetConstructor: TEventTargetConstructorFactory = (wrapEventListener) => {\n return class EventTarget> implements IEventTarget {\n private _listeners: WeakMap;\n\n constructor(private _nativeEventTarget: TNativeEventTarget) {\n this._listeners = new WeakMap();\n }\n\n public addEventListener(\n type: string,\n listener: null | TEventHandler | EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (listener !== null) {\n let wrappedEventListener = this._listeners.get(listener);\n\n if (wrappedEventListener === undefined) {\n wrappedEventListener = wrapEventListener(this, listener);\n\n if (typeof listener === 'function') {\n this._listeners.set(listener, wrappedEventListener);\n }\n }\n\n this._nativeEventTarget.addEventListener(type, wrappedEventListener, options);\n }\n }\n\n public dispatchEvent(event: Event): boolean {\n return this._nativeEventTarget.dispatchEvent(event);\n }\n\n public removeEventListener(\n type: string,\n listener: null | TEventHandler | EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n const wrappedEventListener = listener === null ? undefined : this._listeners.get(listener);\n\n this._nativeEventTarget.removeEventListener(type, wrappedEventListener === undefined ? null : wrappedEventListener, options);\n }\n };\n};\n","export const createExposeCurrentFrameAndCurrentTime = (window) => {\n return (currentTime, sampleRate, fn) => {\n Object.defineProperties(window, {\n currentFrame: {\n configurable: true,\n get() {\n return Math.round(currentTime * sampleRate);\n }\n },\n currentTime: {\n configurable: true,\n get() {\n return currentTime;\n }\n }\n });\n try {\n return fn();\n }\n finally {\n if (window !== null) {\n delete window.currentFrame;\n delete window.currentTime;\n }\n }\n };\n};\n//# sourceMappingURL=expose-current-frame-and-current-time.js.map","import { TExposeCurrentFrameAndCurrentTimeFactory } from '../types';\n\nexport const createExposeCurrentFrameAndCurrentTime: TExposeCurrentFrameAndCurrentTimeFactory = (window) => {\n return (currentTime, sampleRate, fn) => {\n Object.defineProperties(window, {\n currentFrame: {\n configurable: true,\n get(): number {\n return Math.round(currentTime * sampleRate);\n }\n },\n currentTime: {\n configurable: true,\n get(): number {\n return currentTime;\n }\n }\n });\n\n try {\n return fn();\n } finally {\n if (window !== null) {\n delete (window).currentFrame;\n delete (window).currentTime;\n }\n }\n };\n};\n","export const createFetchSource = (createAbortError) => {\n return async (url) => {\n try {\n const response = await fetch(url);\n if (response.ok) {\n return [await response.text(), response.url];\n }\n }\n catch {\n // Ignore errors.\n } // tslint:disable-line:no-empty\n throw createAbortError();\n };\n};\n//# sourceMappingURL=fetch-source.js.map","import { TFetchSourceFactory } from '../types';\n\nexport const createFetchSource: TFetchSourceFactory = (createAbortError) => {\n return async (url) => {\n try {\n const response = await fetch(url);\n\n if (response.ok) {\n return [await response.text(), response.url];\n }\n } catch {\n // Ignore errors.\n } // tslint:disable-line:no-empty\n\n throw createAbortError();\n };\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n gain: 1\n};\nexport const createGainNodeConstructor = (audioNodeConstructor, createAudioParam, createGainNodeRenderer, createNativeGainNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class GainNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeGainNode = createNativeGainNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const gainNodeRenderer = (isOffline ? createGainNodeRenderer() : null);\n super(context, false, nativeGainNode, gainNodeRenderer);\n // Bug #74: Safari does not export the correct values for maxValue and minValue.\n this._gain = createAudioParam(this, isOffline, nativeGainNode.gain, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n }\n get gain() {\n return this._gain;\n }\n };\n};\n//# sourceMappingURL=gain-node-constructor.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { IAudioParam, IGainNode, IGainOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TContext, TGainNodeConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n gain: 1\n} as const;\n\nexport const createGainNodeConstructor: TGainNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createGainNodeRenderer,\n createNativeGainNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class GainNode extends audioNodeConstructor implements IGainNode {\n private _gain: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeGainNode = createNativeGainNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const gainNodeRenderer = >(isOffline ? createGainNodeRenderer() : null);\n\n super(context, false, nativeGainNode, gainNodeRenderer);\n\n // Bug #74: Safari does not export the correct values for maxValue and minValue.\n this._gain = createAudioParam(this, isOffline, nativeGainNode.gain, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n }\n\n get gain(): IAudioParam {\n return this._gain;\n }\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createGainNodeRendererFactory = (connectAudioParam, createNativeGainNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeGainNodes = new WeakMap();\n const createGainNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeGainNode = getNativeAudioNode(proxy);\n // If the initially used nativeGainNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeGainNodeIsOwnedByContext = isOwnedByContext(nativeGainNode, nativeOfflineAudioContext);\n if (!nativeGainNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeGainNode.channelCount,\n channelCountMode: nativeGainNode.channelCountMode,\n channelInterpretation: nativeGainNode.channelInterpretation,\n gain: nativeGainNode.gain.value\n };\n nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, options);\n }\n renderedNativeGainNodes.set(nativeOfflineAudioContext, nativeGainNode);\n if (!nativeGainNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeGainNode);\n return nativeGainNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeGainNode = renderedNativeGainNodes.get(nativeOfflineAudioContext);\n if (renderedNativeGainNode !== undefined) {\n return Promise.resolve(renderedNativeGainNode);\n }\n return createGainNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=gain-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IGainNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TGainNodeRendererFactoryFactory, TNativeGainNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createGainNodeRendererFactory: TGainNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeGainNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeGainNodes = new WeakMap();\n\n const createGainNode = async (proxy: IGainNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeGainNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeGainNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeGainNodeIsOwnedByContext = isOwnedByContext(nativeGainNode, nativeOfflineAudioContext);\n\n if (!nativeGainNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeGainNode.channelCount,\n channelCountMode: nativeGainNode.channelCountMode,\n channelInterpretation: nativeGainNode.channelInterpretation,\n gain: nativeGainNode.gain.value\n };\n\n nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeGainNodes.set(nativeOfflineAudioContext, nativeGainNode);\n\n if (!nativeGainNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeGainNode);\n\n return nativeGainNode;\n };\n\n return {\n render(proxy: IGainNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeGainNode = renderedNativeGainNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeGainNode !== undefined) {\n return Promise.resolve(renderedNativeGainNode);\n }\n\n return createGainNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","export const createGetActiveAudioWorkletNodeInputs = (activeAudioWorkletNodeInputsStore, getValueForKey) => {\n return (nativeAudioWorkletNode) => getValueForKey(activeAudioWorkletNodeInputsStore, nativeAudioWorkletNode);\n};\n//# sourceMappingURL=get-active-audio-worklet-node-inputs.js.map","import { TActiveInputConnection, TContext, TGetActiveAudioWorkletNodeInputsFactory, TNativeAudioWorkletNode } from '../types';\n\nexport const createGetActiveAudioWorkletNodeInputs: TGetActiveAudioWorkletNodeInputsFactory = (\n activeAudioWorkletNodeInputsStore,\n getValueForKey\n) => {\n return (nativeAudioWorkletNode: TNativeAudioWorkletNode) =>\n >[]>getValueForKey(activeAudioWorkletNodeInputsStore, nativeAudioWorkletNode);\n};\n","export const createGetAudioNodeRenderer = (getAudioNodeConnections) => {\n return (audioNode) => {\n const audioNodeConnections = getAudioNodeConnections(audioNode);\n if (audioNodeConnections.renderer === null) {\n throw new Error('Missing the renderer of the given AudioNode in the audio graph.');\n }\n return audioNodeConnections.renderer;\n };\n};\n//# sourceMappingURL=get-audio-node-renderer.js.map","import { IAudioNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TGetAudioNodeRendererFactory } from '../types';\n\nexport const createGetAudioNodeRenderer: TGetAudioNodeRendererFactory = (getAudioNodeConnections) => {\n return (\n audioNode: IAudioNode\n ): IAudioNodeRenderer> => {\n const audioNodeConnections = getAudioNodeConnections(audioNode);\n\n if (audioNodeConnections.renderer === null) {\n throw new Error('Missing the renderer of the given AudioNode in the audio graph.');\n }\n\n return >>audioNodeConnections.renderer;\n };\n};\n","export const createGetAudioNodeTailTime = (audioNodeTailTimeStore) => {\n return (audioNode) => { var _a; return (_a = audioNodeTailTimeStore.get(audioNode)) !== null && _a !== void 0 ? _a : 0; };\n};\n//# sourceMappingURL=get-audio-node-tail-time.js.map","import { TGetAudioNodeTailTimeFactory } from '../types';\n\nexport const createGetAudioNodeTailTime: TGetAudioNodeTailTimeFactory = (audioNodeTailTimeStore) => {\n return (audioNode) => audioNodeTailTimeStore.get(audioNode) ?? 0;\n};\n","export const createGetAudioParamRenderer = (getAudioParamConnections) => {\n return (audioParam) => {\n const audioParamConnections = getAudioParamConnections(audioParam);\n if (audioParamConnections.renderer === null) {\n throw new Error('Missing the renderer of the given AudioParam in the audio graph.');\n }\n return audioParamConnections.renderer;\n };\n};\n//# sourceMappingURL=get-audio-param-renderer.js.map","import { IMinimalOfflineAudioContext } from '../interfaces';\nimport { TGetAudioParamRendererFactory } from '../types';\n\nexport const createGetAudioParamRenderer: TGetAudioParamRendererFactory = (getAudioParamConnections) => {\n return (audioParam) => {\n const audioParamConnections = getAudioParamConnections(audioParam);\n\n if (audioParamConnections.renderer === null) {\n throw new Error('Missing the renderer of the given AudioParam in the audio graph.');\n }\n\n return audioParamConnections.renderer;\n };\n};\n","export const createGetBackupOfflineAudioContext = (backupOfflineAudioContextStore) => {\n return (nativeContext) => {\n return backupOfflineAudioContextStore.get(nativeContext);\n };\n};\n//# sourceMappingURL=get-backup-offline-audio-context.js.map","import { TGetBackupOfflineAudioContextFactory } from '../types';\n\nexport const createGetBackupOfflineAudioContext: TGetBackupOfflineAudioContextFactory = (backupOfflineAudioContextStore) => {\n return (nativeContext) => {\n return backupOfflineAudioContextStore.get(nativeContext);\n };\n};\n","import { createInvalidStateError } from './invalid-state-error';\nexport const createGetNativeContext = (contextStore) => {\n return (context) => {\n const nativeContext = contextStore.get(context);\n if (nativeContext === undefined) {\n throw createInvalidStateError();\n }\n return (nativeContext);\n };\n};\n//# sourceMappingURL=get-native-context.js.map","import { IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TContext, TGetNativeContextFactory, TNativeAudioContext, TNativeOfflineAudioContext } from '../types';\nimport { createInvalidStateError } from './invalid-state-error';\n\nexport const createGetNativeContext: TGetNativeContextFactory = (contextStore) => {\n return (\n context: T\n ): T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? TNativeOfflineAudioContext : TNativeAudioContext => {\n const nativeContext = contextStore.get(context);\n\n if (nativeContext === undefined) {\n throw createInvalidStateError();\n }\n\n return (\n nativeContext\n );\n };\n};\n","export const createInvalidStateError = () => new DOMException('', 'InvalidStateError');\n//# sourceMappingURL=invalid-state-error.js.map","import { TInvalidStateErrorFactory } from '../types';\n\nexport const createInvalidStateError: TInvalidStateErrorFactory = () => new DOMException('', 'InvalidStateError');\n","export const createGetOrCreateBackupOfflineAudioContext = (backupOfflineAudioContextStore, nativeOfflineAudioContextConstructor) => {\n return (nativeContext) => {\n let backupOfflineAudioContext = backupOfflineAudioContextStore.get(nativeContext);\n if (backupOfflineAudioContext !== undefined) {\n return backupOfflineAudioContext;\n }\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz.\n backupOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n backupOfflineAudioContextStore.set(nativeContext, backupOfflineAudioContext);\n return backupOfflineAudioContext;\n };\n};\n//# sourceMappingURL=get-or-create-backup-offline-audio-context.js.map","import { TGetOrCreateBackupOfflineAudioContextFactory } from '../types';\n\nexport const createGetOrCreateBackupOfflineAudioContext: TGetOrCreateBackupOfflineAudioContextFactory = (\n backupOfflineAudioContextStore,\n nativeOfflineAudioContextConstructor\n) => {\n return (nativeContext) => {\n let backupOfflineAudioContext = backupOfflineAudioContextStore.get(nativeContext);\n\n if (backupOfflineAudioContext !== undefined) {\n return backupOfflineAudioContext;\n }\n\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz.\n backupOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n\n backupOfflineAudioContextStore.set(nativeContext, backupOfflineAudioContext);\n\n return backupOfflineAudioContext;\n };\n};\n","export const createGetUnrenderedAudioWorkletNodes = (unrenderedAudioWorkletNodeStore) => {\n return (nativeContext) => {\n const unrenderedAudioWorkletNodes = unrenderedAudioWorkletNodeStore.get(nativeContext);\n if (unrenderedAudioWorkletNodes === undefined) {\n throw new Error('The context has no set of AudioWorkletNodes.');\n }\n return unrenderedAudioWorkletNodes;\n };\n};\n//# sourceMappingURL=get-unrendered-audio-worklet-nodes.js.map","import { TGetUnrenderedAudioWorkletNodesFactory } from '../types';\n\nexport const createGetUnrenderedAudioWorkletNodes: TGetUnrenderedAudioWorkletNodesFactory = (unrenderedAudioWorkletNodeStore) => {\n return (nativeContext) => {\n const unrenderedAudioWorkletNodes = unrenderedAudioWorkletNodeStore.get(nativeContext);\n\n if (unrenderedAudioWorkletNodes === undefined) {\n throw new Error('The context has no set of AudioWorkletNodes.');\n }\n\n return unrenderedAudioWorkletNodes;\n };\n};\n","import { wrapIIRFilterNodeGetFrequencyResponseMethod } from '../helpers/wrap-iir-filter-node-get-frequency-response-method';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers'\n};\nexport const createIIRFilterNodeConstructor = (audioNodeConstructor, createNativeIIRFilterNode, createIIRFilterNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class IIRFilterNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeIIRFilterNode = createNativeIIRFilterNode(nativeContext, isOffline ? null : context.baseLatency, mergedOptions);\n const iirFilterNodeRenderer = ((isOffline ? createIIRFilterNodeRenderer(mergedOptions.feedback, mergedOptions.feedforward) : null));\n super(context, false, nativeIIRFilterNode, iirFilterNodeRenderer);\n // Bug #23 & #24: FirefoxDeveloper does not throw an InvalidAccessError.\n // @todo Write a test which allows other browsers to remain unpatched.\n wrapIIRFilterNodeGetFrequencyResponseMethod(nativeIIRFilterNode);\n this._nativeIIRFilterNode = nativeIIRFilterNode;\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n getFrequencyResponse(frequencyHz, magResponse, phaseResponse) {\n return this._nativeIIRFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse);\n }\n };\n};\n//# sourceMappingURL=iir-filter-node-constructor.js.map","import { wrapIIRFilterNodeGetFrequencyResponseMethod } from '../helpers/wrap-iir-filter-node-get-frequency-response-method';\nimport { IIIRFilterNode, IIIRFilterOptions, IMinimalAudioContext } from '../interfaces';\nimport { TAudioNodeRenderer, TContext, TIIRFilterNodeConstructorFactory, TNativeIIRFilterNode } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers'\n} as const;\n\nexport const createIIRFilterNodeConstructor: TIIRFilterNodeConstructorFactory = (\n audioNodeConstructor,\n createNativeIIRFilterNode,\n createIIRFilterNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class IIRFilterNode extends audioNodeConstructor implements IIIRFilterNode {\n private _nativeIIRFilterNode: TNativeIIRFilterNode;\n\n constructor(\n context: T,\n options: { feedback: IIIRFilterOptions['feedback']; feedforward: IIIRFilterOptions['feedforward'] } & Partial\n ) {\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeIIRFilterNode = createNativeIIRFilterNode(\n nativeContext,\n isOffline ? null : ((context)).baseLatency,\n mergedOptions\n );\n const iirFilterNodeRenderer = >(\n (isOffline ? createIIRFilterNodeRenderer(mergedOptions.feedback, mergedOptions.feedforward) : null)\n );\n\n super(context, false, nativeIIRFilterNode, iirFilterNodeRenderer);\n\n // Bug #23 & #24: FirefoxDeveloper does not throw an InvalidAccessError.\n // @todo Write a test which allows other browsers to remain unpatched.\n wrapIIRFilterNodeGetFrequencyResponseMethod(nativeIIRFilterNode);\n\n this._nativeIIRFilterNode = nativeIIRFilterNode;\n\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n\n public getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void {\n return this._nativeIIRFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse);\n }\n };\n};\n","import { createInvalidAccessError } from '../factories/invalid-access-error';\nexport const wrapIIRFilterNodeGetFrequencyResponseMethod = (nativeIIRFilterNode) => {\n nativeIIRFilterNode.getFrequencyResponse = ((getFrequencyResponse) => {\n return (frequencyHz, magResponse, phaseResponse) => {\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n return getFrequencyResponse.call(nativeIIRFilterNode, frequencyHz, magResponse, phaseResponse);\n };\n })(nativeIIRFilterNode.getFrequencyResponse);\n};\n//# sourceMappingURL=wrap-iir-filter-node-get-frequency-response-method.js.map","import { createInvalidAccessError } from '../factories/invalid-access-error';\nimport { TNativeIIRFilterNode } from '../types';\n\nexport const wrapIIRFilterNodeGetFrequencyResponseMethod = (nativeIIRFilterNode: TNativeIIRFilterNode): void => {\n nativeIIRFilterNode.getFrequencyResponse = ((getFrequencyResponse) => {\n return (frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array) => {\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n\n return getFrequencyResponse.call(nativeIIRFilterNode, frequencyHz, magResponse, phaseResponse);\n };\n })(nativeIIRFilterNode.getFrequencyResponse);\n};\n","export const createInvalidAccessError = () => new DOMException('', 'InvalidAccessError');\n//# sourceMappingURL=invalid-access-error.js.map","import { TInvalidAccessErrorFactory } from '../types';\n\nexport const createInvalidAccessError: TInvalidAccessErrorFactory = () => new DOMException('', 'InvalidAccessError');\n","import { filterBuffer } from '../helpers/filter-buffer';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nconst filterFullBuffer = (renderedBuffer, nativeOfflineAudioContext, feedback, feedforward) => {\n const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback);\n const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward);\n const feedbackLength = convertedFeedback.length;\n const feedforwardLength = convertedFeedforward.length;\n const minLength = Math.min(feedbackLength, feedforwardLength);\n if (convertedFeedback[0] !== 1) {\n for (let i = 0; i < feedbackLength; i += 1) {\n convertedFeedforward[i] /= convertedFeedback[0];\n }\n for (let i = 1; i < feedforwardLength; i += 1) {\n convertedFeedback[i] /= convertedFeedback[0];\n }\n }\n const bufferLength = 32;\n const xBuffer = new Float32Array(bufferLength);\n const yBuffer = new Float32Array(bufferLength);\n const filteredBuffer = nativeOfflineAudioContext.createBuffer(renderedBuffer.numberOfChannels, renderedBuffer.length, renderedBuffer.sampleRate);\n const numberOfChannels = renderedBuffer.numberOfChannels;\n for (let i = 0; i < numberOfChannels; i += 1) {\n const input = renderedBuffer.getChannelData(i);\n const output = filteredBuffer.getChannelData(i);\n xBuffer.fill(0);\n yBuffer.fill(0);\n filterBuffer(convertedFeedback, feedbackLength, convertedFeedforward, feedforwardLength, minLength, xBuffer, yBuffer, 0, bufferLength, input, output);\n }\n return filteredBuffer;\n};\nexport const createIIRFilterNodeRendererFactory = (createNativeAudioBufferSourceNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => {\n return (feedback, feedforward) => {\n const renderedNativeAudioNodes = new WeakMap();\n let filteredBufferPromise = null;\n const createAudioNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeAudioBufferSourceNode = null;\n let nativeIIRFilterNode = getNativeAudioNode(proxy);\n // If the initially used nativeIIRFilterNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeIIRFilterNodeIsOwnedByContext = isOwnedByContext(nativeIIRFilterNode, nativeOfflineAudioContext);\n // Bug #9: Safari does not support IIRFilterNodes.\n if (nativeOfflineAudioContext.createIIRFilter === undefined) {\n nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n }\n else if (!nativeIIRFilterNodeIsOwnedByContext) {\n // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers.\n nativeIIRFilterNode = nativeOfflineAudioContext.createIIRFilter(feedforward, feedback);\n }\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioBufferSourceNode === null ? nativeIIRFilterNode : nativeAudioBufferSourceNode);\n if (nativeAudioBufferSourceNode !== null) {\n if (filteredBufferPromise === null) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(\n // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly.\n proxy.context.destination.channelCount, \n // Bug #17: Safari does not yet expose the length.\n proxy.context.length, nativeOfflineAudioContext.sampleRate);\n filteredBufferPromise = (async () => {\n await renderInputsOfAudioNode(proxy, partialOfflineAudioContext, partialOfflineAudioContext.destination);\n const renderedBuffer = await renderNativeOfflineAudioContext(partialOfflineAudioContext);\n return filterFullBuffer(renderedBuffer, nativeOfflineAudioContext, feedback, feedforward);\n })();\n }\n const filteredBuffer = await filteredBufferPromise;\n nativeAudioBufferSourceNode.buffer = filteredBuffer;\n nativeAudioBufferSourceNode.start(0);\n return nativeAudioBufferSourceNode;\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeIIRFilterNode);\n return nativeIIRFilterNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=iir-filter-node-renderer-factory.js.map","import { filterBuffer } from '../helpers/filter-buffer';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IIIRFilterNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport {\n TIIRFilterNodeRendererFactoryFactory,\n TNativeAudioBuffer,\n TNativeAudioBufferSourceNode,\n TNativeIIRFilterNode,\n TNativeOfflineAudioContext\n} from '../types';\n\nconst filterFullBuffer = (\n renderedBuffer: TNativeAudioBuffer,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n feedback: Iterable,\n feedforward: Iterable\n) => {\n const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback);\n const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward);\n const feedbackLength = convertedFeedback.length;\n const feedforwardLength = convertedFeedforward.length;\n const minLength = Math.min(feedbackLength, feedforwardLength);\n\n if (convertedFeedback[0] !== 1) {\n for (let i = 0; i < feedbackLength; i += 1) {\n convertedFeedforward[i] /= convertedFeedback[0];\n }\n\n for (let i = 1; i < feedforwardLength; i += 1) {\n convertedFeedback[i] /= convertedFeedback[0];\n }\n }\n\n const bufferLength = 32;\n const xBuffer = new Float32Array(bufferLength);\n const yBuffer = new Float32Array(bufferLength);\n\n const filteredBuffer = nativeOfflineAudioContext.createBuffer(\n renderedBuffer.numberOfChannels,\n renderedBuffer.length,\n renderedBuffer.sampleRate\n );\n\n const numberOfChannels = renderedBuffer.numberOfChannels;\n\n for (let i = 0; i < numberOfChannels; i += 1) {\n const input = renderedBuffer.getChannelData(i);\n const output = filteredBuffer.getChannelData(i);\n\n xBuffer.fill(0);\n yBuffer.fill(0);\n\n filterBuffer(\n convertedFeedback,\n feedbackLength,\n convertedFeedforward,\n feedforwardLength,\n minLength,\n xBuffer,\n yBuffer,\n 0,\n bufferLength,\n input,\n output\n );\n }\n\n return filteredBuffer;\n};\n\nexport const createIIRFilterNodeRendererFactory: TIIRFilterNodeRendererFactoryFactory = (\n createNativeAudioBufferSourceNode,\n getNativeAudioNode,\n nativeOfflineAudioContextConstructor,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n) => {\n return (feedback: Iterable, feedforward: Iterable) => {\n const renderedNativeAudioNodes = new WeakMap();\n\n let filteredBufferPromise: null | Promise = null;\n\n const createAudioNode = async (proxy: IIIRFilterNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeAudioBufferSourceNode: null | TNativeAudioBufferSourceNode = null;\n let nativeIIRFilterNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeIIRFilterNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeIIRFilterNodeIsOwnedByContext = isOwnedByContext(nativeIIRFilterNode, nativeOfflineAudioContext);\n\n // Bug #9: Safari does not support IIRFilterNodes.\n if (nativeOfflineAudioContext.createIIRFilter === undefined) {\n nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n } else if (!nativeIIRFilterNodeIsOwnedByContext) {\n // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers.\n nativeIIRFilterNode = nativeOfflineAudioContext.createIIRFilter(feedforward, feedback);\n }\n\n renderedNativeAudioNodes.set(\n nativeOfflineAudioContext,\n nativeAudioBufferSourceNode === null ? nativeIIRFilterNode : nativeAudioBufferSourceNode\n );\n\n if (nativeAudioBufferSourceNode !== null) {\n if (filteredBufferPromise === null) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(\n // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly.\n proxy.context.destination.channelCount,\n // Bug #17: Safari does not yet expose the length.\n proxy.context.length,\n nativeOfflineAudioContext.sampleRate\n );\n\n filteredBufferPromise = (async () => {\n await renderInputsOfAudioNode(proxy, partialOfflineAudioContext, partialOfflineAudioContext.destination);\n\n const renderedBuffer = await renderNativeOfflineAudioContext(partialOfflineAudioContext);\n\n return filterFullBuffer(renderedBuffer, nativeOfflineAudioContext, feedback, feedforward);\n })();\n }\n\n const filteredBuffer = await filteredBufferPromise;\n\n nativeAudioBufferSourceNode.buffer = filteredBuffer;\n nativeAudioBufferSourceNode.start(0);\n\n return nativeAudioBufferSourceNode;\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeIIRFilterNode);\n\n return nativeIIRFilterNode;\n };\n\n return {\n render(\n proxy: IIIRFilterNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","// This implementation as shamelessly inspired by source code of\n// tslint:disable-next-line:max-line-length\n// {@link https://chromium.googlesource.com/chromium/src.git/+/master/third_party/WebKit/Source/platform/audio/IIRFilter.cpp|Chromium's IIRFilter}.\nexport const filterBuffer = (feedback, feedbackLength, feedforward, feedforwardLength, minLength, xBuffer, yBuffer, bufferIndex, bufferLength, input, output) => {\n const inputLength = input.length;\n let i = bufferIndex;\n for (let j = 0; j < inputLength; j += 1) {\n let y = feedforward[0] * input[j];\n for (let k = 1; k < minLength; k += 1) {\n const x = (i - k) & (bufferLength - 1); // tslint:disable-line:no-bitwise\n y += feedforward[k] * xBuffer[x];\n y -= feedback[k] * yBuffer[x];\n }\n for (let k = minLength; k < feedforwardLength; k += 1) {\n y += feedforward[k] * xBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise\n }\n for (let k = minLength; k < feedbackLength; k += 1) {\n y -= feedback[k] * yBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise\n }\n xBuffer[i] = input[j];\n yBuffer[i] = y;\n i = (i + 1) & (bufferLength - 1); // tslint:disable-line:no-bitwise\n output[j] = y;\n }\n return i;\n};\n//# sourceMappingURL=filter-buffer.js.map","// This implementation as shamelessly inspired by source code of\n// tslint:disable-next-line:max-line-length\n// {@link https://chromium.googlesource.com/chromium/src.git/+/master/third_party/WebKit/Source/platform/audio/IIRFilter.cpp|Chromium's IIRFilter}.\nexport const filterBuffer = (\n feedback: Float64Array,\n feedbackLength: number,\n feedforward: Float64Array,\n feedforwardLength: number,\n minLength: number,\n xBuffer: Float32Array,\n yBuffer: Float32Array,\n bufferIndex: number,\n bufferLength: number,\n input: Float32Array,\n output: Float32Array\n) => {\n const inputLength = input.length;\n\n let i = bufferIndex;\n\n for (let j = 0; j < inputLength; j += 1) {\n let y = feedforward[0] * input[j];\n\n for (let k = 1; k < minLength; k += 1) {\n const x = (i - k) & (bufferLength - 1); // tslint:disable-line:no-bitwise\n\n y += feedforward[k] * xBuffer[x];\n y -= feedback[k] * yBuffer[x];\n }\n\n for (let k = minLength; k < feedforwardLength; k += 1) {\n y += feedforward[k] * xBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise\n }\n\n for (let k = minLength; k < feedbackLength; k += 1) {\n y -= feedback[k] * yBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise\n }\n\n xBuffer[i] = input[j];\n yBuffer[i] = y;\n\n i = (i + 1) & (bufferLength - 1); // tslint:disable-line:no-bitwise\n\n output[j] = y;\n }\n\n return i;\n};\n","import { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nexport const createIncrementCycleCounterFactory = (cycleCounters, disconnectNativeAudioNodeFromNativeAudioNode, getAudioNodeConnections, getNativeAudioNode, getNativeAudioParam, isActiveAudioNode) => {\n return (isOffline) => {\n return (audioNode, count) => {\n const cycleCounter = cycleCounters.get(audioNode);\n if (cycleCounter === undefined) {\n if (!isOffline && isActiveAudioNode(audioNode)) {\n const nativeSourceAudioNode = getNativeAudioNode(audioNode);\n const { outputs } = getAudioNodeConnections(audioNode);\n for (const output of outputs) {\n if (isAudioNodeOutputConnection(output)) {\n const nativeDestinationAudioNode = getNativeAudioNode(output[0]);\n disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]);\n }\n else {\n const nativeDestinationAudioParam = getNativeAudioParam(output[0]);\n nativeSourceAudioNode.disconnect(nativeDestinationAudioParam, output[1]);\n }\n }\n }\n cycleCounters.set(audioNode, count);\n }\n else {\n cycleCounters.set(audioNode, cycleCounter + count);\n }\n };\n };\n};\n//# sourceMappingURL=increment-cycle-counter-factory.js.map","import { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nimport { TIncrementCycleCounterFactoryFactory } from '../types';\n\nexport const createIncrementCycleCounterFactory: TIncrementCycleCounterFactoryFactory = (\n cycleCounters,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getAudioNodeConnections,\n getNativeAudioNode,\n getNativeAudioParam,\n isActiveAudioNode\n) => {\n return (isOffline) => {\n return (audioNode, count) => {\n const cycleCounter = cycleCounters.get(audioNode);\n\n if (cycleCounter === undefined) {\n if (!isOffline && isActiveAudioNode(audioNode)) {\n const nativeSourceAudioNode = getNativeAudioNode(audioNode);\n const { outputs } = getAudioNodeConnections(audioNode);\n\n for (const output of outputs) {\n if (isAudioNodeOutputConnection(output)) {\n const nativeDestinationAudioNode = getNativeAudioNode(output[0]);\n\n disconnectNativeAudioNodeFromNativeAudioNode(\n nativeSourceAudioNode,\n nativeDestinationAudioNode,\n output[1],\n output[2]\n );\n } else {\n const nativeDestinationAudioParam = getNativeAudioParam(output[0]);\n\n nativeSourceAudioNode.disconnect(nativeDestinationAudioParam, output[1]);\n }\n }\n }\n\n cycleCounters.set(audioNode, count);\n } else {\n cycleCounters.set(audioNode, cycleCounter + count);\n }\n };\n };\n};\n","export const createIsAnyAudioContext = (contextStore, isNativeAudioContext) => {\n return (anything) => {\n const nativeContext = contextStore.get(anything);\n return isNativeAudioContext(nativeContext) || isNativeAudioContext(anything);\n };\n};\n//# sourceMappingURL=is-any-audio-context.js.map","import { IAudioContext, IMinimalAudioContext } from '../interfaces';\nimport { TIsAnyAudioContextFactory, TNativeAudioContext } from '../types';\n\nexport const createIsAnyAudioContext: TIsAnyAudioContextFactory = (contextStore, isNativeAudioContext) => {\n return (anything): anything is IAudioContext | IMinimalAudioContext | TNativeAudioContext => {\n const nativeContext = contextStore.get(anything);\n\n return isNativeAudioContext(nativeContext) || isNativeAudioContext(anything);\n };\n};\n","export const createIsAnyAudioNode = (audioNodeStore, isNativeAudioNode) => {\n return (anything) => audioNodeStore.has(anything) || isNativeAudioNode(anything);\n};\n//# sourceMappingURL=is-any-audio-node.js.map","import { IAudioNode } from '../interfaces';\nimport { TIsAnyAudioNodeFactory, TNativeAudioNode } from '../types';\n\nexport const createIsAnyAudioNode: TIsAnyAudioNodeFactory = (audioNodeStore, isNativeAudioNode) => {\n return (anything): anything is IAudioNode | TNativeAudioNode => audioNodeStore.has(anything) || isNativeAudioNode(anything);\n};\n","export const createIsAnyAudioParam = (audioParamStore, isNativeAudioParam) => {\n return (anything) => audioParamStore.has(anything) || isNativeAudioParam(anything);\n};\n//# sourceMappingURL=is-any-audio-param.js.map","import { IAudioParam } from '../interfaces';\nimport { TIsAnyAudioParamFactory, TNativeAudioParam } from '../types';\n\nexport const createIsAnyAudioParam: TIsAnyAudioParamFactory = (audioParamStore, isNativeAudioParam) => {\n return (anything): anything is IAudioParam | TNativeAudioParam => audioParamStore.has(anything) || isNativeAudioParam(anything);\n};\n","export const createIsAnyOfflineAudioContext = (contextStore, isNativeOfflineAudioContext) => {\n return (anything) => {\n const nativeContext = contextStore.get(anything);\n return isNativeOfflineAudioContext(nativeContext) || isNativeOfflineAudioContext(anything);\n };\n};\n//# sourceMappingURL=is-any-offline-audio-context.js.map","import { IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TIsAnyOfflineAudioContextFactory, TNativeOfflineAudioContext } from '../types';\n\nexport const createIsAnyOfflineAudioContext: TIsAnyOfflineAudioContextFactory = (contextStore, isNativeOfflineAudioContext) => {\n return (anything): anything is IMinimalOfflineAudioContext | IOfflineAudioContext | TNativeOfflineAudioContext => {\n const nativeContext = contextStore.get(anything);\n\n return isNativeOfflineAudioContext(nativeContext) || isNativeOfflineAudioContext(anything);\n };\n};\n","export const createIsNativeAudioContext = (nativeAudioContextConstructor) => {\n return (anything) => {\n return nativeAudioContextConstructor !== null && anything instanceof nativeAudioContextConstructor;\n };\n};\n//# sourceMappingURL=is-native-audio-context.js.map","import { TIsNativeAudioContextFactory, TNativeAudioContext } from '../types';\n\nexport const createIsNativeAudioContext: TIsNativeAudioContextFactory = (nativeAudioContextConstructor) => {\n return (anything): anything is TNativeAudioContext => {\n return nativeAudioContextConstructor !== null && anything instanceof nativeAudioContextConstructor;\n };\n};\n","export const createIsNativeAudioNode = (window) => {\n return (anything) => {\n return window !== null && typeof window.AudioNode === 'function' && anything instanceof window.AudioNode;\n };\n};\n//# sourceMappingURL=is-native-audio-node.js.map","import { TIsNativeAudioNodeFactory, TNativeAudioNode } from '../types';\n\nexport const createIsNativeAudioNode: TIsNativeAudioNodeFactory = (window) => {\n return (anything): anything is TNativeAudioNode => {\n return window !== null && typeof window.AudioNode === 'function' && anything instanceof window.AudioNode;\n };\n};\n","export const createIsNativeAudioParam = (window) => {\n return (anything) => {\n return window !== null && typeof window.AudioParam === 'function' && anything instanceof window.AudioParam;\n };\n};\n//# sourceMappingURL=is-native-audio-param.js.map","import { TIsNativeAudioParamFactory, TNativeAudioParam } from '../types';\n\nexport const createIsNativeAudioParam: TIsNativeAudioParamFactory = (window) => {\n return (anything): anything is TNativeAudioParam => {\n return window !== null && typeof window.AudioParam === 'function' && anything instanceof window.AudioParam;\n };\n};\n","export const createIsNativeContext = (isNativeAudioContext, isNativeOfflineAudioContext) => {\n return (anything) => {\n return isNativeAudioContext(anything) || isNativeOfflineAudioContext(anything);\n };\n};\n//# sourceMappingURL=is-native-context.js.map","import { TIsNativeContextFactory, TNativeAudioContext } from '../types';\n\nexport const createIsNativeContext: TIsNativeContextFactory = (isNativeAudioContext, isNativeOfflineAudioContext) => {\n return (anything): anything is TNativeAudioContext => {\n return isNativeAudioContext(anything) || isNativeOfflineAudioContext(anything);\n };\n};\n","export const createIsNativeOfflineAudioContext = (nativeOfflineAudioContextConstructor) => {\n return (anything) => {\n return nativeOfflineAudioContextConstructor !== null && anything instanceof nativeOfflineAudioContextConstructor;\n };\n};\n//# sourceMappingURL=is-native-offline-audio-context.js.map","import { TIsNativeOfflineAudioContextFactory, TNativeOfflineAudioContext } from '../types';\n\nexport const createIsNativeOfflineAudioContext: TIsNativeOfflineAudioContextFactory = (nativeOfflineAudioContextConstructor) => {\n return (anything): anything is TNativeOfflineAudioContext => {\n return nativeOfflineAudioContextConstructor !== null && anything instanceof nativeOfflineAudioContextConstructor;\n };\n};\n","export const createIsSecureContext = (window) => window !== null && window.isSecureContext;\n//# sourceMappingURL=is-secure-context.js.map","import { TIsSecureContextFactory } from '../types';\n\nexport const createIsSecureContext: TIsSecureContextFactory = (window) => window !== null && window.isSecureContext;\n","export const createIsSupportedPromise = async (cacheTestResult, testAudioBufferCopyChannelMethodsSubarraySupport, testAudioContextCloseMethodSupport, testAudioContextDecodeAudioDataMethodTypeErrorSupport, testAudioContextOptionsSupport, testAudioNodeConnectMethodSupport, testAudioWorkletProcessorNoOutputsSupport, testChannelMergerNodeChannelCountSupport, testConstantSourceNodeAccurateSchedulingSupport, testConvolverNodeBufferReassignabilitySupport, testConvolverNodeChannelCountSupport, testDomExceptionContrucorSupport, testIsSecureContextSupport, testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport, testStereoPannerNodeDefaultValueSupport, testTransferablesSupport) => {\n if (cacheTestResult(testAudioBufferCopyChannelMethodsSubarraySupport, testAudioBufferCopyChannelMethodsSubarraySupport) &&\n cacheTestResult(testAudioContextCloseMethodSupport, testAudioContextCloseMethodSupport) &&\n cacheTestResult(testAudioContextOptionsSupport, testAudioContextOptionsSupport) &&\n cacheTestResult(testAudioNodeConnectMethodSupport, testAudioNodeConnectMethodSupport) &&\n cacheTestResult(testChannelMergerNodeChannelCountSupport, testChannelMergerNodeChannelCountSupport) &&\n cacheTestResult(testConstantSourceNodeAccurateSchedulingSupport, testConstantSourceNodeAccurateSchedulingSupport) &&\n cacheTestResult(testConvolverNodeBufferReassignabilitySupport, testConvolverNodeBufferReassignabilitySupport) &&\n cacheTestResult(testConvolverNodeChannelCountSupport, testConvolverNodeChannelCountSupport) &&\n cacheTestResult(testDomExceptionContrucorSupport, testDomExceptionContrucorSupport) &&\n cacheTestResult(testIsSecureContextSupport, testIsSecureContextSupport) &&\n cacheTestResult(testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport, testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport)) {\n const results = await Promise.all([\n cacheTestResult(testAudioContextDecodeAudioDataMethodTypeErrorSupport, testAudioContextDecodeAudioDataMethodTypeErrorSupport),\n cacheTestResult(testAudioWorkletProcessorNoOutputsSupport, testAudioWorkletProcessorNoOutputsSupport),\n cacheTestResult(testStereoPannerNodeDefaultValueSupport, testStereoPannerNodeDefaultValueSupport),\n cacheTestResult(testTransferablesSupport, testTransferablesSupport)\n ]);\n return results.every((result) => result);\n }\n return false;\n};\n//# sourceMappingURL=is-supported-promise.js.map","import { TIsSupportedPromiseFactory } from '../types';\n\nexport const createIsSupportedPromise: TIsSupportedPromiseFactory = async (\n cacheTestResult,\n testAudioBufferCopyChannelMethodsSubarraySupport,\n testAudioContextCloseMethodSupport,\n testAudioContextDecodeAudioDataMethodTypeErrorSupport,\n testAudioContextOptionsSupport,\n testAudioNodeConnectMethodSupport,\n testAudioWorkletProcessorNoOutputsSupport,\n testChannelMergerNodeChannelCountSupport,\n testConstantSourceNodeAccurateSchedulingSupport,\n testConvolverNodeBufferReassignabilitySupport,\n testConvolverNodeChannelCountSupport,\n testDomExceptionContrucorSupport,\n testIsSecureContextSupport,\n testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport,\n testStereoPannerNodeDefaultValueSupport,\n testTransferablesSupport\n) => {\n if (\n cacheTestResult(testAudioBufferCopyChannelMethodsSubarraySupport, testAudioBufferCopyChannelMethodsSubarraySupport) &&\n cacheTestResult(testAudioContextCloseMethodSupport, testAudioContextCloseMethodSupport) &&\n cacheTestResult(testAudioContextOptionsSupport, testAudioContextOptionsSupport) &&\n cacheTestResult(testAudioNodeConnectMethodSupport, testAudioNodeConnectMethodSupport) &&\n cacheTestResult(testChannelMergerNodeChannelCountSupport, testChannelMergerNodeChannelCountSupport) &&\n cacheTestResult(testConstantSourceNodeAccurateSchedulingSupport, testConstantSourceNodeAccurateSchedulingSupport) &&\n cacheTestResult(testConvolverNodeBufferReassignabilitySupport, testConvolverNodeBufferReassignabilitySupport) &&\n cacheTestResult(testConvolverNodeChannelCountSupport, testConvolverNodeChannelCountSupport) &&\n cacheTestResult(testDomExceptionContrucorSupport, testDomExceptionContrucorSupport) &&\n cacheTestResult(testIsSecureContextSupport, testIsSecureContextSupport) &&\n cacheTestResult(\n testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport,\n testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport\n )\n ) {\n const results = await Promise.all([\n cacheTestResult(testAudioContextDecodeAudioDataMethodTypeErrorSupport, testAudioContextDecodeAudioDataMethodTypeErrorSupport),\n cacheTestResult(testAudioWorkletProcessorNoOutputsSupport, testAudioWorkletProcessorNoOutputsSupport),\n cacheTestResult(testStereoPannerNodeDefaultValueSupport, testStereoPannerNodeDefaultValueSupport),\n cacheTestResult(testTransferablesSupport, testTransferablesSupport)\n ]);\n\n return results.every((result) => result);\n }\n\n return false;\n};\n","export const createMediaElementAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaElementAudioSourceNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class MediaElementAudioSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const nativeMediaElementAudioSourceNode = createNativeMediaElementAudioSourceNode(nativeContext, options);\n // Bug #171: Safari allows to create a MediaElementAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw TypeError();\n }\n super(context, true, nativeMediaElementAudioSourceNode, null);\n this._nativeMediaElementAudioSourceNode = nativeMediaElementAudioSourceNode;\n }\n get mediaElement() {\n return this._nativeMediaElementAudioSourceNode.mediaElement;\n }\n };\n};\n//# sourceMappingURL=media-element-audio-source-node-constructor.js.map","import { IAudioContext, IMediaElementAudioSourceNode, IMediaElementAudioSourceOptions, IMinimalAudioContext } from '../interfaces';\nimport { TAudioNodeRenderer, TMediaElementAudioSourceNodeConstructorFactory, TNativeMediaElementAudioSourceNode } from '../types';\n\nexport const createMediaElementAudioSourceNodeConstructor: TMediaElementAudioSourceNodeConstructorFactory = (\n audioNodeConstructor,\n createNativeMediaElementAudioSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class MediaElementAudioSourceNode extends audioNodeConstructor\n implements IMediaElementAudioSourceNode {\n private _nativeMediaElementAudioSourceNode: TNativeMediaElementAudioSourceNode;\n\n constructor(context: T, options: IMediaElementAudioSourceOptions) {\n const nativeContext = getNativeContext(context);\n const nativeMediaElementAudioSourceNode = createNativeMediaElementAudioSourceNode(nativeContext, options);\n\n // Bug #171: Safari allows to create a MediaElementAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw TypeError();\n }\n\n super(context, true, nativeMediaElementAudioSourceNode, >null);\n\n this._nativeMediaElementAudioSourceNode = nativeMediaElementAudioSourceNode;\n }\n\n get mediaElement(): HTMLMediaElement {\n return this._nativeMediaElementAudioSourceNode.mediaElement;\n }\n };\n};\n","const DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers'\n};\nexport const createMediaStreamAudioDestinationNodeConstructor = (audioNodeConstructor, createNativeMediaStreamAudioDestinationNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class MediaStreamAudioDestinationNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n // Bug #173: Safari allows to create a MediaStreamAudioDestinationNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw new TypeError();\n }\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeMediaStreamAudioDestinationNode = createNativeMediaStreamAudioDestinationNode(nativeContext, mergedOptions);\n super(context, false, nativeMediaStreamAudioDestinationNode, null);\n this._nativeMediaStreamAudioDestinationNode = nativeMediaStreamAudioDestinationNode;\n }\n get stream() {\n return this._nativeMediaStreamAudioDestinationNode.stream;\n }\n };\n};\n//# sourceMappingURL=media-stream-audio-destination-node-constructor.js.map","import { IAudioContext, IAudioNodeOptions, IMediaStreamAudioDestinationNode, IMinimalAudioContext } from '../interfaces';\nimport { TAudioNodeRenderer, TMediaStreamAudioDestinationNodeConstructorFactory, TNativeMediaStreamAudioDestinationNode } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers'\n} as const;\n\nexport const createMediaStreamAudioDestinationNodeConstructor: TMediaStreamAudioDestinationNodeConstructorFactory = (\n audioNodeConstructor,\n createNativeMediaStreamAudioDestinationNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class MediaStreamAudioDestinationNode extends audioNodeConstructor\n implements IMediaStreamAudioDestinationNode {\n private _nativeMediaStreamAudioDestinationNode: TNativeMediaStreamAudioDestinationNode;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n\n // Bug #173: Safari allows to create a MediaStreamAudioDestinationNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw new TypeError();\n }\n\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeMediaStreamAudioDestinationNode = createNativeMediaStreamAudioDestinationNode(nativeContext, mergedOptions);\n\n super(context, false, nativeMediaStreamAudioDestinationNode, >null);\n\n this._nativeMediaStreamAudioDestinationNode = nativeMediaStreamAudioDestinationNode;\n }\n\n get stream(): MediaStream {\n return this._nativeMediaStreamAudioDestinationNode.stream;\n }\n };\n};\n","export const createMediaStreamAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaStreamAudioSourceNode, getNativeContext, isNativeOfflineAudioContext) => {\n return class MediaStreamAudioSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const nativeMediaStreamAudioSourceNode = createNativeMediaStreamAudioSourceNode(nativeContext, options);\n // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw new TypeError();\n }\n super(context, true, nativeMediaStreamAudioSourceNode, null);\n this._nativeMediaStreamAudioSourceNode = nativeMediaStreamAudioSourceNode;\n }\n get mediaStream() {\n return this._nativeMediaStreamAudioSourceNode.mediaStream;\n }\n };\n};\n//# sourceMappingURL=media-stream-audio-source-node-constructor.js.map","import { IAudioContext, IMediaStreamAudioSourceNode, IMediaStreamAudioSourceOptions, IMinimalAudioContext } from '../interfaces';\nimport { TAudioNodeRenderer, TMediaStreamAudioSourceNodeConstructorFactory, TNativeMediaStreamAudioSourceNode } from '../types';\n\nexport const createMediaStreamAudioSourceNodeConstructor: TMediaStreamAudioSourceNodeConstructorFactory = (\n audioNodeConstructor,\n createNativeMediaStreamAudioSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class MediaStreamAudioSourceNode extends audioNodeConstructor\n implements IMediaStreamAudioSourceNode {\n private _nativeMediaStreamAudioSourceNode: TNativeMediaStreamAudioSourceNode;\n\n constructor(context: T, options: IMediaStreamAudioSourceOptions) {\n const nativeContext = getNativeContext(context);\n const nativeMediaStreamAudioSourceNode = createNativeMediaStreamAudioSourceNode(nativeContext, options);\n\n // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw new TypeError();\n }\n\n super(context, true, nativeMediaStreamAudioSourceNode, >null);\n\n this._nativeMediaStreamAudioSourceNode = nativeMediaStreamAudioSourceNode;\n }\n\n get mediaStream(): MediaStream {\n return this._nativeMediaStreamAudioSourceNode.mediaStream;\n }\n };\n};\n","export const createMediaStreamTrackAudioSourceNodeConstructor = (audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext) => {\n return class MediaStreamTrackAudioSourceNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const nativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNode(nativeContext, options);\n super(context, true, nativeMediaStreamTrackAudioSourceNode, null);\n }\n };\n};\n//# sourceMappingURL=media-stream-track-audio-source-node-constructor.js.map","import { IAudioContext, IMediaStreamTrackAudioSourceNode, IMediaStreamTrackAudioSourceOptions, IMinimalAudioContext } from '../interfaces';\nimport { TAudioNodeRenderer, TMediaStreamTrackAudioSourceNodeConstructorFactory } from '../types';\n\nexport const createMediaStreamTrackAudioSourceNodeConstructor: TMediaStreamTrackAudioSourceNodeConstructorFactory = (\n audioNodeConstructor,\n createNativeMediaStreamTrackAudioSourceNode,\n getNativeContext\n) => {\n return class MediaStreamTrackAudioSourceNode extends audioNodeConstructor\n implements IMediaStreamTrackAudioSourceNode {\n constructor(context: T, options: IMediaStreamTrackAudioSourceOptions) {\n const nativeContext = getNativeContext(context);\n const nativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNode(nativeContext, options);\n\n super(context, true, nativeMediaStreamTrackAudioSourceNode, >null);\n }\n };\n};\n","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { isValidLatencyHint } from '../helpers/is-valid-latency-hint';\nexport const createMinimalAudioContextConstructor = (createInvalidStateError, createNotSupportedError, createUnknownError, minimalBaseAudioContextConstructor, nativeAudioContextConstructor) => {\n return class MinimalAudioContext extends minimalBaseAudioContextConstructor {\n constructor(options = {}) {\n if (nativeAudioContextConstructor === null) {\n throw new Error('Missing the native AudioContext constructor.');\n }\n let nativeAudioContext;\n try {\n nativeAudioContext = new nativeAudioContextConstructor(options);\n }\n catch (err) {\n // Bug #192 Safari does throw a SyntaxError if the sampleRate is not supported.\n if (err.code === 12 && err.message === 'sampleRate is not in range') {\n throw createNotSupportedError();\n }\n throw err;\n }\n // Bug #131 Safari returns null when there are four other AudioContexts running already.\n if (nativeAudioContext === null) {\n throw createUnknownError();\n }\n // Bug #51 Only Chrome Edge, and Opera throw an error if the given latencyHint is invalid.\n if (!isValidLatencyHint(options.latencyHint)) {\n throw new TypeError(`The provided value '${options.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`);\n }\n // Bug #150 Safari does not support setting the sampleRate.\n if (options.sampleRate !== undefined && nativeAudioContext.sampleRate !== options.sampleRate) {\n throw createNotSupportedError();\n }\n super(nativeAudioContext, 2);\n const { latencyHint } = options;\n const { sampleRate } = nativeAudioContext;\n // @todo The values for 'balanced', 'interactive' and 'playback' are just copied from Chrome's implementation.\n this._baseLatency =\n typeof nativeAudioContext.baseLatency === 'number'\n ? nativeAudioContext.baseLatency\n : latencyHint === 'balanced'\n ? 512 / sampleRate\n : latencyHint === 'interactive' || latencyHint === undefined\n ? 256 / sampleRate\n : latencyHint === 'playback'\n ? 1024 / sampleRate\n : /*\n * @todo The min (256) and max (16384) values are taken from the allowed bufferSize values of a\n * ScriptProcessorNode.\n */\n (Math.max(2, Math.min(128, Math.round((latencyHint * sampleRate) / 128))) * 128) / sampleRate;\n this._nativeAudioContext = nativeAudioContext;\n // Bug #188: Safari will set the context's state to 'interrupted' in case the user switches tabs.\n if (nativeAudioContextConstructor.name === 'webkitAudioContext') {\n this._nativeGainNode = nativeAudioContext.createGain();\n this._nativeOscillatorNode = nativeAudioContext.createOscillator();\n this._nativeGainNode.gain.value = 1e-37;\n this._nativeOscillatorNode.connect(this._nativeGainNode).connect(nativeAudioContext.destination);\n this._nativeOscillatorNode.start();\n }\n else {\n this._nativeGainNode = null;\n this._nativeOscillatorNode = null;\n }\n this._state = null;\n /*\n * Bug #34: Chrome, Edge and Opera pretend to be running right away, but fire an onstatechange event when the state actually\n * changes to 'running'.\n */\n if (nativeAudioContext.state === 'running') {\n this._state = 'suspended';\n const revokeState = () => {\n if (this._state === 'suspended') {\n this._state = null;\n }\n nativeAudioContext.removeEventListener('statechange', revokeState);\n };\n nativeAudioContext.addEventListener('statechange', revokeState);\n }\n }\n get baseLatency() {\n return this._baseLatency;\n }\n get state() {\n return this._state !== null ? this._state : this._nativeAudioContext.state;\n }\n close() {\n // Bug #35: Firefox does not throw an error if the AudioContext was closed before.\n if (this.state === 'closed') {\n return this._nativeAudioContext.close().then(() => {\n throw createInvalidStateError();\n });\n }\n // Bug #34: If the state was set to suspended before it should be revoked now.\n if (this._state === 'suspended') {\n this._state = null;\n }\n return this._nativeAudioContext.close().then(() => {\n if (this._nativeGainNode !== null && this._nativeOscillatorNode !== null) {\n this._nativeOscillatorNode.stop();\n this._nativeGainNode.disconnect();\n this._nativeOscillatorNode.disconnect();\n }\n deactivateAudioGraph(this);\n });\n }\n resume() {\n if (this._state === 'suspended') {\n return new Promise((resolve, reject) => {\n const resolvePromise = () => {\n this._nativeAudioContext.removeEventListener('statechange', resolvePromise);\n if (this._nativeAudioContext.state === 'running') {\n resolve();\n }\n else {\n this.resume().then(resolve, reject);\n }\n };\n this._nativeAudioContext.addEventListener('statechange', resolvePromise);\n });\n }\n return this._nativeAudioContext.resume().catch((err) => {\n // Bug #55: Chrome, Edge and Opera do throw an InvalidAccessError instead of an InvalidStateError.\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined || err.code === 15) {\n throw createInvalidStateError();\n }\n throw err;\n });\n }\n suspend() {\n return this._nativeAudioContext.suspend().catch((err) => {\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined) {\n throw createInvalidStateError();\n }\n throw err;\n });\n }\n };\n};\n//# sourceMappingURL=minimal-audio-context-constructor.js.map","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { isValidLatencyHint } from '../helpers/is-valid-latency-hint';\nimport { IAudioContextOptions, IMinimalAudioContext } from '../interfaces';\nimport {\n TAudioContextState,\n TMinimalAudioContextConstructorFactory,\n TNativeAudioContext,\n TNativeGainNode,\n TNativeOscillatorNode\n} from '../types';\n\nexport const createMinimalAudioContextConstructor: TMinimalAudioContextConstructorFactory = (\n createInvalidStateError,\n createNotSupportedError,\n createUnknownError,\n minimalBaseAudioContextConstructor,\n nativeAudioContextConstructor\n) => {\n return class MinimalAudioContext extends minimalBaseAudioContextConstructor implements IMinimalAudioContext {\n private _baseLatency: number;\n\n private _nativeAudioContext: TNativeAudioContext;\n\n private _nativeGainNode: null | TNativeGainNode;\n\n private _nativeOscillatorNode: null | TNativeOscillatorNode;\n\n private _state: null | 'suspended';\n\n constructor(options: IAudioContextOptions = {}) {\n if (nativeAudioContextConstructor === null) {\n throw new Error('Missing the native AudioContext constructor.');\n }\n\n let nativeAudioContext: TNativeAudioContext;\n\n try {\n nativeAudioContext = new nativeAudioContextConstructor(options);\n } catch (err) {\n // Bug #192 Safari does throw a SyntaxError if the sampleRate is not supported.\n if (err.code === 12 && err.message === 'sampleRate is not in range') {\n throw createNotSupportedError();\n }\n\n throw err;\n }\n\n // Bug #131 Safari returns null when there are four other AudioContexts running already.\n if (nativeAudioContext === null) {\n throw createUnknownError();\n }\n\n // Bug #51 Only Chrome Edge, and Opera throw an error if the given latencyHint is invalid.\n if (!isValidLatencyHint(options.latencyHint)) {\n throw new TypeError(\n `The provided value '${options.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`\n );\n }\n\n // Bug #150 Safari does not support setting the sampleRate.\n if (options.sampleRate !== undefined && nativeAudioContext.sampleRate !== options.sampleRate) {\n throw createNotSupportedError();\n }\n\n super(nativeAudioContext, 2);\n\n const { latencyHint } = options;\n const { sampleRate } = nativeAudioContext;\n\n // @todo The values for 'balanced', 'interactive' and 'playback' are just copied from Chrome's implementation.\n this._baseLatency =\n typeof nativeAudioContext.baseLatency === 'number'\n ? nativeAudioContext.baseLatency\n : latencyHint === 'balanced'\n ? 512 / sampleRate\n : latencyHint === 'interactive' || latencyHint === undefined\n ? 256 / sampleRate\n : latencyHint === 'playback'\n ? 1024 / sampleRate\n : /*\n * @todo The min (256) and max (16384) values are taken from the allowed bufferSize values of a\n * ScriptProcessorNode.\n */\n (Math.max(2, Math.min(128, Math.round((latencyHint * sampleRate) / 128))) * 128) / sampleRate;\n this._nativeAudioContext = nativeAudioContext;\n\n // Bug #188: Safari will set the context's state to 'interrupted' in case the user switches tabs.\n if (nativeAudioContextConstructor.name === 'webkitAudioContext') {\n this._nativeGainNode = nativeAudioContext.createGain();\n this._nativeOscillatorNode = nativeAudioContext.createOscillator();\n\n this._nativeGainNode.gain.value = 1e-37;\n\n this._nativeOscillatorNode.connect(this._nativeGainNode).connect(nativeAudioContext.destination);\n this._nativeOscillatorNode.start();\n } else {\n this._nativeGainNode = null;\n this._nativeOscillatorNode = null;\n }\n\n this._state = null;\n\n /*\n * Bug #34: Chrome, Edge and Opera pretend to be running right away, but fire an onstatechange event when the state actually\n * changes to 'running'.\n */\n if (nativeAudioContext.state === 'running') {\n this._state = 'suspended';\n\n const revokeState = () => {\n if (this._state === 'suspended') {\n this._state = null;\n }\n\n nativeAudioContext.removeEventListener('statechange', revokeState);\n };\n\n nativeAudioContext.addEventListener('statechange', revokeState);\n }\n }\n\n get baseLatency(): number {\n return this._baseLatency;\n }\n\n get state(): TAudioContextState {\n return this._state !== null ? this._state : this._nativeAudioContext.state;\n }\n\n public close(): Promise {\n // Bug #35: Firefox does not throw an error if the AudioContext was closed before.\n if (this.state === 'closed') {\n return this._nativeAudioContext.close().then(() => {\n throw createInvalidStateError();\n });\n }\n\n // Bug #34: If the state was set to suspended before it should be revoked now.\n if (this._state === 'suspended') {\n this._state = null;\n }\n\n return this._nativeAudioContext.close().then(() => {\n if (this._nativeGainNode !== null && this._nativeOscillatorNode !== null) {\n this._nativeOscillatorNode.stop();\n\n this._nativeGainNode.disconnect();\n this._nativeOscillatorNode.disconnect();\n }\n\n deactivateAudioGraph(this);\n });\n }\n\n public resume(): Promise {\n if (this._state === 'suspended') {\n return new Promise((resolve, reject) => {\n const resolvePromise = () => {\n this._nativeAudioContext.removeEventListener('statechange', resolvePromise);\n\n if (this._nativeAudioContext.state === 'running') {\n resolve();\n } else {\n this.resume().then(resolve, reject);\n }\n };\n\n this._nativeAudioContext.addEventListener('statechange', resolvePromise);\n });\n }\n\n return this._nativeAudioContext.resume().catch((err) => {\n // Bug #55: Chrome, Edge and Opera do throw an InvalidAccessError instead of an InvalidStateError.\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined || err.code === 15) {\n throw createInvalidStateError();\n }\n\n throw err;\n });\n }\n\n public suspend(): Promise {\n return this._nativeAudioContext.suspend().catch((err) => {\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined) {\n throw createInvalidStateError();\n }\n\n throw err;\n });\n }\n };\n};\n","import { CONTEXT_STORE } from '../globals';\nexport const createMinimalBaseAudioContextConstructor = (audioDestinationNodeConstructor, createAudioListener, eventTargetConstructor, isNativeOfflineAudioContext, unrenderedAudioWorkletNodeStore, wrapEventListener) => {\n return class MinimalBaseAudioContext extends eventTargetConstructor {\n constructor(_nativeContext, numberOfChannels) {\n super(_nativeContext);\n this._nativeContext = _nativeContext;\n CONTEXT_STORE.set(this, _nativeContext);\n if (isNativeOfflineAudioContext(_nativeContext)) {\n unrenderedAudioWorkletNodeStore.set(_nativeContext, new Set());\n }\n this._destination = new audioDestinationNodeConstructor(this, numberOfChannels);\n this._listener = createAudioListener(this, _nativeContext);\n this._onstatechange = null;\n }\n get currentTime() {\n return this._nativeContext.currentTime;\n }\n get destination() {\n return this._destination;\n }\n get listener() {\n return this._listener;\n }\n get onstatechange() {\n return this._onstatechange;\n }\n set onstatechange(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeContext.onstatechange = wrappedListener;\n const nativeOnStateChange = this._nativeContext.onstatechange;\n this._onstatechange = nativeOnStateChange !== null && nativeOnStateChange === wrappedListener ? value : nativeOnStateChange;\n }\n get sampleRate() {\n return this._nativeContext.sampleRate;\n }\n get state() {\n return this._nativeContext.state;\n }\n };\n};\n//# sourceMappingURL=minimal-base-audio-context-constructor.js.map","import { CONTEXT_STORE } from '../globals';\nimport { IAudioDestinationNode, IAudioListener, IMinimalBaseAudioContext, IMinimalBaseAudioContextEventMap } from '../interfaces';\nimport { TAudioContextState, TContext, TEventHandler, TMinimalBaseAudioContextConstructorFactory, TNativeContext } from '../types';\n\nexport const createMinimalBaseAudioContextConstructor: TMinimalBaseAudioContextConstructorFactory = (\n audioDestinationNodeConstructor,\n createAudioListener,\n eventTargetConstructor,\n isNativeOfflineAudioContext,\n unrenderedAudioWorkletNodeStore,\n wrapEventListener\n) => {\n return class MinimalBaseAudioContext\n extends eventTargetConstructor\n implements IMinimalBaseAudioContext\n {\n private _destination: IAudioDestinationNode;\n\n private _listener: IAudioListener;\n\n private _onstatechange: null | TEventHandler;\n\n constructor(private _nativeContext: TNativeContext, numberOfChannels: number) {\n super(_nativeContext);\n\n CONTEXT_STORE.set((this), _nativeContext);\n\n if (isNativeOfflineAudioContext(_nativeContext)) {\n unrenderedAudioWorkletNodeStore.set(_nativeContext, new Set());\n }\n\n this._destination = new audioDestinationNodeConstructor((this), numberOfChannels);\n this._listener = createAudioListener((this), _nativeContext);\n this._onstatechange = null;\n }\n\n get currentTime(): number {\n return this._nativeContext.currentTime;\n }\n\n get destination(): IAudioDestinationNode {\n return this._destination;\n }\n\n get listener(): IAudioListener {\n return this._listener;\n }\n\n get onstatechange(): null | TEventHandler {\n return this._onstatechange;\n }\n\n set onstatechange(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n\n this._nativeContext.onstatechange = wrappedListener;\n\n const nativeOnStateChange = this._nativeContext.onstatechange;\n\n this._onstatechange = nativeOnStateChange !== null && nativeOnStateChange === wrappedListener ? value : nativeOnStateChange;\n }\n\n get sampleRate(): number {\n return this._nativeContext.sampleRate;\n }\n\n get state(): TAudioContextState {\n return this._nativeContext.state;\n }\n };\n};\n","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { testPromiseSupport } from '../helpers/test-promise-support';\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n};\nexport const createMinimalOfflineAudioContextConstructor = (cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, minimalBaseAudioContextConstructor, startRendering) => {\n return class MinimalOfflineAudioContext extends minimalBaseAudioContextConstructor {\n constructor(options) {\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n const nativeOfflineAudioContext = createNativeOfflineAudioContext(numberOfChannels, length, sampleRate);\n // #21 Safari does not support promises and therefore would fire the statechange event before the promise can be resolved.\n if (!cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n nativeOfflineAudioContext.addEventListener('statechange', (() => {\n let i = 0;\n const delayStateChangeEvent = (event) => {\n if (this._state === 'running') {\n if (i > 0) {\n nativeOfflineAudioContext.removeEventListener('statechange', delayStateChangeEvent);\n event.stopImmediatePropagation();\n this._waitForThePromiseToSettle(event);\n }\n else {\n i += 1;\n }\n }\n };\n return delayStateChangeEvent;\n })());\n }\n super(nativeOfflineAudioContext, numberOfChannels);\n this._length = length;\n this._nativeOfflineAudioContext = nativeOfflineAudioContext;\n this._state = null;\n }\n get length() {\n // Bug #17: Safari does not yet expose the length.\n if (this._nativeOfflineAudioContext.length === undefined) {\n return this._length;\n }\n return this._nativeOfflineAudioContext.length;\n }\n get state() {\n return this._state === null ? this._nativeOfflineAudioContext.state : this._state;\n }\n startRendering() {\n /*\n * Bug #9 & #59: It is theoretically possible that startRendering() will first render a partialOfflineAudioContext. Therefore\n * the state of the nativeOfflineAudioContext might no transition to running immediately.\n */\n if (this._state === 'running') {\n return Promise.reject(createInvalidStateError());\n }\n this._state = 'running';\n return startRendering(this.destination, this._nativeOfflineAudioContext).finally(() => {\n this._state = null;\n deactivateAudioGraph(this);\n });\n }\n _waitForThePromiseToSettle(event) {\n if (this._state === null) {\n this._nativeOfflineAudioContext.dispatchEvent(event);\n }\n else {\n setTimeout(() => this._waitForThePromiseToSettle(event));\n }\n }\n };\n};\n//# sourceMappingURL=minimal-offline-audio-context-constructor.js.map","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { testPromiseSupport } from '../helpers/test-promise-support';\nimport { IAudioBuffer, IMinimalOfflineAudioContext, IOfflineAudioContextOptions } from '../interfaces';\nimport { TAudioContextState, TMinimalOfflineAudioContextConstructorFactory, TNativeOfflineAudioContext } from '../types';\n\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n} as const;\n\nexport const createMinimalOfflineAudioContextConstructor: TMinimalOfflineAudioContextConstructorFactory = (\n cacheTestResult,\n createInvalidStateError,\n createNativeOfflineAudioContext,\n minimalBaseAudioContextConstructor,\n startRendering\n) => {\n return class MinimalOfflineAudioContext extends minimalBaseAudioContextConstructor\n implements IMinimalOfflineAudioContext {\n private _length: number;\n\n private _nativeOfflineAudioContext: TNativeOfflineAudioContext;\n\n private _state: null | TAudioContextState;\n\n constructor(options: IOfflineAudioContextOptions) {\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n\n const nativeOfflineAudioContext = createNativeOfflineAudioContext(numberOfChannels, length, sampleRate);\n\n // #21 Safari does not support promises and therefore would fire the statechange event before the promise can be resolved.\n if (!cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n nativeOfflineAudioContext.addEventListener(\n 'statechange',\n (() => {\n let i = 0;\n\n const delayStateChangeEvent = (event: Event) => {\n if (this._state === 'running') {\n if (i > 0) {\n nativeOfflineAudioContext.removeEventListener('statechange', delayStateChangeEvent);\n event.stopImmediatePropagation();\n\n this._waitForThePromiseToSettle(event);\n } else {\n i += 1;\n }\n }\n };\n\n return delayStateChangeEvent;\n })()\n );\n }\n\n super(nativeOfflineAudioContext, numberOfChannels);\n\n this._length = length;\n this._nativeOfflineAudioContext = nativeOfflineAudioContext;\n this._state = null;\n }\n\n get length(): number {\n // Bug #17: Safari does not yet expose the length.\n if (this._nativeOfflineAudioContext.length === undefined) {\n return this._length;\n }\n\n return this._nativeOfflineAudioContext.length;\n }\n\n get state(): TAudioContextState {\n return this._state === null ? this._nativeOfflineAudioContext.state : this._state;\n }\n\n public startRendering(): Promise {\n /*\n * Bug #9 & #59: It is theoretically possible that startRendering() will first render a partialOfflineAudioContext. Therefore\n * the state of the nativeOfflineAudioContext might no transition to running immediately.\n */\n if (this._state === 'running') {\n return Promise.reject(createInvalidStateError());\n }\n\n this._state = 'running';\n\n return startRendering(this.destination, this._nativeOfflineAudioContext).finally(() => {\n this._state = null;\n\n deactivateAudioGraph(this);\n });\n }\n\n private _waitForThePromiseToSettle(event: Event): void {\n if (this._state === null) {\n this._nativeOfflineAudioContext.dispatchEvent(event);\n } else {\n setTimeout(() => this._waitForThePromiseToSettle(event));\n }\n }\n };\n};\n","export const testPromiseSupport = (nativeContext) => {\n // This 12 numbers represent the 48 bytes of an empty WAVE file with a single sample.\n const uint32Array = new Uint32Array([1179011410, 40, 1163280727, 544501094, 16, 131073, 44100, 176400, 1048580, 1635017060, 4, 0]);\n try {\n // Bug #1: Safari requires a successCallback.\n const promise = nativeContext.decodeAudioData(uint32Array.buffer, () => {\n // Ignore the success callback.\n });\n if (promise === undefined) {\n return false;\n }\n promise.catch(() => {\n // Ignore rejected errors.\n });\n return true;\n }\n catch {\n // Ignore errors.\n }\n return false;\n};\n//# sourceMappingURL=test-promise-support.js.map","import { TNativeContext } from '../types';\n\nexport const testPromiseSupport = (nativeContext: TNativeContext): boolean => {\n // This 12 numbers represent the 48 bytes of an empty WAVE file with a single sample.\n const uint32Array = new Uint32Array([1179011410, 40, 1163280727, 544501094, 16, 131073, 44100, 176400, 1048580, 1635017060, 4, 0]);\n\n try {\n // Bug #1: Safari requires a successCallback.\n const promise = nativeContext.decodeAudioData(uint32Array.buffer, () => {\n // Ignore the success callback.\n });\n\n if (promise === undefined) {\n return false;\n }\n\n promise.catch(() => {\n // Ignore rejected errors.\n });\n\n return true;\n } catch {\n // Ignore errors.\n }\n\n return false;\n};\n","export const createMonitorConnections = (insertElementInSet, isNativeAudioNode) => {\n return (nativeAudioNode, whenConnected, whenDisconnected) => {\n const connections = new Set();\n nativeAudioNode.connect = ((connect) => {\n // tslint:disable-next-line:invalid-void no-inferrable-types\n return (destination, output = 0, input = 0) => {\n const wasDisconnected = connections.size === 0;\n if (isNativeAudioNode(destination)) {\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n connect.call(nativeAudioNode, destination, output, input);\n insertElementInSet(connections, [destination, output, input], (connection) => connection[0] === destination && connection[1] === output && connection[2] === input, true);\n if (wasDisconnected) {\n whenConnected();\n }\n return destination;\n }\n connect.call(nativeAudioNode, destination, output);\n insertElementInSet(connections, [destination, output], (connection) => connection[0] === destination && connection[1] === output, true);\n if (wasDisconnected) {\n whenConnected();\n }\n return;\n };\n })(nativeAudioNode.connect);\n nativeAudioNode.disconnect = ((disconnect) => {\n return (destinationOrOutput, output, input) => {\n const wasConnected = connections.size > 0;\n if (destinationOrOutput === undefined) {\n disconnect.apply(nativeAudioNode);\n connections.clear();\n }\n else if (typeof destinationOrOutput === 'number') {\n // @todo TypeScript cannot infer the overloaded signature with 1 argument yet.\n disconnect.call(nativeAudioNode, destinationOrOutput);\n for (const connection of connections) {\n if (connection[1] === destinationOrOutput) {\n connections.delete(connection);\n }\n }\n }\n else {\n if (isNativeAudioNode(destinationOrOutput)) {\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n disconnect.call(nativeAudioNode, destinationOrOutput, output, input);\n }\n else {\n // @todo TypeScript cannot infer the overloaded signature with 2 arguments yet.\n disconnect.call(nativeAudioNode, destinationOrOutput, output);\n }\n for (const connection of connections) {\n if (connection[0] === destinationOrOutput &&\n (output === undefined || connection[1] === output) &&\n (input === undefined || connection[2] === input)) {\n connections.delete(connection);\n }\n }\n }\n const isDisconnected = connections.size === 0;\n if (wasConnected && isDisconnected) {\n whenDisconnected();\n }\n };\n })(nativeAudioNode.disconnect);\n return nativeAudioNode;\n };\n};\n//# sourceMappingURL=monitor-connections.js.map","import { TMonitorConnectionsFactory, TNativeAudioNode, TNativeAudioParam } from '../types';\n\nexport const createMonitorConnections: TMonitorConnectionsFactory = (insertElementInSet, isNativeAudioNode) => {\n return (nativeAudioNode, whenConnected, whenDisconnected) => {\n const connections = new Set<[TNativeAudioNode, number, number] | [TNativeAudioParam, number]>();\n\n nativeAudioNode.connect = ((connect) => {\n // tslint:disable-next-line:invalid-void no-inferrable-types\n return (destination: TNativeAudioNode | TNativeAudioParam, output = 0, input: number = 0): void | TNativeAudioNode => {\n const wasDisconnected = connections.size === 0;\n\n if (isNativeAudioNode(destination)) {\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n (<(destination: TNativeAudioNode, output?: number, input?: number) => TNativeAudioNode>connect).call(\n nativeAudioNode,\n destination,\n output,\n input\n );\n\n insertElementInSet(\n connections,\n [destination, output, input],\n (connection) => connection[0] === destination && connection[1] === output && connection[2] === input,\n true\n );\n\n if (wasDisconnected) {\n whenConnected();\n }\n\n return destination;\n }\n\n connect.call(nativeAudioNode, destination, output);\n\n insertElementInSet(\n connections,\n [destination, output],\n (connection) => connection[0] === destination && connection[1] === output,\n true\n );\n\n if (wasDisconnected) {\n whenConnected();\n }\n\n return;\n };\n })(nativeAudioNode.connect);\n\n nativeAudioNode.disconnect = ((disconnect) => {\n return (destinationOrOutput?: number | TNativeAudioNode | TNativeAudioParam, output?: number, input?: number): void => {\n const wasConnected = connections.size > 0;\n\n if (destinationOrOutput === undefined) {\n disconnect.apply(nativeAudioNode);\n\n connections.clear();\n } else if (typeof destinationOrOutput === 'number') {\n // @todo TypeScript cannot infer the overloaded signature with 1 argument yet.\n (<(output: number) => void>disconnect).call(nativeAudioNode, destinationOrOutput);\n\n for (const connection of connections) {\n if (connection[1] === destinationOrOutput) {\n connections.delete(connection);\n }\n }\n } else {\n if (isNativeAudioNode(destinationOrOutput)) {\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n (<(destination: TNativeAudioNode, output?: number, input?: number) => void>disconnect).call(\n nativeAudioNode,\n destinationOrOutput,\n output,\n input\n );\n } else {\n // @todo TypeScript cannot infer the overloaded signature with 2 arguments yet.\n (<(destination: TNativeAudioParam, output?: number) => void>disconnect).call(\n nativeAudioNode,\n destinationOrOutput,\n output\n );\n }\n\n for (const connection of connections) {\n if (\n connection[0] === destinationOrOutput &&\n (output === undefined || connection[1] === output) &&\n (input === undefined || connection[2] === input)\n ) {\n connections.delete(connection);\n }\n }\n }\n\n const isDisconnected = connections.size === 0;\n\n if (wasConnected && isDisconnected) {\n whenDisconnected();\n }\n };\n })(nativeAudioNode.disconnect);\n\n return nativeAudioNode;\n };\n};\n","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { testAnalyserNodeGetFloatTimeDomainDataMethodSupport } from '../helpers/test-analyser-node-get-float-time-domain-data-method-support';\nimport { wrapAnalyserNodeGetFloatTimeDomainDataMethod } from '../helpers/wrap-analyser-node-get-float-time-domain-data-method';\nexport const createNativeAnalyserNodeFactory = (cacheTestResult, createIndexSizeError) => {\n return (nativeContext, options) => {\n const nativeAnalyserNode = nativeContext.createAnalyser();\n // Bug #37: Firefox does not create an AnalyserNode with the default properties.\n assignNativeAudioNodeOptions(nativeAnalyserNode, options);\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n if (!(options.maxDecibels > options.minDecibels)) {\n throw createIndexSizeError();\n }\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'fftSize');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'maxDecibels');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'minDecibels');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'smoothingTimeConstant');\n // Bug #36: Safari does not support getFloatTimeDomainData() yet.\n if (!cacheTestResult(testAnalyserNodeGetFloatTimeDomainDataMethodSupport, () => testAnalyserNodeGetFloatTimeDomainDataMethodSupport(nativeAnalyserNode))) {\n wrapAnalyserNodeGetFloatTimeDomainDataMethod(nativeAnalyserNode);\n }\n return nativeAnalyserNode;\n };\n};\n//# sourceMappingURL=native-analyser-node-factory.js.map","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { testAnalyserNodeGetFloatTimeDomainDataMethodSupport } from '../helpers/test-analyser-node-get-float-time-domain-data-method-support';\nimport { wrapAnalyserNodeGetFloatTimeDomainDataMethod } from '../helpers/wrap-analyser-node-get-float-time-domain-data-method';\nimport { TNativeAnalyserNodeFactoryFactory } from '../types';\n\nexport const createNativeAnalyserNodeFactory: TNativeAnalyserNodeFactoryFactory = (cacheTestResult, createIndexSizeError) => {\n return (nativeContext, options) => {\n const nativeAnalyserNode = nativeContext.createAnalyser();\n\n // Bug #37: Firefox does not create an AnalyserNode with the default properties.\n assignNativeAudioNodeOptions(nativeAnalyserNode, options);\n\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n if (!(options.maxDecibels > options.minDecibels)) {\n throw createIndexSizeError();\n }\n\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'fftSize');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'maxDecibels');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'minDecibels');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'smoothingTimeConstant');\n\n // Bug #36: Safari does not support getFloatTimeDomainData() yet.\n if (\n !cacheTestResult(testAnalyserNodeGetFloatTimeDomainDataMethodSupport, () =>\n testAnalyserNodeGetFloatTimeDomainDataMethodSupport(nativeAnalyserNode)\n )\n ) {\n wrapAnalyserNodeGetFloatTimeDomainDataMethod(nativeAnalyserNode);\n }\n\n return nativeAnalyserNode;\n };\n};\n","export const assignNativeAudioNodeOption = (nativeAudioNode, options, option) => {\n const value = options[option];\n if (value !== undefined && value !== nativeAudioNode[option]) {\n nativeAudioNode[option] = value;\n }\n};\n//# sourceMappingURL=assign-native-audio-node-option.js.map","export const assignNativeAudioNodeOption = (\n nativeAudioNode: Record,\n options: Record,\n option: T\n) => {\n const value = options[option];\n\n if (value !== undefined && value !== nativeAudioNode[option]) {\n nativeAudioNode[option] = value;\n }\n};\n","import { assignNativeAudioNodeOption } from './assign-native-audio-node-option';\nexport const assignNativeAudioNodeOptions = (nativeAudioNode, options) => {\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCount');\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCountMode');\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelInterpretation');\n};\n//# sourceMappingURL=assign-native-audio-node-options.js.map","import { IAudioNodeOptions } from '../interfaces';\nimport { TNativeAudioNode } from '../types';\nimport { assignNativeAudioNodeOption } from './assign-native-audio-node-option';\n\nexport const assignNativeAudioNodeOptions = (nativeAudioNode: TNativeAudioNode, options: IAudioNodeOptions): void => {\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCount');\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCountMode');\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelInterpretation');\n};\n","export const testAnalyserNodeGetFloatTimeDomainDataMethodSupport = (nativeAnalyserNode) => {\n return typeof nativeAnalyserNode.getFloatTimeDomainData === 'function';\n};\n//# sourceMappingURL=test-analyser-node-get-float-time-domain-data-method-support.js.map","import { TNativeAnalyserNode } from '../types';\n\nexport const testAnalyserNodeGetFloatTimeDomainDataMethodSupport = (nativeAnalyserNode: TNativeAnalyserNode): boolean => {\n return typeof nativeAnalyserNode.getFloatTimeDomainData === 'function';\n};\n","export const wrapAnalyserNodeGetFloatTimeDomainDataMethod = (nativeAnalyserNode) => {\n nativeAnalyserNode.getFloatTimeDomainData = (array) => {\n const byteTimeDomainData = new Uint8Array(array.length);\n nativeAnalyserNode.getByteTimeDomainData(byteTimeDomainData);\n const length = Math.max(byteTimeDomainData.length, nativeAnalyserNode.fftSize);\n for (let i = 0; i < length; i += 1) {\n array[i] = (byteTimeDomainData[i] - 128) * 0.0078125;\n }\n return array;\n };\n};\n//# sourceMappingURL=wrap-analyser-node-get-float-time-domain-data-method.js.map","import { TNativeAnalyserNode } from '../types';\n\nexport const wrapAnalyserNodeGetFloatTimeDomainDataMethod = (nativeAnalyserNode: TNativeAnalyserNode): void => {\n nativeAnalyserNode.getFloatTimeDomainData = (array: Float32Array) => {\n const byteTimeDomainData = new Uint8Array(array.length);\n\n nativeAnalyserNode.getByteTimeDomainData(byteTimeDomainData);\n\n const length = Math.max(byteTimeDomainData.length, nativeAnalyserNode.fftSize);\n\n for (let i = 0; i < length; i += 1) {\n array[i] = (byteTimeDomainData[i] - 128) * 0.0078125;\n }\n\n return array;\n };\n};\n","export const createNativeAudioBufferConstructor = (window) => {\n if (window === null) {\n return null;\n }\n if (window.hasOwnProperty('AudioBuffer')) {\n return window.AudioBuffer;\n }\n return null;\n};\n//# sourceMappingURL=native-audio-buffer-constructor.js.map","import { TNativeAudioBufferConstructorFactory } from '../types';\n\nexport const createNativeAudioBufferConstructor: TNativeAudioBufferConstructorFactory = (window) => {\n if (window === null) {\n return null;\n }\n\n if (window.hasOwnProperty('AudioBuffer')) {\n return window.AudioBuffer;\n }\n\n return null;\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioBufferSourceNodeStartMethodConsecutiveCalls } from '../helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nexport const createNativeAudioBufferSourceNodeFactory = (addSilentConnection, cacheTestResult, testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, testAudioBufferSourceNodeStartMethodOffsetClampingSupport, testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioBufferSourceNodeStartMethodOffsetClampling, wrapAudioBufferSourceNodeStopMethodNullifiedBuffer, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls) => {\n return (nativeContext, options) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n assignNativeAudioNodeOptions(nativeAudioBufferSourceNode, options);\n assignNativeAudioNodeAudioParamValue(nativeAudioBufferSourceNode, options, 'playbackRate');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'buffer');\n // Bug #149: Safari does not yet support the detune AudioParam.\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loop');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopEnd');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopStart');\n // Bug #69: Safari does allow calls to start() of an already scheduled AudioBufferSourceNode.\n if (!cacheTestResult(testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, () => testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport(nativeContext))) {\n wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(nativeAudioBufferSourceNode);\n }\n // Bug #154 & #155: Safari does not handle offsets which are equal to or greater than the duration of the buffer.\n if (!cacheTestResult(testAudioBufferSourceNodeStartMethodOffsetClampingSupport, () => testAudioBufferSourceNodeStartMethodOffsetClampingSupport(nativeContext))) {\n wrapAudioBufferSourceNodeStartMethodOffsetClampling(nativeAudioBufferSourceNode);\n }\n // Bug #162: Safari does throw an error when stop() is called on an AudioBufferSourceNode which has no buffer assigned to it.\n if (!cacheTestResult(testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, () => testAudioBufferSourceNodeStopMethodNullifiedBufferSupport(nativeContext))) {\n wrapAudioBufferSourceNodeStopMethodNullifiedBuffer(nativeAudioBufferSourceNode, nativeContext);\n }\n // Bug #44: Safari does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeAudioBufferSourceNode);\n }\n // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () => testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeAudioBufferSourceNode, nativeContext);\n }\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeAudioBufferSourceNode);\n }\n // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected.\n addSilentConnection(nativeContext, nativeAudioBufferSourceNode);\n return nativeAudioBufferSourceNode;\n };\n};\n//# sourceMappingURL=native-audio-buffer-source-node-factory.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioBufferSourceNodeStartMethodConsecutiveCalls } from '../helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nimport { TNativeAudioBufferSourceNodeFactoryFactory } from '../types';\n\nexport const createNativeAudioBufferSourceNodeFactory: TNativeAudioBufferSourceNodeFactoryFactory = (\n addSilentConnection,\n cacheTestResult,\n testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport,\n testAudioBufferSourceNodeStartMethodOffsetClampingSupport,\n testAudioBufferSourceNodeStopMethodNullifiedBufferSupport,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,\n wrapAudioBufferSourceNodeStartMethodOffsetClampling,\n wrapAudioBufferSourceNodeStopMethodNullifiedBuffer,\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls\n) => {\n return (nativeContext, options) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n\n assignNativeAudioNodeOptions(nativeAudioBufferSourceNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeAudioBufferSourceNode, options, 'playbackRate');\n\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'buffer');\n\n // Bug #149: Safari does not yet support the detune AudioParam.\n\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loop');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopEnd');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopStart');\n\n // Bug #69: Safari does allow calls to start() of an already scheduled AudioBufferSourceNode.\n if (\n !cacheTestResult(testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, () =>\n testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport(nativeContext)\n )\n ) {\n wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(nativeAudioBufferSourceNode);\n }\n\n // Bug #154 & #155: Safari does not handle offsets which are equal to or greater than the duration of the buffer.\n if (\n !cacheTestResult(testAudioBufferSourceNodeStartMethodOffsetClampingSupport, () =>\n testAudioBufferSourceNodeStartMethodOffsetClampingSupport(nativeContext)\n )\n ) {\n wrapAudioBufferSourceNodeStartMethodOffsetClampling(nativeAudioBufferSourceNode);\n }\n\n // Bug #162: Safari does throw an error when stop() is called on an AudioBufferSourceNode which has no buffer assigned to it.\n if (\n !cacheTestResult(testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, () =>\n testAudioBufferSourceNodeStopMethodNullifiedBufferSupport(nativeContext)\n )\n ) {\n wrapAudioBufferSourceNodeStopMethodNullifiedBuffer(nativeAudioBufferSourceNode, nativeContext);\n }\n\n // Bug #44: Safari does not throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeAudioBufferSourceNode);\n }\n\n // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () =>\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeAudioBufferSourceNode, nativeContext);\n }\n\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeAudioBufferSourceNode);\n }\n\n // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected.\n addSilentConnection(nativeContext, nativeAudioBufferSourceNode);\n\n return nativeAudioBufferSourceNode;\n };\n};\n","export const assignNativeAudioNodeAudioParamValue = (nativeAudioNode, options, audioParam) => {\n const value = options[audioParam];\n if (value !== undefined && value !== nativeAudioNode[audioParam].value) {\n nativeAudioNode[audioParam].value = value;\n }\n};\n//# sourceMappingURL=assign-native-audio-node-audio-param-value.js.map","export const assignNativeAudioNodeAudioParamValue = (\n nativeAudioNode: T,\n options: U,\n audioParam: keyof T & keyof U\n) => {\n const value = options[audioParam];\n\n if (value !== undefined && value !== nativeAudioNode[audioParam].value) {\n nativeAudioNode[audioParam].value = value;\n }\n};\n","import { createInvalidStateError } from '../factories/invalid-state-error';\nexport const wrapAudioBufferSourceNodeStartMethodConsecutiveCalls = (nativeAudioBufferSourceNode) => {\n nativeAudioBufferSourceNode.start = ((start) => {\n let isScheduled = false;\n return (when = 0, offset = 0, duration) => {\n if (isScheduled) {\n throw createInvalidStateError();\n }\n start.call(nativeAudioBufferSourceNode, when, offset, duration);\n isScheduled = true;\n };\n })(nativeAudioBufferSourceNode.start);\n};\n//# sourceMappingURL=wrap-audio-buffer-source-node-start-method-consecutive-calls.js.map","import { createInvalidStateError } from '../factories/invalid-state-error';\nimport { TNativeAudioBufferSourceNode } from '../types';\n\nexport const wrapAudioBufferSourceNodeStartMethodConsecutiveCalls = (nativeAudioBufferSourceNode: TNativeAudioBufferSourceNode): void => {\n nativeAudioBufferSourceNode.start = ((start) => {\n let isScheduled = false;\n\n return (when = 0, offset = 0, duration?: number) => {\n if (isScheduled) {\n throw createInvalidStateError();\n }\n\n start.call(nativeAudioBufferSourceNode, when, offset, duration);\n\n isScheduled = true;\n };\n })(nativeAudioBufferSourceNode.start);\n};\n","export const wrapAudioScheduledSourceNodeStartMethodNegativeParameters = (nativeAudioScheduledSourceNode) => {\n nativeAudioScheduledSourceNode.start = ((start) => {\n return (when = 0, offset = 0, duration) => {\n if ((typeof duration === 'number' && duration < 0) || offset < 0 || when < 0) {\n throw new RangeError(\"The parameters can't be negative.\");\n }\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n start.call(nativeAudioScheduledSourceNode, when, offset, duration);\n };\n })(nativeAudioScheduledSourceNode.start);\n};\n//# sourceMappingURL=wrap-audio-scheduled-source-node-start-method-negative-parameters.js.map","import { TNativeAudioBufferSourceNode, TNativeConstantSourceNode, TNativeOscillatorNode } from '../types';\n\nexport const wrapAudioScheduledSourceNodeStartMethodNegativeParameters = (\n nativeAudioScheduledSourceNode: TNativeAudioBufferSourceNode | TNativeConstantSourceNode | TNativeOscillatorNode\n): void => {\n nativeAudioScheduledSourceNode.start = ((start) => {\n return (when = 0, offset = 0, duration?: number) => {\n if ((typeof duration === 'number' && duration < 0) || offset < 0 || when < 0) {\n throw new RangeError(\"The parameters can't be negative.\");\n }\n\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n (<(when: number, offset: number, duration?: number) => void>start).call(nativeAudioScheduledSourceNode, when, offset, duration);\n };\n })(nativeAudioScheduledSourceNode.start);\n};\n","export const wrapAudioScheduledSourceNodeStopMethodNegativeParameters = (nativeAudioScheduledSourceNode) => {\n nativeAudioScheduledSourceNode.stop = ((stop) => {\n return (when = 0) => {\n if (when < 0) {\n throw new RangeError(\"The parameter can't be negative.\");\n }\n stop.call(nativeAudioScheduledSourceNode, when);\n };\n })(nativeAudioScheduledSourceNode.stop);\n};\n//# sourceMappingURL=wrap-audio-scheduled-source-node-stop-method-negative-parameters.js.map","import { TNativeAudioBufferSourceNode, TNativeConstantSourceNode, TNativeOscillatorNode } from '../types';\n\nexport const wrapAudioScheduledSourceNodeStopMethodNegativeParameters = (\n nativeAudioScheduledSourceNode: TNativeAudioBufferSourceNode | TNativeConstantSourceNode | TNativeOscillatorNode\n): void => {\n nativeAudioScheduledSourceNode.stop = ((stop) => {\n return (when = 0) => {\n if (when < 0) {\n throw new RangeError(\"The parameter can't be negative.\");\n }\n\n stop.call(nativeAudioScheduledSourceNode, when);\n };\n })(nativeAudioScheduledSourceNode.stop);\n};\n","export const createNativeAudioContextConstructor = (window) => {\n if (window === null) {\n return null;\n }\n if (window.hasOwnProperty('AudioContext')) {\n return window.AudioContext;\n }\n return window.hasOwnProperty('webkitAudioContext') ? window.webkitAudioContext : null;\n};\n//# sourceMappingURL=native-audio-context-constructor.js.map","import { TNativeAudioContextConstructorFactory } from '../types';\n\nexport const createNativeAudioContextConstructor: TNativeAudioContextConstructorFactory = (window) => {\n if (window === null) {\n return null;\n }\n\n if (window.hasOwnProperty('AudioContext')) {\n return window.AudioContext;\n }\n\n return window.hasOwnProperty('webkitAudioContext') ? (window).webkitAudioContext : null;\n};\n","export const createNativeAudioDestinationNodeFactory = (createNativeGainNode, overwriteAccessors) => {\n return (nativeContext, channelCount, isNodeOfNativeOfflineAudioContext) => {\n const nativeAudioDestinationNode = nativeContext.destination;\n // Bug #132: Safari does not have the correct channelCount.\n if (nativeAudioDestinationNode.channelCount !== channelCount) {\n try {\n nativeAudioDestinationNode.channelCount = channelCount;\n }\n catch {\n // Bug #169: Safari throws an error on each attempt to change the channelCount.\n }\n }\n // Bug #83: Safari does not have the correct channelCountMode.\n if (isNodeOfNativeOfflineAudioContext && nativeAudioDestinationNode.channelCountMode !== 'explicit') {\n nativeAudioDestinationNode.channelCountMode = 'explicit';\n }\n // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly.\n if (nativeAudioDestinationNode.maxChannelCount === 0) {\n Object.defineProperty(nativeAudioDestinationNode, 'maxChannelCount', {\n value: channelCount\n });\n }\n // Bug #168: No browser does yet have an AudioDestinationNode with an output.\n const gainNode = createNativeGainNode(nativeContext, {\n channelCount,\n channelCountMode: nativeAudioDestinationNode.channelCountMode,\n channelInterpretation: nativeAudioDestinationNode.channelInterpretation,\n gain: 1\n });\n overwriteAccessors(gainNode, 'channelCount', (get) => () => get.call(gainNode), (set) => (value) => {\n set.call(gainNode, value);\n try {\n nativeAudioDestinationNode.channelCount = value;\n }\n catch (err) {\n // Bug #169: Safari throws an error on each attempt to change the channelCount.\n if (value > nativeAudioDestinationNode.maxChannelCount) {\n throw err;\n }\n }\n });\n overwriteAccessors(gainNode, 'channelCountMode', (get) => () => get.call(gainNode), (set) => (value) => {\n set.call(gainNode, value);\n nativeAudioDestinationNode.channelCountMode = value;\n });\n overwriteAccessors(gainNode, 'channelInterpretation', (get) => () => get.call(gainNode), (set) => (value) => {\n set.call(gainNode, value);\n nativeAudioDestinationNode.channelInterpretation = value;\n });\n Object.defineProperty(gainNode, 'maxChannelCount', {\n get: () => nativeAudioDestinationNode.maxChannelCount\n });\n // @todo This should be disconnected when the context is closed.\n gainNode.connect(nativeAudioDestinationNode);\n return gainNode;\n };\n};\n//# sourceMappingURL=native-audio-destination-node.js.map","import { TNativeAudioDestinationNode, TNativeAudioDestinationNodeFactoryFactory, TNativeGainNode } from '../types';\n\nexport const createNativeAudioDestinationNodeFactory: TNativeAudioDestinationNodeFactoryFactory = (\n createNativeGainNode,\n overwriteAccessors\n) => {\n return (nativeContext, channelCount, isNodeOfNativeOfflineAudioContext) => {\n const nativeAudioDestinationNode = nativeContext.destination;\n\n // Bug #132: Safari does not have the correct channelCount.\n if (nativeAudioDestinationNode.channelCount !== channelCount) {\n try {\n nativeAudioDestinationNode.channelCount = channelCount;\n } catch {\n // Bug #169: Safari throws an error on each attempt to change the channelCount.\n }\n }\n\n // Bug #83: Safari does not have the correct channelCountMode.\n if (isNodeOfNativeOfflineAudioContext && nativeAudioDestinationNode.channelCountMode !== 'explicit') {\n nativeAudioDestinationNode.channelCountMode = 'explicit';\n }\n\n // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly.\n if (nativeAudioDestinationNode.maxChannelCount === 0) {\n Object.defineProperty(nativeAudioDestinationNode, 'maxChannelCount', {\n value: channelCount\n });\n }\n\n // Bug #168: No browser does yet have an AudioDestinationNode with an output.\n const gainNode = createNativeGainNode(nativeContext, {\n channelCount,\n channelCountMode: nativeAudioDestinationNode.channelCountMode,\n channelInterpretation: nativeAudioDestinationNode.channelInterpretation,\n gain: 1\n });\n\n overwriteAccessors(\n gainNode,\n 'channelCount',\n (get) => () => get.call(gainNode),\n (set) => (value) => {\n set.call(gainNode, value);\n\n try {\n nativeAudioDestinationNode.channelCount = value;\n } catch (err) {\n // Bug #169: Safari throws an error on each attempt to change the channelCount.\n if (value > nativeAudioDestinationNode.maxChannelCount) {\n throw err;\n }\n }\n }\n );\n\n overwriteAccessors(\n gainNode,\n 'channelCountMode',\n (get) => () => get.call(gainNode),\n (set) => (value) => {\n set.call(gainNode, value);\n nativeAudioDestinationNode.channelCountMode = value;\n }\n );\n\n overwriteAccessors(\n gainNode,\n 'channelInterpretation',\n (get) => () => get.call(gainNode),\n (set) => (value) => {\n set.call(gainNode, value);\n nativeAudioDestinationNode.channelInterpretation = value;\n }\n );\n\n Object.defineProperty(gainNode, 'maxChannelCount', {\n get: () => nativeAudioDestinationNode.maxChannelCount\n });\n\n // @todo This should be disconnected when the context is closed.\n gainNode.connect(nativeAudioDestinationNode);\n\n return <{ maxChannelCount: TNativeAudioDestinationNode['maxChannelCount'] } & TNativeGainNode>gainNode;\n };\n};\n","export const createNativeAudioWorkletNodeConstructor = (window) => {\n if (window === null) {\n return null;\n }\n return window.hasOwnProperty('AudioWorkletNode') ? window.AudioWorkletNode : null;\n};\n//# sourceMappingURL=native-audio-worklet-node-constructor.js.map","import { TNativeAudioWorkletNodeConstructorFactory } from '../types';\n\nexport const createNativeAudioWorkletNodeConstructor: TNativeAudioWorkletNodeConstructorFactory = (window) => {\n if (window === null) {\n return null;\n }\n\n return window.hasOwnProperty('AudioWorkletNode') ? window.AudioWorkletNode : null;\n};\n","import { testClonabilityOfAudioWorkletNodeOptions } from '../helpers/test-clonability-of-audio-worklet-node-options';\nexport const createNativeAudioWorkletNodeFactory = (createInvalidStateError, createNativeAudioWorkletNodeFaker, createNativeGainNode, createNotSupportedError, monitorConnections) => {\n return (nativeContext, baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, options) => {\n if (nativeAudioWorkletNodeConstructor !== null) {\n try {\n const nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeContext, name, options);\n const patchedEventListeners = new Map();\n let onprocessorerror = null;\n Object.defineProperties(nativeAudioWorkletNode, {\n /*\n * Bug #61: Overwriting the property accessors for channelCount and channelCountMode is necessary as long as some\n * browsers have no native implementation to achieve a consistent behavior.\n */\n channelCount: {\n get: () => options.channelCount,\n set: () => {\n throw createInvalidStateError();\n }\n },\n channelCountMode: {\n get: () => 'explicit',\n set: () => {\n throw createInvalidStateError();\n }\n },\n // Bug #156: Chrome and Edge do not yet fire an ErrorEvent.\n onprocessorerror: {\n get: () => onprocessorerror,\n set: (value) => {\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNode.removeEventListener('processorerror', onprocessorerror);\n }\n onprocessorerror = typeof value === 'function' ? value : null;\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNode.addEventListener('processorerror', onprocessorerror);\n }\n }\n }\n });\n nativeAudioWorkletNode.addEventListener = ((addEventListener) => {\n return (...args) => {\n if (args[0] === 'processorerror') {\n const unpatchedEventListener = typeof args[1] === 'function'\n ? args[1]\n : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function'\n ? args[1].handleEvent\n : null;\n if (unpatchedEventListener !== null) {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n args[1] = patchedEventListener;\n }\n else {\n args[1] = (event) => {\n // Bug #178: Chrome, Edge and Opera do fire an event of type error.\n if (event.type === 'error') {\n Object.defineProperties(event, {\n type: { value: 'processorerror' }\n });\n unpatchedEventListener(event);\n }\n else {\n unpatchedEventListener(new ErrorEvent(args[0], { ...event }));\n }\n };\n patchedEventListeners.set(unpatchedEventListener, args[1]);\n }\n }\n }\n // Bug #178: Chrome, Edge and Opera do fire an event of type error.\n addEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]);\n return addEventListener.call(nativeAudioWorkletNode, ...args);\n };\n })(nativeAudioWorkletNode.addEventListener);\n nativeAudioWorkletNode.removeEventListener = ((removeEventListener) => {\n return (...args) => {\n if (args[0] === 'processorerror') {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n patchedEventListeners.delete(args[1]);\n args[1] = patchedEventListener;\n }\n }\n // Bug #178: Chrome, Edge and Opera do fire an event of type error.\n removeEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]);\n return removeEventListener.call(nativeAudioWorkletNode, args[0], args[1], args[2]);\n };\n })(nativeAudioWorkletNode.removeEventListener);\n /*\n * Bug #86: Chrome and Edge do not invoke the process() function if the corresponding AudioWorkletNode is unconnected but\n * has an output.\n */\n if (options.numberOfOutputs !== 0) {\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n nativeAudioWorkletNode.connect(nativeGainNode).connect(nativeContext.destination);\n const whenConnected = () => nativeGainNode.disconnect();\n const whenDisconnected = () => nativeGainNode.connect(nativeContext.destination);\n // @todo Disconnect the connection when the process() function of the AudioWorkletNode returns false.\n return monitorConnections(nativeAudioWorkletNode, whenConnected, whenDisconnected);\n }\n return nativeAudioWorkletNode;\n }\n catch (err) {\n // Bug #60: Chrome, Edge & Opera throw an InvalidStateError instead of a NotSupportedError.\n if (err.code === 11) {\n throw createNotSupportedError();\n }\n throw err;\n }\n }\n // Bug #61: Only Chrome & Opera have an implementation of the AudioWorkletNode yet.\n if (processorConstructor === undefined) {\n throw createNotSupportedError();\n }\n testClonabilityOfAudioWorkletNodeOptions(options);\n return createNativeAudioWorkletNodeFaker(nativeContext, baseLatency, processorConstructor, options);\n };\n};\n//# sourceMappingURL=native-audio-worklet-node-factory.js.map","import { testClonabilityOfAudioWorkletNodeOptions } from '../helpers/test-clonability-of-audio-worklet-node-options';\nimport { TNativeAudioWorkletNode, TNativeAudioWorkletNodeFactoryFactory, TNativeAudioWorkletNodeOptions } from '../types';\n\nexport const createNativeAudioWorkletNodeFactory: TNativeAudioWorkletNodeFactoryFactory = (\n createInvalidStateError,\n createNativeAudioWorkletNodeFaker,\n createNativeGainNode,\n createNotSupportedError,\n monitorConnections\n) => {\n return (nativeContext, baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, options) => {\n if (nativeAudioWorkletNodeConstructor !== null) {\n try {\n const nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(\n nativeContext,\n name,\n options\n );\n const patchedEventListeners: Map<\n EventListenerOrEventListenerObject,\n NonNullable\n > = new Map();\n\n let onprocessorerror: TNativeAudioWorkletNode['onprocessorerror'] = null;\n\n Object.defineProperties(nativeAudioWorkletNode, {\n /*\n * Bug #61: Overwriting the property accessors for channelCount and channelCountMode is necessary as long as some\n * browsers have no native implementation to achieve a consistent behavior.\n */\n channelCount: {\n get: () => options.channelCount,\n set: () => {\n throw createInvalidStateError();\n }\n },\n channelCountMode: {\n get: () => 'explicit',\n set: () => {\n throw createInvalidStateError();\n }\n },\n // Bug #156: Chrome and Edge do not yet fire an ErrorEvent.\n onprocessorerror: {\n get: () => onprocessorerror,\n set: (value) => {\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNode.removeEventListener('processorerror', onprocessorerror);\n }\n\n onprocessorerror = typeof value === 'function' ? value : null;\n\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNode.addEventListener('processorerror', onprocessorerror);\n }\n }\n }\n });\n\n nativeAudioWorkletNode.addEventListener = ((addEventListener) => {\n return (...args: [string, EventListenerOrEventListenerObject, (boolean | AddEventListenerOptions)?]): void => {\n if (args[0] === 'processorerror') {\n const unpatchedEventListener =\n typeof args[1] === 'function'\n ? args[1]\n : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function'\n ? args[1].handleEvent\n : null;\n\n if (unpatchedEventListener !== null) {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n\n if (patchedEventListener !== undefined) {\n args[1] = patchedEventListener;\n } else {\n args[1] = (event: Event) => {\n // Bug #178: Chrome, Edge and Opera do fire an event of type error.\n if (event.type === 'error') {\n Object.defineProperties(event, {\n type: { value: 'processorerror' }\n });\n\n unpatchedEventListener(event);\n } else {\n unpatchedEventListener(new ErrorEvent(args[0], { ...event }));\n }\n };\n\n patchedEventListeners.set(unpatchedEventListener, args[1]);\n }\n }\n }\n\n // Bug #178: Chrome, Edge and Opera do fire an event of type error.\n addEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]);\n\n return addEventListener.call(nativeAudioWorkletNode, ...args);\n };\n })(nativeAudioWorkletNode.addEventListener);\n\n nativeAudioWorkletNode.removeEventListener = ((removeEventListener) => {\n return (...args: any[]): void => {\n if (args[0] === 'processorerror') {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n\n if (patchedEventListener !== undefined) {\n patchedEventListeners.delete(args[1]);\n\n args[1] = patchedEventListener;\n }\n }\n\n // Bug #178: Chrome, Edge and Opera do fire an event of type error.\n removeEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]);\n\n return removeEventListener.call(nativeAudioWorkletNode, args[0], args[1], args[2]);\n };\n })(nativeAudioWorkletNode.removeEventListener);\n\n /*\n * Bug #86: Chrome and Edge do not invoke the process() function if the corresponding AudioWorkletNode is unconnected but\n * has an output.\n */\n if (options.numberOfOutputs !== 0) {\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n\n nativeAudioWorkletNode.connect(nativeGainNode).connect(nativeContext.destination);\n\n const whenConnected = () => nativeGainNode.disconnect();\n const whenDisconnected = () => nativeGainNode.connect(nativeContext.destination);\n\n // @todo Disconnect the connection when the process() function of the AudioWorkletNode returns false.\n return monitorConnections(nativeAudioWorkletNode, whenConnected, whenDisconnected);\n }\n\n return nativeAudioWorkletNode;\n } catch (err) {\n // Bug #60: Chrome, Edge & Opera throw an InvalidStateError instead of a NotSupportedError.\n if (err.code === 11) {\n throw createNotSupportedError();\n }\n\n throw err;\n }\n }\n\n // Bug #61: Only Chrome & Opera have an implementation of the AudioWorkletNode yet.\n if (processorConstructor === undefined) {\n throw createNotSupportedError();\n }\n\n testClonabilityOfAudioWorkletNodeOptions(options);\n\n return createNativeAudioWorkletNodeFaker(nativeContext, baseLatency, processorConstructor, options);\n };\n};\n","export const testClonabilityOfAudioWorkletNodeOptions = (audioWorkletNodeOptions) => {\n const { port1 } = new MessageChannel();\n try {\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port1.postMessage(audioWorkletNodeOptions);\n }\n finally {\n port1.close();\n }\n};\n//# sourceMappingURL=test-clonability-of-audio-worklet-node-options.js.map","import { IAudioWorkletNodeOptions } from '../interfaces';\n\nexport const testClonabilityOfAudioWorkletNodeOptions = (audioWorkletNodeOptions: IAudioWorkletNodeOptions): void => {\n const { port1 } = new MessageChannel();\n\n try {\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port1.postMessage(audioWorkletNodeOptions);\n } finally {\n port1.close();\n }\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { computeBufferSize } from '../helpers/compute-buffer-size';\nimport { copyFromChannel } from '../helpers/copy-from-channel';\nimport { copyToChannel } from '../helpers/copy-to-channel';\nimport { createAudioWorkletProcessor } from '../helpers/create-audio-worklet-processor';\nimport { createNestedArrays } from '../helpers/create-nested-arrays';\nimport { ReadOnlyMap } from '../read-only-map';\nexport const createNativeAudioWorkletNodeFakerFactory = (connectMultipleOutputs, createIndexSizeError, createInvalidStateError, createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeConstantSourceNode, createNativeGainNode, createNativeScriptProcessorNode, createNotSupportedError, disconnectMultipleOutputs, exposeCurrentFrameAndCurrentTime, getActiveAudioWorkletNodeInputs, monitorConnections) => {\n return (nativeContext, baseLatency, processorConstructor, options) => {\n if (options.numberOfInputs === 0 && options.numberOfOutputs === 0) {\n throw createNotSupportedError();\n }\n const outputChannelCount = Array.isArray(options.outputChannelCount)\n ? options.outputChannelCount\n : Array.from(options.outputChannelCount);\n // @todo Check if any of the channelCount values is greater than the implementation's maximum number of channels.\n if (outputChannelCount.some((channelCount) => channelCount < 1)) {\n throw createNotSupportedError();\n }\n if (outputChannelCount.length !== options.numberOfOutputs) {\n throw createIndexSizeError();\n }\n // Bug #61: This is not part of the standard but required for the faker to work.\n if (options.channelCountMode !== 'explicit') {\n throw createNotSupportedError();\n }\n const numberOfInputChannels = options.channelCount * options.numberOfInputs;\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const numberOfParameters = processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length;\n // Bug #61: This is not part of the standard but required for the faker to work.\n if (numberOfInputChannels + numberOfParameters > 6 || numberOfOutputChannels > 6) {\n throw createNotSupportedError();\n }\n const messageChannel = new MessageChannel();\n const gainNodes = [];\n const inputChannelSplitterNodes = [];\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes.push(createNativeGainNode(nativeContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n }));\n inputChannelSplitterNodes.push(createNativeChannelSplitterNode(nativeContext, {\n channelCount: options.channelCount,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: options.channelCount\n }));\n }\n const constantSourceNodes = [];\n if (processorConstructor.parameterDescriptors !== undefined) {\n for (const { defaultValue, maxValue, minValue, name } of processorConstructor.parameterDescriptors) {\n const constantSourceNode = createNativeConstantSourceNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: options.parameterData[name] !== undefined\n ? options.parameterData[name]\n : defaultValue === undefined\n ? 0\n : defaultValue\n });\n Object.defineProperties(constantSourceNode.offset, {\n defaultValue: {\n get: () => (defaultValue === undefined ? 0 : defaultValue)\n },\n maxValue: {\n get: () => (maxValue === undefined ? MOST_POSITIVE_SINGLE_FLOAT : maxValue)\n },\n minValue: {\n get: () => (minValue === undefined ? MOST_NEGATIVE_SINGLE_FLOAT : minValue)\n }\n });\n constantSourceNodes.push(constantSourceNode);\n }\n }\n const inputChannelMergerNode = createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters)\n });\n const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate);\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, bufferSize, numberOfInputChannels + numberOfParameters, \n // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output.\n Math.max(1, numberOfOutputChannels));\n const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, {\n channelCount: Math.max(1, numberOfOutputChannels),\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: Math.max(1, numberOfOutputChannels)\n });\n const outputChannelMergerNodes = [];\n for (let i = 0; i < options.numberOfOutputs; i += 1) {\n outputChannelMergerNodes.push(createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: outputChannelCount[i]\n }));\n }\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes[i].connect(inputChannelSplitterNodes[i]);\n for (let j = 0; j < options.channelCount; j += 1) {\n inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j);\n }\n }\n const parameterMap = new ReadOnlyMap(processorConstructor.parameterDescriptors === undefined\n ? []\n : processorConstructor.parameterDescriptors.map(({ name }, index) => {\n const constantSourceNode = constantSourceNodes[index];\n constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index);\n constantSourceNode.start(0);\n return [name, constantSourceNode.offset];\n }));\n inputChannelMergerNode.connect(scriptProcessorNode);\n let channelInterpretation = options.channelInterpretation;\n let onprocessorerror = null;\n // Bug #87: Expose at least one output to make this node connectable.\n const outputAudioNodes = options.numberOfOutputs === 0 ? [scriptProcessorNode] : outputChannelMergerNodes;\n const nativeAudioWorkletNodeFaker = {\n get bufferSize() {\n return bufferSize;\n },\n get channelCount() {\n return options.channelCount;\n },\n set channelCount(_) {\n // Bug #61: This is not part of the standard but required for the faker to work.\n throw createInvalidStateError();\n },\n get channelCountMode() {\n return options.channelCountMode;\n },\n set channelCountMode(_) {\n // Bug #61: This is not part of the standard but required for the faker to work.\n throw createInvalidStateError();\n },\n get channelInterpretation() {\n return channelInterpretation;\n },\n set channelInterpretation(value) {\n for (const gainNode of gainNodes) {\n gainNode.channelInterpretation = value;\n }\n channelInterpretation = value;\n },\n get context() {\n return scriptProcessorNode.context;\n },\n get inputs() {\n return gainNodes;\n },\n get numberOfInputs() {\n return options.numberOfInputs;\n },\n get numberOfOutputs() {\n return options.numberOfOutputs;\n },\n get onprocessorerror() {\n return onprocessorerror;\n },\n set onprocessorerror(value) {\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNodeFaker.removeEventListener('processorerror', onprocessorerror);\n }\n onprocessorerror = typeof value === 'function' ? value : null;\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNodeFaker.addEventListener('processorerror', onprocessorerror);\n }\n },\n get parameters() {\n return parameterMap;\n },\n get port() {\n return messageChannel.port2;\n },\n addEventListener(...args) {\n return scriptProcessorNode.addEventListener(args[0], args[1], args[2]);\n },\n connect: connectMultipleOutputs.bind(null, outputAudioNodes),\n disconnect: disconnectMultipleOutputs.bind(null, outputAudioNodes),\n dispatchEvent(...args) {\n return scriptProcessorNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n const patchedEventListeners = new Map();\n messageChannel.port1.addEventListener = ((addEventListener) => {\n return (...args) => {\n if (args[0] === 'message') {\n const unpatchedEventListener = typeof args[1] === 'function'\n ? args[1]\n : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function'\n ? args[1].handleEvent\n : null;\n if (unpatchedEventListener !== null) {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n args[1] = patchedEventListener;\n }\n else {\n args[1] = (event) => {\n exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () => unpatchedEventListener(event));\n };\n patchedEventListeners.set(unpatchedEventListener, args[1]);\n }\n }\n }\n return addEventListener.call(messageChannel.port1, args[0], args[1], args[2]);\n };\n })(messageChannel.port1.addEventListener);\n messageChannel.port1.removeEventListener = ((removeEventListener) => {\n return (...args) => {\n if (args[0] === 'message') {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n if (patchedEventListener !== undefined) {\n patchedEventListeners.delete(args[1]);\n args[1] = patchedEventListener;\n }\n }\n return removeEventListener.call(messageChannel.port1, args[0], args[1], args[2]);\n };\n })(messageChannel.port1.removeEventListener);\n let onmessage = null;\n Object.defineProperty(messageChannel.port1, 'onmessage', {\n get: () => onmessage,\n set: (value) => {\n if (typeof onmessage === 'function') {\n messageChannel.port1.removeEventListener('message', onmessage);\n }\n onmessage = typeof value === 'function' ? value : null;\n if (typeof onmessage === 'function') {\n messageChannel.port1.addEventListener('message', onmessage);\n messageChannel.port1.start();\n }\n }\n });\n processorConstructor.prototype.port = messageChannel.port1;\n let audioWorkletProcessor = null;\n const audioWorkletProcessorPromise = createAudioWorkletProcessor(nativeContext, nativeAudioWorkletNodeFaker, processorConstructor, options);\n audioWorkletProcessorPromise.then((dWrkltPrcssr) => (audioWorkletProcessor = dWrkltPrcssr));\n const inputs = createNestedArrays(options.numberOfInputs, options.channelCount);\n const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount);\n const parameters = processorConstructor.parameterDescriptors === undefined\n ? []\n : processorConstructor.parameterDescriptors.reduce((prmtrs, { name }) => ({ ...prmtrs, [name]: new Float32Array(128) }), {});\n let isActive = true;\n const disconnectOutputsGraph = () => {\n if (options.numberOfOutputs > 0) {\n scriptProcessorNode.disconnect(outputChannelSplitterNode);\n }\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.disconnect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n };\n const activeInputIndexes = new Map();\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer, outputBuffer }) => {\n if (audioWorkletProcessor !== null) {\n const activeInputs = getActiveAudioWorkletNodeInputs(nativeAudioWorkletNodeFaker);\n for (let i = 0; i < bufferSize; i += 128) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < options.channelCount; k += 1) {\n copyFromChannel(inputBuffer, inputs[j], k, k, i);\n }\n }\n if (processorConstructor.parameterDescriptors !== undefined) {\n processorConstructor.parameterDescriptors.forEach(({ name }, index) => {\n copyFromChannel(inputBuffer, parameters, name, numberOfInputChannels + index, i);\n });\n }\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (outputs[j][k].byteLength === 0) {\n outputs[j][k] = new Float32Array(128);\n }\n }\n }\n try {\n const potentiallyEmptyInputs = inputs.map((input, index) => {\n const activeInput = activeInputs[index];\n if (activeInput.size > 0) {\n activeInputIndexes.set(index, bufferSize / 128);\n return input;\n }\n const count = activeInputIndexes.get(index);\n if (count === undefined) {\n return [];\n }\n if (input.every((channelData) => channelData.every((sample) => sample === 0))) {\n if (count === 1) {\n activeInputIndexes.delete(index);\n }\n else {\n activeInputIndexes.set(index, count - 1);\n }\n }\n return input;\n });\n const activeSourceFlag = exposeCurrentFrameAndCurrentTime(nativeContext.currentTime + i / nativeContext.sampleRate, nativeContext.sampleRate, () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters));\n isActive = activeSourceFlag;\n for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n copyToChannel(outputBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[j];\n }\n }\n catch (error) {\n isActive = false;\n nativeAudioWorkletNodeFaker.dispatchEvent(new ErrorEvent('processorerror', {\n colno: error.colno,\n filename: error.filename,\n lineno: error.lineno,\n message: error.message\n }));\n }\n if (!isActive) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n gainNodes[j].disconnect(inputChannelSplitterNodes[j]);\n for (let k = 0; k < options.channelCount; k += 1) {\n inputChannelSplitterNodes[i].disconnect(inputChannelMergerNode, k, j * options.channelCount + k);\n }\n }\n if (processorConstructor.parameterDescriptors !== undefined) {\n const length = processorConstructor.parameterDescriptors.length;\n for (let j = 0; j < length; j += 1) {\n const constantSourceNode = constantSourceNodes[j];\n constantSourceNode.disconnect(inputChannelMergerNode, 0, numberOfInputChannels + j);\n constantSourceNode.stop();\n }\n }\n inputChannelMergerNode.disconnect(scriptProcessorNode);\n scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation\n if (isConnected) {\n disconnectOutputsGraph();\n }\n else {\n disconnectFakeGraph();\n }\n break;\n }\n }\n }\n };\n let isConnected = false;\n // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output.\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n const connectFakeGraph = () => scriptProcessorNode.connect(nativeGainNode).connect(nativeContext.destination);\n const disconnectFakeGraph = () => {\n scriptProcessorNode.disconnect(nativeGainNode);\n nativeGainNode.disconnect();\n };\n const whenConnected = () => {\n if (isActive) {\n disconnectFakeGraph();\n if (options.numberOfOutputs > 0) {\n scriptProcessorNode.connect(outputChannelSplitterNode);\n }\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n }\n isConnected = true;\n };\n const whenDisconnected = () => {\n if (isActive) {\n connectFakeGraph();\n disconnectOutputsGraph();\n }\n isConnected = false;\n };\n connectFakeGraph();\n return monitorConnections(nativeAudioWorkletNodeFaker, whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-audio-worklet-node-faker-factory.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { computeBufferSize } from '../helpers/compute-buffer-size';\nimport { copyFromChannel } from '../helpers/copy-from-channel';\nimport { copyToChannel } from '../helpers/copy-to-channel';\nimport { createAudioWorkletProcessor } from '../helpers/create-audio-worklet-processor';\nimport { createNestedArrays } from '../helpers/create-nested-arrays';\nimport { IAudioWorkletProcessor } from '../interfaces';\nimport { ReadOnlyMap } from '../read-only-map';\nimport {\n TNativeAudioNode,\n TNativeAudioParam,\n TNativeAudioWorkletNode,\n TNativeAudioWorkletNodeFakerFactoryFactory,\n TNativeChannelMergerNode,\n TNativeChannelSplitterNode,\n TNativeConstantSourceNode,\n TNativeGainNode\n} from '../types';\n\nexport const createNativeAudioWorkletNodeFakerFactory: TNativeAudioWorkletNodeFakerFactoryFactory = (\n connectMultipleOutputs,\n createIndexSizeError,\n createInvalidStateError,\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n createNotSupportedError,\n disconnectMultipleOutputs,\n exposeCurrentFrameAndCurrentTime,\n getActiveAudioWorkletNodeInputs,\n monitorConnections\n) => {\n return (nativeContext, baseLatency, processorConstructor, options) => {\n if (options.numberOfInputs === 0 && options.numberOfOutputs === 0) {\n throw createNotSupportedError();\n }\n\n const outputChannelCount = Array.isArray(options.outputChannelCount)\n ? options.outputChannelCount\n : Array.from(options.outputChannelCount);\n\n // @todo Check if any of the channelCount values is greater than the implementation's maximum number of channels.\n if (outputChannelCount.some((channelCount) => channelCount < 1)) {\n throw createNotSupportedError();\n }\n\n if (outputChannelCount.length !== options.numberOfOutputs) {\n throw createIndexSizeError();\n }\n\n // Bug #61: This is not part of the standard but required for the faker to work.\n if (options.channelCountMode !== 'explicit') {\n throw createNotSupportedError();\n }\n\n const numberOfInputChannels = options.channelCount * options.numberOfInputs;\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const numberOfParameters =\n processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length;\n\n // Bug #61: This is not part of the standard but required for the faker to work.\n if (numberOfInputChannels + numberOfParameters > 6 || numberOfOutputChannels > 6) {\n throw createNotSupportedError();\n }\n\n const messageChannel = new MessageChannel();\n const gainNodes: TNativeGainNode[] = [];\n const inputChannelSplitterNodes: TNativeChannelSplitterNode[] = [];\n\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes.push(\n createNativeGainNode(nativeContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n })\n );\n inputChannelSplitterNodes.push(\n createNativeChannelSplitterNode(nativeContext, {\n channelCount: options.channelCount,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: options.channelCount\n })\n );\n }\n\n const constantSourceNodes: TNativeConstantSourceNode[] = [];\n\n if (processorConstructor.parameterDescriptors !== undefined) {\n for (const { defaultValue, maxValue, minValue, name } of processorConstructor.parameterDescriptors) {\n const constantSourceNode = createNativeConstantSourceNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset:\n options.parameterData[name] !== undefined\n ? options.parameterData[name]\n : defaultValue === undefined\n ? 0\n : defaultValue\n });\n\n Object.defineProperties(constantSourceNode.offset, {\n defaultValue: {\n get: () => (defaultValue === undefined ? 0 : defaultValue)\n },\n maxValue: {\n get: () => (maxValue === undefined ? MOST_POSITIVE_SINGLE_FLOAT : maxValue)\n },\n minValue: {\n get: () => (minValue === undefined ? MOST_NEGATIVE_SINGLE_FLOAT : minValue)\n }\n });\n\n constantSourceNodes.push(constantSourceNode);\n }\n }\n\n const inputChannelMergerNode = createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters)\n });\n const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate);\n const scriptProcessorNode = createNativeScriptProcessorNode(\n nativeContext,\n bufferSize,\n numberOfInputChannels + numberOfParameters,\n // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output.\n Math.max(1, numberOfOutputChannels)\n );\n const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, {\n channelCount: Math.max(1, numberOfOutputChannels),\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: Math.max(1, numberOfOutputChannels)\n });\n const outputChannelMergerNodes: TNativeChannelMergerNode[] = [];\n\n for (let i = 0; i < options.numberOfOutputs; i += 1) {\n outputChannelMergerNodes.push(\n createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: outputChannelCount[i]\n })\n );\n }\n\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes[i].connect(inputChannelSplitterNodes[i]);\n\n for (let j = 0; j < options.channelCount; j += 1) {\n inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j);\n }\n }\n\n const parameterMap = new ReadOnlyMap(\n processorConstructor.parameterDescriptors === undefined\n ? []\n : processorConstructor.parameterDescriptors.map(({ name }, index) => {\n const constantSourceNode = constantSourceNodes[index];\n\n constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index);\n constantSourceNode.start(0);\n\n return <[string, TNativeAudioParam]>[name, constantSourceNode.offset];\n })\n );\n\n inputChannelMergerNode.connect(scriptProcessorNode);\n\n let channelInterpretation = options.channelInterpretation;\n let onprocessorerror: TNativeAudioWorkletNode['onprocessorerror'] = null;\n\n // Bug #87: Expose at least one output to make this node connectable.\n const outputAudioNodes = options.numberOfOutputs === 0 ? [scriptProcessorNode] : outputChannelMergerNodes;\n const nativeAudioWorkletNodeFaker = {\n get bufferSize(): number {\n return bufferSize;\n },\n get channelCount(): number {\n return options.channelCount;\n },\n set channelCount(_) {\n // Bug #61: This is not part of the standard but required for the faker to work.\n throw createInvalidStateError();\n },\n get channelCountMode(): TNativeAudioWorkletNode['channelCountMode'] {\n return options.channelCountMode;\n },\n set channelCountMode(_) {\n // Bug #61: This is not part of the standard but required for the faker to work.\n throw createInvalidStateError();\n },\n get channelInterpretation(): TNativeAudioWorkletNode['channelInterpretation'] {\n return channelInterpretation;\n },\n set channelInterpretation(value) {\n for (const gainNode of gainNodes) {\n gainNode.channelInterpretation = value;\n }\n\n channelInterpretation = value;\n },\n get context(): TNativeAudioWorkletNode['context'] {\n return scriptProcessorNode.context;\n },\n get inputs(): TNativeAudioNode[] {\n return gainNodes;\n },\n get numberOfInputs(): number {\n return options.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return options.numberOfOutputs;\n },\n get onprocessorerror(): TNativeAudioWorkletNode['onprocessorerror'] {\n return onprocessorerror;\n },\n set onprocessorerror(value) {\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNodeFaker.removeEventListener('processorerror', onprocessorerror);\n }\n\n onprocessorerror = typeof value === 'function' ? value : null;\n\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNodeFaker.addEventListener('processorerror', onprocessorerror);\n }\n },\n get parameters(): TNativeAudioWorkletNode['parameters'] {\n return parameterMap;\n },\n get port(): TNativeAudioWorkletNode['port'] {\n return messageChannel.port2;\n },\n addEventListener(...args: any[]): void {\n return scriptProcessorNode.addEventListener(args[0], args[1], args[2]);\n },\n connect: connectMultipleOutputs.bind(null, outputAudioNodes),\n disconnect: disconnectMultipleOutputs.bind(null, outputAudioNodes),\n dispatchEvent(...args: any[]): boolean {\n return scriptProcessorNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args: any[]): void {\n return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n\n const patchedEventListeners: Map> = new Map();\n\n messageChannel.port1.addEventListener = ((addEventListener) => {\n return (...args: [string, EventListenerOrEventListenerObject, (boolean | AddEventListenerOptions)?]): void => {\n if (args[0] === 'message') {\n const unpatchedEventListener =\n typeof args[1] === 'function'\n ? args[1]\n : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function'\n ? args[1].handleEvent\n : null;\n\n if (unpatchedEventListener !== null) {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n\n if (patchedEventListener !== undefined) {\n args[1] = patchedEventListener;\n } else {\n args[1] = (event: Event) => {\n exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () =>\n unpatchedEventListener(event)\n );\n };\n\n patchedEventListeners.set(unpatchedEventListener, args[1]);\n }\n }\n }\n\n return addEventListener.call(messageChannel.port1, args[0], args[1], args[2]);\n };\n })(messageChannel.port1.addEventListener);\n\n messageChannel.port1.removeEventListener = ((removeEventListener) => {\n return (...args: any[]): void => {\n if (args[0] === 'message') {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n\n if (patchedEventListener !== undefined) {\n patchedEventListeners.delete(args[1]);\n\n args[1] = patchedEventListener;\n }\n }\n\n return removeEventListener.call(messageChannel.port1, args[0], args[1], args[2]);\n };\n })(messageChannel.port1.removeEventListener);\n\n let onmessage: MessagePort['onmessage'] = null;\n\n Object.defineProperty(messageChannel.port1, 'onmessage', {\n get: () => onmessage,\n set: (value) => {\n if (typeof onmessage === 'function') {\n messageChannel.port1.removeEventListener('message', onmessage);\n }\n\n onmessage = typeof value === 'function' ? value : null;\n\n if (typeof onmessage === 'function') {\n messageChannel.port1.addEventListener('message', onmessage);\n messageChannel.port1.start();\n }\n }\n });\n\n processorConstructor.prototype.port = messageChannel.port1;\n\n let audioWorkletProcessor: null | IAudioWorkletProcessor = null;\n\n const audioWorkletProcessorPromise = createAudioWorkletProcessor(\n nativeContext,\n nativeAudioWorkletNodeFaker,\n processorConstructor,\n options\n );\n\n audioWorkletProcessorPromise.then((dWrkltPrcssr) => (audioWorkletProcessor = dWrkltPrcssr));\n\n const inputs = createNestedArrays(options.numberOfInputs, options.channelCount);\n const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount);\n const parameters: { [name: string]: Float32Array } =\n processorConstructor.parameterDescriptors === undefined\n ? []\n : processorConstructor.parameterDescriptors.reduce(\n (prmtrs, { name }) => ({ ...prmtrs, [name]: new Float32Array(128) }),\n {}\n );\n\n let isActive = true;\n\n const disconnectOutputsGraph = () => {\n if (options.numberOfOutputs > 0) {\n scriptProcessorNode.disconnect(outputChannelSplitterNode);\n }\n\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.disconnect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n };\n\n const activeInputIndexes = new Map();\n\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer, outputBuffer }: AudioProcessingEvent) => {\n if (audioWorkletProcessor !== null) {\n const activeInputs = getActiveAudioWorkletNodeInputs(nativeAudioWorkletNodeFaker);\n\n for (let i = 0; i < bufferSize; i += 128) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < options.channelCount; k += 1) {\n copyFromChannel(inputBuffer, inputs[j], k, k, i);\n }\n }\n\n if (processorConstructor.parameterDescriptors !== undefined) {\n processorConstructor.parameterDescriptors.forEach(({ name }, index) => {\n copyFromChannel(inputBuffer, parameters, name, numberOfInputChannels + index, i);\n });\n }\n\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (outputs[j][k].byteLength === 0) {\n outputs[j][k] = new Float32Array(128);\n }\n }\n }\n\n try {\n const potentiallyEmptyInputs = inputs.map((input, index) => {\n const activeInput = activeInputs[index];\n\n if (activeInput.size > 0) {\n activeInputIndexes.set(index, bufferSize / 128);\n\n return input;\n }\n\n const count = activeInputIndexes.get(index);\n\n if (count === undefined) {\n return [];\n }\n\n if (input.every((channelData) => channelData.every((sample) => sample === 0))) {\n if (count === 1) {\n activeInputIndexes.delete(index);\n } else {\n activeInputIndexes.set(index, count - 1);\n }\n }\n\n return input;\n });\n\n const activeSourceFlag = exposeCurrentFrameAndCurrentTime(\n nativeContext.currentTime + i / nativeContext.sampleRate,\n nativeContext.sampleRate,\n () => (audioWorkletProcessor).process(potentiallyEmptyInputs, outputs, parameters)\n );\n\n isActive = activeSourceFlag;\n\n for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n copyToChannel(outputBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i);\n }\n\n outputChannelSplitterNodeOutput += outputChannelCount[j];\n }\n } catch (error) {\n isActive = false;\n\n nativeAudioWorkletNodeFaker.dispatchEvent(\n new ErrorEvent('processorerror', {\n colno: error.colno,\n filename: error.filename,\n lineno: error.lineno,\n message: error.message\n })\n );\n }\n\n if (!isActive) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n gainNodes[j].disconnect(inputChannelSplitterNodes[j]);\n\n for (let k = 0; k < options.channelCount; k += 1) {\n inputChannelSplitterNodes[i].disconnect(inputChannelMergerNode, k, j * options.channelCount + k);\n }\n }\n\n if (processorConstructor.parameterDescriptors !== undefined) {\n const length = processorConstructor.parameterDescriptors.length;\n\n for (let j = 0; j < length; j += 1) {\n const constantSourceNode = constantSourceNodes[j];\n\n constantSourceNode.disconnect(inputChannelMergerNode, 0, numberOfInputChannels + j);\n constantSourceNode.stop();\n }\n }\n\n inputChannelMergerNode.disconnect(scriptProcessorNode);\n\n scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation\n\n if (isConnected) {\n disconnectOutputsGraph();\n } else {\n disconnectFakeGraph();\n }\n\n break;\n }\n }\n }\n };\n\n let isConnected = false;\n\n // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output.\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n\n const connectFakeGraph = () => scriptProcessorNode.connect(nativeGainNode).connect(nativeContext.destination);\n const disconnectFakeGraph = () => {\n scriptProcessorNode.disconnect(nativeGainNode);\n nativeGainNode.disconnect();\n };\n const whenConnected = () => {\n if (isActive) {\n disconnectFakeGraph();\n\n if (options.numberOfOutputs > 0) {\n scriptProcessorNode.connect(outputChannelSplitterNode);\n }\n\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n }\n\n isConnected = true;\n };\n const whenDisconnected = () => {\n if (isActive) {\n connectFakeGraph();\n disconnectOutputsGraph();\n }\n\n isConnected = false;\n };\n\n connectFakeGraph();\n\n return monitorConnections(nativeAudioWorkletNodeFaker, whenConnected, whenDisconnected);\n };\n};\n","export const computeBufferSize = (baseLatency, sampleRate) => {\n if (baseLatency === null) {\n return 512;\n }\n return Math.max(512, Math.min(16384, Math.pow(2, Math.round(Math.log2(baseLatency * sampleRate)))));\n};\n//# sourceMappingURL=compute-buffer-size.js.map","export const computeBufferSize = (baseLatency: null | number, sampleRate: number) => {\n if (baseLatency === null) {\n return 512;\n }\n\n return Math.max(512, Math.min(16384, Math.pow(2, Math.round(Math.log2(baseLatency * sampleRate)))));\n};\n","import { NODE_TO_PROCESSOR_MAPS } from '../globals';\nimport { createAudioWorkletProcessorPromise } from './create-audio-worklet-processor-promise';\nexport const createAudioWorkletProcessor = (nativeContext, nativeAudioWorkletNode, processorConstructor, audioWorkletNodeOptions) => {\n let nodeToProcessorMap = NODE_TO_PROCESSOR_MAPS.get(nativeContext);\n if (nodeToProcessorMap === undefined) {\n nodeToProcessorMap = new WeakMap();\n NODE_TO_PROCESSOR_MAPS.set(nativeContext, nodeToProcessorMap);\n }\n const audioWorkletProcessorPromise = createAudioWorkletProcessorPromise(processorConstructor, audioWorkletNodeOptions);\n nodeToProcessorMap.set(nativeAudioWorkletNode, audioWorkletProcessorPromise);\n return audioWorkletProcessorPromise;\n};\n//# sourceMappingURL=create-audio-worklet-processor.js.map","import { NODE_TO_PROCESSOR_MAPS } from '../globals';\nimport { IAudioWorkletNodeOptions, IAudioWorkletProcessor, IAudioWorkletProcessorConstructor } from '../interfaces';\nimport { TNativeAudioWorkletNode, TNativeContext } from '../types';\nimport { createAudioWorkletProcessorPromise } from './create-audio-worklet-processor-promise';\n\nexport const createAudioWorkletProcessor = (\n nativeContext: TNativeContext,\n nativeAudioWorkletNode: TNativeAudioWorkletNode,\n processorConstructor: IAudioWorkletProcessorConstructor,\n audioWorkletNodeOptions: IAudioWorkletNodeOptions\n): Promise => {\n let nodeToProcessorMap = NODE_TO_PROCESSOR_MAPS.get(nativeContext);\n\n if (nodeToProcessorMap === undefined) {\n nodeToProcessorMap = new WeakMap();\n\n NODE_TO_PROCESSOR_MAPS.set(nativeContext, nodeToProcessorMap);\n }\n\n const audioWorkletProcessorPromise = createAudioWorkletProcessorPromise(processorConstructor, audioWorkletNodeOptions);\n\n nodeToProcessorMap.set(nativeAudioWorkletNode, audioWorkletProcessorPromise);\n\n return audioWorkletProcessorPromise;\n};\n","import { cloneAudioWorkletNodeOptions } from './clone-audio-worklet-node-options';\nexport const createAudioWorkletProcessorPromise = async (processorConstructor, audioWorkletNodeOptions) => {\n const clonedAudioWorkletNodeOptions = await cloneAudioWorkletNodeOptions(audioWorkletNodeOptions);\n return new processorConstructor(clonedAudioWorkletNodeOptions);\n};\n//# sourceMappingURL=create-audio-worklet-processor-promise.js.map","import { IAudioWorkletNodeOptions, IAudioWorkletProcessor, IAudioWorkletProcessorConstructor } from '../interfaces';\nimport { cloneAudioWorkletNodeOptions } from './clone-audio-worklet-node-options';\n\nexport const createAudioWorkletProcessorPromise = async (\n processorConstructor: IAudioWorkletProcessorConstructor,\n audioWorkletNodeOptions: IAudioWorkletNodeOptions\n): Promise => {\n const clonedAudioWorkletNodeOptions = await cloneAudioWorkletNodeOptions(audioWorkletNodeOptions);\n\n return new processorConstructor(clonedAudioWorkletNodeOptions);\n};\n","export const cloneAudioWorkletNodeOptions = (audioWorkletNodeOptions) => {\n return new Promise((resolve, reject) => {\n const { port1, port2 } = new MessageChannel();\n port1.onmessage = ({ data }) => {\n port1.close();\n port2.close();\n resolve(data);\n };\n port1.onmessageerror = ({ data }) => {\n port1.close();\n port2.close();\n reject(data);\n };\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port2.postMessage(audioWorkletNodeOptions);\n });\n};\n//# sourceMappingURL=clone-audio-worklet-node-options.js.map","import { IAudioWorkletNodeOptions } from '../interfaces';\n\nexport const cloneAudioWorkletNodeOptions = (audioWorkletNodeOptions: IAudioWorkletNodeOptions): Promise => {\n return new Promise((resolve, reject) => {\n const { port1, port2 } = new MessageChannel();\n\n port1.onmessage = ({ data }) => {\n port1.close();\n port2.close();\n\n resolve(data);\n };\n port1.onmessageerror = ({ data }) => {\n port1.close();\n port2.close();\n\n reject(data);\n };\n\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port2.postMessage(audioWorkletNodeOptions);\n });\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeBiquadFilterNode = (nativeContext, options) => {\n const nativeBiquadFilterNode = nativeContext.createBiquadFilter();\n assignNativeAudioNodeOptions(nativeBiquadFilterNode, options);\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'Q');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'detune');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'frequency');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'gain');\n assignNativeAudioNodeOption(nativeBiquadFilterNode, options, 'type');\n return nativeBiquadFilterNode;\n};\n//# sourceMappingURL=native-biquad-filter-node.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeBiquadFilterNodeFactory } from '../types';\n\nexport const createNativeBiquadFilterNode: TNativeBiquadFilterNodeFactory = (nativeContext, options) => {\n const nativeBiquadFilterNode = nativeContext.createBiquadFilter();\n\n assignNativeAudioNodeOptions(nativeBiquadFilterNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'Q');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'detune');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'frequency');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'gain');\n\n assignNativeAudioNodeOption(nativeBiquadFilterNode, options, 'type');\n\n return nativeBiquadFilterNode;\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeChannelMergerNodeFactory = (nativeAudioContextConstructor, wrapChannelMergerNode) => {\n return (nativeContext, options) => {\n const nativeChannelMergerNode = nativeContext.createChannelMerger(options.numberOfInputs);\n /*\n * Bug #20: Safari requires a connection of any kind to treat the input signal correctly.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of\n * the webkitAudioContext is used as a workaround here.\n */\n if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') {\n wrapChannelMergerNode(nativeContext, nativeChannelMergerNode);\n }\n assignNativeAudioNodeOptions(nativeChannelMergerNode, options);\n return nativeChannelMergerNode;\n };\n};\n//# sourceMappingURL=native-channel-merger-node-factory.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeChannelMergerNodeFactoryFactory } from '../types';\n\nexport const createNativeChannelMergerNodeFactory: TNativeChannelMergerNodeFactoryFactory = (\n nativeAudioContextConstructor,\n wrapChannelMergerNode\n) => {\n return (nativeContext, options) => {\n const nativeChannelMergerNode = nativeContext.createChannelMerger(options.numberOfInputs);\n\n /*\n * Bug #20: Safari requires a connection of any kind to treat the input signal correctly.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of\n * the webkitAudioContext is used as a workaround here.\n */\n if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') {\n wrapChannelMergerNode(nativeContext, nativeChannelMergerNode);\n }\n\n assignNativeAudioNodeOptions(nativeChannelMergerNode, options);\n\n return nativeChannelMergerNode;\n };\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapChannelSplitterNode } from '../helpers/wrap-channel-splitter-node';\nexport const createNativeChannelSplitterNode = (nativeContext, options) => {\n const nativeChannelSplitterNode = nativeContext.createChannelSplitter(options.numberOfOutputs);\n // Bug #96: Safari does not have the correct channelCount.\n // Bug #29: Safari does not have the correct channelCountMode.\n // Bug #31: Safari does not have the correct channelInterpretation.\n assignNativeAudioNodeOptions(nativeChannelSplitterNode, options);\n // Bug #29, #30, #31, #32, #96 & #97: Only Chrome, Edge, Firefox & Opera partially support the spec yet.\n wrapChannelSplitterNode(nativeChannelSplitterNode);\n return nativeChannelSplitterNode;\n};\n//# sourceMappingURL=native-channel-splitter-node.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapChannelSplitterNode } from '../helpers/wrap-channel-splitter-node';\nimport { TNativeChannelSplitterNodeFactory } from '../types';\n\nexport const createNativeChannelSplitterNode: TNativeChannelSplitterNodeFactory = (nativeContext, options) => {\n const nativeChannelSplitterNode = nativeContext.createChannelSplitter(options.numberOfOutputs);\n\n // Bug #96: Safari does not have the correct channelCount.\n // Bug #29: Safari does not have the correct channelCountMode.\n // Bug #31: Safari does not have the correct channelInterpretation.\n assignNativeAudioNodeOptions(nativeChannelSplitterNode, options);\n\n // Bug #29, #30, #31, #32, #96 & #97: Only Chrome, Edge, Firefox & Opera partially support the spec yet.\n wrapChannelSplitterNode(nativeChannelSplitterNode);\n\n return nativeChannelSplitterNode;\n};\n","import { createInvalidStateError } from '../factories/invalid-state-error';\nexport const wrapChannelSplitterNode = (channelSplitterNode) => {\n const channelCount = channelSplitterNode.numberOfOutputs;\n // Bug #97: Safari does not throw an error when attempting to change the channelCount to something other than its initial value.\n Object.defineProperty(channelSplitterNode, 'channelCount', {\n get: () => channelCount,\n set: (value) => {\n if (value !== channelCount) {\n throw createInvalidStateError();\n }\n }\n });\n // Bug #30: Safari does not throw an error when attempting to change the channelCountMode to something other than explicit.\n Object.defineProperty(channelSplitterNode, 'channelCountMode', {\n get: () => 'explicit',\n set: (value) => {\n if (value !== 'explicit') {\n throw createInvalidStateError();\n }\n }\n });\n // Bug #32: Safari does not throw an error when attempting to change the channelInterpretation to something other than discrete.\n Object.defineProperty(channelSplitterNode, 'channelInterpretation', {\n get: () => 'discrete',\n set: (value) => {\n if (value !== 'discrete') {\n throw createInvalidStateError();\n }\n }\n });\n};\n//# sourceMappingURL=wrap-channel-splitter-node.js.map","import { createInvalidStateError } from '../factories/invalid-state-error';\nimport { TNativeChannelSplitterNode } from '../types';\n\nexport const wrapChannelSplitterNode = (channelSplitterNode: TNativeChannelSplitterNode): void => {\n const channelCount = channelSplitterNode.numberOfOutputs;\n\n // Bug #97: Safari does not throw an error when attempting to change the channelCount to something other than its initial value.\n Object.defineProperty(channelSplitterNode, 'channelCount', {\n get: () => channelCount,\n set: (value) => {\n if (value !== channelCount) {\n throw createInvalidStateError();\n }\n }\n });\n\n // Bug #30: Safari does not throw an error when attempting to change the channelCountMode to something other than explicit.\n Object.defineProperty(channelSplitterNode, 'channelCountMode', {\n get: () => 'explicit',\n set: (value) => {\n if (value !== 'explicit') {\n throw createInvalidStateError();\n }\n }\n });\n\n // Bug #32: Safari does not throw an error when attempting to change the channelInterpretation to something other than discrete.\n Object.defineProperty(channelSplitterNode, 'channelInterpretation', {\n get: () => 'discrete',\n set: (value) => {\n if (value !== 'discrete') {\n throw createInvalidStateError();\n }\n }\n });\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nexport const createNativeConstantSourceNodeFactory = (addSilentConnection, cacheTestResult, createNativeConstantSourceNodeFaker, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport) => {\n return (nativeContext, options) => {\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeContext.createConstantSource === undefined) {\n return createNativeConstantSourceNodeFaker(nativeContext, options);\n }\n const nativeConstantSourceNode = nativeContext.createConstantSource();\n assignNativeAudioNodeOptions(nativeConstantSourceNode, options);\n assignNativeAudioNodeAudioParamValue(nativeConstantSourceNode, options, 'offset');\n // Bug #44: Safari does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeConstantSourceNode);\n }\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeConstantSourceNode);\n }\n // Bug #175: Safari will not fire an ended event if the ConstantSourceNode is unconnected.\n addSilentConnection(nativeContext, nativeConstantSourceNode);\n return nativeConstantSourceNode;\n };\n};\n//# sourceMappingURL=native-constant-source-node-factory.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nimport { TNativeConstantSourceNodeFactoryFactory } from '../types';\n\nexport const createNativeConstantSourceNodeFactory: TNativeConstantSourceNodeFactoryFactory = (\n addSilentConnection,\n cacheTestResult,\n createNativeConstantSourceNodeFaker,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport\n) => {\n return (nativeContext, options) => {\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeContext.createConstantSource === undefined) {\n return createNativeConstantSourceNodeFaker(nativeContext, options);\n }\n\n const nativeConstantSourceNode = nativeContext.createConstantSource();\n\n assignNativeAudioNodeOptions(nativeConstantSourceNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeConstantSourceNode, options, 'offset');\n\n // Bug #44: Safari does not throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeConstantSourceNode);\n }\n\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeConstantSourceNode);\n }\n\n // Bug #175: Safari will not fire an ended event if the ConstantSourceNode is unconnected.\n addSilentConnection(nativeContext, nativeConstantSourceNode);\n\n return nativeConstantSourceNode;\n };\n};\n","import { interceptConnections } from '../helpers/intercept-connections';\nexport const createNativeConstantSourceNodeFakerFactory = (addSilentConnection, createNativeAudioBufferSourceNode, createNativeGainNode, monitorConnections) => {\n return (nativeContext, { offset, ...audioNodeOptions }) => {\n const audioBuffer = nativeContext.createBuffer(1, 2, 44100);\n const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const gainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: offset });\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n const channelData = audioBuffer.getChannelData(0);\n // Bug #95: Safari does not play or loop one sample buffers.\n channelData[0] = 1;\n channelData[1] = 1;\n audioBufferSourceNode.buffer = audioBuffer;\n audioBufferSourceNode.loop = true;\n const nativeConstantSourceNodeFaker = {\n get bufferSize() {\n return undefined;\n },\n get channelCount() {\n return gainNode.channelCount;\n },\n set channelCount(value) {\n gainNode.channelCount = value;\n },\n get channelCountMode() {\n return gainNode.channelCountMode;\n },\n set channelCountMode(value) {\n gainNode.channelCountMode = value;\n },\n get channelInterpretation() {\n return gainNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n gainNode.channelInterpretation = value;\n },\n get context() {\n return gainNode.context;\n },\n get inputs() {\n return [];\n },\n get numberOfInputs() {\n return audioBufferSourceNode.numberOfInputs;\n },\n get numberOfOutputs() {\n return gainNode.numberOfOutputs;\n },\n get offset() {\n return gainNode.gain;\n },\n get onended() {\n return audioBufferSourceNode.onended;\n },\n set onended(value) {\n audioBufferSourceNode.onended = value;\n },\n addEventListener(...args) {\n return audioBufferSourceNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args) {\n return audioBufferSourceNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return audioBufferSourceNode.removeEventListener(args[0], args[1], args[2]);\n },\n start(when = 0) {\n audioBufferSourceNode.start.call(audioBufferSourceNode, when);\n },\n stop(when = 0) {\n audioBufferSourceNode.stop.call(audioBufferSourceNode, when);\n }\n };\n const whenConnected = () => audioBufferSourceNode.connect(gainNode);\n const whenDisconnected = () => audioBufferSourceNode.disconnect(gainNode);\n // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected.\n addSilentConnection(nativeContext, audioBufferSourceNode);\n return monitorConnections(interceptConnections(nativeConstantSourceNodeFaker, gainNode), whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-constant-source-node-faker-factory.js.map","import { interceptConnections } from '../helpers/intercept-connections';\nimport {\n TNativeAudioBufferSourceNode,\n TNativeAudioNode,\n TNativeConstantSourceNode,\n TNativeConstantSourceNodeFakerFactoryFactory\n} from '../types';\n\nexport const createNativeConstantSourceNodeFakerFactory: TNativeConstantSourceNodeFakerFactoryFactory = (\n addSilentConnection,\n createNativeAudioBufferSourceNode,\n createNativeGainNode,\n monitorConnections\n) => {\n return (nativeContext, { offset, ...audioNodeOptions }) => {\n const audioBuffer = nativeContext.createBuffer(1, 2, 44100);\n const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const gainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: offset });\n\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n const channelData = audioBuffer.getChannelData(0);\n\n // Bug #95: Safari does not play or loop one sample buffers.\n channelData[0] = 1;\n channelData[1] = 1;\n\n audioBufferSourceNode.buffer = audioBuffer;\n audioBufferSourceNode.loop = true;\n\n const nativeConstantSourceNodeFaker = {\n get bufferSize(): undefined {\n return undefined;\n },\n get channelCount(): number {\n return gainNode.channelCount;\n },\n set channelCount(value) {\n gainNode.channelCount = value;\n },\n get channelCountMode(): TNativeConstantSourceNode['channelCountMode'] {\n return gainNode.channelCountMode;\n },\n set channelCountMode(value) {\n gainNode.channelCountMode = value;\n },\n get channelInterpretation(): TNativeConstantSourceNode['channelInterpretation'] {\n return gainNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n gainNode.channelInterpretation = value;\n },\n get context(): TNativeConstantSourceNode['context'] {\n return gainNode.context;\n },\n get inputs(): TNativeAudioNode[] {\n return [];\n },\n get numberOfInputs(): number {\n return audioBufferSourceNode.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return gainNode.numberOfOutputs;\n },\n get offset(): TNativeConstantSourceNode['offset'] {\n return gainNode.gain;\n },\n get onended(): TNativeConstantSourceNode['onended'] {\n return audioBufferSourceNode.onended;\n },\n set onended(value) {\n audioBufferSourceNode.onended = value;\n },\n addEventListener(...args: any[]): void {\n return audioBufferSourceNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args: any[]): boolean {\n return audioBufferSourceNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args: any[]): void {\n return audioBufferSourceNode.removeEventListener(args[0], args[1], args[2]);\n },\n start(when = 0): void {\n audioBufferSourceNode.start.call(audioBufferSourceNode, when);\n },\n stop(when = 0): void {\n audioBufferSourceNode.stop.call(audioBufferSourceNode, when);\n }\n };\n\n const whenConnected = () => audioBufferSourceNode.connect(gainNode);\n const whenDisconnected = () => audioBufferSourceNode.disconnect(gainNode);\n\n // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected.\n addSilentConnection(nativeContext, audioBufferSourceNode);\n\n return monitorConnections(interceptConnections(nativeConstantSourceNodeFaker, gainNode), whenConnected, whenDisconnected);\n };\n};\n","export const interceptConnections = (original, interceptor) => {\n original.connect = interceptor.connect.bind(interceptor);\n original.disconnect = interceptor.disconnect.bind(interceptor);\n return original;\n};\n//# sourceMappingURL=intercept-connections.js.map","import { TNativeAudioNode } from '../types';\n\nexport const interceptConnections = (\n original: T,\n interceptor: TNativeAudioNode\n): T & { connect: TNativeAudioNode['connect']; disconnect: TNativeAudioNode['disconnect'] } => {\n (original).connect = interceptor.connect.bind(interceptor);\n\n (original).disconnect = interceptor.disconnect.bind(interceptor);\n\n return original;\n};\n","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeConvolverNodeFactory = (createNotSupportedError, overwriteAccessors) => {\n return (nativeContext, options) => {\n const nativeConvolverNode = nativeContext.createConvolver();\n assignNativeAudioNodeOptions(nativeConvolverNode, options);\n // The normalize property needs to be set before setting the buffer.\n if (options.disableNormalization === nativeConvolverNode.normalize) {\n nativeConvolverNode.normalize = !options.disableNormalization;\n }\n assignNativeAudioNodeOption(nativeConvolverNode, options, 'buffer');\n // Bug #113: Safari does allow to set the channelCount to a value larger than 2.\n if (options.channelCount > 2) {\n throw createNotSupportedError();\n }\n overwriteAccessors(nativeConvolverNode, 'channelCount', (get) => () => get.call(nativeConvolverNode), (set) => (value) => {\n if (value > 2) {\n throw createNotSupportedError();\n }\n return set.call(nativeConvolverNode, value);\n });\n // Bug #114: Safari allows to set the channelCountMode to 'max'.\n if (options.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n overwriteAccessors(nativeConvolverNode, 'channelCountMode', (get) => () => get.call(nativeConvolverNode), (set) => (value) => {\n if (value === 'max') {\n throw createNotSupportedError();\n }\n return set.call(nativeConvolverNode, value);\n });\n return nativeConvolverNode;\n };\n};\n//# sourceMappingURL=native-convolver-node-factory.js.map","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeConvolverNodeFactoryFactory } from '../types';\n\nexport const createNativeConvolverNodeFactory: TNativeConvolverNodeFactoryFactory = (createNotSupportedError, overwriteAccessors) => {\n return (nativeContext, options) => {\n const nativeConvolverNode = nativeContext.createConvolver();\n\n assignNativeAudioNodeOptions(nativeConvolverNode, options);\n\n // The normalize property needs to be set before setting the buffer.\n if (options.disableNormalization === nativeConvolverNode.normalize) {\n nativeConvolverNode.normalize = !options.disableNormalization;\n }\n\n assignNativeAudioNodeOption(nativeConvolverNode, options, 'buffer');\n\n // Bug #113: Safari does allow to set the channelCount to a value larger than 2.\n if (options.channelCount > 2) {\n throw createNotSupportedError();\n }\n\n overwriteAccessors(\n nativeConvolverNode,\n 'channelCount',\n (get) => () => get.call(nativeConvolverNode),\n (set) => (value) => {\n if (value > 2) {\n throw createNotSupportedError();\n }\n\n return set.call(nativeConvolverNode, value);\n }\n );\n\n // Bug #114: Safari allows to set the channelCountMode to 'max'.\n if (options.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n\n overwriteAccessors(\n nativeConvolverNode,\n 'channelCountMode',\n (get) => () => get.call(nativeConvolverNode),\n (set) => (value) => {\n if (value === 'max') {\n throw createNotSupportedError();\n }\n\n return set.call(nativeConvolverNode, value);\n }\n );\n\n return nativeConvolverNode;\n };\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeDelayNode = (nativeContext, options) => {\n const nativeDelayNode = nativeContext.createDelay(options.maxDelayTime);\n assignNativeAudioNodeOptions(nativeDelayNode, options);\n assignNativeAudioNodeAudioParamValue(nativeDelayNode, options, 'delayTime');\n return nativeDelayNode;\n};\n//# sourceMappingURL=native-delay-node.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeDelayNodeFactory } from '../types';\n\nexport const createNativeDelayNode: TNativeDelayNodeFactory = (nativeContext, options) => {\n const nativeDelayNode = nativeContext.createDelay(options.maxDelayTime);\n\n assignNativeAudioNodeOptions(nativeDelayNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeDelayNode, options, 'delayTime');\n\n return nativeDelayNode;\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeDynamicsCompressorNodeFactory = (createNotSupportedError) => {\n return (nativeContext, options) => {\n const nativeDynamicsCompressorNode = nativeContext.createDynamicsCompressor();\n assignNativeAudioNodeOptions(nativeDynamicsCompressorNode, options);\n // Bug #108: Safari allows a channelCount of three and above.\n if (options.channelCount > 2) {\n throw createNotSupportedError();\n }\n // Bug #109: Only Chrome, Firefox and Opera disallow a channelCountMode of 'max'.\n if (options.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'attack');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'knee');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'ratio');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'release');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'threshold');\n return nativeDynamicsCompressorNode;\n };\n};\n//# sourceMappingURL=native-dynamics-compressor-node-factory.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeDynamicsCompressorNodeFactoryFactory } from '../types';\n\nexport const createNativeDynamicsCompressorNodeFactory: TNativeDynamicsCompressorNodeFactoryFactory = (createNotSupportedError) => {\n return (nativeContext, options) => {\n const nativeDynamicsCompressorNode = nativeContext.createDynamicsCompressor();\n\n assignNativeAudioNodeOptions(nativeDynamicsCompressorNode, options);\n\n // Bug #108: Safari allows a channelCount of three and above.\n if (options.channelCount > 2) {\n throw createNotSupportedError();\n }\n\n // Bug #109: Only Chrome, Firefox and Opera disallow a channelCountMode of 'max'.\n if (options.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'attack');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'knee');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'ratio');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'release');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'threshold');\n\n return nativeDynamicsCompressorNode;\n };\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeGainNode = (nativeContext, options) => {\n const nativeGainNode = nativeContext.createGain();\n assignNativeAudioNodeOptions(nativeGainNode, options);\n assignNativeAudioNodeAudioParamValue(nativeGainNode, options, 'gain');\n return nativeGainNode;\n};\n//# sourceMappingURL=native-gain-node.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeGainNodeFactory } from '../types';\n\nexport const createNativeGainNode: TNativeGainNodeFactory = (nativeContext, options) => {\n const nativeGainNode = nativeContext.createGain();\n\n assignNativeAudioNodeOptions(nativeGainNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeGainNode, options, 'gain');\n\n return nativeGainNode;\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeIIRFilterNodeFactory = (createNativeIIRFilterNodeFaker) => {\n return (nativeContext, baseLatency, options) => {\n // Bug #9: Safari does not support IIRFilterNodes.\n if (nativeContext.createIIRFilter === undefined) {\n return createNativeIIRFilterNodeFaker(nativeContext, baseLatency, options);\n }\n // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers.\n const nativeIIRFilterNode = nativeContext.createIIRFilter(options.feedforward, options.feedback);\n assignNativeAudioNodeOptions(nativeIIRFilterNode, options);\n return nativeIIRFilterNode;\n };\n};\n//# sourceMappingURL=native-iir-filter-node-factory.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeIIRFilterNodeFactoryFactory } from '../types';\n\nexport const createNativeIIRFilterNodeFactory: TNativeIIRFilterNodeFactoryFactory = (createNativeIIRFilterNodeFaker) => {\n return (nativeContext, baseLatency, options) => {\n // Bug #9: Safari does not support IIRFilterNodes.\n if (nativeContext.createIIRFilter === undefined) {\n return createNativeIIRFilterNodeFaker(nativeContext, baseLatency, options);\n }\n\n // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers.\n const nativeIIRFilterNode = nativeContext.createIIRFilter(options.feedforward, options.feedback);\n\n assignNativeAudioNodeOptions(nativeIIRFilterNode, options);\n\n return nativeIIRFilterNode;\n };\n};\n","import { computeBufferSize } from '../helpers/compute-buffer-size';\nimport { filterBuffer } from '../helpers/filter-buffer';\nimport { interceptConnections } from '../helpers/intercept-connections';\nfunction divide(a, b) {\n const denominator = b[0] * b[0] + b[1] * b[1];\n return [(a[0] * b[0] + a[1] * b[1]) / denominator, (a[1] * b[0] - a[0] * b[1]) / denominator];\n}\nfunction multiply(a, b) {\n return [a[0] * b[0] - a[1] * b[1], a[0] * b[1] + a[1] * b[0]];\n}\nfunction evaluatePolynomial(coefficient, z) {\n let result = [0, 0];\n for (let i = coefficient.length - 1; i >= 0; i -= 1) {\n result = multiply(result, z);\n result[0] += coefficient[i];\n }\n return result;\n}\nexport const createNativeIIRFilterNodeFakerFactory = (createInvalidAccessError, createInvalidStateError, createNativeScriptProcessorNode, createNotSupportedError) => {\n return (nativeContext, baseLatency, { channelCount, channelCountMode, channelInterpretation, feedback, feedforward }) => {\n const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate);\n const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback);\n const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward);\n const feedbackLength = convertedFeedback.length;\n const feedforwardLength = convertedFeedforward.length;\n const minLength = Math.min(feedbackLength, feedforwardLength);\n if (feedbackLength === 0 || feedbackLength > 20) {\n throw createNotSupportedError();\n }\n if (convertedFeedback[0] === 0) {\n throw createInvalidStateError();\n }\n if (feedforwardLength === 0 || feedforwardLength > 20) {\n throw createNotSupportedError();\n }\n if (convertedFeedforward[0] === 0) {\n throw createInvalidStateError();\n }\n if (convertedFeedback[0] !== 1) {\n for (let i = 0; i < feedforwardLength; i += 1) {\n convertedFeedforward[i] /= convertedFeedback[0];\n }\n for (let i = 1; i < feedbackLength; i += 1) {\n convertedFeedback[i] /= convertedFeedback[0];\n }\n }\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, bufferSize, channelCount, channelCount);\n scriptProcessorNode.channelCount = channelCount;\n scriptProcessorNode.channelCountMode = channelCountMode;\n scriptProcessorNode.channelInterpretation = channelInterpretation;\n const bufferLength = 32;\n const bufferIndexes = [];\n const xBuffers = [];\n const yBuffers = [];\n for (let i = 0; i < channelCount; i += 1) {\n bufferIndexes.push(0);\n const xBuffer = new Float32Array(bufferLength);\n const yBuffer = new Float32Array(bufferLength);\n xBuffer.fill(0);\n yBuffer.fill(0);\n xBuffers.push(xBuffer);\n yBuffers.push(yBuffer);\n }\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = (event) => {\n const inputBuffer = event.inputBuffer;\n const outputBuffer = event.outputBuffer;\n const numberOfChannels = inputBuffer.numberOfChannels;\n for (let i = 0; i < numberOfChannels; i += 1) {\n const input = inputBuffer.getChannelData(i);\n const output = outputBuffer.getChannelData(i);\n bufferIndexes[i] = filterBuffer(convertedFeedback, feedbackLength, convertedFeedforward, feedforwardLength, minLength, xBuffers[i], yBuffers[i], bufferIndexes[i], bufferLength, input, output);\n }\n };\n const nyquist = nativeContext.sampleRate / 2;\n const nativeIIRFilterNodeFaker = {\n get bufferSize() {\n return bufferSize;\n },\n get channelCount() {\n return scriptProcessorNode.channelCount;\n },\n set channelCount(value) {\n scriptProcessorNode.channelCount = value;\n },\n get channelCountMode() {\n return scriptProcessorNode.channelCountMode;\n },\n set channelCountMode(value) {\n scriptProcessorNode.channelCountMode = value;\n },\n get channelInterpretation() {\n return scriptProcessorNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n scriptProcessorNode.channelInterpretation = value;\n },\n get context() {\n return scriptProcessorNode.context;\n },\n get inputs() {\n return [scriptProcessorNode];\n },\n get numberOfInputs() {\n return scriptProcessorNode.numberOfInputs;\n },\n get numberOfOutputs() {\n return scriptProcessorNode.numberOfOutputs;\n },\n addEventListener(...args) {\n // @todo Dissallow adding an audioprocess listener.\n return scriptProcessorNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args) {\n return scriptProcessorNode.dispatchEvent(args[0]);\n },\n getFrequencyResponse(frequencyHz, magResponse, phaseResponse) {\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n const length = frequencyHz.length;\n for (let i = 0; i < length; i += 1) {\n const omega = -Math.PI * (frequencyHz[i] / nyquist);\n const z = [Math.cos(omega), Math.sin(omega)];\n const numerator = evaluatePolynomial(convertedFeedforward, z);\n const denominator = evaluatePolynomial(convertedFeedback, z);\n const response = divide(numerator, denominator);\n magResponse[i] = Math.sqrt(response[0] * response[0] + response[1] * response[1]);\n phaseResponse[i] = Math.atan2(response[1], response[0]);\n }\n },\n removeEventListener(...args) {\n return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n return interceptConnections(nativeIIRFilterNodeFaker, scriptProcessorNode);\n };\n};\n//# sourceMappingURL=native-iir-filter-node-faker-factory.js.map","import { computeBufferSize } from '../helpers/compute-buffer-size';\nimport { filterBuffer } from '../helpers/filter-buffer';\nimport { interceptConnections } from '../helpers/intercept-connections';\nimport { TNativeAudioNode, TNativeIIRFilterNode, TNativeIIRFilterNodeFakerFactoryFactory } from '../types';\n\nfunction divide(a: [number, number], b: [number, number]): [number, number] {\n const denominator = b[0] * b[0] + b[1] * b[1];\n\n return [(a[0] * b[0] + a[1] * b[1]) / denominator, (a[1] * b[0] - a[0] * b[1]) / denominator];\n}\n\nfunction multiply(a: [number, number], b: [number, number]): [number, number] {\n return [a[0] * b[0] - a[1] * b[1], a[0] * b[1] + a[1] * b[0]];\n}\n\nfunction evaluatePolynomial(coefficient: Float64Array, z: [number, number]): [number, number] {\n let result: [number, number] = [0, 0];\n\n for (let i = coefficient.length - 1; i >= 0; i -= 1) {\n result = multiply(result, z);\n\n result[0] += coefficient[i];\n }\n\n return result;\n}\n\nexport const createNativeIIRFilterNodeFakerFactory: TNativeIIRFilterNodeFakerFactoryFactory = (\n createInvalidAccessError,\n createInvalidStateError,\n createNativeScriptProcessorNode,\n createNotSupportedError\n) => {\n return (nativeContext, baseLatency, { channelCount, channelCountMode, channelInterpretation, feedback, feedforward }) => {\n const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate);\n const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback);\n const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward);\n const feedbackLength = convertedFeedback.length;\n const feedforwardLength = convertedFeedforward.length;\n const minLength = Math.min(feedbackLength, feedforwardLength);\n\n if (feedbackLength === 0 || feedbackLength > 20) {\n throw createNotSupportedError();\n }\n\n if (convertedFeedback[0] === 0) {\n throw createInvalidStateError();\n }\n\n if (feedforwardLength === 0 || feedforwardLength > 20) {\n throw createNotSupportedError();\n }\n\n if (convertedFeedforward[0] === 0) {\n throw createInvalidStateError();\n }\n\n if (convertedFeedback[0] !== 1) {\n for (let i = 0; i < feedforwardLength; i += 1) {\n convertedFeedforward[i] /= convertedFeedback[0];\n }\n\n for (let i = 1; i < feedbackLength; i += 1) {\n convertedFeedback[i] /= convertedFeedback[0];\n }\n }\n\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, bufferSize, channelCount, channelCount);\n\n scriptProcessorNode.channelCount = channelCount;\n scriptProcessorNode.channelCountMode = channelCountMode;\n scriptProcessorNode.channelInterpretation = channelInterpretation;\n\n const bufferLength = 32;\n const bufferIndexes: number[] = [];\n const xBuffers: Float32Array[] = [];\n const yBuffers: Float32Array[] = [];\n\n for (let i = 0; i < channelCount; i += 1) {\n bufferIndexes.push(0);\n\n const xBuffer = new Float32Array(bufferLength);\n const yBuffer = new Float32Array(bufferLength);\n\n xBuffer.fill(0);\n yBuffer.fill(0);\n\n xBuffers.push(xBuffer);\n yBuffers.push(yBuffer);\n }\n\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = (event: AudioProcessingEvent) => {\n const inputBuffer = event.inputBuffer;\n const outputBuffer = event.outputBuffer;\n\n const numberOfChannels = inputBuffer.numberOfChannels;\n\n for (let i = 0; i < numberOfChannels; i += 1) {\n const input = inputBuffer.getChannelData(i);\n const output = outputBuffer.getChannelData(i);\n\n bufferIndexes[i] = filterBuffer(\n convertedFeedback,\n feedbackLength,\n convertedFeedforward,\n feedforwardLength,\n minLength,\n xBuffers[i],\n yBuffers[i],\n bufferIndexes[i],\n bufferLength,\n input,\n output\n );\n }\n };\n\n const nyquist = nativeContext.sampleRate / 2;\n\n const nativeIIRFilterNodeFaker = {\n get bufferSize(): number {\n return bufferSize;\n },\n get channelCount(): number {\n return scriptProcessorNode.channelCount;\n },\n set channelCount(value) {\n scriptProcessorNode.channelCount = value;\n },\n get channelCountMode(): TNativeIIRFilterNode['channelCountMode'] {\n return scriptProcessorNode.channelCountMode;\n },\n set channelCountMode(value) {\n scriptProcessorNode.channelCountMode = value;\n },\n get channelInterpretation(): TNativeIIRFilterNode['channelInterpretation'] {\n return scriptProcessorNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n scriptProcessorNode.channelInterpretation = value;\n },\n get context(): TNativeIIRFilterNode['context'] {\n return scriptProcessorNode.context;\n },\n get inputs(): TNativeAudioNode[] {\n return [scriptProcessorNode];\n },\n get numberOfInputs(): number {\n return scriptProcessorNode.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return scriptProcessorNode.numberOfOutputs;\n },\n addEventListener(...args: any[]): void {\n // @todo Dissallow adding an audioprocess listener.\n return scriptProcessorNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args: any[]): boolean {\n return scriptProcessorNode.dispatchEvent(args[0]);\n },\n getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void {\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n\n const length = frequencyHz.length;\n\n for (let i = 0; i < length; i += 1) {\n const omega = -Math.PI * (frequencyHz[i] / nyquist);\n const z: [number, number] = [Math.cos(omega), Math.sin(omega)];\n const numerator = evaluatePolynomial(convertedFeedforward, z);\n const denominator = evaluatePolynomial(convertedFeedback, z);\n const response = divide(numerator, denominator);\n\n magResponse[i] = Math.sqrt(response[0] * response[0] + response[1] * response[1]);\n phaseResponse[i] = Math.atan2(response[1], response[0]);\n }\n },\n removeEventListener(...args: any[]): void {\n return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n\n return interceptConnections(nativeIIRFilterNodeFaker, scriptProcessorNode);\n };\n};\n","export const createNativeMediaElementAudioSourceNode = (nativeAudioContext, options) => {\n return nativeAudioContext.createMediaElementSource(options.mediaElement);\n};\n//# sourceMappingURL=native-media-element-audio-source-node.js.map","import { TNativeMediaElementAudioSourceNodeFactory } from '../types';\n\nexport const createNativeMediaElementAudioSourceNode: TNativeMediaElementAudioSourceNodeFactory = (nativeAudioContext, options) => {\n return nativeAudioContext.createMediaElementSource(options.mediaElement);\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeMediaStreamAudioDestinationNode = (nativeAudioContext, options) => {\n const nativeMediaStreamAudioDestinationNode = nativeAudioContext.createMediaStreamDestination();\n assignNativeAudioNodeOptions(nativeMediaStreamAudioDestinationNode, options);\n // Bug #174: Safari does expose a wrong numberOfOutputs.\n if (nativeMediaStreamAudioDestinationNode.numberOfOutputs === 1) {\n Object.defineProperty(nativeMediaStreamAudioDestinationNode, 'numberOfOutputs', { get: () => 0 });\n }\n return nativeMediaStreamAudioDestinationNode;\n};\n//# sourceMappingURL=native-media-stream-audio-destination-node.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeMediaStreamAudioDestinationNodeFactory } from '../types';\n\nexport const createNativeMediaStreamAudioDestinationNode: TNativeMediaStreamAudioDestinationNodeFactory = (nativeAudioContext, options) => {\n const nativeMediaStreamAudioDestinationNode = nativeAudioContext.createMediaStreamDestination();\n\n assignNativeAudioNodeOptions(nativeMediaStreamAudioDestinationNode, options);\n\n // Bug #174: Safari does expose a wrong numberOfOutputs.\n if (nativeMediaStreamAudioDestinationNode.numberOfOutputs === 1) {\n Object.defineProperty(nativeMediaStreamAudioDestinationNode, 'numberOfOutputs', { get: () => 0 });\n }\n\n return nativeMediaStreamAudioDestinationNode;\n};\n","export const createNativeMediaStreamAudioSourceNode = (nativeAudioContext, { mediaStream }) => {\n const audioStreamTracks = mediaStream.getAudioTracks();\n /*\n * Bug #151: Safari does not use the audio track as input anymore if it gets removed from the mediaStream after construction.\n * Bug #159: Safari picks the first audio track if the MediaStream has more than one audio track.\n */\n audioStreamTracks.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));\n const filteredAudioStreamTracks = audioStreamTracks.slice(0, 1);\n const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(new MediaStream(filteredAudioStreamTracks));\n /*\n * Bug #151 & #159: The given mediaStream gets reconstructed before it gets passed to the native node which is why the accessor needs\n * to be overwritten as it would otherwise expose the reconstructed version.\n */\n Object.defineProperty(nativeMediaStreamAudioSourceNode, 'mediaStream', { value: mediaStream });\n return nativeMediaStreamAudioSourceNode;\n};\n//# sourceMappingURL=native-media-stream-audio-source-node.js.map","import { TNativeMediaStreamAudioSourceNodeFactory } from '../types';\n\nexport const createNativeMediaStreamAudioSourceNode: TNativeMediaStreamAudioSourceNodeFactory = (nativeAudioContext, { mediaStream }) => {\n const audioStreamTracks = mediaStream.getAudioTracks();\n /*\n * Bug #151: Safari does not use the audio track as input anymore if it gets removed from the mediaStream after construction.\n * Bug #159: Safari picks the first audio track if the MediaStream has more than one audio track.\n */\n audioStreamTracks.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));\n\n const filteredAudioStreamTracks = audioStreamTracks.slice(0, 1);\n\n const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(new MediaStream(filteredAudioStreamTracks));\n\n /*\n * Bug #151 & #159: The given mediaStream gets reconstructed before it gets passed to the native node which is why the accessor needs\n * to be overwritten as it would otherwise expose the reconstructed version.\n */\n Object.defineProperty(nativeMediaStreamAudioSourceNode, 'mediaStream', { value: mediaStream });\n\n return nativeMediaStreamAudioSourceNode;\n};\n","export const createNativeMediaStreamTrackAudioSourceNodeFactory = (createInvalidStateError, isNativeOfflineAudioContext) => {\n return (nativeAudioContext, { mediaStreamTrack }) => {\n // Bug #121: Only Firefox does yet support the MediaStreamTrackAudioSourceNode.\n if (typeof nativeAudioContext.createMediaStreamTrackSource === 'function') {\n return nativeAudioContext.createMediaStreamTrackSource(mediaStreamTrack);\n }\n const mediaStream = new MediaStream([mediaStreamTrack]);\n const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(mediaStream);\n // Bug #120: Firefox does not throw an error if the mediaStream has no audio track.\n if (mediaStreamTrack.kind !== 'audio') {\n throw createInvalidStateError();\n }\n // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeAudioContext)) {\n throw new TypeError();\n }\n return nativeMediaStreamAudioSourceNode;\n };\n};\n//# sourceMappingURL=native-media-stream-track-audio-source-node-factory.js.map","import { TNativeMediaStreamTrackAudioSourceNodeFactoryFactory } from '../types';\n\nexport const createNativeMediaStreamTrackAudioSourceNodeFactory: TNativeMediaStreamTrackAudioSourceNodeFactoryFactory = (\n createInvalidStateError,\n isNativeOfflineAudioContext\n) => {\n return (nativeAudioContext, { mediaStreamTrack }) => {\n // Bug #121: Only Firefox does yet support the MediaStreamTrackAudioSourceNode.\n if (typeof nativeAudioContext.createMediaStreamTrackSource === 'function') {\n return nativeAudioContext.createMediaStreamTrackSource(mediaStreamTrack);\n }\n\n const mediaStream = new MediaStream([mediaStreamTrack]);\n const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(mediaStream);\n\n // Bug #120: Firefox does not throw an error if the mediaStream has no audio track.\n if (mediaStreamTrack.kind !== 'audio') {\n throw createInvalidStateError();\n }\n\n // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeAudioContext)) {\n throw new TypeError();\n }\n\n return nativeMediaStreamAudioSourceNode;\n };\n};\n","export const createNativeOfflineAudioContextConstructor = (window) => {\n if (window === null) {\n return null;\n }\n if (window.hasOwnProperty('OfflineAudioContext')) {\n return window.OfflineAudioContext;\n }\n return window.hasOwnProperty('webkitOfflineAudioContext') ? window.webkitOfflineAudioContext : null;\n};\n//# sourceMappingURL=native-offline-audio-context-constructor.js.map","import { TNativeOfflineAudioContextConstructorFactory } from '../types';\n\nexport const createNativeOfflineAudioContextConstructor: TNativeOfflineAudioContextConstructorFactory = (window) => {\n if (window === null) {\n return null;\n }\n\n if (window.hasOwnProperty('OfflineAudioContext')) {\n return window.OfflineAudioContext;\n }\n\n return window.hasOwnProperty('webkitOfflineAudioContext') ? (window).webkitOfflineAudioContext : null;\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nexport const createNativeOscillatorNodeFactory = (addSilentConnection, cacheTestResult, testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls) => {\n return (nativeContext, options) => {\n const nativeOscillatorNode = nativeContext.createOscillator();\n assignNativeAudioNodeOptions(nativeOscillatorNode, options);\n assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'detune');\n assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'frequency');\n if (options.periodicWave !== undefined) {\n nativeOscillatorNode.setPeriodicWave(options.periodicWave);\n }\n else {\n assignNativeAudioNodeOption(nativeOscillatorNode, options, 'type');\n }\n // Bug #44: Only Chrome, Edge & Opera throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeOscillatorNode);\n }\n // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () => testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeOscillatorNode, nativeContext);\n }\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (!cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () => testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext))) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeOscillatorNode);\n }\n // Bug #175: Safari will not fire an ended event if the OscillatorNode is unconnected.\n addSilentConnection(nativeContext, nativeOscillatorNode);\n return nativeOscillatorNode;\n };\n};\n//# sourceMappingURL=native-oscillator-node-factory.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nimport { TNativeOscillatorNodeFactoryFactory } from '../types';\n\nexport const createNativeOscillatorNodeFactory: TNativeOscillatorNodeFactoryFactory = (\n addSilentConnection,\n cacheTestResult,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls\n) => {\n return (nativeContext, options) => {\n const nativeOscillatorNode = nativeContext.createOscillator();\n\n assignNativeAudioNodeOptions(nativeOscillatorNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'detune');\n assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'frequency');\n\n if (options.periodicWave !== undefined) {\n nativeOscillatorNode.setPeriodicWave(options.periodicWave);\n } else {\n assignNativeAudioNodeOption(nativeOscillatorNode, options, 'type');\n }\n\n // Bug #44: Only Chrome, Edge & Opera throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeOscillatorNode);\n }\n\n // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () =>\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeOscillatorNode, nativeContext);\n }\n\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeOscillatorNode);\n }\n\n // Bug #175: Safari will not fire an ended event if the OscillatorNode is unconnected.\n addSilentConnection(nativeContext, nativeOscillatorNode);\n\n return nativeOscillatorNode;\n };\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativePannerNodeFactory = (createNativePannerNodeFaker) => {\n return (nativeContext, options) => {\n const nativePannerNode = nativeContext.createPanner();\n // Bug #124: Safari does not support modifying the orientation and the position with AudioParams.\n if (nativePannerNode.orientationX === undefined) {\n return createNativePannerNodeFaker(nativeContext, options);\n }\n assignNativeAudioNodeOptions(nativePannerNode, options);\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationX');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationY');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationZ');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionX');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionY');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionZ');\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneInnerAngle');\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterAngle');\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterGain');\n assignNativeAudioNodeOption(nativePannerNode, options, 'distanceModel');\n assignNativeAudioNodeOption(nativePannerNode, options, 'maxDistance');\n assignNativeAudioNodeOption(nativePannerNode, options, 'panningModel');\n assignNativeAudioNodeOption(nativePannerNode, options, 'refDistance');\n assignNativeAudioNodeOption(nativePannerNode, options, 'rolloffFactor');\n return nativePannerNode;\n };\n};\n//# sourceMappingURL=native-panner-node-factory.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativePannerNodeFactoryFactory } from '../types';\n\nexport const createNativePannerNodeFactory: TNativePannerNodeFactoryFactory = (createNativePannerNodeFaker) => {\n return (nativeContext, options) => {\n const nativePannerNode = nativeContext.createPanner();\n\n // Bug #124: Safari does not support modifying the orientation and the position with AudioParams.\n if (nativePannerNode.orientationX === undefined) {\n return createNativePannerNodeFaker(nativeContext, options);\n }\n\n assignNativeAudioNodeOptions(nativePannerNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationX');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationY');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationZ');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionX');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionY');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionZ');\n\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneInnerAngle');\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterAngle');\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterGain');\n assignNativeAudioNodeOption(nativePannerNode, options, 'distanceModel');\n assignNativeAudioNodeOption(nativePannerNode, options, 'maxDistance');\n assignNativeAudioNodeOption(nativePannerNode, options, 'panningModel');\n assignNativeAudioNodeOption(nativePannerNode, options, 'refDistance');\n assignNativeAudioNodeOption(nativePannerNode, options, 'rolloffFactor');\n\n return nativePannerNode;\n };\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { interceptConnections } from '../helpers/intercept-connections';\nexport const createNativePannerNodeFakerFactory = (connectNativeAudioNodeToNativeAudioNode, createInvalidStateError, createNativeChannelMergerNode, createNativeGainNode, createNativeScriptProcessorNode, createNativeWaveShaperNode, createNotSupportedError, disconnectNativeAudioNodeFromNativeAudioNode, getFirstSample, monitorConnections) => {\n return (nativeContext, { coneInnerAngle, coneOuterAngle, coneOuterGain, distanceModel, maxDistance, orientationX, orientationY, orientationZ, panningModel, positionX, positionY, positionZ, refDistance, rolloffFactor, ...audioNodeOptions }) => {\n const pannerNode = nativeContext.createPanner();\n // Bug #125: Safari does not throw an error yet.\n if (audioNodeOptions.channelCount > 2) {\n throw createNotSupportedError();\n }\n // Bug #126: Safari does not throw an error yet.\n if (audioNodeOptions.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n assignNativeAudioNodeOptions(pannerNode, audioNodeOptions);\n const SINGLE_CHANNEL_OPTIONS = {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete'\n };\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n ...SINGLE_CHANNEL_OPTIONS,\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n });\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const orientationXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 1 });\n const orientationYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const orientationZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 6, 1);\n const waveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_OPTIONS,\n curve: new Float32Array([1, 1]),\n oversample: 'none'\n });\n let lastOrientation = [orientationX, orientationY, orientationZ];\n let lastPosition = [positionX, positionY, positionZ];\n const buffer = new Float32Array(1);\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => {\n const orientation = [\n getFirstSample(inputBuffer, buffer, 0),\n getFirstSample(inputBuffer, buffer, 1),\n getFirstSample(inputBuffer, buffer, 2)\n ];\n if (orientation.some((value, index) => value !== lastOrientation[index])) {\n pannerNode.setOrientation(...orientation); // tslint:disable-line:deprecation\n lastOrientation = orientation;\n }\n const positon = [\n getFirstSample(inputBuffer, buffer, 3),\n getFirstSample(inputBuffer, buffer, 4),\n getFirstSample(inputBuffer, buffer, 5)\n ];\n if (positon.some((value, index) => value !== lastPosition[index])) {\n pannerNode.setPosition(...positon); // tslint:disable-line:deprecation\n lastPosition = positon;\n }\n };\n Object.defineProperty(orientationYGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(orientationZGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionXGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionYGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionZGainNode.gain, 'defaultValue', { get: () => 0 });\n const nativePannerNodeFaker = {\n get bufferSize() {\n return undefined;\n },\n get channelCount() {\n return pannerNode.channelCount;\n },\n set channelCount(value) {\n // Bug #125: Safari does not throw an error yet.\n if (value > 2) {\n throw createNotSupportedError();\n }\n inputGainNode.channelCount = value;\n pannerNode.channelCount = value;\n },\n get channelCountMode() {\n return pannerNode.channelCountMode;\n },\n set channelCountMode(value) {\n // Bug #126: Safari does not throw an error yet.\n if (value === 'max') {\n throw createNotSupportedError();\n }\n inputGainNode.channelCountMode = value;\n pannerNode.channelCountMode = value;\n },\n get channelInterpretation() {\n return pannerNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n pannerNode.channelInterpretation = value;\n },\n get coneInnerAngle() {\n return pannerNode.coneInnerAngle;\n },\n set coneInnerAngle(value) {\n pannerNode.coneInnerAngle = value;\n },\n get coneOuterAngle() {\n return pannerNode.coneOuterAngle;\n },\n set coneOuterAngle(value) {\n pannerNode.coneOuterAngle = value;\n },\n get coneOuterGain() {\n return pannerNode.coneOuterGain;\n },\n set coneOuterGain(value) {\n // Bug #127: Safari does not throw an InvalidStateError yet.\n if (value < 0 || value > 1) {\n throw createInvalidStateError();\n }\n pannerNode.coneOuterGain = value;\n },\n get context() {\n return pannerNode.context;\n },\n get distanceModel() {\n return pannerNode.distanceModel;\n },\n set distanceModel(value) {\n pannerNode.distanceModel = value;\n },\n get inputs() {\n return [inputGainNode];\n },\n get maxDistance() {\n return pannerNode.maxDistance;\n },\n set maxDistance(value) {\n // Bug #128: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n pannerNode.maxDistance = value;\n },\n get numberOfInputs() {\n return pannerNode.numberOfInputs;\n },\n get numberOfOutputs() {\n return pannerNode.numberOfOutputs;\n },\n get orientationX() {\n return orientationXGainNode.gain;\n },\n get orientationY() {\n return orientationYGainNode.gain;\n },\n get orientationZ() {\n return orientationZGainNode.gain;\n },\n get panningModel() {\n return pannerNode.panningModel;\n },\n set panningModel(value) {\n pannerNode.panningModel = value;\n },\n get positionX() {\n return positionXGainNode.gain;\n },\n get positionY() {\n return positionYGainNode.gain;\n },\n get positionZ() {\n return positionZGainNode.gain;\n },\n get refDistance() {\n return pannerNode.refDistance;\n },\n set refDistance(value) {\n // Bug #129: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n pannerNode.refDistance = value;\n },\n get rolloffFactor() {\n return pannerNode.rolloffFactor;\n },\n set rolloffFactor(value) {\n // Bug #130: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n pannerNode.rolloffFactor = value;\n },\n addEventListener(...args) {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args) {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n if (coneInnerAngle !== nativePannerNodeFaker.coneInnerAngle) {\n nativePannerNodeFaker.coneInnerAngle = coneInnerAngle;\n }\n if (coneOuterAngle !== nativePannerNodeFaker.coneOuterAngle) {\n nativePannerNodeFaker.coneOuterAngle = coneOuterAngle;\n }\n if (coneOuterGain !== nativePannerNodeFaker.coneOuterGain) {\n nativePannerNodeFaker.coneOuterGain = coneOuterGain;\n }\n if (distanceModel !== nativePannerNodeFaker.distanceModel) {\n nativePannerNodeFaker.distanceModel = distanceModel;\n }\n if (maxDistance !== nativePannerNodeFaker.maxDistance) {\n nativePannerNodeFaker.maxDistance = maxDistance;\n }\n if (orientationX !== nativePannerNodeFaker.orientationX.value) {\n nativePannerNodeFaker.orientationX.value = orientationX;\n }\n if (orientationY !== nativePannerNodeFaker.orientationY.value) {\n nativePannerNodeFaker.orientationY.value = orientationY;\n }\n if (orientationZ !== nativePannerNodeFaker.orientationZ.value) {\n nativePannerNodeFaker.orientationZ.value = orientationZ;\n }\n if (panningModel !== nativePannerNodeFaker.panningModel) {\n nativePannerNodeFaker.panningModel = panningModel;\n }\n if (positionX !== nativePannerNodeFaker.positionX.value) {\n nativePannerNodeFaker.positionX.value = positionX;\n }\n if (positionY !== nativePannerNodeFaker.positionY.value) {\n nativePannerNodeFaker.positionY.value = positionY;\n }\n if (positionZ !== nativePannerNodeFaker.positionZ.value) {\n nativePannerNodeFaker.positionZ.value = positionZ;\n }\n if (refDistance !== nativePannerNodeFaker.refDistance) {\n nativePannerNodeFaker.refDistance = refDistance;\n }\n if (rolloffFactor !== nativePannerNodeFaker.rolloffFactor) {\n nativePannerNodeFaker.rolloffFactor = rolloffFactor;\n }\n if (lastOrientation[0] !== 1 || lastOrientation[1] !== 0 || lastOrientation[2] !== 0) {\n pannerNode.setOrientation(...lastOrientation); // tslint:disable-line:deprecation\n }\n if (lastPosition[0] !== 0 || lastPosition[1] !== 0 || lastPosition[2] !== 0) {\n pannerNode.setPosition(...lastPosition); // tslint:disable-line:deprecation\n }\n const whenConnected = () => {\n inputGainNode.connect(pannerNode);\n // Bug #119: Safari does not fully support the WaveShaperNode.\n connectNativeAudioNodeToNativeAudioNode(inputGainNode, waveShaperNode, 0, 0);\n waveShaperNode.connect(orientationXGainNode).connect(channelMergerNode, 0, 0);\n waveShaperNode.connect(orientationYGainNode).connect(channelMergerNode, 0, 1);\n waveShaperNode.connect(orientationZGainNode).connect(channelMergerNode, 0, 2);\n waveShaperNode.connect(positionXGainNode).connect(channelMergerNode, 0, 3);\n waveShaperNode.connect(positionYGainNode).connect(channelMergerNode, 0, 4);\n waveShaperNode.connect(positionZGainNode).connect(channelMergerNode, 0, 5);\n channelMergerNode.connect(scriptProcessorNode).connect(nativeContext.destination);\n };\n const whenDisconnected = () => {\n inputGainNode.disconnect(pannerNode);\n // Bug #119: Safari does not fully support the WaveShaperNode.\n disconnectNativeAudioNodeFromNativeAudioNode(inputGainNode, waveShaperNode, 0, 0);\n waveShaperNode.disconnect(orientationXGainNode);\n orientationXGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(orientationYGainNode);\n orientationYGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(orientationZGainNode);\n orientationZGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionXGainNode);\n positionXGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionYGainNode);\n positionYGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionZGainNode);\n positionZGainNode.disconnect(channelMergerNode);\n channelMergerNode.disconnect(scriptProcessorNode);\n scriptProcessorNode.disconnect(nativeContext.destination);\n };\n return monitorConnections(interceptConnections(nativePannerNodeFaker, pannerNode), whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-panner-node-faker-factory.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { interceptConnections } from '../helpers/intercept-connections';\nimport { TNativeAudioNode, TNativePannerNode, TNativePannerNodeFakerFactoryFactory } from '../types';\n\nexport const createNativePannerNodeFakerFactory: TNativePannerNodeFakerFactoryFactory = (\n connectNativeAudioNodeToNativeAudioNode,\n createInvalidStateError,\n createNativeChannelMergerNode,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n createNativeWaveShaperNode,\n createNotSupportedError,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getFirstSample,\n monitorConnections\n) => {\n return (\n nativeContext,\n {\n coneInnerAngle,\n coneOuterAngle,\n coneOuterGain,\n distanceModel,\n maxDistance,\n orientationX,\n orientationY,\n orientationZ,\n panningModel,\n positionX,\n positionY,\n positionZ,\n refDistance,\n rolloffFactor,\n ...audioNodeOptions\n }\n ) => {\n const pannerNode = nativeContext.createPanner();\n\n // Bug #125: Safari does not throw an error yet.\n if (audioNodeOptions.channelCount > 2) {\n throw createNotSupportedError();\n }\n\n // Bug #126: Safari does not throw an error yet.\n if (audioNodeOptions.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n\n assignNativeAudioNodeOptions(pannerNode, audioNodeOptions);\n\n const SINGLE_CHANNEL_OPTIONS = {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete'\n } as const;\n\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n ...SINGLE_CHANNEL_OPTIONS,\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n });\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const orientationXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 1 });\n const orientationYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const orientationZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 6, 1);\n const waveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_OPTIONS,\n curve: new Float32Array([1, 1]),\n oversample: 'none'\n });\n\n let lastOrientation: [number, number, number] = [orientationX, orientationY, orientationZ];\n let lastPosition: [number, number, number] = [positionX, positionY, positionZ];\n\n const buffer = new Float32Array(1);\n\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => {\n const orientation: [number, number, number] = [\n getFirstSample(inputBuffer, buffer, 0),\n getFirstSample(inputBuffer, buffer, 1),\n getFirstSample(inputBuffer, buffer, 2)\n ];\n\n if (orientation.some((value, index) => value !== lastOrientation[index])) {\n pannerNode.setOrientation(...orientation); // tslint:disable-line:deprecation\n\n lastOrientation = orientation;\n }\n\n const positon: [number, number, number] = [\n getFirstSample(inputBuffer, buffer, 3),\n getFirstSample(inputBuffer, buffer, 4),\n getFirstSample(inputBuffer, buffer, 5)\n ];\n\n if (positon.some((value, index) => value !== lastPosition[index])) {\n pannerNode.setPosition(...positon); // tslint:disable-line:deprecation\n\n lastPosition = positon;\n }\n };\n\n Object.defineProperty(orientationYGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(orientationZGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionXGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionYGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionZGainNode.gain, 'defaultValue', { get: () => 0 });\n\n const nativePannerNodeFaker = {\n get bufferSize(): undefined {\n return undefined;\n },\n get channelCount(): number {\n return pannerNode.channelCount;\n },\n set channelCount(value) {\n // Bug #125: Safari does not throw an error yet.\n if (value > 2) {\n throw createNotSupportedError();\n }\n\n inputGainNode.channelCount = value;\n pannerNode.channelCount = value;\n },\n get channelCountMode(): TNativePannerNode['channelCountMode'] {\n return pannerNode.channelCountMode;\n },\n set channelCountMode(value) {\n // Bug #126: Safari does not throw an error yet.\n if (value === 'max') {\n throw createNotSupportedError();\n }\n\n inputGainNode.channelCountMode = value;\n pannerNode.channelCountMode = value;\n },\n get channelInterpretation(): TNativePannerNode['channelInterpretation'] {\n return pannerNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n pannerNode.channelInterpretation = value;\n },\n get coneInnerAngle(): TNativePannerNode['coneInnerAngle'] {\n return pannerNode.coneInnerAngle;\n },\n set coneInnerAngle(value) {\n pannerNode.coneInnerAngle = value;\n },\n get coneOuterAngle(): TNativePannerNode['coneOuterAngle'] {\n return pannerNode.coneOuterAngle;\n },\n set coneOuterAngle(value) {\n pannerNode.coneOuterAngle = value;\n },\n get coneOuterGain(): TNativePannerNode['coneOuterGain'] {\n return pannerNode.coneOuterGain;\n },\n set coneOuterGain(value) {\n // Bug #127: Safari does not throw an InvalidStateError yet.\n if (value < 0 || value > 1) {\n throw createInvalidStateError();\n }\n\n pannerNode.coneOuterGain = value;\n },\n get context(): TNativePannerNode['context'] {\n return pannerNode.context;\n },\n get distanceModel(): TNativePannerNode['distanceModel'] {\n return pannerNode.distanceModel;\n },\n set distanceModel(value) {\n pannerNode.distanceModel = value;\n },\n get inputs(): TNativeAudioNode[] {\n return [inputGainNode];\n },\n get maxDistance(): TNativePannerNode['maxDistance'] {\n return pannerNode.maxDistance;\n },\n set maxDistance(value) {\n // Bug #128: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n\n pannerNode.maxDistance = value;\n },\n get numberOfInputs(): number {\n return pannerNode.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return pannerNode.numberOfOutputs;\n },\n get orientationX(): TNativePannerNode['orientationX'] {\n return orientationXGainNode.gain;\n },\n get orientationY(): TNativePannerNode['orientationY'] {\n return orientationYGainNode.gain;\n },\n get orientationZ(): TNativePannerNode['orientationZ'] {\n return orientationZGainNode.gain;\n },\n get panningModel(): TNativePannerNode['panningModel'] {\n return pannerNode.panningModel;\n },\n set panningModel(value) {\n pannerNode.panningModel = value;\n },\n get positionX(): TNativePannerNode['positionX'] {\n return positionXGainNode.gain;\n },\n get positionY(): TNativePannerNode['positionY'] {\n return positionYGainNode.gain;\n },\n get positionZ(): TNativePannerNode['positionZ'] {\n return positionZGainNode.gain;\n },\n get refDistance(): TNativePannerNode['refDistance'] {\n return pannerNode.refDistance;\n },\n set refDistance(value) {\n // Bug #129: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n\n pannerNode.refDistance = value;\n },\n get rolloffFactor(): TNativePannerNode['rolloffFactor'] {\n return pannerNode.rolloffFactor;\n },\n set rolloffFactor(value) {\n // Bug #130: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n\n pannerNode.rolloffFactor = value;\n },\n addEventListener(...args: any[]): void {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args: any[]): boolean {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args: any[]): void {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n\n if (coneInnerAngle !== nativePannerNodeFaker.coneInnerAngle) {\n nativePannerNodeFaker.coneInnerAngle = coneInnerAngle;\n }\n\n if (coneOuterAngle !== nativePannerNodeFaker.coneOuterAngle) {\n nativePannerNodeFaker.coneOuterAngle = coneOuterAngle;\n }\n\n if (coneOuterGain !== nativePannerNodeFaker.coneOuterGain) {\n nativePannerNodeFaker.coneOuterGain = coneOuterGain;\n }\n\n if (distanceModel !== nativePannerNodeFaker.distanceModel) {\n nativePannerNodeFaker.distanceModel = distanceModel;\n }\n\n if (maxDistance !== nativePannerNodeFaker.maxDistance) {\n nativePannerNodeFaker.maxDistance = maxDistance;\n }\n\n if (orientationX !== nativePannerNodeFaker.orientationX.value) {\n nativePannerNodeFaker.orientationX.value = orientationX;\n }\n\n if (orientationY !== nativePannerNodeFaker.orientationY.value) {\n nativePannerNodeFaker.orientationY.value = orientationY;\n }\n\n if (orientationZ !== nativePannerNodeFaker.orientationZ.value) {\n nativePannerNodeFaker.orientationZ.value = orientationZ;\n }\n\n if (panningModel !== nativePannerNodeFaker.panningModel) {\n nativePannerNodeFaker.panningModel = panningModel;\n }\n\n if (positionX !== nativePannerNodeFaker.positionX.value) {\n nativePannerNodeFaker.positionX.value = positionX;\n }\n\n if (positionY !== nativePannerNodeFaker.positionY.value) {\n nativePannerNodeFaker.positionY.value = positionY;\n }\n\n if (positionZ !== nativePannerNodeFaker.positionZ.value) {\n nativePannerNodeFaker.positionZ.value = positionZ;\n }\n\n if (refDistance !== nativePannerNodeFaker.refDistance) {\n nativePannerNodeFaker.refDistance = refDistance;\n }\n\n if (rolloffFactor !== nativePannerNodeFaker.rolloffFactor) {\n nativePannerNodeFaker.rolloffFactor = rolloffFactor;\n }\n\n if (lastOrientation[0] !== 1 || lastOrientation[1] !== 0 || lastOrientation[2] !== 0) {\n pannerNode.setOrientation(...lastOrientation); // tslint:disable-line:deprecation\n }\n\n if (lastPosition[0] !== 0 || lastPosition[1] !== 0 || lastPosition[2] !== 0) {\n pannerNode.setPosition(...lastPosition); // tslint:disable-line:deprecation\n }\n\n const whenConnected = () => {\n inputGainNode.connect(pannerNode);\n\n // Bug #119: Safari does not fully support the WaveShaperNode.\n connectNativeAudioNodeToNativeAudioNode(inputGainNode, waveShaperNode, 0, 0);\n\n waveShaperNode.connect(orientationXGainNode).connect(channelMergerNode, 0, 0);\n waveShaperNode.connect(orientationYGainNode).connect(channelMergerNode, 0, 1);\n waveShaperNode.connect(orientationZGainNode).connect(channelMergerNode, 0, 2);\n waveShaperNode.connect(positionXGainNode).connect(channelMergerNode, 0, 3);\n waveShaperNode.connect(positionYGainNode).connect(channelMergerNode, 0, 4);\n waveShaperNode.connect(positionZGainNode).connect(channelMergerNode, 0, 5);\n\n channelMergerNode.connect(scriptProcessorNode).connect(nativeContext.destination);\n };\n const whenDisconnected = () => {\n inputGainNode.disconnect(pannerNode);\n\n // Bug #119: Safari does not fully support the WaveShaperNode.\n disconnectNativeAudioNodeFromNativeAudioNode(inputGainNode, waveShaperNode, 0, 0);\n\n waveShaperNode.disconnect(orientationXGainNode);\n orientationXGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(orientationYGainNode);\n orientationYGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(orientationZGainNode);\n orientationZGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionXGainNode);\n positionXGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionYGainNode);\n positionYGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionZGainNode);\n positionZGainNode.disconnect(channelMergerNode);\n\n channelMergerNode.disconnect(scriptProcessorNode);\n scriptProcessorNode.disconnect(nativeContext.destination);\n };\n\n return monitorConnections(interceptConnections(nativePannerNodeFaker, pannerNode), whenConnected, whenDisconnected);\n };\n};\n","export const createNativePeriodicWaveFactory = (createIndexSizeError) => {\n return (nativeContext, { disableNormalization, imag, real }) => {\n // Bug #180: Safari does not allow to use ordinary arrays.\n const convertedImag = imag instanceof Float32Array ? imag : new Float32Array(imag);\n const convertedReal = real instanceof Float32Array ? real : new Float32Array(real);\n const nativePeriodicWave = nativeContext.createPeriodicWave(convertedReal, convertedImag, { disableNormalization });\n // Bug #181: Safari does not throw an IndexSizeError so far if the given arrays have less than two values.\n if (Array.from(imag).length < 2) {\n throw createIndexSizeError();\n }\n return nativePeriodicWave;\n };\n};\n//# sourceMappingURL=native-periodic-wave-factory.js.map","import { TNativePeriodicWaveFactoryFactory } from '../types';\n\nexport const createNativePeriodicWaveFactory: TNativePeriodicWaveFactoryFactory = (createIndexSizeError) => {\n return (nativeContext, { disableNormalization, imag, real }) => {\n // Bug #180: Safari does not allow to use ordinary arrays.\n const convertedImag = imag instanceof Float32Array ? imag : new Float32Array(imag);\n const convertedReal = real instanceof Float32Array ? real : new Float32Array(real);\n\n const nativePeriodicWave = nativeContext.createPeriodicWave(convertedReal, convertedImag, { disableNormalization });\n\n // Bug #181: Safari does not throw an IndexSizeError so far if the given arrays have less than two values.\n if (Array.from(imag).length < 2) {\n throw createIndexSizeError();\n }\n\n return nativePeriodicWave;\n };\n};\n","export const createNativeScriptProcessorNode = (nativeContext, bufferSize, numberOfInputChannels, numberOfOutputChannels) => {\n return nativeContext.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels); // tslint:disable-line deprecation\n};\n//# sourceMappingURL=native-script-processor-node.js.map","import { TNativeScriptProcessorNodeFactory } from '../types';\n\nexport const createNativeScriptProcessorNode: TNativeScriptProcessorNodeFactory = (\n nativeContext,\n bufferSize,\n numberOfInputChannels,\n numberOfOutputChannels\n) => {\n return nativeContext.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels); // tslint:disable-line deprecation\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeStereoPannerNodeFactory = (createNativeStereoPannerNodeFaker, createNotSupportedError) => {\n return (nativeContext, options) => {\n const channelCountMode = options.channelCountMode;\n /*\n * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari\n * which supports it and therefore it can't be supported at all.\n */\n if (channelCountMode === 'clamped-max') {\n throw createNotSupportedError();\n }\n // Bug #105: Safari does not support the StereoPannerNode.\n if (nativeContext.createStereoPanner === undefined) {\n return createNativeStereoPannerNodeFaker(nativeContext, options);\n }\n const nativeStereoPannerNode = nativeContext.createStereoPanner();\n assignNativeAudioNodeOptions(nativeStereoPannerNode, options);\n assignNativeAudioNodeAudioParamValue(nativeStereoPannerNode, options, 'pan');\n /*\n * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari\n * which supports it and therefore it can't be supported at all.\n */\n Object.defineProperty(nativeStereoPannerNode, 'channelCountMode', {\n get: () => channelCountMode,\n set: (value) => {\n if (value !== channelCountMode) {\n throw createNotSupportedError();\n }\n }\n });\n return nativeStereoPannerNode;\n };\n};\n//# sourceMappingURL=native-stereo-panner-node-factory.js.map","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeStereoPannerNodeFactoryFactory } from '../types';\n\nexport const createNativeStereoPannerNodeFactory: TNativeStereoPannerNodeFactoryFactory = (\n createNativeStereoPannerNodeFaker,\n createNotSupportedError\n) => {\n return (nativeContext, options) => {\n const channelCountMode = options.channelCountMode;\n\n /*\n * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari\n * which supports it and therefore it can't be supported at all.\n */\n if (channelCountMode === 'clamped-max') {\n throw createNotSupportedError();\n }\n\n // Bug #105: Safari does not support the StereoPannerNode.\n if (nativeContext.createStereoPanner === undefined) {\n return createNativeStereoPannerNodeFaker(nativeContext, options);\n }\n\n const nativeStereoPannerNode = nativeContext.createStereoPanner();\n\n assignNativeAudioNodeOptions(nativeStereoPannerNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeStereoPannerNode, options, 'pan');\n\n /*\n * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari\n * which supports it and therefore it can't be supported at all.\n */\n Object.defineProperty(nativeStereoPannerNode, 'channelCountMode', {\n get: () => channelCountMode,\n set: (value) => {\n if (value !== channelCountMode) {\n throw createNotSupportedError();\n }\n }\n });\n\n return nativeStereoPannerNode;\n };\n};\n","import { interceptConnections } from '../helpers/intercept-connections';\nexport const createNativeStereoPannerNodeFakerFactory = (createNativeChannelMergerNode, createNativeChannelSplitterNode, createNativeGainNode, createNativeWaveShaperNode, createNotSupportedError, monitorConnections) => {\n // The curve has a size of 14bit plus 1 value to have an exact representation for zero. This value has been determined experimentally.\n const CURVE_SIZE = 16385;\n const DC_CURVE = new Float32Array([1, 1]);\n const HALF_PI = Math.PI / 2;\n const SINGLE_CHANNEL_OPTIONS = { channelCount: 1, channelCountMode: 'explicit', channelInterpretation: 'discrete' };\n const SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS = { ...SINGLE_CHANNEL_OPTIONS, oversample: 'none' };\n const buildInternalGraphForMono = (nativeContext, inputGainNode, panGainNode, channelMergerNode) => {\n const leftWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightWaveShaperCurve = new Float32Array(CURVE_SIZE);\n for (let i = 0; i < CURVE_SIZE; i += 1) {\n const x = (i / (CURVE_SIZE - 1)) * HALF_PI;\n leftWaveShaperCurve[i] = Math.cos(x);\n rightWaveShaperCurve[i] = Math.sin(x);\n }\n const leftGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: leftWaveShaperCurve }));\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const panWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE }));\n const rightGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: rightWaveShaperCurve }));\n return {\n connectGraph() {\n inputGainNode.connect(leftGainNode);\n inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n inputGainNode.connect(rightGainNode);\n panWaveShaperNode.connect(panGainNode);\n panGainNode.connect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]);\n panGainNode.connect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]);\n leftWaveShaperNode.connect(leftGainNode.gain);\n rightWaveShaperNode.connect(rightGainNode.gain);\n leftGainNode.connect(channelMergerNode, 0, 0);\n rightGainNode.connect(channelMergerNode, 0, 1);\n },\n disconnectGraph() {\n inputGainNode.disconnect(leftGainNode);\n inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n inputGainNode.disconnect(rightGainNode);\n panWaveShaperNode.disconnect(panGainNode);\n panGainNode.disconnect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]);\n panGainNode.disconnect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]);\n leftWaveShaperNode.disconnect(leftGainNode.gain);\n rightWaveShaperNode.disconnect(rightGainNode.gain);\n leftGainNode.disconnect(channelMergerNode, 0, 0);\n rightGainNode.disconnect(channelMergerNode, 0, 1);\n }\n };\n };\n const buildInternalGraphForStereo = (nativeContext, inputGainNode, panGainNode, channelMergerNode) => {\n const leftInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const leftInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const centerIndex = Math.floor(CURVE_SIZE / 2);\n for (let i = 0; i < CURVE_SIZE; i += 1) {\n if (i > centerIndex) {\n const x = ((i - centerIndex) / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI;\n leftInputForLeftOutputWaveShaperCurve[i] = Math.cos(x);\n leftInputForRightOutputWaveShaperCurve[i] = Math.sin(x);\n rightInputForLeftOutputWaveShaperCurve[i] = 0;\n rightInputForRightOutputWaveShaperCurve[i] = 1;\n }\n else {\n const x = (i / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI;\n leftInputForLeftOutputWaveShaperCurve[i] = 1;\n leftInputForRightOutputWaveShaperCurve[i] = 0;\n rightInputForLeftOutputWaveShaperCurve[i] = Math.cos(x);\n rightInputForRightOutputWaveShaperCurve[i] = Math.sin(x);\n }\n }\n const channelSplitterNode = createNativeChannelSplitterNode(nativeContext, {\n channelCount: 2,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: 2\n });\n const leftInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: leftInputForLeftOutputWaveShaperCurve\n });\n const leftInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: leftInputForRightOutputWaveShaperCurve\n });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const panWaveShaperNode = (createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE }));\n const rightInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: rightInputForLeftOutputWaveShaperCurve\n });\n const rightInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: rightInputForRightOutputWaveShaperCurve\n });\n return {\n connectGraph() {\n inputGainNode.connect(channelSplitterNode);\n inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n channelSplitterNode.connect(leftInputForLeftOutputGainNode, 0);\n channelSplitterNode.connect(leftInputForRightOutputGainNode, 0);\n channelSplitterNode.connect(rightInputForLeftOutputGainNode, 1);\n channelSplitterNode.connect(rightInputForRightOutputGainNode, 1);\n panWaveShaperNode.connect(panGainNode);\n panGainNode.connect(leftInputForLeftOutputWaveShaperNode.inputs === undefined\n ? leftInputForLeftOutputWaveShaperNode\n : leftInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.connect(leftInputForRightOutputWaveShaperNode.inputs === undefined\n ? leftInputForRightOutputWaveShaperNode\n : leftInputForRightOutputWaveShaperNode.inputs[0]);\n panGainNode.connect(rightInputForLeftOutputWaveShaperNode.inputs === undefined\n ? rightInputForLeftOutputWaveShaperNode\n : rightInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.connect(rightInputForRightOutputWaveShaperNode.inputs === undefined\n ? rightInputForRightOutputWaveShaperNode\n : rightInputForRightOutputWaveShaperNode.inputs[0]);\n leftInputForLeftOutputWaveShaperNode.connect(leftInputForLeftOutputGainNode.gain);\n leftInputForRightOutputWaveShaperNode.connect(leftInputForRightOutputGainNode.gain);\n rightInputForLeftOutputWaveShaperNode.connect(rightInputForLeftOutputGainNode.gain);\n rightInputForRightOutputWaveShaperNode.connect(rightInputForRightOutputGainNode.gain);\n leftInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0);\n rightInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0);\n leftInputForRightOutputGainNode.connect(channelMergerNode, 0, 1);\n rightInputForRightOutputGainNode.connect(channelMergerNode, 0, 1);\n },\n disconnectGraph() {\n inputGainNode.disconnect(channelSplitterNode);\n inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n channelSplitterNode.disconnect(leftInputForLeftOutputGainNode, 0);\n channelSplitterNode.disconnect(leftInputForRightOutputGainNode, 0);\n channelSplitterNode.disconnect(rightInputForLeftOutputGainNode, 1);\n channelSplitterNode.disconnect(rightInputForRightOutputGainNode, 1);\n panWaveShaperNode.disconnect(panGainNode);\n panGainNode.disconnect(leftInputForLeftOutputWaveShaperNode.inputs === undefined\n ? leftInputForLeftOutputWaveShaperNode\n : leftInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.disconnect(leftInputForRightOutputWaveShaperNode.inputs === undefined\n ? leftInputForRightOutputWaveShaperNode\n : leftInputForRightOutputWaveShaperNode.inputs[0]);\n panGainNode.disconnect(rightInputForLeftOutputWaveShaperNode.inputs === undefined\n ? rightInputForLeftOutputWaveShaperNode\n : rightInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.disconnect(rightInputForRightOutputWaveShaperNode.inputs === undefined\n ? rightInputForRightOutputWaveShaperNode\n : rightInputForRightOutputWaveShaperNode.inputs[0]);\n leftInputForLeftOutputWaveShaperNode.disconnect(leftInputForLeftOutputGainNode.gain);\n leftInputForRightOutputWaveShaperNode.disconnect(leftInputForRightOutputGainNode.gain);\n rightInputForLeftOutputWaveShaperNode.disconnect(rightInputForLeftOutputGainNode.gain);\n rightInputForRightOutputWaveShaperNode.disconnect(rightInputForRightOutputGainNode.gain);\n leftInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0);\n rightInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0);\n leftInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1);\n rightInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1);\n }\n };\n };\n const buildInternalGraph = (nativeContext, channelCount, inputGainNode, panGainNode, channelMergerNode) => {\n if (channelCount === 1) {\n return buildInternalGraphForMono(nativeContext, inputGainNode, panGainNode, channelMergerNode);\n }\n if (channelCount === 2) {\n return buildInternalGraphForStereo(nativeContext, inputGainNode, panGainNode, channelMergerNode);\n }\n throw createNotSupportedError();\n };\n return (nativeContext, { channelCount, channelCountMode, pan, ...audioNodeOptions }) => {\n if (channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n ...audioNodeOptions,\n channelCount: 1,\n channelCountMode,\n numberOfInputs: 2\n });\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, channelCount, channelCountMode, gain: 1 });\n const panGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: pan\n });\n let { connectGraph, disconnectGraph } = buildInternalGraph(nativeContext, channelCount, inputGainNode, panGainNode, channelMergerNode);\n Object.defineProperty(panGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(panGainNode.gain, 'maxValue', { get: () => 1 });\n Object.defineProperty(panGainNode.gain, 'minValue', { get: () => -1 });\n const nativeStereoPannerNodeFakerFactory = {\n get bufferSize() {\n return undefined;\n },\n get channelCount() {\n return inputGainNode.channelCount;\n },\n set channelCount(value) {\n if (inputGainNode.channelCount !== value) {\n if (isConnected) {\n disconnectGraph();\n }\n ({ connectGraph, disconnectGraph } = buildInternalGraph(nativeContext, value, inputGainNode, panGainNode, channelMergerNode));\n if (isConnected) {\n connectGraph();\n }\n }\n inputGainNode.channelCount = value;\n },\n get channelCountMode() {\n return inputGainNode.channelCountMode;\n },\n set channelCountMode(value) {\n if (value === 'clamped-max' || value === 'max') {\n throw createNotSupportedError();\n }\n inputGainNode.channelCountMode = value;\n },\n get channelInterpretation() {\n return inputGainNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n },\n get context() {\n return inputGainNode.context;\n },\n get inputs() {\n return [inputGainNode];\n },\n get numberOfInputs() {\n return inputGainNode.numberOfInputs;\n },\n get numberOfOutputs() {\n return inputGainNode.numberOfOutputs;\n },\n get pan() {\n return panGainNode.gain;\n },\n addEventListener(...args) {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args) {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n let isConnected = false;\n const whenConnected = () => {\n connectGraph();\n isConnected = true;\n };\n const whenDisconnected = () => {\n disconnectGraph();\n isConnected = false;\n };\n return monitorConnections(interceptConnections(nativeStereoPannerNodeFakerFactory, channelMergerNode), whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-stereo-panner-node-faker-factory.js.map","import { interceptConnections } from '../helpers/intercept-connections';\nimport { INativeWaveShaperNodeFaker } from '../interfaces';\nimport {\n TNativeAudioNode,\n TNativeChannelMergerNode,\n TNativeContext,\n TNativeGainNode,\n TNativeStereoPannerNode,\n TNativeStereoPannerNodeFakerFactoryFactory\n} from '../types';\n\nexport const createNativeStereoPannerNodeFakerFactory: TNativeStereoPannerNodeFakerFactoryFactory = (\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeGainNode,\n createNativeWaveShaperNode,\n createNotSupportedError,\n monitorConnections\n) => {\n // The curve has a size of 14bit plus 1 value to have an exact representation for zero. This value has been determined experimentally.\n const CURVE_SIZE = 16385;\n const DC_CURVE = new Float32Array([1, 1]);\n const HALF_PI = Math.PI / 2;\n const SINGLE_CHANNEL_OPTIONS = { channelCount: 1, channelCountMode: 'explicit', channelInterpretation: 'discrete' } as const;\n const SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS = { ...SINGLE_CHANNEL_OPTIONS, oversample: 'none' } as const;\n\n const buildInternalGraphForMono = (\n nativeContext: TNativeContext,\n inputGainNode: TNativeGainNode,\n panGainNode: TNativeGainNode,\n channelMergerNode: TNativeChannelMergerNode\n ) => {\n const leftWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightWaveShaperCurve = new Float32Array(CURVE_SIZE);\n\n for (let i = 0; i < CURVE_SIZE; i += 1) {\n const x = (i / (CURVE_SIZE - 1)) * HALF_PI;\n\n leftWaveShaperCurve[i] = Math.cos(x);\n rightWaveShaperCurve[i] = Math.sin(x);\n }\n\n const leftGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftWaveShaperNode = (\n createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: leftWaveShaperCurve })\n );\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const panWaveShaperNode = (\n createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE })\n );\n const rightGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightWaveShaperNode = (\n createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: rightWaveShaperCurve })\n );\n\n return {\n connectGraph(): void {\n inputGainNode.connect(leftGainNode);\n inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n inputGainNode.connect(rightGainNode);\n\n panWaveShaperNode.connect(panGainNode);\n\n panGainNode.connect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]);\n panGainNode.connect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]);\n\n leftWaveShaperNode.connect(leftGainNode.gain);\n rightWaveShaperNode.connect(rightGainNode.gain);\n\n leftGainNode.connect(channelMergerNode, 0, 0);\n rightGainNode.connect(channelMergerNode, 0, 1);\n },\n disconnectGraph(): void {\n inputGainNode.disconnect(leftGainNode);\n inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n inputGainNode.disconnect(rightGainNode);\n\n panWaveShaperNode.disconnect(panGainNode);\n\n panGainNode.disconnect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]);\n panGainNode.disconnect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]);\n\n leftWaveShaperNode.disconnect(leftGainNode.gain);\n rightWaveShaperNode.disconnect(rightGainNode.gain);\n\n leftGainNode.disconnect(channelMergerNode, 0, 0);\n rightGainNode.disconnect(channelMergerNode, 0, 1);\n }\n };\n };\n\n const buildInternalGraphForStereo = (\n nativeContext: TNativeContext,\n inputGainNode: TNativeGainNode,\n panGainNode: TNativeGainNode,\n channelMergerNode: TNativeChannelMergerNode\n ) => {\n const leftInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const leftInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n\n const centerIndex = Math.floor(CURVE_SIZE / 2);\n\n for (let i = 0; i < CURVE_SIZE; i += 1) {\n if (i > centerIndex) {\n const x = ((i - centerIndex) / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI;\n\n leftInputForLeftOutputWaveShaperCurve[i] = Math.cos(x);\n leftInputForRightOutputWaveShaperCurve[i] = Math.sin(x);\n rightInputForLeftOutputWaveShaperCurve[i] = 0;\n rightInputForRightOutputWaveShaperCurve[i] = 1;\n } else {\n const x = (i / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI;\n\n leftInputForLeftOutputWaveShaperCurve[i] = 1;\n leftInputForRightOutputWaveShaperCurve[i] = 0;\n rightInputForLeftOutputWaveShaperCurve[i] = Math.cos(x);\n rightInputForRightOutputWaveShaperCurve[i] = Math.sin(x);\n }\n }\n\n const channelSplitterNode = createNativeChannelSplitterNode(nativeContext, {\n channelCount: 2,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: 2\n });\n const leftInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: leftInputForLeftOutputWaveShaperCurve\n });\n const leftInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: leftInputForRightOutputWaveShaperCurve\n });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const panWaveShaperNode = (\n createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE })\n );\n const rightInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: rightInputForLeftOutputWaveShaperCurve\n });\n const rightInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: rightInputForRightOutputWaveShaperCurve\n });\n\n return {\n connectGraph(): void {\n inputGainNode.connect(channelSplitterNode);\n inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n\n channelSplitterNode.connect(leftInputForLeftOutputGainNode, 0);\n channelSplitterNode.connect(leftInputForRightOutputGainNode, 0);\n channelSplitterNode.connect(rightInputForLeftOutputGainNode, 1);\n channelSplitterNode.connect(rightInputForRightOutputGainNode, 1);\n\n panWaveShaperNode.connect(panGainNode);\n\n panGainNode.connect(\n leftInputForLeftOutputWaveShaperNode.inputs === undefined\n ? leftInputForLeftOutputWaveShaperNode\n : leftInputForLeftOutputWaveShaperNode.inputs[0]\n );\n panGainNode.connect(\n leftInputForRightOutputWaveShaperNode.inputs === undefined\n ? leftInputForRightOutputWaveShaperNode\n : leftInputForRightOutputWaveShaperNode.inputs[0]\n );\n panGainNode.connect(\n rightInputForLeftOutputWaveShaperNode.inputs === undefined\n ? rightInputForLeftOutputWaveShaperNode\n : rightInputForLeftOutputWaveShaperNode.inputs[0]\n );\n panGainNode.connect(\n rightInputForRightOutputWaveShaperNode.inputs === undefined\n ? rightInputForRightOutputWaveShaperNode\n : rightInputForRightOutputWaveShaperNode.inputs[0]\n );\n\n leftInputForLeftOutputWaveShaperNode.connect(leftInputForLeftOutputGainNode.gain);\n leftInputForRightOutputWaveShaperNode.connect(leftInputForRightOutputGainNode.gain);\n rightInputForLeftOutputWaveShaperNode.connect(rightInputForLeftOutputGainNode.gain);\n rightInputForRightOutputWaveShaperNode.connect(rightInputForRightOutputGainNode.gain);\n\n leftInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0);\n rightInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0);\n\n leftInputForRightOutputGainNode.connect(channelMergerNode, 0, 1);\n rightInputForRightOutputGainNode.connect(channelMergerNode, 0, 1);\n },\n disconnectGraph(): void {\n inputGainNode.disconnect(channelSplitterNode);\n inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n\n channelSplitterNode.disconnect(leftInputForLeftOutputGainNode, 0);\n channelSplitterNode.disconnect(leftInputForRightOutputGainNode, 0);\n channelSplitterNode.disconnect(rightInputForLeftOutputGainNode, 1);\n channelSplitterNode.disconnect(rightInputForRightOutputGainNode, 1);\n\n panWaveShaperNode.disconnect(panGainNode);\n\n panGainNode.disconnect(\n leftInputForLeftOutputWaveShaperNode.inputs === undefined\n ? leftInputForLeftOutputWaveShaperNode\n : leftInputForLeftOutputWaveShaperNode.inputs[0]\n );\n panGainNode.disconnect(\n leftInputForRightOutputWaveShaperNode.inputs === undefined\n ? leftInputForRightOutputWaveShaperNode\n : leftInputForRightOutputWaveShaperNode.inputs[0]\n );\n panGainNode.disconnect(\n rightInputForLeftOutputWaveShaperNode.inputs === undefined\n ? rightInputForLeftOutputWaveShaperNode\n : rightInputForLeftOutputWaveShaperNode.inputs[0]\n );\n panGainNode.disconnect(\n rightInputForRightOutputWaveShaperNode.inputs === undefined\n ? rightInputForRightOutputWaveShaperNode\n : rightInputForRightOutputWaveShaperNode.inputs[0]\n );\n\n leftInputForLeftOutputWaveShaperNode.disconnect(leftInputForLeftOutputGainNode.gain);\n leftInputForRightOutputWaveShaperNode.disconnect(leftInputForRightOutputGainNode.gain);\n rightInputForLeftOutputWaveShaperNode.disconnect(rightInputForLeftOutputGainNode.gain);\n rightInputForRightOutputWaveShaperNode.disconnect(rightInputForRightOutputGainNode.gain);\n\n leftInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0);\n rightInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0);\n\n leftInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1);\n rightInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1);\n }\n };\n };\n\n const buildInternalGraph = (\n nativeContext: TNativeContext,\n channelCount: number,\n inputGainNode: TNativeGainNode,\n panGainNode: TNativeGainNode,\n channelMergerNode: TNativeChannelMergerNode\n ) => {\n if (channelCount === 1) {\n return buildInternalGraphForMono(nativeContext, inputGainNode, panGainNode, channelMergerNode);\n }\n\n if (channelCount === 2) {\n return buildInternalGraphForStereo(nativeContext, inputGainNode, panGainNode, channelMergerNode);\n }\n\n throw createNotSupportedError();\n };\n\n return (nativeContext, { channelCount, channelCountMode, pan, ...audioNodeOptions }) => {\n if (channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n ...audioNodeOptions,\n channelCount: 1,\n channelCountMode,\n numberOfInputs: 2\n });\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, channelCount, channelCountMode, gain: 1 });\n const panGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: pan\n });\n\n let { connectGraph, disconnectGraph } = buildInternalGraph(\n nativeContext,\n channelCount,\n inputGainNode,\n panGainNode,\n channelMergerNode\n );\n\n Object.defineProperty(panGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(panGainNode.gain, 'maxValue', { get: () => 1 });\n Object.defineProperty(panGainNode.gain, 'minValue', { get: () => -1 });\n\n const nativeStereoPannerNodeFakerFactory = {\n get bufferSize(): undefined {\n return undefined;\n },\n get channelCount(): number {\n return inputGainNode.channelCount;\n },\n set channelCount(value) {\n if (inputGainNode.channelCount !== value) {\n if (isConnected) {\n disconnectGraph();\n }\n\n ({ connectGraph, disconnectGraph } = buildInternalGraph(\n nativeContext,\n value,\n inputGainNode,\n panGainNode,\n channelMergerNode\n ));\n\n if (isConnected) {\n connectGraph();\n }\n }\n\n inputGainNode.channelCount = value;\n },\n get channelCountMode(): TNativeStereoPannerNode['channelCountMode'] {\n return inputGainNode.channelCountMode;\n },\n set channelCountMode(value) {\n if (value === 'clamped-max' || value === 'max') {\n throw createNotSupportedError();\n }\n\n inputGainNode.channelCountMode = value;\n },\n get channelInterpretation(): TNativeStereoPannerNode['channelInterpretation'] {\n return inputGainNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n },\n get context(): TNativeStereoPannerNode['context'] {\n return inputGainNode.context;\n },\n get inputs(): TNativeAudioNode[] {\n return [inputGainNode];\n },\n get numberOfInputs(): number {\n return inputGainNode.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return inputGainNode.numberOfOutputs;\n },\n get pan(): TNativeStereoPannerNode['pan'] {\n return panGainNode.gain;\n },\n addEventListener(...args: any[]): void {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args: any[]): boolean {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args: any[]): void {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n\n let isConnected = false;\n\n const whenConnected = () => {\n connectGraph();\n\n isConnected = true;\n };\n const whenDisconnected = () => {\n disconnectGraph();\n\n isConnected = false;\n };\n\n return monitorConnections(\n interceptConnections(nativeStereoPannerNodeFakerFactory, channelMergerNode),\n whenConnected,\n whenDisconnected\n );\n };\n};\n","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nexport const createNativeWaveShaperNodeFactory = (createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeWaveShaperNodeFaker, isDCCurve, monitorConnections, nativeAudioContextConstructor, overwriteAccessors) => {\n return (nativeContext, options) => {\n const nativeWaveShaperNode = nativeContext.createWaveShaper();\n /*\n * Bug #119: Safari does not correctly map the values.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of\n * the webkitAudioContext is used as a workaround here. Testing for the automationRate property is necessary because this workaround\n * isn't necessary anymore since v14.0.2 of Safari.\n */\n if (nativeAudioContextConstructor !== null &&\n nativeAudioContextConstructor.name === 'webkitAudioContext' &&\n nativeContext.createGain().gain.automationRate === undefined) {\n return createNativeWaveShaperNodeFaker(nativeContext, options);\n }\n assignNativeAudioNodeOptions(nativeWaveShaperNode, options);\n const curve = options.curve === null || options.curve instanceof Float32Array ? options.curve : new Float32Array(options.curve);\n // Bug #104: Chrome, Edge and Opera will throw an InvalidAccessError when the curve has less than two samples.\n if (curve !== null && curve.length < 2) {\n throw createInvalidStateError();\n }\n // Only values of type Float32Array can be assigned to the curve property.\n assignNativeAudioNodeOption(nativeWaveShaperNode, { curve }, 'curve');\n assignNativeAudioNodeOption(nativeWaveShaperNode, options, 'oversample');\n let disconnectNativeAudioBufferSourceNode = null;\n let isConnected = false;\n overwriteAccessors(nativeWaveShaperNode, 'curve', (get) => () => get.call(nativeWaveShaperNode), (set) => (value) => {\n set.call(nativeWaveShaperNode, value);\n if (isConnected) {\n if (isDCCurve(value) && disconnectNativeAudioBufferSourceNode === null) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, nativeWaveShaperNode);\n }\n else if (!isDCCurve(value) && disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n }\n return value;\n });\n const whenConnected = () => {\n isConnected = true;\n if (isDCCurve(nativeWaveShaperNode.curve)) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, nativeWaveShaperNode);\n }\n };\n const whenDisconnected = () => {\n isConnected = false;\n if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n };\n return monitorConnections(nativeWaveShaperNode, whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-wave-shaper-node-factory.js.map","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeWaveShaperNodeFactoryFactory } from '../types';\n\nexport const createNativeWaveShaperNodeFactory: TNativeWaveShaperNodeFactoryFactory = (\n createConnectedNativeAudioBufferSourceNode,\n createInvalidStateError,\n createNativeWaveShaperNodeFaker,\n isDCCurve,\n monitorConnections,\n nativeAudioContextConstructor,\n overwriteAccessors\n) => {\n return (nativeContext, options) => {\n const nativeWaveShaperNode = nativeContext.createWaveShaper();\n\n /*\n * Bug #119: Safari does not correctly map the values.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of\n * the webkitAudioContext is used as a workaround here. Testing for the automationRate property is necessary because this workaround\n * isn't necessary anymore since v14.0.2 of Safari.\n */\n if (\n nativeAudioContextConstructor !== null &&\n nativeAudioContextConstructor.name === 'webkitAudioContext' &&\n nativeContext.createGain().gain.automationRate === undefined\n ) {\n return createNativeWaveShaperNodeFaker(nativeContext, options);\n }\n\n assignNativeAudioNodeOptions(nativeWaveShaperNode, options);\n\n const curve = options.curve === null || options.curve instanceof Float32Array ? options.curve : new Float32Array(options.curve);\n\n // Bug #104: Chrome, Edge and Opera will throw an InvalidAccessError when the curve has less than two samples.\n if (curve !== null && curve.length < 2) {\n throw createInvalidStateError();\n }\n\n // Only values of type Float32Array can be assigned to the curve property.\n assignNativeAudioNodeOption(nativeWaveShaperNode, { curve }, 'curve');\n assignNativeAudioNodeOption(nativeWaveShaperNode, options, 'oversample');\n\n let disconnectNativeAudioBufferSourceNode: null | (() => void) = null;\n let isConnected = false;\n\n overwriteAccessors(\n nativeWaveShaperNode,\n 'curve',\n (get) => () => get.call(nativeWaveShaperNode),\n (set) => (value) => {\n set.call(nativeWaveShaperNode, value);\n\n if (isConnected) {\n if (isDCCurve(value) && disconnectNativeAudioBufferSourceNode === null) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(\n nativeContext,\n nativeWaveShaperNode\n );\n } else if (!isDCCurve(value) && disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n }\n\n return value;\n }\n );\n\n const whenConnected = () => {\n isConnected = true;\n\n if (isDCCurve(nativeWaveShaperNode.curve)) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, nativeWaveShaperNode);\n }\n };\n const whenDisconnected = () => {\n isConnected = false;\n\n if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n };\n\n return monitorConnections(nativeWaveShaperNode, whenConnected, whenDisconnected);\n };\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { interceptConnections } from '../helpers/intercept-connections';\nexport const createNativeWaveShaperNodeFakerFactory = (createConnectedNativeAudioBufferSourceNode, createInvalidStateError, createNativeGainNode, isDCCurve, monitorConnections) => {\n return (nativeContext, { curve, oversample, ...audioNodeOptions }) => {\n const negativeWaveShaperNode = nativeContext.createWaveShaper();\n const positiveWaveShaperNode = nativeContext.createWaveShaper();\n assignNativeAudioNodeOptions(negativeWaveShaperNode, audioNodeOptions);\n assignNativeAudioNodeOptions(positiveWaveShaperNode, audioNodeOptions);\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const invertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 });\n const outputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const revertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 });\n let disconnectNativeAudioBufferSourceNode = null;\n let isConnected = false;\n let unmodifiedCurve = null;\n const nativeWaveShaperNodeFaker = {\n get bufferSize() {\n return undefined;\n },\n get channelCount() {\n return negativeWaveShaperNode.channelCount;\n },\n set channelCount(value) {\n inputGainNode.channelCount = value;\n invertGainNode.channelCount = value;\n negativeWaveShaperNode.channelCount = value;\n outputGainNode.channelCount = value;\n positiveWaveShaperNode.channelCount = value;\n revertGainNode.channelCount = value;\n },\n get channelCountMode() {\n return negativeWaveShaperNode.channelCountMode;\n },\n set channelCountMode(value) {\n inputGainNode.channelCountMode = value;\n invertGainNode.channelCountMode = value;\n negativeWaveShaperNode.channelCountMode = value;\n outputGainNode.channelCountMode = value;\n positiveWaveShaperNode.channelCountMode = value;\n revertGainNode.channelCountMode = value;\n },\n get channelInterpretation() {\n return negativeWaveShaperNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n invertGainNode.channelInterpretation = value;\n negativeWaveShaperNode.channelInterpretation = value;\n outputGainNode.channelInterpretation = value;\n positiveWaveShaperNode.channelInterpretation = value;\n revertGainNode.channelInterpretation = value;\n },\n get context() {\n return negativeWaveShaperNode.context;\n },\n get curve() {\n return unmodifiedCurve;\n },\n set curve(value) {\n // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples.\n if (value !== null && value.length < 2) {\n throw createInvalidStateError();\n }\n if (value === null) {\n negativeWaveShaperNode.curve = value;\n positiveWaveShaperNode.curve = value;\n }\n else {\n const curveLength = value.length;\n const negativeCurve = new Float32Array(curveLength + 2 - (curveLength % 2));\n const positiveCurve = new Float32Array(curveLength + 2 - (curveLength % 2));\n negativeCurve[0] = value[0];\n positiveCurve[0] = -value[curveLength - 1];\n const length = Math.ceil((curveLength + 1) / 2);\n const centerIndex = (curveLength + 1) / 2 - 1;\n for (let i = 1; i < length; i += 1) {\n const theoreticIndex = (i / length) * centerIndex;\n const lowerIndex = Math.floor(theoreticIndex);\n const upperIndex = Math.ceil(theoreticIndex);\n negativeCurve[i] =\n lowerIndex === upperIndex\n ? value[lowerIndex]\n : (1 - (theoreticIndex - lowerIndex)) * value[lowerIndex] +\n (1 - (upperIndex - theoreticIndex)) * value[upperIndex];\n positiveCurve[i] =\n lowerIndex === upperIndex\n ? -value[curveLength - 1 - lowerIndex]\n : -((1 - (theoreticIndex - lowerIndex)) * value[curveLength - 1 - lowerIndex]) -\n (1 - (upperIndex - theoreticIndex)) * value[curveLength - 1 - upperIndex];\n }\n negativeCurve[length] = curveLength % 2 === 1 ? value[length - 1] : (value[length - 2] + value[length - 1]) / 2;\n negativeWaveShaperNode.curve = negativeCurve;\n positiveWaveShaperNode.curve = positiveCurve;\n }\n unmodifiedCurve = value;\n if (isConnected) {\n if (isDCCurve(unmodifiedCurve) && disconnectNativeAudioBufferSourceNode === null) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode);\n }\n else if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n }\n },\n get inputs() {\n return [inputGainNode];\n },\n get numberOfInputs() {\n return negativeWaveShaperNode.numberOfInputs;\n },\n get numberOfOutputs() {\n return negativeWaveShaperNode.numberOfOutputs;\n },\n get oversample() {\n return negativeWaveShaperNode.oversample;\n },\n set oversample(value) {\n negativeWaveShaperNode.oversample = value;\n positiveWaveShaperNode.oversample = value;\n },\n addEventListener(...args) {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args) {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args) {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n if (curve !== null) {\n // Only values of type Float32Array can be assigned to the curve property.\n nativeWaveShaperNodeFaker.curve = curve instanceof Float32Array ? curve : new Float32Array(curve);\n }\n if (oversample !== nativeWaveShaperNodeFaker.oversample) {\n nativeWaveShaperNodeFaker.oversample = oversample;\n }\n const whenConnected = () => {\n inputGainNode.connect(negativeWaveShaperNode).connect(outputGainNode);\n inputGainNode.connect(invertGainNode).connect(positiveWaveShaperNode).connect(revertGainNode).connect(outputGainNode);\n isConnected = true;\n if (isDCCurve(unmodifiedCurve)) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode);\n }\n };\n const whenDisconnected = () => {\n inputGainNode.disconnect(negativeWaveShaperNode);\n negativeWaveShaperNode.disconnect(outputGainNode);\n inputGainNode.disconnect(invertGainNode);\n invertGainNode.disconnect(positiveWaveShaperNode);\n positiveWaveShaperNode.disconnect(revertGainNode);\n revertGainNode.disconnect(outputGainNode);\n isConnected = false;\n if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n };\n return monitorConnections(interceptConnections(nativeWaveShaperNodeFaker, outputGainNode), whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=native-wave-shaper-node-faker-factory.js.map","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { interceptConnections } from '../helpers/intercept-connections';\nimport { TNativeAudioNode, TNativeWaveShaperNode, TNativeWaveShaperNodeFakerFactoryFactory } from '../types';\n\nexport const createNativeWaveShaperNodeFakerFactory: TNativeWaveShaperNodeFakerFactoryFactory = (\n createConnectedNativeAudioBufferSourceNode,\n createInvalidStateError,\n createNativeGainNode,\n isDCCurve,\n monitorConnections\n) => {\n return (nativeContext, { curve, oversample, ...audioNodeOptions }) => {\n const negativeWaveShaperNode = nativeContext.createWaveShaper();\n const positiveWaveShaperNode = nativeContext.createWaveShaper();\n\n assignNativeAudioNodeOptions(negativeWaveShaperNode, audioNodeOptions);\n assignNativeAudioNodeOptions(positiveWaveShaperNode, audioNodeOptions);\n\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const invertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 });\n const outputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const revertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 });\n\n let disconnectNativeAudioBufferSourceNode: null | (() => void) = null;\n let isConnected = false;\n let unmodifiedCurve: null | TNativeWaveShaperNode['curve'] = null;\n\n const nativeWaveShaperNodeFaker = {\n get bufferSize(): undefined {\n return undefined;\n },\n get channelCount(): number {\n return negativeWaveShaperNode.channelCount;\n },\n set channelCount(value) {\n inputGainNode.channelCount = value;\n invertGainNode.channelCount = value;\n negativeWaveShaperNode.channelCount = value;\n outputGainNode.channelCount = value;\n positiveWaveShaperNode.channelCount = value;\n revertGainNode.channelCount = value;\n },\n get channelCountMode(): TNativeWaveShaperNode['channelCountMode'] {\n return negativeWaveShaperNode.channelCountMode;\n },\n set channelCountMode(value) {\n inputGainNode.channelCountMode = value;\n invertGainNode.channelCountMode = value;\n negativeWaveShaperNode.channelCountMode = value;\n outputGainNode.channelCountMode = value;\n positiveWaveShaperNode.channelCountMode = value;\n revertGainNode.channelCountMode = value;\n },\n get channelInterpretation(): TNativeWaveShaperNode['channelInterpretation'] {\n return negativeWaveShaperNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n invertGainNode.channelInterpretation = value;\n negativeWaveShaperNode.channelInterpretation = value;\n outputGainNode.channelInterpretation = value;\n positiveWaveShaperNode.channelInterpretation = value;\n revertGainNode.channelInterpretation = value;\n },\n get context(): TNativeWaveShaperNode['context'] {\n return negativeWaveShaperNode.context;\n },\n get curve(): TNativeWaveShaperNode['curve'] {\n return unmodifiedCurve;\n },\n set curve(value) {\n // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples.\n if (value !== null && value.length < 2) {\n throw createInvalidStateError();\n }\n\n if (value === null) {\n negativeWaveShaperNode.curve = value;\n positiveWaveShaperNode.curve = value;\n } else {\n const curveLength = value.length;\n\n const negativeCurve = new Float32Array(curveLength + 2 - (curveLength % 2));\n const positiveCurve = new Float32Array(curveLength + 2 - (curveLength % 2));\n\n negativeCurve[0] = value[0];\n positiveCurve[0] = -value[curveLength - 1];\n\n const length = Math.ceil((curveLength + 1) / 2);\n const centerIndex = (curveLength + 1) / 2 - 1;\n\n for (let i = 1; i < length; i += 1) {\n const theoreticIndex = (i / length) * centerIndex;\n\n const lowerIndex = Math.floor(theoreticIndex);\n const upperIndex = Math.ceil(theoreticIndex);\n\n negativeCurve[i] =\n lowerIndex === upperIndex\n ? value[lowerIndex]\n : (1 - (theoreticIndex - lowerIndex)) * value[lowerIndex] +\n (1 - (upperIndex - theoreticIndex)) * value[upperIndex];\n positiveCurve[i] =\n lowerIndex === upperIndex\n ? -value[curveLength - 1 - lowerIndex]\n : -((1 - (theoreticIndex - lowerIndex)) * value[curveLength - 1 - lowerIndex]) -\n (1 - (upperIndex - theoreticIndex)) * value[curveLength - 1 - upperIndex];\n }\n\n negativeCurve[length] = curveLength % 2 === 1 ? value[length - 1] : (value[length - 2] + value[length - 1]) / 2;\n\n negativeWaveShaperNode.curve = negativeCurve;\n positiveWaveShaperNode.curve = positiveCurve;\n }\n\n unmodifiedCurve = value;\n\n if (isConnected) {\n if (isDCCurve(unmodifiedCurve) && disconnectNativeAudioBufferSourceNode === null) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode);\n } else if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n }\n },\n get inputs(): TNativeAudioNode[] {\n return [inputGainNode];\n },\n get numberOfInputs(): number {\n return negativeWaveShaperNode.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return negativeWaveShaperNode.numberOfOutputs;\n },\n get oversample(): TNativeWaveShaperNode['oversample'] {\n return negativeWaveShaperNode.oversample;\n },\n set oversample(value) {\n negativeWaveShaperNode.oversample = value;\n positiveWaveShaperNode.oversample = value;\n },\n addEventListener(...args: any[]): void {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args: any[]): boolean {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args: any[]): void {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n\n if (curve !== null) {\n // Only values of type Float32Array can be assigned to the curve property.\n nativeWaveShaperNodeFaker.curve = curve instanceof Float32Array ? curve : new Float32Array(curve);\n }\n\n if (oversample !== nativeWaveShaperNodeFaker.oversample) {\n nativeWaveShaperNodeFaker.oversample = oversample;\n }\n\n const whenConnected = () => {\n inputGainNode.connect(negativeWaveShaperNode).connect(outputGainNode);\n\n inputGainNode.connect(invertGainNode).connect(positiveWaveShaperNode).connect(revertGainNode).connect(outputGainNode);\n\n isConnected = true;\n\n if (isDCCurve(unmodifiedCurve)) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode);\n }\n };\n const whenDisconnected = () => {\n inputGainNode.disconnect(negativeWaveShaperNode);\n negativeWaveShaperNode.disconnect(outputGainNode);\n\n inputGainNode.disconnect(invertGainNode);\n invertGainNode.disconnect(positiveWaveShaperNode);\n positiveWaveShaperNode.disconnect(revertGainNode);\n revertGainNode.disconnect(outputGainNode);\n\n isConnected = false;\n\n if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n };\n\n return monitorConnections(interceptConnections(nativeWaveShaperNodeFaker, outputGainNode), whenConnected, whenDisconnected);\n };\n};\n","export const createNotSupportedError = () => new DOMException('', 'NotSupportedError');\n//# sourceMappingURL=not-supported-error.js.map","import { TNotSupportedErrorFactory } from '../types';\n\nexport const createNotSupportedError: TNotSupportedErrorFactory = () => new DOMException('', 'NotSupportedError');\n","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { testPromiseSupport } from '../helpers/test-promise-support';\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n};\nexport const createOfflineAudioContextConstructor = (baseAudioContextConstructor, cacheTestResult, createInvalidStateError, createNativeOfflineAudioContext, startRendering) => {\n return class OfflineAudioContext extends baseAudioContextConstructor {\n constructor(a, b, c) {\n let options;\n if (typeof a === 'number' && b !== undefined && c !== undefined) {\n options = { length: b, numberOfChannels: a, sampleRate: c };\n }\n else if (typeof a === 'object') {\n options = a;\n }\n else {\n throw new Error('The given parameters are not valid.');\n }\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n const nativeOfflineAudioContext = createNativeOfflineAudioContext(numberOfChannels, length, sampleRate);\n // #21 Safari does not support promises and therefore would fire the statechange event before the promise can be resolved.\n if (!cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n nativeOfflineAudioContext.addEventListener('statechange', (() => {\n let i = 0;\n const delayStateChangeEvent = (event) => {\n if (this._state === 'running') {\n if (i > 0) {\n nativeOfflineAudioContext.removeEventListener('statechange', delayStateChangeEvent);\n event.stopImmediatePropagation();\n this._waitForThePromiseToSettle(event);\n }\n else {\n i += 1;\n }\n }\n };\n return delayStateChangeEvent;\n })());\n }\n super(nativeOfflineAudioContext, numberOfChannels);\n this._length = length;\n this._nativeOfflineAudioContext = nativeOfflineAudioContext;\n this._state = null;\n }\n get length() {\n // Bug #17: Safari does not yet expose the length.\n if (this._nativeOfflineAudioContext.length === undefined) {\n return this._length;\n }\n return this._nativeOfflineAudioContext.length;\n }\n get state() {\n return this._state === null ? this._nativeOfflineAudioContext.state : this._state;\n }\n startRendering() {\n /*\n * Bug #9 & #59: It is theoretically possible that startRendering() will first render a partialOfflineAudioContext. Therefore\n * the state of the nativeOfflineAudioContext might no transition to running immediately.\n */\n if (this._state === 'running') {\n return Promise.reject(createInvalidStateError());\n }\n this._state = 'running';\n return startRendering(this.destination, this._nativeOfflineAudioContext).finally(() => {\n this._state = null;\n deactivateAudioGraph(this);\n });\n }\n _waitForThePromiseToSettle(event) {\n if (this._state === null) {\n this._nativeOfflineAudioContext.dispatchEvent(event);\n }\n else {\n setTimeout(() => this._waitForThePromiseToSettle(event));\n }\n }\n };\n};\n//# sourceMappingURL=offline-audio-context-constructor.js.map","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { testPromiseSupport } from '../helpers/test-promise-support';\nimport { IAudioBuffer, IOfflineAudioContext, IOfflineAudioContextOptions } from '../interfaces';\nimport { TAudioContextState, TNativeOfflineAudioContext, TOfflineAudioContextConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n} as const;\n\nexport const createOfflineAudioContextConstructor: TOfflineAudioContextConstructorFactory = (\n baseAudioContextConstructor,\n cacheTestResult,\n createInvalidStateError,\n createNativeOfflineAudioContext,\n startRendering\n) => {\n return class OfflineAudioContext extends baseAudioContextConstructor implements IOfflineAudioContext {\n private _length: number;\n\n private _nativeOfflineAudioContext: TNativeOfflineAudioContext;\n\n private _state: null | TAudioContextState;\n\n constructor(options: IOfflineAudioContextOptions);\n constructor(numberOfChannels: number, length: number, sampleRate: number);\n constructor(a: number | IOfflineAudioContextOptions, b?: number, c?: number) {\n let options: IOfflineAudioContextOptions;\n\n if (typeof a === 'number' && b !== undefined && c !== undefined) {\n options = { length: b, numberOfChannels: a, sampleRate: c };\n } else if (typeof a === 'object') {\n options = a;\n } else {\n throw new Error('The given parameters are not valid.');\n }\n\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n\n const nativeOfflineAudioContext = createNativeOfflineAudioContext(numberOfChannels, length, sampleRate);\n\n // #21 Safari does not support promises and therefore would fire the statechange event before the promise can be resolved.\n if (!cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n nativeOfflineAudioContext.addEventListener(\n 'statechange',\n (() => {\n let i = 0;\n\n const delayStateChangeEvent = (event: Event) => {\n if (this._state === 'running') {\n if (i > 0) {\n nativeOfflineAudioContext.removeEventListener('statechange', delayStateChangeEvent);\n event.stopImmediatePropagation();\n\n this._waitForThePromiseToSettle(event);\n } else {\n i += 1;\n }\n }\n };\n\n return delayStateChangeEvent;\n })()\n );\n }\n\n super(nativeOfflineAudioContext, numberOfChannels);\n\n this._length = length;\n this._nativeOfflineAudioContext = nativeOfflineAudioContext;\n this._state = null;\n }\n\n get length(): number {\n // Bug #17: Safari does not yet expose the length.\n if (this._nativeOfflineAudioContext.length === undefined) {\n return this._length;\n }\n\n return this._nativeOfflineAudioContext.length;\n }\n\n get state(): TAudioContextState {\n return this._state === null ? this._nativeOfflineAudioContext.state : this._state;\n }\n\n public startRendering(): Promise {\n /*\n * Bug #9 & #59: It is theoretically possible that startRendering() will first render a partialOfflineAudioContext. Therefore\n * the state of the nativeOfflineAudioContext might no transition to running immediately.\n */\n if (this._state === 'running') {\n return Promise.reject(createInvalidStateError());\n }\n\n this._state = 'running';\n\n return startRendering(this.destination, this._nativeOfflineAudioContext).finally(() => {\n this._state = null;\n\n deactivateAudioGraph(this);\n });\n }\n\n private _waitForThePromiseToSettle(event: Event): void {\n if (this._state === null) {\n this._nativeOfflineAudioContext.dispatchEvent(event);\n } else {\n setTimeout(() => this._waitForThePromiseToSettle(event));\n }\n }\n };\n};\n","import { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n detune: 0,\n frequency: 440,\n periodicWave: undefined,\n type: 'sine'\n};\nexport const createOscillatorNodeConstructor = (audioNodeConstructor, createAudioParam, createNativeOscillatorNode, createOscillatorNodeRenderer, getNativeContext, isNativeOfflineAudioContext, wrapEventListener) => {\n return class OscillatorNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeOscillatorNode = createNativeOscillatorNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const oscillatorNodeRenderer = (isOffline ? createOscillatorNodeRenderer() : null);\n const nyquist = context.sampleRate / 2;\n super(context, false, nativeOscillatorNode, oscillatorNodeRenderer);\n // Bug #81: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._detune = createAudioParam(this, isOffline, nativeOscillatorNode.detune, 153600, -153600);\n // Bug #76: Safari does not export the correct values for maxValue and minValue.\n this._frequency = createAudioParam(this, isOffline, nativeOscillatorNode.frequency, nyquist, -nyquist);\n this._nativeOscillatorNode = nativeOscillatorNode;\n this._onended = null;\n this._oscillatorNodeRenderer = oscillatorNodeRenderer;\n if (this._oscillatorNodeRenderer !== null && mergedOptions.periodicWave !== undefined) {\n this._oscillatorNodeRenderer.periodicWave =\n mergedOptions.periodicWave;\n }\n }\n get detune() {\n return this._detune;\n }\n get frequency() {\n return this._frequency;\n }\n get onended() {\n return this._onended;\n }\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n this._nativeOscillatorNode.onended = wrappedListener;\n const nativeOnEnded = this._nativeOscillatorNode.onended;\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n get type() {\n return this._nativeOscillatorNode.type;\n }\n set type(value) {\n this._nativeOscillatorNode.type = value;\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.periodicWave = null;\n }\n }\n setPeriodicWave(periodicWave) {\n this._nativeOscillatorNode.setPeriodicWave(periodicWave);\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.periodicWave = periodicWave;\n }\n }\n start(when = 0) {\n this._nativeOscillatorNode.start(when);\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.start = when;\n }\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n const resetInternalStateToPassive = () => {\n this._nativeOscillatorNode.removeEventListener('ended', resetInternalStateToPassive);\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n this._nativeOscillatorNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n stop(when = 0) {\n this._nativeOscillatorNode.stop(when);\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.stop = when;\n }\n }\n };\n};\n//# sourceMappingURL=oscillator-node-constructor.js.map","import { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nimport {\n IAudioParam,\n IAudioScheduledSourceNodeEventMap,\n IMinimalOfflineAudioContext,\n IOscillatorNode,\n IOscillatorNodeRenderer,\n IOscillatorOptions\n} from '../interfaces';\nimport {\n TContext,\n TEventHandler,\n TNativeOscillatorNode,\n TOscillatorNodeConstructorFactory,\n TOscillatorNodeRenderer,\n TOscillatorType\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max', // This attribute has no effect for nodes with no inputs.\n channelInterpretation: 'speakers', // This attribute has no effect for nodes with no inputs.\n detune: 0,\n frequency: 440,\n periodicWave: undefined,\n type: 'sine'\n} as const;\n\nexport const createOscillatorNodeConstructor: TOscillatorNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createNativeOscillatorNode,\n createOscillatorNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n) => {\n return class OscillatorNode\n extends audioNodeConstructor\n implements IOscillatorNode\n {\n private _detune: IAudioParam;\n\n private _frequency: IAudioParam;\n\n private _nativeOscillatorNode: TNativeOscillatorNode;\n\n private _onended: null | TEventHandler;\n\n private _oscillatorNodeRenderer: TOscillatorNodeRenderer;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeOscillatorNode = createNativeOscillatorNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const oscillatorNodeRenderer = >(isOffline ? createOscillatorNodeRenderer() : null);\n const nyquist = context.sampleRate / 2;\n\n super(context, false, nativeOscillatorNode, oscillatorNodeRenderer);\n\n // Bug #81: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._detune = createAudioParam(this, isOffline, nativeOscillatorNode.detune, 153600, -153600);\n // Bug #76: Safari does not export the correct values for maxValue and minValue.\n this._frequency = createAudioParam(this, isOffline, nativeOscillatorNode.frequency, nyquist, -nyquist);\n this._nativeOscillatorNode = nativeOscillatorNode;\n this._onended = null;\n this._oscillatorNodeRenderer = oscillatorNodeRenderer;\n\n if (this._oscillatorNodeRenderer !== null && mergedOptions.periodicWave !== undefined) {\n (>this._oscillatorNodeRenderer).periodicWave =\n mergedOptions.periodicWave;\n }\n }\n\n get detune(): IAudioParam {\n return this._detune;\n }\n\n get frequency(): IAudioParam {\n return this._frequency;\n }\n\n get onended(): null | TEventHandler {\n return this._onended;\n }\n\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n\n this._nativeOscillatorNode.onended = wrappedListener;\n\n const nativeOnEnded = this._nativeOscillatorNode.onended;\n\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n\n get type(): TOscillatorType {\n return this._nativeOscillatorNode.type;\n }\n\n set type(value) {\n this._nativeOscillatorNode.type = value;\n\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.periodicWave = null;\n }\n }\n\n public setPeriodicWave(periodicWave: PeriodicWave): void {\n this._nativeOscillatorNode.setPeriodicWave(periodicWave);\n\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.periodicWave = periodicWave;\n }\n }\n\n public start(when = 0): void {\n this._nativeOscillatorNode.start(when);\n\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.start = when;\n }\n\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n\n const resetInternalStateToPassive = () => {\n this._nativeOscillatorNode.removeEventListener('ended', resetInternalStateToPassive);\n\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n\n this._nativeOscillatorNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n\n public stop(when = 0): void {\n this._nativeOscillatorNode.stop(when);\n\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.stop = when;\n }\n }\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createOscillatorNodeRendererFactory = (connectAudioParam, createNativeOscillatorNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeOscillatorNodes = new WeakMap();\n let periodicWave = null;\n let start = null;\n let stop = null;\n const createOscillatorNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeOscillatorNode = getNativeAudioNode(proxy);\n // If the initially used nativeOscillatorNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeOscillatorNodeIsOwnedByContext = isOwnedByContext(nativeOscillatorNode, nativeOfflineAudioContext);\n if (!nativeOscillatorNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeOscillatorNode.channelCount,\n channelCountMode: nativeOscillatorNode.channelCountMode,\n channelInterpretation: nativeOscillatorNode.channelInterpretation,\n detune: nativeOscillatorNode.detune.value,\n frequency: nativeOscillatorNode.frequency.value,\n periodicWave: periodicWave === null ? undefined : periodicWave,\n type: nativeOscillatorNode.type\n };\n nativeOscillatorNode = createNativeOscillatorNode(nativeOfflineAudioContext, options);\n if (start !== null) {\n nativeOscillatorNode.start(start);\n }\n if (stop !== null) {\n nativeOscillatorNode.stop(stop);\n }\n }\n renderedNativeOscillatorNodes.set(nativeOfflineAudioContext, nativeOscillatorNode);\n if (!nativeOscillatorNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune);\n await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune);\n await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency);\n }\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeOscillatorNode);\n return nativeOscillatorNode;\n };\n return {\n set periodicWave(value) {\n periodicWave = value;\n },\n set start(value) {\n start = value;\n },\n set stop(value) {\n stop = value;\n },\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeOscillatorNode = renderedNativeOscillatorNodes.get(nativeOfflineAudioContext);\n if (renderedNativeOscillatorNode !== undefined) {\n return Promise.resolve(renderedNativeOscillatorNode);\n }\n return createOscillatorNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=oscillator-node-renderer-factory.js.map","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IMinimalOfflineAudioContext, IOfflineAudioContext, IOscillatorNode, IPeriodicWave } from '../interfaces';\nimport { TNativeOfflineAudioContext, TNativeOscillatorNode, TOscillatorNodeRendererFactoryFactory } from '../types';\n\nexport const createOscillatorNodeRendererFactory: TOscillatorNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeOscillatorNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeOscillatorNodes = new WeakMap();\n\n let periodicWave: null | IPeriodicWave = null;\n let start: null | number = null;\n let stop: null | number = null;\n\n const createOscillatorNode = async (proxy: IOscillatorNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeOscillatorNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeOscillatorNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeOscillatorNodeIsOwnedByContext = isOwnedByContext(nativeOscillatorNode, nativeOfflineAudioContext);\n\n if (!nativeOscillatorNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeOscillatorNode.channelCount,\n channelCountMode: nativeOscillatorNode.channelCountMode,\n channelInterpretation: nativeOscillatorNode.channelInterpretation,\n detune: nativeOscillatorNode.detune.value,\n frequency: nativeOscillatorNode.frequency.value,\n periodicWave: periodicWave === null ? undefined : periodicWave,\n type: nativeOscillatorNode.type\n };\n\n nativeOscillatorNode = createNativeOscillatorNode(nativeOfflineAudioContext, options);\n\n if (start !== null) {\n nativeOscillatorNode.start(start);\n }\n\n if (stop !== null) {\n nativeOscillatorNode.stop(stop);\n }\n }\n\n renderedNativeOscillatorNodes.set(nativeOfflineAudioContext, nativeOscillatorNode);\n\n if (!nativeOscillatorNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune);\n await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune);\n await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeOscillatorNode);\n\n return nativeOscillatorNode;\n };\n\n return {\n set periodicWave(value: null | IPeriodicWave) {\n periodicWave = value;\n },\n set start(value: number) {\n start = value;\n },\n set stop(value: number) {\n stop = value;\n },\n render(proxy: IOscillatorNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeOscillatorNode = renderedNativeOscillatorNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeOscillatorNode !== undefined) {\n return Promise.resolve(renderedNativeOscillatorNode);\n }\n\n return createOscillatorNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n coneInnerAngle: 360,\n coneOuterAngle: 360,\n coneOuterGain: 0,\n distanceModel: 'inverse',\n maxDistance: 10000,\n orientationX: 1,\n orientationY: 0,\n orientationZ: 0,\n panningModel: 'equalpower',\n positionX: 0,\n positionY: 0,\n positionZ: 0,\n refDistance: 1,\n rolloffFactor: 1\n};\nexport const createPannerNodeConstructor = (audioNodeConstructor, createAudioParam, createNativePannerNode, createPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class PannerNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativePannerNode = createNativePannerNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const pannerNodeRenderer = (isOffline ? createPannerNodeRenderer() : null);\n super(context, false, nativePannerNode, pannerNodeRenderer);\n this._nativePannerNode = nativePannerNode;\n // Bug #74: Safari does not export the correct values for maxValue and minValue.\n this._orientationX = createAudioParam(this, isOffline, nativePannerNode.orientationX, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._orientationY = createAudioParam(this, isOffline, nativePannerNode.orientationY, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._orientationZ = createAudioParam(this, isOffline, nativePannerNode.orientationZ, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._positionX = createAudioParam(this, isOffline, nativePannerNode.positionX, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._positionY = createAudioParam(this, isOffline, nativePannerNode.positionY, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n this._positionZ = createAudioParam(this, isOffline, nativePannerNode.positionZ, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n get coneInnerAngle() {\n return this._nativePannerNode.coneInnerAngle;\n }\n set coneInnerAngle(value) {\n this._nativePannerNode.coneInnerAngle = value;\n }\n get coneOuterAngle() {\n return this._nativePannerNode.coneOuterAngle;\n }\n set coneOuterAngle(value) {\n this._nativePannerNode.coneOuterAngle = value;\n }\n get coneOuterGain() {\n return this._nativePannerNode.coneOuterGain;\n }\n set coneOuterGain(value) {\n this._nativePannerNode.coneOuterGain = value;\n }\n get distanceModel() {\n return this._nativePannerNode.distanceModel;\n }\n set distanceModel(value) {\n this._nativePannerNode.distanceModel = value;\n }\n get maxDistance() {\n return this._nativePannerNode.maxDistance;\n }\n set maxDistance(value) {\n this._nativePannerNode.maxDistance = value;\n }\n get orientationX() {\n return this._orientationX;\n }\n get orientationY() {\n return this._orientationY;\n }\n get orientationZ() {\n return this._orientationZ;\n }\n get panningModel() {\n return this._nativePannerNode.panningModel;\n }\n set panningModel(value) {\n this._nativePannerNode.panningModel = value;\n }\n get positionX() {\n return this._positionX;\n }\n get positionY() {\n return this._positionY;\n }\n get positionZ() {\n return this._positionZ;\n }\n get refDistance() {\n return this._nativePannerNode.refDistance;\n }\n set refDistance(value) {\n this._nativePannerNode.refDistance = value;\n }\n get rolloffFactor() {\n return this._nativePannerNode.rolloffFactor;\n }\n set rolloffFactor(value) {\n this._nativePannerNode.rolloffFactor = value;\n }\n };\n};\n//# sourceMappingURL=panner-node-constructor.js.map","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { IAudioParam, IPannerNode, IPannerOptions } from '../interfaces';\nimport {\n TAudioNodeRenderer,\n TContext,\n TDistanceModelType,\n TNativePannerNode,\n TPannerNodeConstructorFactory,\n TPanningModelType\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n coneInnerAngle: 360,\n coneOuterAngle: 360,\n coneOuterGain: 0,\n distanceModel: 'inverse',\n maxDistance: 10000,\n orientationX: 1,\n orientationY: 0,\n orientationZ: 0,\n panningModel: 'equalpower',\n positionX: 0,\n positionY: 0,\n positionZ: 0,\n refDistance: 1,\n rolloffFactor: 1\n} as const;\n\nexport const createPannerNodeConstructor: TPannerNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createNativePannerNode,\n createPannerNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class PannerNode extends audioNodeConstructor implements IPannerNode {\n private _nativePannerNode: TNativePannerNode;\n\n private _orientationX: IAudioParam;\n\n private _orientationY: IAudioParam;\n\n private _orientationZ: IAudioParam;\n\n private _positionX: IAudioParam;\n\n private _positionY: IAudioParam;\n\n private _positionZ: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativePannerNode = createNativePannerNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const pannerNodeRenderer = >(isOffline ? createPannerNodeRenderer() : null);\n\n super(context, false, nativePannerNode, pannerNodeRenderer);\n\n this._nativePannerNode = nativePannerNode;\n // Bug #74: Safari does not export the correct values for maxValue and minValue.\n this._orientationX = createAudioParam(\n this,\n isOffline,\n nativePannerNode.orientationX,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._orientationY = createAudioParam(\n this,\n isOffline,\n nativePannerNode.orientationY,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._orientationZ = createAudioParam(\n this,\n isOffline,\n nativePannerNode.orientationZ,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._positionX = createAudioParam(\n this,\n isOffline,\n nativePannerNode.positionX,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._positionY = createAudioParam(\n this,\n isOffline,\n nativePannerNode.positionY,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._positionZ = createAudioParam(\n this,\n isOffline,\n nativePannerNode.positionZ,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n\n get coneInnerAngle(): number {\n return this._nativePannerNode.coneInnerAngle;\n }\n\n set coneInnerAngle(value) {\n this._nativePannerNode.coneInnerAngle = value;\n }\n\n get coneOuterAngle(): number {\n return this._nativePannerNode.coneOuterAngle;\n }\n\n set coneOuterAngle(value) {\n this._nativePannerNode.coneOuterAngle = value;\n }\n\n get coneOuterGain(): number {\n return this._nativePannerNode.coneOuterGain;\n }\n\n set coneOuterGain(value) {\n this._nativePannerNode.coneOuterGain = value;\n }\n\n get distanceModel(): TDistanceModelType {\n return this._nativePannerNode.distanceModel;\n }\n\n set distanceModel(value) {\n this._nativePannerNode.distanceModel = value;\n }\n\n get maxDistance(): number {\n return this._nativePannerNode.maxDistance;\n }\n\n set maxDistance(value) {\n this._nativePannerNode.maxDistance = value;\n }\n\n get orientationX(): IAudioParam {\n return this._orientationX;\n }\n\n get orientationY(): IAudioParam {\n return this._orientationY;\n }\n\n get orientationZ(): IAudioParam {\n return this._orientationZ;\n }\n\n get panningModel(): TPanningModelType {\n return this._nativePannerNode.panningModel;\n }\n\n set panningModel(value) {\n this._nativePannerNode.panningModel = value;\n }\n\n get positionX(): IAudioParam {\n return this._positionX;\n }\n\n get positionY(): IAudioParam {\n return this._positionY;\n }\n\n get positionZ(): IAudioParam {\n return this._positionZ;\n }\n\n get refDistance(): number {\n return this._nativePannerNode.refDistance;\n }\n\n set refDistance(value) {\n this._nativePannerNode.refDistance = value;\n }\n\n get rolloffFactor(): number {\n return this._nativePannerNode.rolloffFactor;\n }\n\n set rolloffFactor(value) {\n this._nativePannerNode.rolloffFactor = value;\n }\n };\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createPannerNodeRendererFactory = (connectAudioParam, createNativeChannelMergerNode, createNativeConstantSourceNode, createNativeGainNode, createNativePannerNode, getNativeAudioNode, nativeOfflineAudioContextConstructor, renderAutomation, renderInputsOfAudioNode, renderNativeOfflineAudioContext) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n let renderedBufferPromise = null;\n const createAudioNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeGainNode = null;\n let nativePannerNode = getNativeAudioNode(proxy);\n const commonAudioNodeOptions = {\n channelCount: nativePannerNode.channelCount,\n channelCountMode: nativePannerNode.channelCountMode,\n channelInterpretation: nativePannerNode.channelInterpretation\n };\n const commonNativePannerNodeOptions = {\n ...commonAudioNodeOptions,\n coneInnerAngle: nativePannerNode.coneInnerAngle,\n coneOuterAngle: nativePannerNode.coneOuterAngle,\n coneOuterGain: nativePannerNode.coneOuterGain,\n distanceModel: nativePannerNode.distanceModel,\n maxDistance: nativePannerNode.maxDistance,\n panningModel: nativePannerNode.panningModel,\n refDistance: nativePannerNode.refDistance,\n rolloffFactor: nativePannerNode.rolloffFactor\n };\n // If the initially used nativePannerNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativePannerNodeIsOwnedByContext = isOwnedByContext(nativePannerNode, nativeOfflineAudioContext);\n // Bug #124: Safari does not support modifying the orientation and the position with AudioParams.\n if ('bufferSize' in nativePannerNode) {\n nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n }\n else if (!nativePannerNodeIsOwnedByContext) {\n const options = {\n ...commonNativePannerNodeOptions,\n orientationX: nativePannerNode.orientationX.value,\n orientationY: nativePannerNode.orientationY.value,\n orientationZ: nativePannerNode.orientationZ.value,\n positionX: nativePannerNode.positionX.value,\n positionY: nativePannerNode.positionY.value,\n positionZ: nativePannerNode.positionZ.value\n };\n nativePannerNode = createNativePannerNode(nativeOfflineAudioContext, options);\n }\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeGainNode === null ? nativePannerNode : nativeGainNode);\n if (nativeGainNode !== null) {\n if (renderedBufferPromise === null) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(6, \n // Bug #17: Safari does not yet expose the length.\n proxy.context.length, nativeOfflineAudioContext.sampleRate);\n const nativeChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n });\n nativeChannelMergerNode.connect(partialOfflineAudioContext.destination);\n renderedBufferPromise = (async () => {\n const nativeConstantSourceNodes = await Promise.all([\n proxy.orientationX,\n proxy.orientationY,\n proxy.orientationZ,\n proxy.positionX,\n proxy.positionY,\n proxy.positionZ\n ].map(async (audioParam, index) => {\n const nativeConstantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: index === 0 ? 1 : 0\n });\n await renderAutomation(partialOfflineAudioContext, audioParam, nativeConstantSourceNode.offset);\n return nativeConstantSourceNode;\n }));\n for (let i = 0; i < 6; i += 1) {\n nativeConstantSourceNodes[i].connect(nativeChannelMergerNode, 0, i);\n nativeConstantSourceNodes[i].start(0);\n }\n return renderNativeOfflineAudioContext(partialOfflineAudioContext);\n })();\n }\n const renderedBuffer = await renderedBufferPromise;\n const inputGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, inputGainNode);\n const channelDatas = [];\n for (let i = 0; i < renderedBuffer.numberOfChannels; i += 1) {\n channelDatas.push(renderedBuffer.getChannelData(i));\n }\n let lastOrientation = [channelDatas[0][0], channelDatas[1][0], channelDatas[2][0]];\n let lastPosition = [channelDatas[3][0], channelDatas[4][0], channelDatas[5][0]];\n let gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n let partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, {\n ...commonNativePannerNodeOptions,\n orientationX: lastOrientation[0],\n orientationY: lastOrientation[1],\n orientationZ: lastOrientation[2],\n positionX: lastPosition[0],\n positionY: lastPosition[1],\n positionZ: lastPosition[2]\n });\n inputGainNode.connect(gateGainNode).connect(partialPannerNode.inputs[0]);\n partialPannerNode.connect(nativeGainNode);\n for (let i = 128; i < renderedBuffer.length; i += 128) {\n const orientation = [channelDatas[0][i], channelDatas[1][i], channelDatas[2][i]];\n const positon = [channelDatas[3][i], channelDatas[4][i], channelDatas[5][i]];\n if (orientation.some((value, index) => value !== lastOrientation[index]) ||\n positon.some((value, index) => value !== lastPosition[index])) {\n lastOrientation = orientation;\n lastPosition = positon;\n const currentTime = i / nativeOfflineAudioContext.sampleRate;\n gateGainNode.gain.setValueAtTime(0, currentTime);\n gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 0 });\n partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, {\n ...commonNativePannerNodeOptions,\n orientationX: lastOrientation[0],\n orientationY: lastOrientation[1],\n orientationZ: lastOrientation[2],\n positionX: lastPosition[0],\n positionY: lastPosition[1],\n positionZ: lastPosition[2]\n });\n gateGainNode.gain.setValueAtTime(1, currentTime);\n inputGainNode.connect(gateGainNode).connect(partialPannerNode.inputs[0]);\n partialPannerNode.connect(nativeGainNode);\n }\n }\n return nativeGainNode;\n }\n if (!nativePannerNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX);\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY);\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX);\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY);\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ);\n }\n if (isNativeAudioNodeFaker(nativePannerNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode.inputs[0]);\n }\n else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode);\n }\n return nativePannerNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeGainNodeOrNativePannerNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n if (renderedNativeGainNodeOrNativePannerNode !== undefined) {\n return Promise.resolve(renderedNativeGainNodeOrNativePannerNode);\n }\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=panner-node-renderer-factory.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IMinimalOfflineAudioContext, INativePannerNodeFaker, IOfflineAudioContext, IPannerNode } from '../interfaces';\nimport {\n TNativeAudioBuffer,\n TNativeGainNode,\n TNativeOfflineAudioContext,\n TNativePannerNode,\n TPannerNodeRendererFactoryFactory\n} from '../types';\n\nexport const createPannerNodeRendererFactory: TPannerNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeChannelMergerNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n createNativePannerNode,\n getNativeAudioNode,\n nativeOfflineAudioContextConstructor,\n renderAutomation,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n\n let renderedBufferPromise: null | Promise = null;\n\n const createAudioNode = async (proxy: IPannerNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeGainNode: null | TNativeGainNode = null;\n let nativePannerNode = getNativeAudioNode(proxy);\n\n const commonAudioNodeOptions = {\n channelCount: nativePannerNode.channelCount,\n channelCountMode: nativePannerNode.channelCountMode,\n channelInterpretation: nativePannerNode.channelInterpretation\n };\n const commonNativePannerNodeOptions = {\n ...commonAudioNodeOptions,\n coneInnerAngle: nativePannerNode.coneInnerAngle,\n coneOuterAngle: nativePannerNode.coneOuterAngle,\n coneOuterGain: nativePannerNode.coneOuterGain,\n distanceModel: nativePannerNode.distanceModel,\n maxDistance: nativePannerNode.maxDistance,\n panningModel: nativePannerNode.panningModel,\n refDistance: nativePannerNode.refDistance,\n rolloffFactor: nativePannerNode.rolloffFactor\n };\n\n // If the initially used nativePannerNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativePannerNodeIsOwnedByContext = isOwnedByContext(nativePannerNode, nativeOfflineAudioContext);\n\n // Bug #124: Safari does not support modifying the orientation and the position with AudioParams.\n if ('bufferSize' in nativePannerNode) {\n nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n } else if (!nativePannerNodeIsOwnedByContext) {\n const options = {\n ...commonNativePannerNodeOptions,\n orientationX: nativePannerNode.orientationX.value,\n orientationY: nativePannerNode.orientationY.value,\n orientationZ: nativePannerNode.orientationZ.value,\n positionX: nativePannerNode.positionX.value,\n positionY: nativePannerNode.positionY.value,\n positionZ: nativePannerNode.positionZ.value\n };\n\n nativePannerNode = createNativePannerNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeGainNode === null ? nativePannerNode : nativeGainNode);\n\n if (nativeGainNode !== null) {\n if (renderedBufferPromise === null) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(\n 6,\n // Bug #17: Safari does not yet expose the length.\n proxy.context.length,\n nativeOfflineAudioContext.sampleRate\n );\n const nativeChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n });\n nativeChannelMergerNode.connect(partialOfflineAudioContext.destination);\n\n renderedBufferPromise = (async () => {\n const nativeConstantSourceNodes = await Promise.all(\n [\n proxy.orientationX,\n proxy.orientationY,\n proxy.orientationZ,\n proxy.positionX,\n proxy.positionY,\n proxy.positionZ\n ].map(async (audioParam, index) => {\n const nativeConstantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: index === 0 ? 1 : 0\n });\n\n await renderAutomation(partialOfflineAudioContext, audioParam, nativeConstantSourceNode.offset);\n\n return nativeConstantSourceNode;\n })\n );\n\n for (let i = 0; i < 6; i += 1) {\n nativeConstantSourceNodes[i].connect(nativeChannelMergerNode, 0, i);\n nativeConstantSourceNodes[i].start(0);\n }\n\n return renderNativeOfflineAudioContext(partialOfflineAudioContext);\n })();\n }\n\n const renderedBuffer = await renderedBufferPromise;\n const inputGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, inputGainNode);\n\n const channelDatas: Float32Array[] = [];\n\n for (let i = 0; i < renderedBuffer.numberOfChannels; i += 1) {\n channelDatas.push(renderedBuffer.getChannelData(i));\n }\n\n let lastOrientation = [channelDatas[0][0], channelDatas[1][0], channelDatas[2][0]];\n let lastPosition = [channelDatas[3][0], channelDatas[4][0], channelDatas[5][0]];\n let gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n let partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, {\n ...commonNativePannerNodeOptions,\n orientationX: lastOrientation[0],\n orientationY: lastOrientation[1],\n orientationZ: lastOrientation[2],\n positionX: lastPosition[0],\n positionY: lastPosition[1],\n positionZ: lastPosition[2]\n });\n\n inputGainNode.connect(gateGainNode).connect((partialPannerNode).inputs[0]);\n partialPannerNode.connect(nativeGainNode);\n\n for (let i = 128; i < renderedBuffer.length; i += 128) {\n const orientation: [number, number, number] = [channelDatas[0][i], channelDatas[1][i], channelDatas[2][i]];\n const positon: [number, number, number] = [channelDatas[3][i], channelDatas[4][i], channelDatas[5][i]];\n\n if (\n orientation.some((value, index) => value !== lastOrientation[index]) ||\n positon.some((value, index) => value !== lastPosition[index])\n ) {\n lastOrientation = orientation;\n lastPosition = positon;\n\n const currentTime = i / nativeOfflineAudioContext.sampleRate;\n\n gateGainNode.gain.setValueAtTime(0, currentTime);\n\n gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 0 });\n partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, {\n ...commonNativePannerNodeOptions,\n orientationX: lastOrientation[0],\n orientationY: lastOrientation[1],\n orientationZ: lastOrientation[2],\n positionX: lastPosition[0],\n positionY: lastPosition[1],\n positionZ: lastPosition[2]\n });\n\n gateGainNode.gain.setValueAtTime(1, currentTime);\n\n inputGainNode.connect(gateGainNode).connect((partialPannerNode).inputs[0]);\n partialPannerNode.connect(nativeGainNode);\n }\n }\n\n return nativeGainNode;\n }\n\n if (!nativePannerNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX);\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY);\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX);\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY);\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ);\n }\n\n if (isNativeAudioNodeFaker(nativePannerNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode.inputs[0]);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode);\n }\n\n return nativePannerNode;\n };\n\n return {\n render(\n proxy: IPannerNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeGainNodeOrNativePannerNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeGainNodeOrNativePannerNode !== undefined) {\n return Promise.resolve(renderedNativeGainNodeOrNativePannerNode);\n }\n\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","const DEFAULT_OPTIONS = {\n disableNormalization: false\n};\nexport const createPeriodicWaveConstructor = (createNativePeriodicWave, getNativeContext, periodicWaveStore, sanitizePeriodicWaveOptions) => {\n return class PeriodicWave {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = sanitizePeriodicWaveOptions({ ...DEFAULT_OPTIONS, ...options });\n const periodicWave = createNativePeriodicWave(nativeContext, mergedOptions);\n periodicWaveStore.add(periodicWave);\n // This does violate all good pratices but it is used here to simplify the handling of periodic waves.\n return periodicWave;\n }\n static [Symbol.hasInstance](instance) {\n return ((instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === PeriodicWave.prototype) ||\n periodicWaveStore.has(instance));\n }\n };\n};\n//# sourceMappingURL=periodic-wave-constructor.js.map","import { IPeriodicWave, IPeriodicWaveOptions } from '../interfaces';\nimport { TContext, TPeriodicWaveConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n disableNormalization: false\n} as const;\n\nexport const createPeriodicWaveConstructor: TPeriodicWaveConstructorFactory = (\n createNativePeriodicWave,\n getNativeContext,\n periodicWaveStore,\n sanitizePeriodicWaveOptions\n) => {\n return class PeriodicWave implements IPeriodicWave {\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = sanitizePeriodicWaveOptions({ ...DEFAULT_OPTIONS, ...options });\n const periodicWave = createNativePeriodicWave(nativeContext, mergedOptions);\n\n periodicWaveStore.add(periodicWave);\n\n // This does violate all good pratices but it is used here to simplify the handling of periodic waves.\n return periodicWave;\n }\n\n public static [Symbol.hasInstance](instance: unknown): boolean {\n return (\n (instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === PeriodicWave.prototype) ||\n periodicWaveStore.has(instance)\n );\n }\n };\n};\n","export const createRenderAutomation = (getAudioParamRenderer, renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => {\n const audioParamRenderer = getAudioParamRenderer(audioParam);\n audioParamRenderer.replay(nativeAudioParam);\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam);\n };\n};\n//# sourceMappingURL=render-automation.js.map","import { TRenderAutomationFactory } from '../types';\n\nexport const createRenderAutomation: TRenderAutomationFactory = (getAudioParamRenderer, renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => {\n const audioParamRenderer = getAudioParamRenderer(audioParam);\n\n audioParamRenderer.replay(nativeAudioParam);\n\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam);\n };\n};\n","export const createRenderInputsOfAudioNode = (getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle) => {\n return async (audioNode, nativeOfflineAudioContext, nativeAudioNode) => {\n const audioNodeConnections = getAudioNodeConnections(audioNode);\n await Promise.all(audioNodeConnections.activeInputs\n .map((connections, input) => Array.from(connections).map(async ([source, output]) => {\n const audioNodeRenderer = getAudioNodeRenderer(source);\n const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext);\n const destination = audioNode.context.destination;\n if (!isPartOfACycle(source) && (audioNode !== destination || !isPartOfACycle(audioNode))) {\n renderedNativeAudioNode.connect(nativeAudioNode, output, input);\n }\n }))\n .reduce((allRenderingPromises, renderingPromises) => [...allRenderingPromises, ...renderingPromises], []));\n };\n};\n//# sourceMappingURL=render-inputs-of-audio-node.js.map","import { IAudioDestinationNode } from '../interfaces';\nimport { TRenderInputsOfAudioNodeFactory } from '../types';\n\nexport const createRenderInputsOfAudioNode: TRenderInputsOfAudioNodeFactory = (\n getAudioNodeConnections,\n getAudioNodeRenderer,\n isPartOfACycle\n) => {\n return async (audioNode, nativeOfflineAudioContext, nativeAudioNode) => {\n const audioNodeConnections = getAudioNodeConnections(audioNode);\n\n await Promise.all(\n audioNodeConnections.activeInputs\n .map((connections, input) =>\n Array.from(connections).map(async ([source, output]) => {\n const audioNodeRenderer = getAudioNodeRenderer(source);\n const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext);\n const destination = >audioNode.context.destination;\n\n if (!isPartOfACycle(source) && (audioNode !== destination || !isPartOfACycle(audioNode))) {\n renderedNativeAudioNode.connect(nativeAudioNode, output, input);\n }\n })\n )\n .reduce((allRenderingPromises, renderingPromises) => [...allRenderingPromises, ...renderingPromises], [])\n );\n };\n};\n","export const createRenderInputsOfAudioParam = (getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle) => {\n return async (audioParam, nativeOfflineAudioContext, nativeAudioParam) => {\n const audioParamConnections = getAudioParamConnections(audioParam);\n await Promise.all(Array.from(audioParamConnections.activeInputs).map(async ([source, output]) => {\n const audioNodeRenderer = getAudioNodeRenderer(source);\n const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext);\n if (!isPartOfACycle(source)) {\n renderedNativeAudioNode.connect(nativeAudioParam, output);\n }\n }));\n };\n};\n//# sourceMappingURL=render-inputs-of-audio-param.js.map","import { IAudioParam, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TNativeAudioParam, TNativeOfflineAudioContext, TRenderInputsOfAudioParamFactory } from '../types';\n\nexport const createRenderInputsOfAudioParam: TRenderInputsOfAudioParamFactory = (\n getAudioNodeRenderer,\n getAudioParamConnections,\n isPartOfACycle\n) => {\n return async (\n audioParam: IAudioParam,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n nativeAudioParam: TNativeAudioParam\n ): Promise => {\n const audioParamConnections = getAudioParamConnections(audioParam);\n\n await Promise.all(\n Array.from(audioParamConnections.activeInputs).map(async ([source, output]) => {\n const audioNodeRenderer = getAudioNodeRenderer(source);\n const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext);\n\n if (!isPartOfACycle(source)) {\n renderedNativeAudioNode.connect(nativeAudioParam, output);\n }\n })\n );\n };\n};\n","import { testPromiseSupport } from '../helpers/test-promise-support';\nexport const createRenderNativeOfflineAudioContext = (cacheTestResult, createNativeGainNode, createNativeScriptProcessorNode, testOfflineAudioContextCurrentTimeSupport) => {\n return (nativeOfflineAudioContext) => {\n // Bug #21: Safari does not support promises yet.\n if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n // Bug #158: Chrome and Edge do not advance currentTime if it is not accessed while rendering the audio.\n return Promise.resolve(cacheTestResult(testOfflineAudioContextCurrentTimeSupport, testOfflineAudioContextCurrentTimeSupport)).then((isOfflineAudioContextCurrentTimeSupported) => {\n if (!isOfflineAudioContextCurrentTimeSupported) {\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeOfflineAudioContext, 512, 0, 1);\n nativeOfflineAudioContext.oncomplete = () => {\n scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation\n scriptProcessorNode.disconnect();\n };\n scriptProcessorNode.onaudioprocess = () => nativeOfflineAudioContext.currentTime; // tslint:disable-line:deprecation\n scriptProcessorNode.connect(nativeOfflineAudioContext.destination);\n }\n return nativeOfflineAudioContext.startRendering();\n });\n }\n return new Promise((resolve) => {\n // Bug #48: Safari does not render an OfflineAudioContext without any connected node.\n const gainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n nativeOfflineAudioContext.oncomplete = (event) => {\n gainNode.disconnect();\n resolve(event.renderedBuffer);\n };\n gainNode.connect(nativeOfflineAudioContext.destination);\n nativeOfflineAudioContext.startRendering();\n });\n };\n};\n//# sourceMappingURL=render-native-offline-audio-context.js.map","import { testPromiseSupport } from '../helpers/test-promise-support';\nimport { IOfflineAudioCompletionEvent } from '../interfaces';\nimport { TNativeAudioBuffer, TRenderNativeOfflineAudioContextFactory } from '../types';\n\nexport const createRenderNativeOfflineAudioContext: TRenderNativeOfflineAudioContextFactory = (\n cacheTestResult,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n testOfflineAudioContextCurrentTimeSupport\n) => {\n return (nativeOfflineAudioContext) => {\n // Bug #21: Safari does not support promises yet.\n if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n // Bug #158: Chrome and Edge do not advance currentTime if it is not accessed while rendering the audio.\n return Promise.resolve(\n cacheTestResult(testOfflineAudioContextCurrentTimeSupport, testOfflineAudioContextCurrentTimeSupport)\n ).then((isOfflineAudioContextCurrentTimeSupported) => {\n if (!isOfflineAudioContextCurrentTimeSupported) {\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeOfflineAudioContext, 512, 0, 1);\n\n nativeOfflineAudioContext.oncomplete = () => {\n scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation\n scriptProcessorNode.disconnect();\n };\n scriptProcessorNode.onaudioprocess = () => nativeOfflineAudioContext.currentTime; // tslint:disable-line:deprecation\n\n scriptProcessorNode.connect(nativeOfflineAudioContext.destination);\n }\n\n return nativeOfflineAudioContext.startRendering();\n });\n }\n\n return new Promise((resolve) => {\n // Bug #48: Safari does not render an OfflineAudioContext without any connected node.\n const gainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n\n nativeOfflineAudioContext.oncomplete = (event: IOfflineAudioCompletionEvent) => {\n gainNode.disconnect();\n\n resolve(event.renderedBuffer);\n };\n\n gainNode.connect(nativeOfflineAudioContext.destination);\n\n nativeOfflineAudioContext.startRendering();\n });\n };\n};\n","export const createSetActiveAudioWorkletNodeInputs = (activeAudioWorkletNodeInputsStore) => {\n return (nativeAudioWorkletNode, activeInputs) => {\n activeAudioWorkletNodeInputsStore.set(nativeAudioWorkletNode, activeInputs);\n };\n};\n//# sourceMappingURL=set-active-audio-worklet-node-inputs.js.map","import { TSetActiveAudioWorkletNodeInputsFactory } from '../types';\n\nexport const createSetActiveAudioWorkletNodeInputs: TSetActiveAudioWorkletNodeInputsFactory = (activeAudioWorkletNodeInputsStore) => {\n return (nativeAudioWorkletNode, activeInputs) => {\n activeAudioWorkletNodeInputsStore.set(nativeAudioWorkletNode, activeInputs);\n };\n};\n","export const createSetAudioNodeTailTime = (audioNodeTailTimeStore) => {\n return (audioNode, tailTime) => audioNodeTailTimeStore.set(audioNode, tailTime);\n};\n//# sourceMappingURL=set-audio-node-tail-time.js.map","import { TSetAudioNodeTailTimeFactory } from '../types';\n\nexport const createSetAudioNodeTailTime: TSetAudioNodeTailTimeFactory = (audioNodeTailTimeStore) => {\n return (audioNode, tailTime) => audioNodeTailTimeStore.set(audioNode, tailTime);\n};\n","import { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nexport const createStartRendering = (audioBufferStore, cacheTestResult, getAudioNodeRenderer, getUnrenderedAudioWorkletNodes, renderNativeOfflineAudioContext, testAudioBufferCopyChannelMethodsOutOfBoundsSupport, wrapAudioBufferCopyChannelMethods, wrapAudioBufferCopyChannelMethodsOutOfBounds) => {\n return (destination, nativeOfflineAudioContext) => getAudioNodeRenderer(destination)\n .render(destination, nativeOfflineAudioContext)\n /*\n * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to the\n * destination.\n */\n .then(() => Promise.all(Array.from(getUnrenderedAudioWorkletNodes(nativeOfflineAudioContext)).map((audioWorkletNode) => getAudioNodeRenderer(audioWorkletNode).render(audioWorkletNode, nativeOfflineAudioContext))))\n .then(() => renderNativeOfflineAudioContext(nativeOfflineAudioContext))\n .then((audioBuffer) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n }\n else if (!cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () => testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer))) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n audioBufferStore.add(audioBuffer);\n return audioBuffer;\n });\n};\n//# sourceMappingURL=start-rendering.js.map","import { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nimport { TStartRenderingFactory } from '../types';\n\nexport const createStartRendering: TStartRenderingFactory = (\n audioBufferStore,\n cacheTestResult,\n getAudioNodeRenderer,\n getUnrenderedAudioWorkletNodes,\n renderNativeOfflineAudioContext,\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport,\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n) => {\n return (destination, nativeOfflineAudioContext) =>\n getAudioNodeRenderer(destination)\n .render(destination, nativeOfflineAudioContext)\n /*\n * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to the\n * destination.\n */\n .then(() =>\n Promise.all(\n Array.from(getUnrenderedAudioWorkletNodes(nativeOfflineAudioContext)).map((audioWorkletNode) =>\n getAudioNodeRenderer(audioWorkletNode).render(audioWorkletNode, nativeOfflineAudioContext)\n )\n )\n )\n .then(() => renderNativeOfflineAudioContext(nativeOfflineAudioContext))\n .then((audioBuffer) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n } else if (\n !cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () =>\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer)\n )\n ) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n\n audioBufferStore.add(audioBuffer);\n\n return audioBuffer;\n });\n};\n","const DEFAULT_OPTIONS = {\n channelCount: 2,\n /*\n * Bug #105: The channelCountMode should be 'clamped-max' according to the spec but is set to 'explicit' to achieve consistent\n * behavior.\n */\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n pan: 0\n};\nexport const createStereoPannerNodeConstructor = (audioNodeConstructor, createAudioParam, createNativeStereoPannerNode, createStereoPannerNodeRenderer, getNativeContext, isNativeOfflineAudioContext) => {\n return class StereoPannerNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeStereoPannerNode = createNativeStereoPannerNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const stereoPannerNodeRenderer = (isOffline ? createStereoPannerNodeRenderer() : null);\n super(context, false, nativeStereoPannerNode, stereoPannerNodeRenderer);\n this._pan = createAudioParam(this, isOffline, nativeStereoPannerNode.pan);\n }\n get pan() {\n return this._pan;\n }\n };\n};\n//# sourceMappingURL=stereo-panner-node-constructor.js.map","import { IAudioParam, IStereoPannerNode, IStereoPannerOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TContext, TStereoPannerNodeConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n /*\n * Bug #105: The channelCountMode should be 'clamped-max' according to the spec but is set to 'explicit' to achieve consistent\n * behavior.\n */\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n pan: 0\n} as const;\n\nexport const createStereoPannerNodeConstructor: TStereoPannerNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createNativeStereoPannerNode,\n createStereoPannerNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class StereoPannerNode extends audioNodeConstructor implements IStereoPannerNode {\n private _pan: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeStereoPannerNode = createNativeStereoPannerNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const stereoPannerNodeRenderer = >(isOffline ? createStereoPannerNodeRenderer() : null);\n\n super(context, false, nativeStereoPannerNode, stereoPannerNodeRenderer);\n\n this._pan = createAudioParam(this, isOffline, nativeStereoPannerNode.pan);\n }\n\n get pan(): IAudioParam {\n return this._pan;\n }\n };\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createStereoPannerNodeRendererFactory = (connectAudioParam, createNativeStereoPannerNode, getNativeAudioNode, renderAutomation, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeStereoPannerNodes = new WeakMap();\n const createStereoPannerNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeStereoPannerNode = getNativeAudioNode(proxy);\n /*\n * If the initially used nativeStereoPannerNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeStereoPannerNodeIsOwnedByContext = isOwnedByContext(nativeStereoPannerNode, nativeOfflineAudioContext);\n if (!nativeStereoPannerNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeStereoPannerNode.channelCount,\n channelCountMode: nativeStereoPannerNode.channelCountMode,\n channelInterpretation: nativeStereoPannerNode.channelInterpretation,\n pan: nativeStereoPannerNode.pan.value\n };\n nativeStereoPannerNode = createNativeStereoPannerNode(nativeOfflineAudioContext, options);\n }\n renderedNativeStereoPannerNodes.set(nativeOfflineAudioContext, nativeStereoPannerNode);\n if (!nativeStereoPannerNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan);\n }\n else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan);\n }\n if (isNativeAudioNodeFaker(nativeStereoPannerNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode.inputs[0]);\n }\n else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode);\n }\n return nativeStereoPannerNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeStereoPannerNode = renderedNativeStereoPannerNodes.get(nativeOfflineAudioContext);\n if (renderedNativeStereoPannerNode !== undefined) {\n return Promise.resolve(renderedNativeStereoPannerNode);\n }\n return createStereoPannerNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=stereo-panner-node-renderer-factory.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IMinimalOfflineAudioContext, IOfflineAudioContext, IStereoPannerNode } from '../interfaces';\nimport { TNativeOfflineAudioContext, TNativeStereoPannerNode, TStereoPannerNodeRendererFactoryFactory } from '../types';\n\nexport const createStereoPannerNodeRendererFactory: TStereoPannerNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeStereoPannerNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeStereoPannerNodes = new WeakMap();\n\n const createStereoPannerNode = async (proxy: IStereoPannerNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeStereoPannerNode = getNativeAudioNode(proxy);\n\n /*\n * If the initially used nativeStereoPannerNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeStereoPannerNodeIsOwnedByContext = isOwnedByContext(nativeStereoPannerNode, nativeOfflineAudioContext);\n\n if (!nativeStereoPannerNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeStereoPannerNode.channelCount,\n channelCountMode: nativeStereoPannerNode.channelCountMode,\n channelInterpretation: nativeStereoPannerNode.channelInterpretation,\n pan: nativeStereoPannerNode.pan.value\n };\n\n nativeStereoPannerNode = createNativeStereoPannerNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeStereoPannerNodes.set(nativeOfflineAudioContext, nativeStereoPannerNode);\n\n if (!nativeStereoPannerNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan);\n }\n\n if (isNativeAudioNodeFaker(nativeStereoPannerNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode.inputs[0]);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode);\n }\n\n return nativeStereoPannerNode;\n };\n\n return {\n render(proxy: IStereoPannerNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeStereoPannerNode = renderedNativeStereoPannerNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeStereoPannerNode !== undefined) {\n return Promise.resolve(renderedNativeStereoPannerNode);\n }\n\n return createStereoPannerNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","// Bug #33: Safari exposes an AudioBuffer but it can't be used as a constructor.\nexport const createTestAudioBufferConstructorSupport = (nativeAudioBufferConstructor) => {\n return () => {\n if (nativeAudioBufferConstructor === null) {\n return false;\n }\n try {\n new nativeAudioBufferConstructor({ length: 1, sampleRate: 44100 }); // tslint:disable-line:no-unused-expression\n }\n catch {\n return false;\n }\n return true;\n };\n};\n//# sourceMappingURL=test-audio-buffer-constructor-support.js.map","import { TTestAudioBufferConstructorSupportFactory } from '../types';\n\n// Bug #33: Safari exposes an AudioBuffer but it can't be used as a constructor.\nexport const createTestAudioBufferConstructorSupport: TTestAudioBufferConstructorSupportFactory = (nativeAudioBufferConstructor) => {\n return () => {\n if (nativeAudioBufferConstructor === null) {\n return false;\n }\n\n try {\n new nativeAudioBufferConstructor({ length: 1, sampleRate: 44100 }); // tslint:disable-line:no-unused-expression\n } catch {\n return false;\n }\n\n return true;\n };\n};\n","/*\n * Firefox up to version 67 didn't fully support the copyFromChannel() and copyToChannel() methods. Therefore testing one of those methods\n * is enough to know if the other one is supported as well.\n */\nexport const createTestAudioBufferCopyChannelMethodsSubarraySupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeAudioBuffer = nativeOfflineAudioContext.createBuffer(1, 1, 44100);\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n if (nativeAudioBuffer.copyToChannel === undefined) {\n return true;\n }\n const source = new Float32Array(2);\n try {\n nativeAudioBuffer.copyFromChannel(source, 0, 0);\n }\n catch {\n return false;\n }\n return true;\n };\n};\n//# sourceMappingURL=test-audio-buffer-copy-channel-methods-subarray-support.js.map","import { TTestAudioBufferCopyChannelMethodsSubarraySupportFactory } from '../types';\n\n/*\n * Firefox up to version 67 didn't fully support the copyFromChannel() and copyToChannel() methods. Therefore testing one of those methods\n * is enough to know if the other one is supported as well.\n */\nexport const createTestAudioBufferCopyChannelMethodsSubarraySupport: TTestAudioBufferCopyChannelMethodsSubarraySupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeAudioBuffer = nativeOfflineAudioContext.createBuffer(1, 1, 44100);\n\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n if (nativeAudioBuffer.copyToChannel === undefined) {\n return true;\n }\n\n const source = new Float32Array(2);\n\n try {\n nativeAudioBuffer.copyFromChannel(source, 0, 0);\n } catch {\n return false;\n }\n\n return true;\n };\n};\n","export const createTestAudioContextCloseMethodSupport = (nativeAudioContextConstructor) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n // Try to check the prototype before constructing the AudioContext.\n if (nativeAudioContextConstructor.prototype !== undefined && nativeAudioContextConstructor.prototype.close !== undefined) {\n return true;\n }\n const audioContext = new nativeAudioContextConstructor();\n const isAudioContextClosable = audioContext.close !== undefined;\n try {\n audioContext.close();\n }\n catch {\n // Ignore errors.\n }\n return isAudioContextClosable;\n };\n};\n//# sourceMappingURL=test-audio-context-close-method-support.js.map","import { TTestAudioContextCloseMethodSupportFactory } from '../types';\n\nexport const createTestAudioContextCloseMethodSupport: TTestAudioContextCloseMethodSupportFactory = (nativeAudioContextConstructor) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n\n // Try to check the prototype before constructing the AudioContext.\n if (nativeAudioContextConstructor.prototype !== undefined && nativeAudioContextConstructor.prototype.close !== undefined) {\n return true;\n }\n\n const audioContext = new nativeAudioContextConstructor();\n\n const isAudioContextClosable = audioContext.close !== undefined;\n\n try {\n audioContext.close();\n } catch {\n // Ignore errors.\n }\n\n return isAudioContextClosable;\n };\n};\n","/**\n * Edge up to version 14, Firefox up to version 52, Safari up to version 9 and maybe other browsers\n * did not refuse to decode invalid parameters with a TypeError.\n */\nexport const createTestAudioContextDecodeAudioDataMethodTypeErrorSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n // Bug #21: Safari does not support promises yet.\n return new Promise((resolve) => {\n let isPending = true;\n const resolvePromise = (err) => {\n if (isPending) {\n isPending = false;\n offlineAudioContext.startRendering();\n resolve(err instanceof TypeError);\n }\n };\n let promise;\n // Bug #26: Safari throws a synchronous error.\n try {\n promise = offlineAudioContext\n // Bug #1: Safari requires a successCallback.\n .decodeAudioData(null, () => {\n // Ignore the success callback.\n }, resolvePromise);\n }\n catch (err) {\n resolvePromise(err);\n }\n // Bug #21: Safari does not support promises yet.\n if (promise !== undefined) {\n // Bug #6: Chrome, Edge, Firefox and Opera do not call the errorCallback.\n promise.catch(resolvePromise);\n }\n });\n };\n};\n//# sourceMappingURL=test-audio-context-decode-audio-data-method-type-error-support.js.map","import { TTestAudioContextDecodeAudioDataMethodTypeErrorSupportFactory } from '../types';\n\n/**\n * Edge up to version 14, Firefox up to version 52, Safari up to version 9 and maybe other browsers\n * did not refuse to decode invalid parameters with a TypeError.\n */\nexport const createTestAudioContextDecodeAudioDataMethodTypeErrorSupport: TTestAudioContextDecodeAudioDataMethodTypeErrorSupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n\n // Bug #21: Safari does not support promises yet.\n return new Promise((resolve) => {\n let isPending = true;\n\n const resolvePromise = (err: Error) => {\n if (isPending) {\n isPending = false;\n\n offlineAudioContext.startRendering();\n\n resolve(err instanceof TypeError);\n }\n };\n\n let promise;\n\n // Bug #26: Safari throws a synchronous error.\n try {\n promise = offlineAudioContext\n // Bug #1: Safari requires a successCallback.\n .decodeAudioData(\n null,\n () => {\n // Ignore the success callback.\n },\n resolvePromise\n );\n } catch (err) {\n resolvePromise(err);\n }\n\n // Bug #21: Safari does not support promises yet.\n if (promise !== undefined) {\n // Bug #6: Chrome, Edge, Firefox and Opera do not call the errorCallback.\n promise.catch(resolvePromise);\n }\n });\n };\n};\n","export const createTestAudioContextOptionsSupport = (nativeAudioContextConstructor) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n let audioContext;\n try {\n audioContext = new nativeAudioContextConstructor({ latencyHint: 'balanced' });\n }\n catch {\n return false;\n }\n audioContext.close();\n return true;\n };\n};\n//# sourceMappingURL=test-audio-context-options-support.js.map","import { TTestAudioContextOptionsSupportFactory } from '../types';\n\nexport const createTestAudioContextOptionsSupport: TTestAudioContextOptionsSupportFactory = (nativeAudioContextConstructor) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n\n let audioContext;\n\n try {\n audioContext = new nativeAudioContextConstructor({ latencyHint: 'balanced' });\n } catch {\n return false;\n }\n\n audioContext.close();\n\n return true;\n };\n};\n","// Safari up to version 12.0 (but not v12.1) didn't return the destination in case it was an AudioNode.\nexport const createTestAudioNodeConnectMethodSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeGainNode = nativeOfflineAudioContext.createGain();\n const isSupported = nativeGainNode.connect(nativeGainNode) === nativeGainNode;\n nativeGainNode.disconnect(nativeGainNode);\n return isSupported;\n };\n};\n//# sourceMappingURL=test-audio-node-connect-method-support.js.map","import { TTestAudioNodeConnectMethodSupportFactory } from '../types';\n\n// Safari up to version 12.0 (but not v12.1) didn't return the destination in case it was an AudioNode.\nexport const createTestAudioNodeConnectMethodSupport: TTestAudioNodeConnectMethodSupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeGainNode = nativeOfflineAudioContext.createGain();\n const isSupported = nativeGainNode.connect(nativeGainNode) === nativeGainNode;\n\n nativeGainNode.disconnect(nativeGainNode);\n\n return isSupported;\n };\n};\n","/**\n * Chrome version 66 and 67 did not call the process() function of an AudioWorkletProcessor if it had no outputs. AudioWorklet support was\n * enabled by default in version 66.\n */\nexport const createTestAudioWorkletProcessorNoOutputsSupport = (nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor) => {\n return async () => {\n // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist.\n if (nativeAudioWorkletNodeConstructor === null) {\n return true;\n }\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const blob = new Blob([\n 'let c,p;class A extends AudioWorkletProcessor{constructor(){super();this.port.onmessage=(e)=>{p=e.data;p.onmessage=()=>{p.postMessage(c);p.close()};this.port.postMessage(0)}}process(){c=1}}registerProcessor(\"a\",A)'\n ], {\n type: 'application/javascript; charset=utf-8'\n });\n const messageChannel = new MessageChannel();\n // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz.\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 44100);\n const url = URL.createObjectURL(blob);\n let isCallingProcess = false;\n try {\n await offlineAudioContext.audioWorklet.addModule(url);\n const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 });\n const oscillator = offlineAudioContext.createOscillator();\n await new Promise((resolve) => {\n audioWorkletNode.port.onmessage = () => resolve();\n audioWorkletNode.port.postMessage(messageChannel.port2, [messageChannel.port2]);\n });\n audioWorkletNode.port.onmessage = () => (isCallingProcess = true);\n oscillator.connect(audioWorkletNode);\n oscillator.start(0);\n await offlineAudioContext.startRendering();\n isCallingProcess = await new Promise((resolve) => {\n messageChannel.port1.onmessage = ({ data }) => resolve(data === 1);\n messageChannel.port1.postMessage(0);\n });\n }\n catch {\n // Ignore errors.\n }\n finally {\n messageChannel.port1.close();\n URL.revokeObjectURL(url);\n }\n return isCallingProcess;\n };\n};\n//# sourceMappingURL=test-audio-worklet-processor-no-outputs-support.js.map","import { TTestAudioWorkletProcessorNoOutputsSupportFactory } from '../types';\n\n/**\n * Chrome version 66 and 67 did not call the process() function of an AudioWorkletProcessor if it had no outputs. AudioWorklet support was\n * enabled by default in version 66.\n */\nexport const createTestAudioWorkletProcessorNoOutputsSupport: TTestAudioWorkletProcessorNoOutputsSupportFactory = (\n nativeAudioWorkletNodeConstructor,\n nativeOfflineAudioContextConstructor\n) => {\n return async () => {\n // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist.\n if (nativeAudioWorkletNodeConstructor === null) {\n return true;\n }\n\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const blob = new Blob(\n [\n 'let c,p;class A extends AudioWorkletProcessor{constructor(){super();this.port.onmessage=(e)=>{p=e.data;p.onmessage=()=>{p.postMessage(c);p.close()};this.port.postMessage(0)}}process(){c=1}}registerProcessor(\"a\",A)'\n ],\n {\n type: 'application/javascript; charset=utf-8'\n }\n );\n const messageChannel = new MessageChannel();\n // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz.\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 44100);\n const url = URL.createObjectURL(blob);\n\n let isCallingProcess = false;\n\n try {\n await offlineAudioContext.audioWorklet.addModule(url);\n\n const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 });\n const oscillator = offlineAudioContext.createOscillator();\n\n await new Promise((resolve) => {\n audioWorkletNode.port.onmessage = () => resolve();\n audioWorkletNode.port.postMessage(messageChannel.port2, [messageChannel.port2]);\n });\n\n audioWorkletNode.port.onmessage = () => (isCallingProcess = true);\n\n oscillator.connect(audioWorkletNode);\n oscillator.start(0);\n\n await offlineAudioContext.startRendering();\n\n isCallingProcess = await new Promise((resolve) => {\n messageChannel.port1.onmessage = ({ data }) => resolve(data === 1);\n messageChannel.port1.postMessage(0);\n });\n } catch {\n // Ignore errors.\n } finally {\n messageChannel.port1.close();\n URL.revokeObjectURL(url);\n }\n\n return isCallingProcess;\n };\n};\n","// Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\nexport const createTestAudioWorkletProcessorPostMessageSupport = (nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor) => {\n return async () => {\n // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist.\n if (nativeAudioWorkletNodeConstructor === null) {\n return true;\n }\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const blob = new Blob(['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor(\"a\",A)'], {\n type: 'application/javascript; charset=utf-8'\n });\n // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz.\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 44100);\n const url = URL.createObjectURL(blob);\n let isEmittingMessageEvents = false;\n let isEmittingProcessorErrorEvents = false;\n try {\n await offlineAudioContext.audioWorklet.addModule(url);\n const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 });\n const oscillator = offlineAudioContext.createOscillator();\n audioWorkletNode.port.onmessage = () => (isEmittingMessageEvents = true);\n audioWorkletNode.onprocessorerror = () => (isEmittingProcessorErrorEvents = true);\n oscillator.connect(audioWorkletNode);\n oscillator.start(0);\n await offlineAudioContext.startRendering();\n }\n catch {\n // Ignore errors.\n }\n finally {\n URL.revokeObjectURL(url);\n }\n return isEmittingMessageEvents && !isEmittingProcessorErrorEvents;\n };\n};\n//# sourceMappingURL=test-audio-worklet-processor-post-message-support.js.map","import { TTestAudioWorkletProcessorPostMessageSupportFactory } from '../types';\n\n// Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\nexport const createTestAudioWorkletProcessorPostMessageSupport: TTestAudioWorkletProcessorPostMessageSupportFactory = (\n nativeAudioWorkletNodeConstructor,\n nativeOfflineAudioContextConstructor\n) => {\n return async () => {\n // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist.\n if (nativeAudioWorkletNodeConstructor === null) {\n return true;\n }\n\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const blob = new Blob(\n ['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor(\"a\",A)'],\n {\n type: 'application/javascript; charset=utf-8'\n }\n );\n // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz.\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 44100);\n const url = URL.createObjectURL(blob);\n\n let isEmittingMessageEvents = false;\n let isEmittingProcessorErrorEvents = false;\n\n try {\n await offlineAudioContext.audioWorklet.addModule(url);\n\n const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 });\n const oscillator = offlineAudioContext.createOscillator();\n\n audioWorkletNode.port.onmessage = () => (isEmittingMessageEvents = true);\n audioWorkletNode.onprocessorerror = () => (isEmittingProcessorErrorEvents = true);\n\n oscillator.connect(audioWorkletNode);\n oscillator.start(0);\n\n await offlineAudioContext.startRendering();\n } catch {\n // Ignore errors.\n } finally {\n URL.revokeObjectURL(url);\n }\n\n return isEmittingMessageEvents && !isEmittingProcessorErrorEvents;\n };\n};\n","/**\n * Firefox up to version 69 did not throw an error when setting a different channelCount or channelCountMode.\n */\nexport const createTestChannelMergerNodeChannelCountSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeChannelMergerNode = offlineAudioContext.createChannelMerger();\n /**\n * Bug #15: Safari does not return the default properties. It still needs to be patched. This test is supposed to test the support\n * in other browsers.\n */\n if (nativeChannelMergerNode.channelCountMode === 'max') {\n return true;\n }\n try {\n nativeChannelMergerNode.channelCount = 2;\n }\n catch {\n return true;\n }\n return false;\n };\n};\n//# sourceMappingURL=test-channel-merger-node-channel-count-support.js.map","import { TTestChannelMergerNodeChannelCountSupportFactory } from '../types';\n\n/**\n * Firefox up to version 69 did not throw an error when setting a different channelCount or channelCountMode.\n */\nexport const createTestChannelMergerNodeChannelCountSupport: TTestChannelMergerNodeChannelCountSupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeChannelMergerNode = offlineAudioContext.createChannelMerger();\n\n /**\n * Bug #15: Safari does not return the default properties. It still needs to be patched. This test is supposed to test the support\n * in other browsers.\n */\n if (nativeChannelMergerNode.channelCountMode === 'max') {\n return true;\n }\n\n try {\n nativeChannelMergerNode.channelCount = 2;\n } catch {\n return true;\n }\n\n return false;\n };\n};\n","export const createTestConstantSourceNodeAccurateSchedulingSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeOfflineAudioContext.createConstantSource === undefined) {\n return true;\n }\n const nativeConstantSourceNode = nativeOfflineAudioContext.createConstantSource();\n /*\n * @todo This is using bug #75 to detect bug #70. That works because both bugs were unique to\n * the implementation of Firefox right now, but it could probably be done in a better way.\n */\n return nativeConstantSourceNode.offset.maxValue !== Number.POSITIVE_INFINITY;\n };\n};\n//# sourceMappingURL=test-constant-source-node-accurate-scheduling-support.js.map","import { TTestConstantSourceNodeAccurateSchedulingSupportFactory } from '../types';\n\nexport const createTestConstantSourceNodeAccurateSchedulingSupport: TTestConstantSourceNodeAccurateSchedulingSupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeOfflineAudioContext.createConstantSource === undefined) {\n return true;\n }\n\n const nativeConstantSourceNode = nativeOfflineAudioContext.createConstantSource();\n\n /*\n * @todo This is using bug #75 to detect bug #70. That works because both bugs were unique to\n * the implementation of Firefox right now, but it could probably be done in a better way.\n */\n return nativeConstantSourceNode.offset.maxValue !== Number.POSITIVE_INFINITY;\n };\n};\n","// Opera up to version 57 did not allow to reassign the buffer of a ConvolverNode.\nexport const createTestConvolverNodeBufferReassignabilitySupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeConvolverNode = offlineAudioContext.createConvolver();\n nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate);\n try {\n nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate);\n }\n catch {\n return false;\n }\n return true;\n };\n};\n//# sourceMappingURL=test-convolver-node-buffer-reassignability-support.js.map","import { TTestConvolverNodeBufferReassignabilitySupportFactory } from '../types';\n\n// Opera up to version 57 did not allow to reassign the buffer of a ConvolverNode.\nexport const createTestConvolverNodeBufferReassignabilitySupport: TTestConvolverNodeBufferReassignabilitySupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeConvolverNode = offlineAudioContext.createConvolver();\n\n nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate);\n\n try {\n nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate);\n } catch {\n return false;\n }\n\n return true;\n };\n};\n","// Chrome up to version v80, Edge up to version v80 and Opera up to version v67 did not allow to set the channelCount property of a ConvolverNode to 1. They also did not allow to set the channelCountMode to 'explicit'.\nexport const createTestConvolverNodeChannelCountSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeConvolverNode = offlineAudioContext.createConvolver();\n try {\n nativeConvolverNode.channelCount = 1;\n }\n catch {\n return false;\n }\n return true;\n };\n};\n//# sourceMappingURL=test-convolver-node-channel-count-support.js.map","import { TTestConvolverNodeChannelCountSupportFactory } from '../types';\n\n// Chrome up to version v80, Edge up to version v80 and Opera up to version v67 did not allow to set the channelCount property of a ConvolverNode to 1. They also did not allow to set the channelCountMode to 'explicit'.\nexport const createTestConvolverNodeChannelCountSupport: TTestConvolverNodeChannelCountSupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeConvolverNode = offlineAudioContext.createConvolver();\n\n try {\n nativeConvolverNode.channelCount = 1;\n } catch {\n return false;\n }\n\n return true;\n };\n};\n","export const createTestIsSecureContextSupport = (window) => {\n return () => window !== null && window.hasOwnProperty('isSecureContext');\n};\n//# sourceMappingURL=test-is-secure-context-support.js.map","import { TTestIsSecureContextSupportFactory } from '../types';\n\nexport const createTestIsSecureContextSupport: TTestIsSecureContextSupportFactory = (window) => {\n return () => window !== null && window.hasOwnProperty('isSecureContext');\n};\n","// Firefox up to version 68 did not throw an error when creating a MediaStreamAudioSourceNode with a mediaStream that had no audio track.\nexport const createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport = (nativeAudioContextConstructor) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n const audioContext = new nativeAudioContextConstructor();\n try {\n audioContext.createMediaStreamSource(new MediaStream());\n return false;\n }\n catch (err) {\n return true;\n }\n finally {\n audioContext.close();\n }\n };\n};\n//# sourceMappingURL=test-media-stream-audio-source-node-media-stream-without-audio-track-support.js.map","import { TTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupportFactory } from '../types';\n\n// Firefox up to version 68 did not throw an error when creating a MediaStreamAudioSourceNode with a mediaStream that had no audio track.\nexport const createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport: TTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupportFactory =\n (nativeAudioContextConstructor) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n\n const audioContext = new nativeAudioContextConstructor();\n\n try {\n audioContext.createMediaStreamSource(new MediaStream());\n\n return false;\n } catch (err) {\n return true;\n } finally {\n audioContext.close();\n }\n };\n };\n","export const createTestOfflineAudioContextCurrentTimeSupport = (createNativeGainNode, nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n // Bug #48: Safari does not render an OfflineAudioContext without any connected node.\n const gainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n // Bug #21: Safari does not support promises yet.\n return new Promise((resolve) => {\n nativeOfflineAudioContext.oncomplete = () => {\n gainNode.disconnect();\n resolve(nativeOfflineAudioContext.currentTime !== 0);\n };\n nativeOfflineAudioContext.startRendering();\n });\n };\n};\n//# sourceMappingURL=test-offline-audio-context-current-time-support.js.map","import { TTestOfflineAudioContextCurrentTimeSupportFactory } from '../types';\n\nexport const createTestOfflineAudioContextCurrentTimeSupport: TTestOfflineAudioContextCurrentTimeSupportFactory = (\n createNativeGainNode,\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n\n // Bug #48: Safari does not render an OfflineAudioContext without any connected node.\n const gainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n\n // Bug #21: Safari does not support promises yet.\n return new Promise((resolve) => {\n nativeOfflineAudioContext.oncomplete = () => {\n gainNode.disconnect();\n\n resolve(nativeOfflineAudioContext.currentTime !== 0);\n };\n nativeOfflineAudioContext.startRendering();\n });\n };\n};\n","/**\n * Firefox up to version 62 did not kick off the processing of the StereoPannerNode if the value of pan was zero.\n */\nexport const createTestStereoPannerNodeDefaultValueSupport = (nativeOfflineAudioContextConstructor) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n /*\n * Bug #105: Safari does not support the StereoPannerNode. Therefore the returned value should normally be false but the faker does\n * support the tested behaviour.\n */\n if (nativeOfflineAudioContext.createStereoPanner === undefined) {\n return Promise.resolve(true);\n }\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeOfflineAudioContext.createConstantSource === undefined) {\n return Promise.resolve(true);\n }\n const constantSourceNode = nativeOfflineAudioContext.createConstantSource();\n const stereoPanner = nativeOfflineAudioContext.createStereoPanner();\n constantSourceNode.channelCount = 1;\n constantSourceNode.offset.value = 1;\n stereoPanner.channelCount = 1;\n constantSourceNode.start();\n constantSourceNode.connect(stereoPanner).connect(nativeOfflineAudioContext.destination);\n return nativeOfflineAudioContext.startRendering().then((buffer) => buffer.getChannelData(0)[0] !== 1);\n };\n};\n//# sourceMappingURL=test-stereo-panner-node-default-value-support.js.map","import { TTestStereoPannerNodeDefaultValueSupportFactory } from '../types';\n\n/**\n * Firefox up to version 62 did not kick off the processing of the StereoPannerNode if the value of pan was zero.\n */\nexport const createTestStereoPannerNodeDefaultValueSupport: TTestStereoPannerNodeDefaultValueSupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n\n /*\n * Bug #105: Safari does not support the StereoPannerNode. Therefore the returned value should normally be false but the faker does\n * support the tested behaviour.\n */\n if (nativeOfflineAudioContext.createStereoPanner === undefined) {\n return Promise.resolve(true);\n }\n\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeOfflineAudioContext.createConstantSource === undefined) {\n return Promise.resolve(true);\n }\n\n const constantSourceNode = nativeOfflineAudioContext.createConstantSource();\n const stereoPanner = nativeOfflineAudioContext.createStereoPanner();\n\n constantSourceNode.channelCount = 1;\n constantSourceNode.offset.value = 1;\n\n stereoPanner.channelCount = 1;\n\n constantSourceNode.start();\n\n constantSourceNode.connect(stereoPanner).connect(nativeOfflineAudioContext.destination);\n\n return nativeOfflineAudioContext.startRendering().then((buffer) => buffer.getChannelData(0)[0] !== 1);\n };\n};\n","export const createUnknownError = () => new DOMException('', 'UnknownError');\n//# sourceMappingURL=unknown-error.js.map","import { TUnknownErrorFactory } from '../types';\n\nexport const createUnknownError: TUnknownErrorFactory = () => new DOMException('', 'UnknownError');\n","const DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n curve: null,\n oversample: 'none'\n};\nexport const createWaveShaperNodeConstructor = (audioNodeConstructor, createInvalidStateError, createNativeWaveShaperNode, createWaveShaperNodeRenderer, getNativeContext, isNativeOfflineAudioContext, setAudioNodeTailTime) => {\n return class WaveShaperNode extends audioNodeConstructor {\n constructor(context, options) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeWaveShaperNode = createNativeWaveShaperNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const waveShaperNodeRenderer = (isOffline ? createWaveShaperNodeRenderer() : null);\n // @todo Add a mechanism to only switch a WaveShaperNode to active while it is connected.\n super(context, true, nativeWaveShaperNode, waveShaperNodeRenderer);\n this._isCurveNullified = false;\n this._nativeWaveShaperNode = nativeWaveShaperNode;\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n get curve() {\n if (this._isCurveNullified) {\n return null;\n }\n return this._nativeWaveShaperNode.curve;\n }\n set curve(value) {\n // Bug #103: Safari does not allow to set the curve to null.\n if (value === null) {\n this._isCurveNullified = true;\n this._nativeWaveShaperNode.curve = new Float32Array([0, 0]);\n }\n else {\n // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples.\n // Bug #104: Chrome, Edge and Opera will throw an InvalidAccessError when the curve has less than two samples.\n if (value.length < 2) {\n throw createInvalidStateError();\n }\n this._isCurveNullified = false;\n this._nativeWaveShaperNode.curve = value;\n }\n }\n get oversample() {\n return this._nativeWaveShaperNode.oversample;\n }\n set oversample(value) {\n this._nativeWaveShaperNode.oversample = value;\n }\n };\n};\n//# sourceMappingURL=wave-shaper-node-constructor.js.map","import { IWaveShaperNode, IWaveShaperOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TContext, TNativeWaveShaperNode, TOverSampleType, TWaveShaperNodeConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n curve: null,\n oversample: 'none'\n} as const;\n\nexport const createWaveShaperNodeConstructor: TWaveShaperNodeConstructorFactory = (\n audioNodeConstructor,\n createInvalidStateError,\n createNativeWaveShaperNode,\n createWaveShaperNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class WaveShaperNode extends audioNodeConstructor implements IWaveShaperNode {\n private _isCurveNullified: boolean;\n\n private _nativeWaveShaperNode: TNativeWaveShaperNode;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeWaveShaperNode = createNativeWaveShaperNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const waveShaperNodeRenderer = >(isOffline ? createWaveShaperNodeRenderer() : null);\n\n // @todo Add a mechanism to only switch a WaveShaperNode to active while it is connected.\n super(context, true, nativeWaveShaperNode, waveShaperNodeRenderer);\n\n this._isCurveNullified = false;\n this._nativeWaveShaperNode = nativeWaveShaperNode;\n\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n\n get curve(): null | Float32Array {\n if (this._isCurveNullified) {\n return null;\n }\n\n return this._nativeWaveShaperNode.curve;\n }\n\n set curve(value) {\n // Bug #103: Safari does not allow to set the curve to null.\n if (value === null) {\n this._isCurveNullified = true;\n this._nativeWaveShaperNode.curve = new Float32Array([0, 0]);\n } else {\n // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples.\n // Bug #104: Chrome, Edge and Opera will throw an InvalidAccessError when the curve has less than two samples.\n if (value.length < 2) {\n throw createInvalidStateError();\n }\n\n this._isCurveNullified = false;\n this._nativeWaveShaperNode.curve = value;\n }\n }\n\n get oversample(): TOverSampleType {\n return this._nativeWaveShaperNode.oversample;\n }\n\n set oversample(value) {\n this._nativeWaveShaperNode.oversample = value;\n }\n };\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nexport const createWaveShaperNodeRendererFactory = (createNativeWaveShaperNode, getNativeAudioNode, renderInputsOfAudioNode) => {\n return () => {\n const renderedNativeWaveShaperNodes = new WeakMap();\n const createWaveShaperNode = async (proxy, nativeOfflineAudioContext) => {\n let nativeWaveShaperNode = getNativeAudioNode(proxy);\n // If the initially used nativeWaveShaperNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeWaveShaperNodeIsOwnedByContext = isOwnedByContext(nativeWaveShaperNode, nativeOfflineAudioContext);\n if (!nativeWaveShaperNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeWaveShaperNode.channelCount,\n channelCountMode: nativeWaveShaperNode.channelCountMode,\n channelInterpretation: nativeWaveShaperNode.channelInterpretation,\n curve: nativeWaveShaperNode.curve,\n oversample: nativeWaveShaperNode.oversample\n };\n nativeWaveShaperNode = createNativeWaveShaperNode(nativeOfflineAudioContext, options);\n }\n renderedNativeWaveShaperNodes.set(nativeOfflineAudioContext, nativeWaveShaperNode);\n if (isNativeAudioNodeFaker(nativeWaveShaperNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode.inputs[0]);\n }\n else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode);\n }\n return nativeWaveShaperNode;\n };\n return {\n render(proxy, nativeOfflineAudioContext) {\n const renderedNativeWaveShaperNode = renderedNativeWaveShaperNodes.get(nativeOfflineAudioContext);\n if (renderedNativeWaveShaperNode !== undefined) {\n return Promise.resolve(renderedNativeWaveShaperNode);\n }\n return createWaveShaperNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n//# sourceMappingURL=wave-shaper-node-renderer-factory.js.map","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IMinimalOfflineAudioContext, IOfflineAudioContext, IWaveShaperNode } from '../interfaces';\nimport { TNativeOfflineAudioContext, TNativeWaveShaperNode, TWaveShaperNodeRendererFactoryFactory } from '../types';\n\nexport const createWaveShaperNodeRendererFactory: TWaveShaperNodeRendererFactoryFactory = (\n createNativeWaveShaperNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeWaveShaperNodes = new WeakMap();\n\n const createWaveShaperNode = async (proxy: IWaveShaperNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeWaveShaperNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeWaveShaperNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeWaveShaperNodeIsOwnedByContext = isOwnedByContext(nativeWaveShaperNode, nativeOfflineAudioContext);\n\n if (!nativeWaveShaperNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeWaveShaperNode.channelCount,\n channelCountMode: nativeWaveShaperNode.channelCountMode,\n channelInterpretation: nativeWaveShaperNode.channelInterpretation,\n curve: nativeWaveShaperNode.curve,\n oversample: nativeWaveShaperNode.oversample\n };\n\n nativeWaveShaperNode = createNativeWaveShaperNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeWaveShaperNodes.set(nativeOfflineAudioContext, nativeWaveShaperNode);\n\n if (isNativeAudioNodeFaker(nativeWaveShaperNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode.inputs[0]);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode);\n }\n\n return nativeWaveShaperNode;\n };\n\n return {\n render(proxy: IWaveShaperNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeWaveShaperNode = renderedNativeWaveShaperNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeWaveShaperNode !== undefined) {\n return Promise.resolve(renderedNativeWaveShaperNode);\n }\n\n return createWaveShaperNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","export const createWindow = () => (typeof window === 'undefined' ? null : window);\n//# sourceMappingURL=window.js.map","import { TWindow, TWindowFactory } from '../types';\n\nexport const createWindow: TWindowFactory = () => (typeof window === 'undefined' ? null : window);\n","export const createWrapAudioBufferCopyChannelMethods = (convertNumberToUnsignedLong, createIndexSizeError) => {\n return (audioBuffer) => {\n audioBuffer.copyFromChannel = (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (channelNumber >= audioBuffer.numberOfChannels) {\n throw createIndexSizeError();\n }\n const audioBufferLength = audioBuffer.length;\n const channelData = audioBuffer.getChannelData(channelNumber);\n const destinationLength = destination.length;\n for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < destinationLength; i += 1) {\n destination[i] = channelData[i + bufferOffset];\n }\n };\n audioBuffer.copyToChannel = (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (channelNumber >= audioBuffer.numberOfChannels) {\n throw createIndexSizeError();\n }\n const audioBufferLength = audioBuffer.length;\n const channelData = audioBuffer.getChannelData(channelNumber);\n const sourceLength = source.length;\n for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < sourceLength; i += 1) {\n channelData[i + bufferOffset] = source[i];\n }\n };\n };\n};\n//# sourceMappingURL=wrap-audio-buffer-copy-channel-methods.js.map","import { TNativeAudioBuffer, TWrapAudioBufferCopyChannelMethodsFactory } from '../types';\n\nexport const createWrapAudioBufferCopyChannelMethods: TWrapAudioBufferCopyChannelMethodsFactory = (\n convertNumberToUnsignedLong,\n createIndexSizeError\n) => {\n return (audioBuffer: TNativeAudioBuffer): void => {\n audioBuffer.copyFromChannel = (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n\n if (channelNumber >= audioBuffer.numberOfChannels) {\n throw createIndexSizeError();\n }\n\n const audioBufferLength = audioBuffer.length;\n const channelData = audioBuffer.getChannelData(channelNumber);\n const destinationLength = destination.length;\n\n for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < destinationLength; i += 1) {\n destination[i] = channelData[i + bufferOffset];\n }\n };\n\n audioBuffer.copyToChannel = (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n\n if (channelNumber >= audioBuffer.numberOfChannels) {\n throw createIndexSizeError();\n }\n\n const audioBufferLength = audioBuffer.length;\n const channelData = audioBuffer.getChannelData(channelNumber);\n const sourceLength = source.length;\n\n for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < sourceLength; i += 1) {\n channelData[i + bufferOffset] = source[i];\n }\n };\n };\n};\n","export const createWrapAudioBufferCopyChannelMethodsOutOfBounds = (convertNumberToUnsignedLong) => {\n return (audioBuffer) => {\n audioBuffer.copyFromChannel = ((copyFromChannel) => {\n return (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (bufferOffset < audioBuffer.length) {\n return copyFromChannel.call(audioBuffer, destination, channelNumber, bufferOffset);\n }\n };\n })(audioBuffer.copyFromChannel);\n audioBuffer.copyToChannel = ((copyToChannel) => {\n return (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n if (bufferOffset < audioBuffer.length) {\n return copyToChannel.call(audioBuffer, source, channelNumber, bufferOffset);\n }\n };\n })(audioBuffer.copyToChannel);\n };\n};\n//# sourceMappingURL=wrap-audio-buffer-copy-channel-methods-out-of-bounds.js.map","import { TNativeAudioBuffer, TWrapAudioBufferCopyChannelMethodsOutOfBoundsFactory } from '../types';\n\nexport const createWrapAudioBufferCopyChannelMethodsOutOfBounds: TWrapAudioBufferCopyChannelMethodsOutOfBoundsFactory = (\n convertNumberToUnsignedLong\n) => {\n return (audioBuffer: TNativeAudioBuffer): void => {\n audioBuffer.copyFromChannel = ((copyFromChannel) => {\n return (destination: Float32Array, channelNumberAsNumber: number, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n\n if (bufferOffset < audioBuffer.length) {\n return copyFromChannel.call(audioBuffer, destination, channelNumber, bufferOffset);\n }\n };\n })(audioBuffer.copyFromChannel);\n\n audioBuffer.copyToChannel = ((copyToChannel) => {\n return (source: Float32Array, channelNumberAsNumber: number, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n\n if (bufferOffset < audioBuffer.length) {\n return copyToChannel.call(audioBuffer, source, channelNumber, bufferOffset);\n }\n };\n })(audioBuffer.copyToChannel);\n };\n};\n","export const createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer = (overwriteAccessors) => {\n return (nativeAudioBufferSourceNode, nativeContext) => {\n const nullifiedBuffer = nativeContext.createBuffer(1, 1, 44100);\n if (nativeAudioBufferSourceNode.buffer === null) {\n nativeAudioBufferSourceNode.buffer = nullifiedBuffer;\n }\n overwriteAccessors(nativeAudioBufferSourceNode, 'buffer', (get) => () => {\n const value = get.call(nativeAudioBufferSourceNode);\n return value === nullifiedBuffer ? null : value;\n }, (set) => (value) => {\n return set.call(nativeAudioBufferSourceNode, value === null ? nullifiedBuffer : value);\n });\n };\n};\n//# sourceMappingURL=wrap-audio-buffer-source-node-stop-method-nullified-buffer.js.map","import { TWrapAudioBufferSourceNodeStopMethodNullifiedBufferFactory } from '../types';\n\nexport const createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer: TWrapAudioBufferSourceNodeStopMethodNullifiedBufferFactory = (\n overwriteAccessors\n) => {\n return (nativeAudioBufferSourceNode, nativeContext) => {\n const nullifiedBuffer = nativeContext.createBuffer(1, 1, 44100);\n\n if (nativeAudioBufferSourceNode.buffer === null) {\n nativeAudioBufferSourceNode.buffer = nullifiedBuffer;\n }\n\n overwriteAccessors(\n nativeAudioBufferSourceNode,\n 'buffer',\n (get) => () => {\n const value = get.call(nativeAudioBufferSourceNode);\n\n return value === nullifiedBuffer ? null : value;\n },\n (set) => (value) => {\n return set.call(nativeAudioBufferSourceNode, value === null ? nullifiedBuffer : value);\n }\n );\n };\n};\n","export const createWrapChannelMergerNode = (createInvalidStateError, monitorConnections) => {\n return (nativeContext, channelMergerNode) => {\n // Bug #15: Safari does not return the default properties.\n channelMergerNode.channelCount = 1;\n channelMergerNode.channelCountMode = 'explicit';\n // Bug #16: Safari does not throw an error when setting a different channelCount or channelCountMode.\n Object.defineProperty(channelMergerNode, 'channelCount', {\n get: () => 1,\n set: () => {\n throw createInvalidStateError();\n }\n });\n Object.defineProperty(channelMergerNode, 'channelCountMode', {\n get: () => 'explicit',\n set: () => {\n throw createInvalidStateError();\n }\n });\n // Bug #20: Safari requires a connection of any kind to treat the input signal correctly.\n const audioBufferSourceNode = nativeContext.createBufferSource();\n const whenConnected = () => {\n const length = channelMergerNode.numberOfInputs;\n for (let i = 0; i < length; i += 1) {\n audioBufferSourceNode.connect(channelMergerNode, 0, i);\n }\n };\n const whenDisconnected = () => audioBufferSourceNode.disconnect(channelMergerNode);\n monitorConnections(channelMergerNode, whenConnected, whenDisconnected);\n };\n};\n//# sourceMappingURL=wrap-channel-merger-node.js.map","import { TWrapChannelMergerNodeFactory } from '../types';\n\nexport const createWrapChannelMergerNode: TWrapChannelMergerNodeFactory = (createInvalidStateError, monitorConnections) => {\n return (nativeContext, channelMergerNode) => {\n // Bug #15: Safari does not return the default properties.\n channelMergerNode.channelCount = 1;\n channelMergerNode.channelCountMode = 'explicit';\n\n // Bug #16: Safari does not throw an error when setting a different channelCount or channelCountMode.\n Object.defineProperty(channelMergerNode, 'channelCount', {\n get: () => 1,\n set: () => {\n throw createInvalidStateError();\n }\n });\n\n Object.defineProperty(channelMergerNode, 'channelCountMode', {\n get: () => 'explicit',\n set: () => {\n throw createInvalidStateError();\n }\n });\n\n // Bug #20: Safari requires a connection of any kind to treat the input signal correctly.\n const audioBufferSourceNode = nativeContext.createBufferSource();\n\n const whenConnected = () => {\n const length = channelMergerNode.numberOfInputs;\n\n for (let i = 0; i < length; i += 1) {\n audioBufferSourceNode.connect(channelMergerNode, 0, i);\n }\n };\n const whenDisconnected = () => audioBufferSourceNode.disconnect(channelMergerNode);\n\n monitorConnections(channelMergerNode, whenConnected, whenDisconnected);\n };\n};\n","export const getFirstSample = (audioBuffer, buffer, channelNumber) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n if (audioBuffer.copyFromChannel === undefined) {\n return audioBuffer.getChannelData(channelNumber)[0];\n }\n audioBuffer.copyFromChannel(buffer, channelNumber);\n return buffer[0];\n};\n//# sourceMappingURL=get-first-sample.js.map","import { TGetFirstSampleFunction } from '../types';\n\nexport const getFirstSample: TGetFirstSampleFunction = (audioBuffer, buffer, channelNumber) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n if (audioBuffer.copyFromChannel === undefined) {\n return audioBuffer.getChannelData(channelNumber)[0];\n }\n\n audioBuffer.copyFromChannel(buffer, channelNumber);\n\n return buffer[0];\n};\n","export const isDCCurve = (curve) => {\n if (curve === null) {\n return false;\n }\n const length = curve.length;\n if (length % 2 !== 0) {\n return curve[Math.floor(length / 2)] !== 0;\n }\n return curve[length / 2 - 1] + curve[length / 2] !== 0;\n};\n//# sourceMappingURL=is-dc-curve.js.map","import { TIsDCCurveFunction } from '../types';\n\nexport const isDCCurve: TIsDCCurveFunction = (curve) => {\n if (curve === null) {\n return false;\n }\n\n const length = curve.length;\n\n if (length % 2 !== 0) {\n return curve[Math.floor(length / 2)] !== 0;\n }\n\n return curve[length / 2 - 1] + curve[length / 2] !== 0;\n};\n","export const overwriteAccessors = (object, property, createGetter, createSetter) => {\n let prototype = object;\n while (!prototype.hasOwnProperty(property)) {\n prototype = Object.getPrototypeOf(prototype);\n }\n const { get, set } = Object.getOwnPropertyDescriptor(prototype, property);\n Object.defineProperty(object, property, { get: createGetter(get), set: createSetter(set) });\n};\n//# sourceMappingURL=overwrite-accessors.js.map","import { TOverwriteAccessorsFunction } from '../types';\n\nexport const overwriteAccessors: TOverwriteAccessorsFunction = (object, property, createGetter, createSetter) => {\n let prototype = object;\n\n while (!prototype.hasOwnProperty(property)) {\n prototype = Object.getPrototypeOf(prototype);\n }\n\n const { get, set } = >Object.getOwnPropertyDescriptor(prototype, property);\n\n Object.defineProperty(object, property, { get: createGetter(get), set: createSetter(set) });\n};\n","export const sanitizeAudioWorkletNodeOptions = (options) => {\n return {\n ...options,\n outputChannelCount: options.outputChannelCount !== undefined\n ? options.outputChannelCount\n : options.numberOfInputs === 1 && options.numberOfOutputs === 1\n ? /*\n * Bug #61: This should be the computedNumberOfChannels, but unfortunately that is almost impossible to fake. That's why\n * the channelCountMode is required to be 'explicit' as long as there is not a native implementation in every browser. That\n * makes sure the computedNumberOfChannels is equivilant to the channelCount which makes it much easier to compute.\n */\n [options.channelCount]\n : Array.from({ length: options.numberOfOutputs }, () => 1)\n };\n};\n//# sourceMappingURL=sanitize-audio-worklet-node-options.js.map","import { TSanitizeAudioWorkletNodeOptionsFunction } from '../types';\n\nexport const sanitizeAudioWorkletNodeOptions: TSanitizeAudioWorkletNodeOptionsFunction = (options) => {\n return {\n ...options,\n outputChannelCount:\n options.outputChannelCount !== undefined\n ? options.outputChannelCount\n : options.numberOfInputs === 1 && options.numberOfOutputs === 1\n ? /*\n * Bug #61: This should be the computedNumberOfChannels, but unfortunately that is almost impossible to fake. That's why\n * the channelCountMode is required to be 'explicit' as long as there is not a native implementation in every browser. That\n * makes sure the computedNumberOfChannels is equivilant to the channelCount which makes it much easier to compute.\n */\n [options.channelCount]\n : Array.from({ length: options.numberOfOutputs }, () => 1)\n };\n};\n","export const sanitizeChannelSplitterOptions = (options) => {\n return { ...options, channelCount: options.numberOfOutputs };\n};\n//# sourceMappingURL=sanitize-channel-splitter-options.js.map","import { TSanitizeChannelSplitterOptionsFunction } from '../types';\n\nexport const sanitizeChannelSplitterOptions: TSanitizeChannelSplitterOptionsFunction = (options) => {\n return { ...options, channelCount: options.numberOfOutputs };\n};\n","export const sanitizePeriodicWaveOptions = (options) => {\n const { imag, real } = options;\n if (imag === undefined) {\n if (real === undefined) {\n return { ...options, imag: [0, 0], real: [0, 0] };\n }\n return { ...options, imag: Array.from(real, () => 0), real };\n }\n if (real === undefined) {\n return { ...options, imag, real: Array.from(imag, () => 0) };\n }\n return { ...options, imag, real };\n};\n//# sourceMappingURL=sanitize-periodic-wave-options.js.map","import { TSanitizePeriodicWaveOptionsFunction } from '../types';\n\nexport const sanitizePeriodicWaveOptions: TSanitizePeriodicWaveOptionsFunction = (options) => {\n const { imag, real } = options;\n\n if (imag === undefined) {\n if (real === undefined) {\n return { ...options, imag: [0, 0], real: [0, 0] };\n }\n\n return { ...options, imag: Array.from(real, () => 0), real };\n }\n\n if (real === undefined) {\n return { ...options, imag, real: Array.from(imag, () => 0) };\n }\n\n return { ...options, imag, real };\n};\n","export const setValueAtTimeUntilPossible = (audioParam, value, startTime) => {\n try {\n audioParam.setValueAtTime(value, startTime);\n }\n catch (err) {\n if (err.code !== 9) {\n throw err;\n }\n setValueAtTimeUntilPossible(audioParam, value, startTime + 1e-7);\n }\n};\n//# sourceMappingURL=set-value-at-time-until-possible.js.map","import { TSetValueAtTimeUntilPossibleFunction } from '../types';\n\nexport const setValueAtTimeUntilPossible: TSetValueAtTimeUntilPossibleFunction = (audioParam, value, startTime) => {\n try {\n audioParam.setValueAtTime(value, startTime);\n } catch (err) {\n if (err.code !== 9) {\n throw err;\n }\n\n setValueAtTimeUntilPossible(audioParam, value, startTime + 1e-7);\n }\n};\n","export const testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n nativeAudioBufferSourceNode.start();\n try {\n nativeAudioBufferSourceNode.start();\n }\n catch {\n return true;\n }\n return false;\n};\n//# sourceMappingURL=test-audio-buffer-source-node-start-method-consecutive-calls-support.js.map","import { TNativeContext } from '../types';\n\nexport const testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n\n nativeAudioBufferSourceNode.start();\n\n try {\n nativeAudioBufferSourceNode.start();\n } catch {\n return true;\n }\n\n return false;\n};\n","export const testAudioBufferSourceNodeStartMethodOffsetClampingSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100);\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n try {\n nativeAudioBufferSourceNode.start(0, 1);\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=test-audio-buffer-source-node-start-method-offset-clamping-support.js.map","import { TNativeContext } from '../types';\n\nexport const testAudioBufferSourceNodeStartMethodOffsetClampingSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100);\n\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n\n try {\n nativeAudioBufferSourceNode.start(0, 1);\n } catch {\n return false;\n }\n\n return true;\n};\n","export const testAudioBufferSourceNodeStopMethodNullifiedBufferSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n nativeAudioBufferSourceNode.start();\n try {\n nativeAudioBufferSourceNode.stop();\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=test-audio-buffer-source-node-stop-method-nullified-buffer-support.js.map","import { TNativeContext } from '../types';\n\nexport const testAudioBufferSourceNodeStopMethodNullifiedBufferSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n\n nativeAudioBufferSourceNode.start();\n\n try {\n nativeAudioBufferSourceNode.stop();\n } catch {\n return false;\n }\n\n return true;\n};\n","export const testAudioScheduledSourceNodeStartMethodNegativeParametersSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createOscillator();\n try {\n nativeAudioBufferSourceNode.start(-1);\n }\n catch (err) {\n return err instanceof RangeError;\n }\n return false;\n};\n//# sourceMappingURL=test-audio-scheduled-source-node-start-method-negative-parameters-support.js.map","import { TNativeContext } from '../types';\n\nexport const testAudioScheduledSourceNodeStartMethodNegativeParametersSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createOscillator();\n\n try {\n nativeAudioBufferSourceNode.start(-1);\n } catch (err) {\n return err instanceof RangeError;\n }\n\n return false;\n};\n","export const testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport = (nativeContext) => {\n const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100);\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n nativeAudioBufferSourceNode.start();\n nativeAudioBufferSourceNode.stop();\n try {\n nativeAudioBufferSourceNode.stop();\n return true;\n }\n catch {\n return false;\n }\n};\n//# sourceMappingURL=test-audio-scheduled-source-node-stop-method-consecutive-calls-support.js.map","import { TNativeContext } from '../types';\n\nexport const testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100);\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n nativeAudioBufferSourceNode.start();\n nativeAudioBufferSourceNode.stop();\n\n try {\n nativeAudioBufferSourceNode.stop();\n\n return true;\n } catch {\n return false;\n }\n};\n","export const testAudioScheduledSourceNodeStopMethodNegativeParametersSupport = (nativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createOscillator();\n try {\n nativeAudioBufferSourceNode.stop(-1);\n }\n catch (err) {\n return err instanceof RangeError;\n }\n return false;\n};\n//# sourceMappingURL=test-audio-scheduled-source-node-stop-method-negative-parameters-support.js.map","import { TNativeContext } from '../types';\n\nexport const testAudioScheduledSourceNodeStopMethodNegativeParametersSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createOscillator();\n\n try {\n nativeAudioBufferSourceNode.stop(-1);\n } catch (err) {\n return err instanceof RangeError;\n }\n\n return false;\n};\n","export const testAudioWorkletNodeOptionsClonability = (audioWorkletNodeOptions) => {\n const { port1, port2 } = new MessageChannel();\n try {\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port1.postMessage(audioWorkletNodeOptions);\n }\n finally {\n port1.close();\n port2.close();\n }\n};\n//# sourceMappingURL=test-audio-worklet-node-options-clonability.js.map","import { TTestAudioWorkletNodeOptionsClonabilityFunction } from '../types';\n\nexport const testAudioWorkletNodeOptionsClonability: TTestAudioWorkletNodeOptionsClonabilityFunction = (audioWorkletNodeOptions) => {\n const { port1, port2 } = new MessageChannel();\n\n try {\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port1.postMessage(audioWorkletNodeOptions);\n } finally {\n port1.close();\n port2.close();\n }\n};\n","/*\n * Bug #122: Edge up to version v18 did not allow to construct a DOMException'. It also had a couple more bugs but since this is easy to\n * test it's used here as a placeholder.\n *\n * Bug #27: Edge up to version v18 did reject an invalid arrayBuffer passed to decodeAudioData() with a DOMException.\n *\n * Bug #50: Edge up to version v18 did not allow to create AudioNodes on a closed context.\n *\n * Bug #57: Edge up to version v18 did not throw an error when assigning the type of an OscillatorNode to 'custom'.\n *\n * Bug #63: Edge up to version v18 did not expose the mediaElement property of a MediaElementAudioSourceNode.\n *\n * Bug #64: Edge up to version v18 did not support the MediaStreamAudioDestinationNode.\n *\n * Bug #71: Edge up to version v18 did not allow to set the buffer of an AudioBufferSourceNode to null.\n *\n * Bug #93: Edge up to version v18 did set the sampleRate of an AudioContext to zero when it was closed.\n *\n * Bug #101: Edge up to version v18 refused to execute decodeAudioData() on a closed context.\n *\n * Bug #106: Edge up to version v18 did not expose the maxValue and minValue properties of the pan AudioParam of a StereoPannerNode.\n *\n * Bug #110: Edge up to version v18 did not expose the maxValue and minValue properties of the attack, knee, ratio, release and threshold AudioParams of a DynamicsCompressorNode.\n *\n * Bug #123: Edge up to version v18 did not support HRTF as the panningModel for a PannerNode.\n *\n * Bug #145: Edge up to version v18 did throw an IndexSizeError when an OfflineAudioContext was created with a sampleRate of zero.\n *\n * Bug #161: Edge up to version v18 did not expose the maxValue and minValue properties of the delayTime AudioParam of a DelayNode.\n */\nexport const testDomExceptionConstructorSupport = () => {\n try {\n new DOMException(); // tslint:disable-line:no-unused-expression\n }\n catch {\n return false;\n }\n return true;\n};\n//# sourceMappingURL=test-dom-exception-constructor-support.js.map","/*\n * Bug #122: Edge up to version v18 did not allow to construct a DOMException'. It also had a couple more bugs but since this is easy to\n * test it's used here as a placeholder.\n *\n * Bug #27: Edge up to version v18 did reject an invalid arrayBuffer passed to decodeAudioData() with a DOMException.\n *\n * Bug #50: Edge up to version v18 did not allow to create AudioNodes on a closed context.\n *\n * Bug #57: Edge up to version v18 did not throw an error when assigning the type of an OscillatorNode to 'custom'.\n *\n * Bug #63: Edge up to version v18 did not expose the mediaElement property of a MediaElementAudioSourceNode.\n *\n * Bug #64: Edge up to version v18 did not support the MediaStreamAudioDestinationNode.\n *\n * Bug #71: Edge up to version v18 did not allow to set the buffer of an AudioBufferSourceNode to null.\n *\n * Bug #93: Edge up to version v18 did set the sampleRate of an AudioContext to zero when it was closed.\n *\n * Bug #101: Edge up to version v18 refused to execute decodeAudioData() on a closed context.\n *\n * Bug #106: Edge up to version v18 did not expose the maxValue and minValue properties of the pan AudioParam of a StereoPannerNode.\n *\n * Bug #110: Edge up to version v18 did not expose the maxValue and minValue properties of the attack, knee, ratio, release and threshold AudioParams of a DynamicsCompressorNode.\n *\n * Bug #123: Edge up to version v18 did not support HRTF as the panningModel for a PannerNode.\n *\n * Bug #145: Edge up to version v18 did throw an IndexSizeError when an OfflineAudioContext was created with a sampleRate of zero.\n *\n * Bug #161: Edge up to version v18 did not expose the maxValue and minValue properties of the delayTime AudioParam of a DelayNode.\n */\nexport const testDomExceptionConstructorSupport = () => {\n try {\n new DOMException(); // tslint:disable-line:no-unused-expression\n } catch {\n return false;\n }\n\n return true;\n};\n","// Safari at version 11 did not support transferables.\nexport const testTransferablesSupport = () => new Promise((resolve) => {\n const arrayBuffer = new ArrayBuffer(0);\n const { port1, port2 } = new MessageChannel();\n port1.onmessage = ({ data }) => resolve(data !== null);\n port2.postMessage(arrayBuffer, [arrayBuffer]);\n});\n//# sourceMappingURL=test-transferables-support.js.map","// Safari at version 11 did not support transferables.\nexport const testTransferablesSupport = () =>\n new Promise((resolve) => {\n const arrayBuffer = new ArrayBuffer(0);\n const { port1, port2 } = new MessageChannel();\n\n port1.onmessage = ({ data }) => resolve(data !== null);\n port2.postMessage(arrayBuffer, [arrayBuffer]);\n });\n","export const wrapAudioBufferSourceNodeStartMethodOffsetClamping = (nativeAudioBufferSourceNode) => {\n nativeAudioBufferSourceNode.start = ((start) => {\n return (when = 0, offset = 0, duration) => {\n const buffer = nativeAudioBufferSourceNode.buffer;\n // Bug #154: Safari does not clamp the offset if it is equal to or greater than the duration of the buffer.\n const clampedOffset = buffer === null ? offset : Math.min(buffer.duration, offset);\n // Bug #155: Safari does not handle the offset correctly if it would cause the buffer to be not be played at all.\n if (buffer !== null && clampedOffset > buffer.duration - 0.5 / nativeAudioBufferSourceNode.context.sampleRate) {\n start.call(nativeAudioBufferSourceNode, when, 0, 0);\n }\n else {\n start.call(nativeAudioBufferSourceNode, when, clampedOffset, duration);\n }\n };\n })(nativeAudioBufferSourceNode.start);\n};\n//# sourceMappingURL=wrap-audio-buffer-source-node-start-method-offset-clamping.js.map","import { TNativeAudioBufferSourceNode } from '../types';\n\nexport const wrapAudioBufferSourceNodeStartMethodOffsetClamping = (nativeAudioBufferSourceNode: TNativeAudioBufferSourceNode): void => {\n nativeAudioBufferSourceNode.start = ((start) => {\n return (when = 0, offset = 0, duration?: number) => {\n const buffer = nativeAudioBufferSourceNode.buffer;\n // Bug #154: Safari does not clamp the offset if it is equal to or greater than the duration of the buffer.\n const clampedOffset = buffer === null ? offset : Math.min(buffer.duration, offset);\n\n // Bug #155: Safari does not handle the offset correctly if it would cause the buffer to be not be played at all.\n if (buffer !== null && clampedOffset > buffer.duration - 0.5 / nativeAudioBufferSourceNode.context.sampleRate) {\n start.call(nativeAudioBufferSourceNode, when, 0, 0);\n } else {\n start.call(nativeAudioBufferSourceNode, when, clampedOffset, duration);\n }\n };\n })(nativeAudioBufferSourceNode.start);\n};\n","import { interceptConnections } from './intercept-connections';\nexport const wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls = (nativeAudioScheduledSourceNode, nativeContext) => {\n const nativeGainNode = nativeContext.createGain();\n nativeAudioScheduledSourceNode.connect(nativeGainNode);\n const disconnectGainNode = ((disconnect) => {\n return () => {\n // @todo TypeScript cannot infer the overloaded signature with 1 argument yet.\n disconnect.call(nativeAudioScheduledSourceNode, nativeGainNode);\n nativeAudioScheduledSourceNode.removeEventListener('ended', disconnectGainNode);\n };\n })(nativeAudioScheduledSourceNode.disconnect);\n nativeAudioScheduledSourceNode.addEventListener('ended', disconnectGainNode);\n interceptConnections(nativeAudioScheduledSourceNode, nativeGainNode);\n nativeAudioScheduledSourceNode.stop = ((stop) => {\n let isStopped = false;\n return (when = 0) => {\n if (isStopped) {\n try {\n stop.call(nativeAudioScheduledSourceNode, when);\n }\n catch {\n nativeGainNode.gain.setValueAtTime(0, when);\n }\n }\n else {\n stop.call(nativeAudioScheduledSourceNode, when);\n isStopped = true;\n }\n };\n })(nativeAudioScheduledSourceNode.stop);\n};\n//# sourceMappingURL=wrap-audio-scheduled-source-node-stop-method-consecutive-calls.js.map","import { TNativeAudioNode, TWrapAudioScheduledSourceNodeStopMethodConsecutiveCallsFunction } from '../types';\nimport { interceptConnections } from './intercept-connections';\n\nexport const wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls: TWrapAudioScheduledSourceNodeStopMethodConsecutiveCallsFunction = (\n nativeAudioScheduledSourceNode,\n nativeContext\n) => {\n const nativeGainNode = nativeContext.createGain();\n\n nativeAudioScheduledSourceNode.connect(nativeGainNode);\n\n const disconnectGainNode = ((disconnect) => {\n return () => {\n // @todo TypeScript cannot infer the overloaded signature with 1 argument yet.\n (<(destinaton: TNativeAudioNode) => void>disconnect).call(nativeAudioScheduledSourceNode, nativeGainNode);\n nativeAudioScheduledSourceNode.removeEventListener('ended', disconnectGainNode);\n };\n })(nativeAudioScheduledSourceNode.disconnect);\n\n nativeAudioScheduledSourceNode.addEventListener('ended', disconnectGainNode);\n\n interceptConnections(nativeAudioScheduledSourceNode, nativeGainNode);\n\n nativeAudioScheduledSourceNode.stop = ((stop) => {\n let isStopped = false;\n\n return (when = 0) => {\n if (isStopped) {\n try {\n stop.call(nativeAudioScheduledSourceNode, when);\n } catch {\n nativeGainNode.gain.setValueAtTime(0, when);\n }\n } else {\n stop.call(nativeAudioScheduledSourceNode, when);\n\n isStopped = true;\n }\n };\n })(nativeAudioScheduledSourceNode.stop);\n};\n","export const wrapEventListener = (target, eventListener) => {\n return (event) => {\n const descriptor = { value: target };\n Object.defineProperties(event, {\n currentTarget: descriptor,\n target: descriptor\n });\n if (typeof eventListener === 'function') {\n return eventListener.call(target, event);\n }\n return eventListener.handleEvent.call(target, event);\n };\n};\n//# sourceMappingURL=wrap-event-listener.js.map","import { TWrapEventListenerFunction } from '../types';\n\nexport const wrapEventListener: TWrapEventListenerFunction = (target, eventListener) => {\n return (event) => {\n const descriptor = { value: target };\n\n Object.defineProperties(event, {\n currentTarget: descriptor,\n target: descriptor\n });\n\n if (typeof eventListener === 'function') {\n return eventListener.call(target, event);\n }\n\n return eventListener.handleEvent.call(target, event);\n };\n};\n","export * from './analyser-node';\nexport * from './analyser-options';\nexport * from './audio-buffer';\nexport * from './audio-buffer-options';\nexport * from './audio-buffer-source-node';\nexport * from './audio-buffer-source-node-renderer';\nexport * from './audio-buffer-source-options';\nexport * from './audio-context';\nexport * from './audio-context-options';\nexport * from './audio-destination-node';\nexport * from './audio-listener';\nexport * from './audio-node';\nexport * from './audio-node-options';\nexport * from './audio-node-renderer';\nexport * from './audio-param';\nexport * from './audio-param-descriptor';\nexport * from './audio-param-renderer';\nexport * from './audio-scheduled-source-node';\nexport * from './audio-scheduled-source-node-event-map';\nexport * from './audio-worklet';\nexport * from './audio-worklet-node';\nexport * from './audio-worklet-node-event-map';\nexport * from './audio-worklet-node-options';\nexport * from './audio-worklet-processor';\nexport * from './audio-worklet-processor-constructor';\nexport * from './automation';\nexport * from './base-audio-context';\nexport * from './biquad-filter-node';\nexport * from './biquad-filter-options';\nexport * from './channel-merger-options';\nexport * from './channel-splitter-options';\nexport * from './common-audio-context';\nexport * from './common-offline-audio-context';\nexport * from './constant-source-node';\nexport * from './constant-source-node-renderer';\nexport * from './constant-source-options';\nexport * from './convolver-node';\nexport * from './convolver-options';\nexport * from './delay-node';\nexport * from './delay-options';\nexport * from './dynamics-compressor-node';\nexport * from './dynamics-compressor-options';\nexport * from './event-target';\nexport * from './gain-node';\nexport * from './gain-options';\nexport * from './iir-filter-node';\nexport * from './iir-filter-options';\nexport * from './media-element-audio-source-node';\nexport * from './media-element-audio-source-options';\nexport * from './media-stream-audio-destination-node';\nexport * from './media-stream-audio-source-node';\nexport * from './media-stream-audio-source-options';\nexport * from './media-stream-track-audio-source-node';\nexport * from './media-stream-track-audio-source-options';\nexport * from './minimal-audio-context';\nexport * from './minimal-base-audio-context';\nexport * from './minimal-base-audio-context-event-map';\nexport * from './minimal-offline-audio-context';\nexport * from './native-audio-node-faker';\nexport * from './native-audio-worklet-node-faker';\nexport * from './native-constant-source-node-faker';\nexport * from './native-convolver-node-faker';\nexport * from './native-iir-filter-node-faker';\nexport * from './native-panner-node-faker';\nexport * from './native-stereo-panner-node-faker';\nexport * from './native-wave-shaper-node-faker';\nexport * from './offline-audio-completion-event';\nexport * from './offline-audio-context';\nexport * from './offline-audio-context-constructor';\nexport * from './offline-audio-context-options';\nexport * from './oscillator-node';\nexport * from './oscillator-node-renderer';\nexport * from './oscillator-options';\nexport * from './panner-node';\nexport * from './panner-options';\nexport * from './periodic-wave';\nexport * from './periodic-wave-constraints';\nexport * from './periodic-wave-options';\nexport * from './read-only-map';\nexport * from './stereo-panner-node';\nexport * from './stereo-panner-options';\nexport * from './wave-shaper-node';\nexport * from './wave-shaper-options';\nexport * from './worklet-options';\n//# sourceMappingURL=index.js.map","export * from './analyser-node';\nexport * from './analyser-options';\nexport * from './audio-buffer';\nexport * from './audio-buffer-options';\nexport * from './audio-buffer-source-node';\nexport * from './audio-buffer-source-node-renderer';\nexport * from './audio-buffer-source-options';\nexport * from './audio-context';\nexport * from './audio-context-options';\nexport * from './audio-destination-node';\nexport * from './audio-listener';\nexport * from './audio-node';\nexport * from './audio-node-options';\nexport * from './audio-node-renderer';\nexport * from './audio-param';\nexport * from './audio-param-descriptor';\nexport * from './audio-param-renderer';\nexport * from './audio-scheduled-source-node';\nexport * from './audio-scheduled-source-node-event-map';\nexport * from './audio-worklet';\nexport * from './audio-worklet-node';\nexport * from './audio-worklet-node-event-map';\nexport * from './audio-worklet-node-options';\nexport * from './audio-worklet-processor';\nexport * from './audio-worklet-processor-constructor';\nexport * from './automation';\nexport * from './base-audio-context';\nexport * from './biquad-filter-node';\nexport * from './biquad-filter-options';\nexport * from './channel-merger-options';\nexport * from './channel-splitter-options';\nexport * from './common-audio-context';\nexport * from './common-offline-audio-context';\nexport * from './constant-source-node';\nexport * from './constant-source-node-renderer';\nexport * from './constant-source-options';\nexport * from './convolver-node';\nexport * from './convolver-options';\nexport * from './delay-node';\nexport * from './delay-options';\nexport * from './dynamics-compressor-node';\nexport * from './dynamics-compressor-options';\nexport * from './event-target';\nexport * from './gain-node';\nexport * from './gain-options';\nexport * from './iir-filter-node';\nexport * from './iir-filter-options';\nexport * from './media-element-audio-source-node';\nexport * from './media-element-audio-source-options';\nexport * from './media-stream-audio-destination-node';\nexport * from './media-stream-audio-source-node';\nexport * from './media-stream-audio-source-options';\nexport * from './media-stream-track-audio-source-node';\nexport * from './media-stream-track-audio-source-options';\nexport * from './minimal-audio-context';\nexport * from './minimal-base-audio-context';\nexport * from './minimal-base-audio-context-event-map';\nexport * from './minimal-offline-audio-context';\nexport * from './native-audio-node-faker';\nexport * from './native-audio-worklet-node-faker';\nexport * from './native-constant-source-node-faker';\nexport * from './native-convolver-node-faker';\nexport * from './native-iir-filter-node-faker';\nexport * from './native-panner-node-faker';\nexport * from './native-stereo-panner-node-faker';\nexport * from './native-wave-shaper-node-faker';\nexport * from './offline-audio-completion-event';\nexport * from './offline-audio-context';\nexport * from './offline-audio-context-constructor';\nexport * from './offline-audio-context-options';\nexport * from './oscillator-node';\nexport * from './oscillator-node-renderer';\nexport * from './oscillator-options';\nexport * from './panner-node';\nexport * from './panner-options';\nexport * from './periodic-wave';\nexport * from './periodic-wave-constraints';\nexport * from './periodic-wave-options';\nexport * from './read-only-map';\nexport * from './stereo-panner-node';\nexport * from './stereo-panner-options';\nexport * from './wave-shaper-node';\nexport * from './wave-shaper-options';\nexport * from './worklet-options';\n","import { TContext } from '../types';\nimport { IAudioNode } from './audio-node';\n\nexport interface IAnalyserNode extends IAudioNode {\n fftSize: number;\n\n readonly frequencyBinCount: number;\n\n maxDecibels: number;\n\n minDecibels: number;\n\n smoothingTimeConstant: number;\n\n getByteFrequencyData(array: Uint8Array): void;\n\n getByteTimeDomainData(array: Uint8Array): void;\n\n getFloatFrequencyData(array: Float32Array): void;\n\n getFloatTimeDomainData(array: Float32Array): void;\n}\n","import { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IAnalyserOptions extends IAudioNodeOptions {\n fftSize: number;\n\n maxDecibels: number;\n\n minDecibels: number;\n\n smoothingTimeConstant: number;\n}\n","export interface IAudioBuffer {\n readonly duration: number;\n\n readonly length: number;\n\n readonly numberOfChannels: number;\n\n readonly sampleRate: number;\n\n copyFromChannel(destination: Float32Array, channelNumber: number, bufferOffset?: number): void;\n\n copyToChannel(source: Float32Array, channelNumber: number, bufferOffset?: number): void;\n\n getChannelData(channel: number): Float32Array;\n}\n","export interface IAudioBufferOptions {\n length: number;\n\n numberOfChannels?: number;\n\n sampleRate: number;\n}\n","import { TAnyAudioBuffer, TContext } from '../types';\nimport { IAudioParam } from './audio-param';\nimport { IAudioScheduledSourceNode } from './audio-scheduled-source-node';\n\nexport interface IAudioBufferSourceNode extends IAudioScheduledSourceNode {\n buffer: null | TAnyAudioBuffer;\n\n /*\n * Bug #149: Safari does not yet support the detune AudioParam.\n *\n * readonly detune: IAudioParam;\n */\n\n loop: boolean;\n\n loopEnd: number;\n\n loopStart: number;\n\n readonly playbackRate: IAudioParam;\n\n start(when?: number, offset?: number, duration?: number): void;\n}\n","import { IAudioBufferSourceNode } from './audio-buffer-source-node';\nimport { IAudioNodeRenderer } from './audio-node-renderer';\nimport { IMinimalOfflineAudioContext } from './minimal-offline-audio-context';\nimport { IOfflineAudioContext } from './offline-audio-context';\n\nexport interface IAudioBufferSourceNodeRenderer\n extends IAudioNodeRenderer> {\n start: [number, number] | [number, number, number];\n\n stop: number;\n}\n","import { TAnyAudioBuffer } from '../types';\nimport { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IAudioBufferSourceOptions extends IAudioNodeOptions {\n buffer: null | TAnyAudioBuffer;\n\n /*\n * Bug #149: Safari does not yet support the detune AudioParam.\n *\n * detune: number;\n */\n\n loop: boolean;\n\n loopEnd: number;\n\n loopStart: number;\n\n playbackRate: number;\n}\n","import { IBaseAudioContext } from './base-audio-context';\nimport { ICommonAudioContext } from './common-audio-context';\nimport { IMediaElementAudioSourceNode } from './media-element-audio-source-node';\nimport { IMediaStreamAudioDestinationNode } from './media-stream-audio-destination-node';\nimport { IMediaStreamAudioSourceNode } from './media-stream-audio-source-node';\nimport { IMediaStreamTrackAudioSourceNode } from './media-stream-track-audio-source-node';\n\nexport interface IAudioContext extends IBaseAudioContext, ICommonAudioContext {\n createMediaElementSource(mediaElement: HTMLMediaElement): IMediaElementAudioSourceNode;\n\n createMediaStreamDestination(): IMediaStreamAudioDestinationNode;\n\n createMediaStreamSource(mediaStream: MediaStream): IMediaStreamAudioSourceNode;\n\n createMediaStreamTrackSource(mediaStreamTrack: MediaStreamTrack): IMediaStreamTrackAudioSourceNode;\n}\n","import { TAudioContextLatencyCategory } from '../types';\n\nexport interface IAudioContextOptions {\n latencyHint?: number | TAudioContextLatencyCategory;\n\n sampleRate?: number;\n}\n","import { TContext } from '../types';\nimport { IAudioNode } from './audio-node';\n\nexport interface IAudioDestinationNode extends IAudioNode {\n readonly maxChannelCount: number;\n}\n","import { IAudioParam } from './audio-param';\n\nexport interface IAudioListener {\n readonly forwardX: IAudioParam;\n\n readonly forwardY: IAudioParam;\n\n readonly forwardZ: IAudioParam;\n\n readonly positionX: IAudioParam;\n\n readonly positionY: IAudioParam;\n\n readonly positionZ: IAudioParam;\n\n readonly upX: IAudioParam;\n\n readonly upY: IAudioParam;\n\n readonly upZ: IAudioParam;\n}\n","import { TChannelCountMode, TChannelInterpretation, TContext } from '../types';\nimport { IAudioParam } from './audio-param';\nimport { IEventTarget } from './event-target';\n\nexport interface IAudioNode = {}> extends IEventTarget {\n channelCount: number;\n\n channelCountMode: TChannelCountMode;\n\n channelInterpretation: TChannelInterpretation;\n\n readonly context: T;\n\n readonly numberOfInputs: number;\n\n readonly numberOfOutputs: number;\n\n connect, V extends IAudioNode>(\n destinationNode: V,\n output?: number,\n input?: number\n ): V;\n connect(destinationParam: IAudioParam, output?: number): void;\n\n disconnect(output?: number): void;\n disconnect>(\n destinationNode: IAudioNode,\n output?: number,\n input?: number\n ): void;\n disconnect(destinationParam: IAudioParam, output?: number): void;\n}\n","import { TChannelCountMode, TChannelInterpretation } from '../types';\n\nexport interface IAudioNodeOptions {\n channelCount: number;\n\n channelCountMode: TChannelCountMode;\n\n channelInterpretation: TChannelInterpretation;\n}\n","import { TNativeAudioNode, TNativeOfflineAudioContext } from '../types';\nimport { IAudioNode } from './audio-node';\nimport { IMinimalOfflineAudioContext } from './minimal-offline-audio-context';\nimport { IOfflineAudioContext } from './offline-audio-context';\n\nexport interface IAudioNodeRenderer> {\n render(proxy: U, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise;\n}\n","export interface IAudioParam {\n readonly defaultValue: number;\n\n readonly maxValue: number;\n\n readonly minValue: number;\n\n value: number;\n\n cancelAndHoldAtTime(cancelTime: number): IAudioParam;\n\n cancelScheduledValues(cancelTime: number): IAudioParam;\n\n exponentialRampToValueAtTime(value: number, endTime: number): IAudioParam;\n\n linearRampToValueAtTime(value: number, endTime: number): IAudioParam;\n\n setTargetAtTime(target: number, startTime: number, timeConstant: number): IAudioParam;\n\n setValueAtTime(value: number, startTime: number): IAudioParam;\n\n setValueCurveAtTime(values: Iterable, startTime: number, duration: number): IAudioParam;\n}\n","export interface IAudioParamDescriptor {\n defaultValue?: number;\n\n maxValue?: number;\n\n minValue?: number;\n\n name: string;\n}\n","import { TNativeAudioParam } from '../types';\n\nexport interface IAudioParamRenderer {\n replay(audioParam: TNativeAudioParam): void;\n}\n","import { TContext, TEventHandler } from '../types';\nimport { IAudioNode } from './audio-node';\nimport { IAudioScheduledSourceNodeEventMap } from './audio-scheduled-source-node-event-map';\n\nexport interface IAudioScheduledSourceNode extends IAudioNode {\n onended: null | TEventHandler;\n\n start(when?: number): void;\n\n stop(when?: number): void;\n}\n","export interface IAudioScheduledSourceNodeEventMap extends Record {\n ended: Event;\n}\n","import { IWorkletOptions } from './worklet-options';\n\nexport interface IAudioWorklet {\n addModule(moduleURL: string, options?: IWorkletOptions): Promise;\n}\n","import { TAudioParamMap, TContext, TErrorEventHandler } from '../types';\nimport { IAudioNode } from './audio-node';\nimport { IAudioWorkletNodeEventMap } from './audio-worklet-node-event-map';\n\nexport interface IAudioWorkletNode extends IAudioNode {\n onprocessorerror: null | TErrorEventHandler;\n\n readonly parameters: TAudioParamMap;\n\n readonly port: MessagePort;\n}\n","export interface IAudioWorkletNodeEventMap extends Record {\n processorerror: ErrorEvent;\n}\n","import { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IAudioWorkletNodeOptions extends IAudioNodeOptions {\n numberOfInputs: number;\n\n numberOfOutputs: number;\n\n outputChannelCount: Iterable;\n\n parameterData: { [name: string]: number };\n\n processorOptions: object;\n}\n","export interface IAudioWorkletProcessor {\n process(inputs: Float32Array[][], outputs: Float32Array[][], parameters: { [name: string]: Float32Array }): boolean;\n}\n","import { IAudioParamDescriptor } from './audio-param-descriptor';\nimport { IAudioWorkletNodeOptions } from './audio-worklet-node-options';\nimport { IAudioWorkletProcessor } from './audio-worklet-processor';\n\nexport interface IAudioWorkletProcessorConstructor {\n parameterDescriptors?: IAudioParamDescriptor[];\n\n new (options: IAudioWorkletNodeOptions): IAudioWorkletProcessor;\n}\n","export interface IAutomation {\n type: string;\n}\n","import { TContext, TDecodeErrorCallback, TDecodeSuccessCallback } from '../types';\nimport { IAnalyserNode } from './analyser-node';\nimport { IAudioBuffer } from './audio-buffer';\nimport { IAudioBufferSourceNode } from './audio-buffer-source-node';\nimport { IAudioNode } from './audio-node';\nimport { IAudioWorklet } from './audio-worklet';\nimport { IBiquadFilterNode } from './biquad-filter-node';\nimport { IConstantSourceNode } from './constant-source-node';\nimport { IConvolverNode } from './convolver-node';\nimport { IDelayNode } from './delay-node';\nimport { IDynamicsCompressorNode } from './dynamics-compressor-node';\nimport { IGainNode } from './gain-node';\nimport { IIIRFilterNode } from './iir-filter-node';\nimport { IMinimalBaseAudioContext } from './minimal-base-audio-context';\nimport { IOscillatorNode } from './oscillator-node';\nimport { IPannerNode } from './panner-node';\nimport { IPeriodicWave } from './periodic-wave';\nimport { IPeriodicWaveConstraints } from './periodic-wave-constraints';\nimport { IStereoPannerNode } from './stereo-panner-node';\nimport { IWaveShaperNode } from './wave-shaper-node';\n\nexport interface IBaseAudioContext extends IMinimalBaseAudioContext {\n // The audioWorklet property is only available in a SecureContext.\n readonly audioWorklet?: IAudioWorklet;\n\n createAnalyser(): IAnalyserNode;\n\n createBiquadFilter(): IBiquadFilterNode;\n\n createBuffer(numberOfChannels: number, length: number, sampleRate: number): IAudioBuffer;\n\n createBufferSource(): IAudioBufferSourceNode;\n\n createChannelMerger(numberOfInputs?: number): IAudioNode;\n\n createChannelSplitter(numberOfOutputs?: number): IAudioNode;\n\n createConstantSource(): IConstantSourceNode;\n\n createConvolver(): IConvolverNode;\n\n createDelay(maxDelayTime?: number): IDelayNode;\n\n createDynamicsCompressor(): IDynamicsCompressorNode;\n\n createGain(): IGainNode;\n\n createIIRFilter(feedforward: Iterable, feedback: Iterable): IIIRFilterNode;\n\n createOscillator(): IOscillatorNode;\n\n createPanner(): IPannerNode;\n\n createPeriodicWave(real: Iterable, imag: Iterable, constraints?: Partial): IPeriodicWave;\n\n createStereoPanner(): IStereoPannerNode;\n\n createWaveShaper(): IWaveShaperNode;\n\n decodeAudioData(\n audioData: ArrayBuffer,\n successCallback?: TDecodeSuccessCallback,\n errorCallback?: TDecodeErrorCallback\n ): Promise;\n}\n","import { TBiquadFilterType, TContext } from '../types';\nimport { IAudioNode } from './audio-node';\nimport { IAudioParam } from './audio-param';\n\nexport interface IBiquadFilterNode extends IAudioNode {\n readonly detune: IAudioParam;\n\n readonly frequency: IAudioParam;\n\n readonly gain: IAudioParam;\n\n readonly Q: IAudioParam;\n\n type: TBiquadFilterType;\n\n getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;\n}\n","import { TBiquadFilterType } from '../types';\nimport { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IBiquadFilterOptions extends IAudioNodeOptions {\n detune: number;\n\n frequency: number;\n\n gain: number;\n\n Q: number;\n\n type: TBiquadFilterType;\n}\n","import { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IChannelMergerOptions extends IAudioNodeOptions {\n numberOfInputs: number;\n}\n","import { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IChannelSplitterOptions extends IAudioNodeOptions {\n numberOfOutputs: number;\n}\n","export interface ICommonAudioContext {\n readonly baseLatency: number;\n\n close(): Promise;\n\n // @todo This should be part of the IMinimalBaseAudioContext.\n resume(): Promise;\n\n suspend(): Promise;\n}\n","export interface ICommonOfflineAudioContext {\n readonly length: number;\n\n startRendering(): Promise;\n}\n","import { TContext } from '../types';\nimport { IAudioParam } from './audio-param';\nimport { IAudioScheduledSourceNode } from './audio-scheduled-source-node';\n\nexport interface IConstantSourceNode extends IAudioScheduledSourceNode {\n readonly offset: IAudioParam;\n}\n","import { IAudioNodeRenderer } from './audio-node-renderer';\nimport { IConstantSourceNode } from './constant-source-node';\nimport { IMinimalOfflineAudioContext } from './minimal-offline-audio-context';\nimport { IOfflineAudioContext } from './offline-audio-context';\n\nexport interface IConstantSourceNodeRenderer\n extends IAudioNodeRenderer> {\n start: number;\n\n stop: number;\n}\n","import { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IConstantSourceOptions extends IAudioNodeOptions {\n offset: number;\n}\n","import { TAnyAudioBuffer, TContext } from '../types';\nimport { IAudioNode } from './audio-node';\n\nexport interface IConvolverNode extends IAudioNode {\n buffer: null | TAnyAudioBuffer;\n\n normalize: boolean;\n}\n","import { TAnyAudioBuffer } from '../types';\nimport { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IConvolverOptions extends IAudioNodeOptions {\n buffer: null | TAnyAudioBuffer;\n\n disableNormalization: boolean;\n}\n","import { TContext } from '../types';\nimport { IAudioNode } from './audio-node';\nimport { IAudioParam } from './audio-param';\n\nexport interface IDelayNode extends IAudioNode {\n readonly delayTime: IAudioParam;\n}\n","import { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IDelayOptions extends IAudioNodeOptions {\n delayTime: number;\n\n maxDelayTime: number;\n}\n","import { TContext } from '../types';\nimport { IAudioNode } from './audio-node';\nimport { IAudioParam } from './audio-param';\n\nexport interface IDynamicsCompressorNode extends IAudioNode {\n readonly attack: IAudioParam;\n\n readonly knee: IAudioParam;\n\n readonly ratio: IAudioParam;\n\n readonly reduction: number;\n\n readonly release: IAudioParam;\n\n readonly threshold: IAudioParam;\n}\n","import { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IDynamicsCompressorOptions extends IAudioNodeOptions {\n attack: number;\n\n knee: number;\n\n ratio: number;\n\n release: number;\n\n threshold: number;\n}\n","import { TNativeEventTarget } from '../types';\n\nexport interface IEventTarget> extends TNativeEventTarget {\n addEventListener(\n type: Type,\n listener: (this: this, event: EventMap[Type]) => void,\n options?: boolean | AddEventListenerOptions\n ): void;\n addEventListener(type: string, listener: null | EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n\n removeEventListener(\n type: Type,\n listener: (this: this, event: EventMap[Type]) => void,\n options?: boolean | EventListenerOptions\n ): void;\n removeEventListener(type: string, callback: null | EventListenerOrEventListenerObject, options?: EventListenerOptions | boolean): void;\n}\n","import { TContext } from '../types';\nimport { IAudioNode } from './audio-node';\nimport { IAudioParam } from './audio-param';\n\nexport interface IGainNode extends IAudioNode {\n readonly gain: IAudioParam;\n}\n","import { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IGainOptions extends IAudioNodeOptions {\n gain: number;\n}\n","import { TContext } from '../types';\nimport { IAudioNode } from './audio-node';\n\nexport interface IIIRFilterNode extends IAudioNode {\n getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void;\n}\n","import { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IIIRFilterOptions extends IAudioNodeOptions {\n feedback: Iterable;\n\n feedforward: Iterable;\n}\n","import { IAudioContext } from './audio-context';\nimport { IAudioNode } from './audio-node';\nimport { IMinimalAudioContext } from './minimal-audio-context';\n\nexport interface IMediaElementAudioSourceNode extends IAudioNode {\n readonly mediaElement: HTMLMediaElement;\n}\n","export interface IMediaElementAudioSourceOptions {\n mediaElement: HTMLMediaElement;\n}\n","import { IAudioContext } from './audio-context';\nimport { IAudioNode } from './audio-node';\nimport { IMinimalAudioContext } from './minimal-audio-context';\n\nexport interface IMediaStreamAudioDestinationNode extends IAudioNode {\n readonly stream: MediaStream;\n}\n","import { IAudioContext } from './audio-context';\nimport { IAudioNode } from './audio-node';\nimport { IMinimalAudioContext } from './minimal-audio-context';\n\nexport interface IMediaStreamAudioSourceNode extends IAudioNode {\n readonly mediaStream: MediaStream;\n}\n","export interface IMediaStreamAudioSourceOptions {\n mediaStream: MediaStream;\n}\n","import { IAudioContext } from './audio-context';\nimport { IAudioNode } from './audio-node';\nimport { IMinimalAudioContext } from './minimal-audio-context';\n\nexport interface IMediaStreamTrackAudioSourceNode extends IAudioNode {}\n","export interface IMediaStreamTrackAudioSourceOptions {\n mediaStreamTrack: MediaStreamTrack;\n}\n","import { ICommonAudioContext } from './common-audio-context';\nimport { IMinimalBaseAudioContext } from './minimal-base-audio-context';\n\nexport interface IMinimalAudioContext extends ICommonAudioContext, IMinimalBaseAudioContext {}\n","import { TAudioContextState, TContext, TEventHandler } from '../types';\nimport { IAudioDestinationNode } from './audio-destination-node';\nimport { IAudioListener } from './audio-listener';\nimport { IEventTarget } from './event-target';\nimport { IMinimalBaseAudioContextEventMap } from './minimal-base-audio-context-event-map';\n\nexport interface IMinimalBaseAudioContext extends IEventTarget {\n readonly currentTime: number;\n\n readonly destination: IAudioDestinationNode;\n\n readonly listener: IAudioListener;\n\n onstatechange: null | TEventHandler;\n\n readonly sampleRate: number;\n\n readonly state: TAudioContextState;\n}\n","export interface IMinimalBaseAudioContextEventMap extends Record {\n statechange: Event;\n}\n","import { ICommonOfflineAudioContext } from './common-offline-audio-context';\nimport { IMinimalBaseAudioContext } from './minimal-base-audio-context';\n\nexport interface IMinimalOfflineAudioContext extends ICommonOfflineAudioContext, IMinimalBaseAudioContext {}\n","import { TNativeAudioNode } from '../types';\n\nexport interface INativeAudioNodeFaker extends TNativeAudioNode {\n bufferSize?: number;\n\n inputs: TNativeAudioNode[];\n}\n","import { TNativeAudioNode, TNativeAudioWorkletNode } from '../types';\n\n// @todo This does kind of implement the INativeAudioNodeFaker interface.\nexport interface INativeAudioWorkletNodeFaker extends TNativeAudioWorkletNode {\n bufferSize: number;\n\n inputs: TNativeAudioNode[];\n}\n","import { TNativeAudioNode, TNativeConstantSourceNode } from '../types';\n\n// @todo This does kind of implement the INativeAudioNodeFaker interface.\nexport interface INativeConstantSourceNodeFaker extends TNativeConstantSourceNode {\n bufferSize: undefined;\n\n inputs: TNativeAudioNode[];\n}\n","import { TNativeAudioNode, TNativeConvolverNode } from '../types';\n\n// @todo This does kind of implement the INativeAudioNodeFaker interface.\nexport interface INativeConvolverNodeFaker extends TNativeConvolverNode {\n bufferSize: undefined;\n\n inputs: TNativeAudioNode[];\n}\n","import { TNativeAudioNode, TNativeIIRFilterNode } from '../types';\n\n// @todo This does kind of implement the INativeAudioNodeFaker interface.\nexport interface INativeIIRFilterNodeFaker extends TNativeIIRFilterNode {\n bufferSize: number;\n\n inputs: TNativeAudioNode[];\n}\n","import { TNativeAudioNode, TNativePannerNode } from '../types';\n\n// @todo This does kind of implement the INativeAudioNodeFaker interface.\nexport interface INativePannerNodeFaker extends TNativePannerNode {\n bufferSize: undefined;\n\n inputs: TNativeAudioNode[];\n}\n","import { TNativeAudioNode, TNativeStereoPannerNode } from '../types';\n\n// @todo This does kind of implement the INativeAudioNodeFaker interface.\nexport interface INativeStereoPannerNodeFaker extends TNativeStereoPannerNode {\n bufferSize: undefined;\n\n inputs: TNativeAudioNode[];\n}\n","import { TNativeAudioNode, TNativeWaveShaperNode } from '../types';\n\n// @todo This does kind of implement the INativeAudioNodeFaker interface.\nexport interface INativeWaveShaperNodeFaker extends TNativeWaveShaperNode {\n bufferSize: undefined;\n\n inputs: TNativeAudioNode[];\n}\n","import { IAudioBuffer } from './audio-buffer';\n\nexport interface IOfflineAudioCompletionEvent extends Event {\n readonly renderedBuffer: IAudioBuffer;\n}\n","import { IBaseAudioContext } from './base-audio-context';\nimport { ICommonOfflineAudioContext } from './common-offline-audio-context';\n\nexport interface IOfflineAudioContext extends IBaseAudioContext, ICommonOfflineAudioContext {\n // @todo oncomplete\n}\n","import { IOfflineAudioContext } from './offline-audio-context';\nimport { IOfflineAudioContextOptions } from './offline-audio-context-options';\n\nexport interface IOfflineAudioContextConstructor {\n new (options: IOfflineAudioContextOptions): IOfflineAudioContext;\n new (numberOfChannels: number, length: number, sampleRate: number): IOfflineAudioContext;\n}\n","export interface IOfflineAudioContextOptions {\n length: number;\n\n numberOfChannels?: number;\n\n sampleRate: number;\n}\n","import { TContext, TOscillatorType } from '../types';\nimport { IAudioParam } from './audio-param';\nimport { IAudioScheduledSourceNode } from './audio-scheduled-source-node';\n\nexport interface IOscillatorNode extends IAudioScheduledSourceNode {\n readonly detune: IAudioParam;\n\n readonly frequency: IAudioParam;\n\n type: TOscillatorType;\n\n setPeriodicWave(periodicWave: PeriodicWave): void;\n}\n","import { IAudioNodeRenderer } from './audio-node-renderer';\nimport { IMinimalOfflineAudioContext } from './minimal-offline-audio-context';\nimport { IOfflineAudioContext } from './offline-audio-context';\nimport { IOscillatorNode } from './oscillator-node';\nimport { IPeriodicWave } from './periodic-wave';\n\nexport interface IOscillatorNodeRenderer\n extends IAudioNodeRenderer> {\n periodicWave: null | IPeriodicWave;\n\n start: number;\n\n stop: number;\n}\n","import { TOscillatorType } from '../types';\nimport { IAudioNodeOptions } from './audio-node-options';\nimport { IPeriodicWave } from './periodic-wave';\n\nexport interface IOscillatorOptions extends IAudioNodeOptions {\n detune: number;\n\n frequency: number;\n\n periodicWave?: IPeriodicWave;\n\n type: TOscillatorType;\n}\n","import { TContext, TDistanceModelType, TPanningModelType } from '../types';\nimport { IAudioNode } from './audio-node';\nimport { IAudioParam } from './audio-param';\n\nexport interface IPannerNode extends IAudioNode {\n coneInnerAngle: number;\n\n coneOuterAngle: number;\n\n coneOuterGain: number;\n\n distanceModel: TDistanceModelType;\n\n maxDistance: number;\n\n readonly orientationX: IAudioParam;\n\n readonly orientationY: IAudioParam;\n\n readonly orientationZ: IAudioParam;\n\n panningModel: TPanningModelType;\n\n readonly positionX: IAudioParam;\n\n readonly positionY: IAudioParam;\n\n readonly positionZ: IAudioParam;\n\n refDistance: number;\n\n rolloffFactor: number;\n}\n","import { TDistanceModelType, TPanningModelType } from '../types';\nimport { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IPannerOptions extends IAudioNodeOptions {\n coneInnerAngle: number;\n\n coneOuterAngle: number;\n\n coneOuterGain: number;\n\n distanceModel: TDistanceModelType;\n\n maxDistance: number;\n\n orientationX: number;\n\n orientationY: number;\n\n orientationZ: number;\n\n panningModel: TPanningModelType;\n\n positionX: number;\n\n positionY: number;\n\n positionZ: number;\n\n refDistance: number;\n\n rolloffFactor: number;\n}\n","export interface IPeriodicWave {} // tslint:disable-line:no-empty-interface\n","export interface IPeriodicWaveConstraints {\n disableNormalization: boolean;\n}\n","import { IPeriodicWaveConstraints } from './periodic-wave-constraints';\n\nexport interface IPeriodicWaveOptions extends IPeriodicWaveConstraints {\n imag: Iterable;\n\n real: Iterable;\n}\n","export interface IReadOnlyMap {\n readonly entries: Map['entries'];\n\n readonly get: Map['get'];\n\n readonly has: Map['has'];\n\n readonly keys: Map['keys'];\n\n readonly size: Map['size'];\n\n readonly values: Map['values'];\n\n /*\n * The signature of forEach() differs from the signature Map's forEach() function because the callback receives a IReadOnlyMap as third\n * argument.\n */\n forEach(callback: (value: U, key: T, map: IReadOnlyMap) => void, thisArg?: any): void;\n\n // @todo Symbol.iterator\n}\n","import { TContext } from '../types';\nimport { IAudioNode } from './audio-node';\nimport { IAudioParam } from './audio-param';\n\nexport interface IStereoPannerNode extends IAudioNode {\n readonly pan: IAudioParam;\n}\n","import { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IStereoPannerOptions extends IAudioNodeOptions {\n pan: number;\n}\n","import { TContext, TOverSampleType } from '../types';\nimport { IAudioNode } from './audio-node';\n\nexport interface IWaveShaperNode extends IAudioNode {\n curve: null | Float32Array;\n\n oversample: TOverSampleType;\n}\n","import { TOverSampleType } from '../types';\nimport { IAudioNodeOptions } from './audio-node-options';\n\nexport interface IWaveShaperOptions extends IAudioNodeOptions {\n curve: null | Iterable;\n\n oversample: TOverSampleType;\n}\n","// @todo This is currently named IWorkletOptions and not IAudioWorkletOptions because it defines the options of a generic Worklet.\n\nexport interface IWorkletOptions {\n credentials: 'include' | 'omit' | 'same-origin';\n}\n","export * from './abort-error-factory';\nexport * from './active-audio-worklet-node-inputs-store';\nexport * from './active-input-connection';\nexport * from './add-active-input-connection-to-audio-node-factory';\nexport * from './add-active-input-connection-to-audio-node-function';\nexport * from './add-audio-node-connections-factory';\nexport * from './add-audio-node-connections-function';\nexport * from './add-audio-param-connections-factory';\nexport * from './add-audio-param-connections-function';\nexport * from './add-audio-worklet-module-factory';\nexport * from './add-audio-worklet-module-function';\nexport * from './add-connection-to-audio-node-factory';\nexport * from './add-connection-to-audio-node-function';\nexport * from './add-passive-input-connection-to-audio-node-factory';\nexport * from './add-passive-input-connection-to-audio-node-function';\nexport * from './add-silent-connection-factory';\nexport * from './add-silent-connection-function';\nexport * from './add-unrendered-audio-worklet-node-factory';\nexport * from './add-unrendered-audio-worklet-node-function';\nexport * from './analyser-node-constructor';\nexport * from './analyser-node-constructor-factory';\nexport * from './analyser-node-renderer-factory';\nexport * from './analyser-node-renderer-factory-factory';\nexport * from './any-audio-buffer';\nexport * from './any-context';\nexport * from './audio-buffer-constructor';\nexport * from './audio-buffer-constructor-factory';\nexport * from './audio-buffer-source-node-constructor';\nexport * from './audio-buffer-source-node-constructor-factory';\nexport * from './audio-buffer-source-node-renderer';\nexport * from './audio-buffer-source-node-renderer-factory';\nexport * from './audio-buffer-source-node-renderer-factory-factory';\nexport * from './audio-buffer-store';\nexport * from './audio-context-constructor';\nexport * from './audio-context-constructor-factory';\nexport * from './audio-context-latency-category';\nexport * from './audio-context-state';\nexport * from './audio-destination-node-constructor';\nexport * from './audio-destination-node-constructor-factory';\nexport * from './audio-destination-node-renderer-factory';\nexport * from './audio-listener-factory';\nexport * from './audio-listener-factory-factory';\nexport * from './audio-node-connections';\nexport * from './audio-node-connections-store';\nexport * from './audio-node-constructor';\nexport * from './audio-node-constructor-factory';\nexport * from './audio-node-output-connection';\nexport * from './audio-node-renderer';\nexport * from './audio-node-store';\nexport * from './audio-node-tail-time-store';\nexport * from './audio-param-audio-node-store';\nexport * from './audio-param-connections';\nexport * from './audio-param-connections-store';\nexport * from './audio-param-factory';\nexport * from './audio-param-factory-factory';\nexport * from './audio-param-map';\nexport * from './audio-param-output-connection';\nexport * from './audio-param-renderer-factory';\nexport * from './audio-param-store';\nexport * from './audio-worklet-node-constructor';\nexport * from './audio-worklet-node-constructor-factory';\nexport * from './audio-worklet-node-renderer-factory';\nexport * from './audio-worklet-node-renderer-factory-factory';\nexport * from './backup-offline-audio-context-store';\nexport * from './base-audio-context-constructor';\nexport * from './base-audio-context-constructor-factory';\nexport * from './biquad-filter-node-constructor';\nexport * from './biquad-filter-node-constructor-factory';\nexport * from './biquad-filter-node-renderer-factory';\nexport * from './biquad-filter-node-renderer-factory-factory';\nexport * from './biquad-filter-type';\nexport * from './channel-count-mode';\nexport * from './channel-interpretation';\nexport * from './channel-merger-node-constructor';\nexport * from './channel-merger-node-constructor-factory';\nexport * from './channel-merger-node-renderer-factory';\nexport * from './channel-merger-node-renderer-factory-factory';\nexport * from './channel-splitter-node-constructor';\nexport * from './channel-splitter-node-constructor-factory';\nexport * from './channel-splitter-node-renderer-factory';\nexport * from './channel-splitter-node-renderer-factory-factory';\nexport * from './cache-test-result-factory';\nexport * from './cache-test-result-function';\nexport * from './connect-audio-param-factory';\nexport * from './connect-audio-param-function';\nexport * from './connect-multiple-outputs-factory';\nexport * from './connect-multiple-outputs-function';\nexport * from './connect-native-audio-node-to-native-audio-node-function';\nexport * from './connected-native-audio-buffer-source-node-factory';\nexport * from './connected-native-audio-buffer-source-node-factory-factory';\nexport * from './constant-source-node-constructor';\nexport * from './constant-source-node-constructor-factory';\nexport * from './constant-source-node-renderer';\nexport * from './constant-source-node-renderer-factory';\nexport * from './constant-source-node-renderer-factory-factory';\nexport * from './constructor';\nexport * from './context';\nexport * from './context-store';\nexport * from './convert-number-to-unsigned-long-factory';\nexport * from './convert-number-to-unsigned-long-function';\nexport * from './convolver-node-constructor';\nexport * from './convolver-node-constructor-factory';\nexport * from './convolver-node-renderer-factory';\nexport * from './convolver-node-renderer-factory-factory';\nexport * from './create-native-offline-audio-context-factory';\nexport * from './create-native-offline-audio-context-function';\nexport * from './cycle-counters';\nexport * from './data-clone-error-factory';\nexport * from './decode-audio-data-factory';\nexport * from './decode-audio-data-function';\nexport * from './decode-error-callback';\nexport * from './decode-success-callback';\nexport * from './decrement-cycle-counter-factory';\nexport * from './decrement-cycle-counter-function';\nexport * from './delay-node-constructor';\nexport * from './delay-node-constructor-factory';\nexport * from './delay-node-renderer-factory';\nexport * from './delay-node-renderer-factory-factory';\nexport * from './delete-active-input-connection-to-audio-node-factory';\nexport * from './delete-active-input-connection-to-audio-node-function';\nexport * from './delete-unrendered-audio-worklet-node-factory';\nexport * from './delete-unrendered-audio-worklet-node-function';\nexport * from './detect-cycles-factory';\nexport * from './detect-cycles-function';\nexport * from './disconnect-multiple-outputs-factory';\nexport * from './disconnect-multiple-outputs-function';\nexport * from './disconnect-native-audio-node-from-native-audio-node-function';\nexport * from './distance-model-type';\nexport * from './dynamics-compressor-node-constructor';\nexport * from './dynamics-compressor-node-constructor-factory';\nexport * from './dynamics-compressor-node-renderer-factory';\nexport * from './dynamics-compressor-node-renderer-factory-factory';\nexport * from './encoding-error-factory';\nexport * from './error-event-handler';\nexport * from './evaluate-audio-worklet-global-scope-function';\nexport * from './evaluate-source-factory';\nexport * from './evaluate-source-function';\nexport * from './event-handler';\nexport * from './event-target-constructor';\nexport * from './event-target-constructor-factory';\nexport * from './expose-current-frame-and-current-time-factory';\nexport * from './expose-current-frame-and-current-time-function';\nexport * from './fetch-source-factory';\nexport * from './fetch-source-function';\nexport * from './gain-node-constructor';\nexport * from './gain-node-constructor-factory';\nexport * from './gain-node-renderer-factory';\nexport * from './gain-node-renderer-factory-factory';\nexport * from './get-active-audio-worklet-node-inputs-factory';\nexport * from './get-active-audio-worklet-node-inputs-function';\nexport * from './get-audio-node-connections-function';\nexport * from './get-audio-node-renderer-factory';\nexport * from './get-audio-node-renderer-function';\nexport * from './get-audio-node-tail-time-factory';\nexport * from './get-audio-node-tail-time-function';\nexport * from './get-audio-param-connections-function';\nexport * from './get-audio-param-renderer-factory';\nexport * from './get-audio-param-renderer-function';\nexport * from './get-backup-offline-audio-context-factory';\nexport * from './get-backup-offline-audio-context-function';\nexport * from './get-event-listeners-of-audio-node-function';\nexport * from './get-first-sample-function';\nexport * from './get-native-audio-node-function';\nexport * from './get-native-audio-param-function';\nexport * from './get-native-context-factory';\nexport * from './get-native-context-function';\nexport * from './get-or-create-backup-offline-audio-context-factory';\nexport * from './get-or-create-backup-offline-audio-context-function';\nexport * from './get-unrendered-audio-worklet-nodes-factory';\nexport * from './get-unrendered-audio-worklet-nodes-function';\nexport * from './get-value-for-key-function';\nexport * from './iir-filter-node-constructor';\nexport * from './iir-filter-node-constructor-factory';\nexport * from './iir-filter-node-renderer-factory';\nexport * from './iir-filter-node-renderer-factory-factory';\nexport * from './increment-cycle-counter-factory';\nexport * from './increment-cycle-counter-factory-factory';\nexport * from './increment-cycle-counter-function';\nexport * from './index-size-error-factory';\nexport * from './insert-element-in-set-function';\nexport * from './internal-state-event-listener';\nexport * from './invalid-access-error-factory';\nexport * from './invalid-state-error-factory';\nexport * from './is-active-audio-node-function';\nexport * from './is-any-audio-context-factory';\nexport * from './is-any-audio-context-function';\nexport * from './is-any-audio-node-factory';\nexport * from './is-any-audio-node-function';\nexport * from './is-any-audio-param-factory';\nexport * from './is-any-audio-param-function';\nexport * from './is-any-offline-audio-context-factory';\nexport * from './is-any-offline-audio-context-function';\nexport * from './is-dc-curve-function';\nexport * from './is-native-audio-context-factory';\nexport * from './is-native-audio-context-function';\nexport * from './is-native-audio-node-factory';\nexport * from './is-native-audio-node-function';\nexport * from './is-native-audio-param-factory';\nexport * from './is-native-audio-param-function';\nexport * from './is-native-context-factory';\nexport * from './is-native-context-function';\nexport * from './is-native-offline-audio-context-factory';\nexport * from './is-native-offline-audio-context-function';\nexport * from './is-part-of-a-cycle-function';\nexport * from './is-passive-audio-node-function';\nexport * from './is-secure-context-factory';\nexport * from './is-supported-promise-factory';\nexport * from './media-element-audio-source-node-constructor';\nexport * from './media-element-audio-source-node-constructor-factory';\nexport * from './media-stream-audio-destination-node-constructor';\nexport * from './media-stream-audio-destination-node-constructor-factory';\nexport * from './media-stream-audio-source-node-constructor';\nexport * from './media-stream-audio-source-node-constructor-factory';\nexport * from './media-stream-track-audio-source-node-constructor';\nexport * from './media-stream-track-audio-source-node-constructor-factory';\nexport * from './minimal-audio-context-constructor';\nexport * from './minimal-audio-context-constructor-factory';\nexport * from './minimal-base-audio-context-constructor';\nexport * from './minimal-base-audio-context-constructor-factory';\nexport * from './minimal-offline-audio-context-constructor';\nexport * from './minimal-offline-audio-context-constructor-factory';\nexport * from './monitor-connections-factory';\nexport * from './monitor-connections-function';\nexport * from './native-analyser-node';\nexport * from './native-analyser-node-factory';\nexport * from './native-analyser-node-factory-factory';\nexport * from './native-audio-buffer';\nexport * from './native-audio-buffer-constructor';\nexport * from './native-audio-buffer-constructor-factory';\nexport * from './native-audio-buffer-source-node';\nexport * from './native-audio-buffer-source-node-factory';\nexport * from './native-audio-buffer-source-node-factory-factory';\nexport * from './native-audio-context';\nexport * from './native-audio-context-constructor';\nexport * from './native-audio-context-constructor-factory';\nexport * from './native-audio-destination-node';\nexport * from './native-audio-destination-node-factory';\nexport * from './native-audio-destination-node-factory-factory';\nexport * from './native-audio-listener';\nexport * from './native-audio-node';\nexport * from './native-audio-param';\nexport * from './native-audio-param-map';\nexport * from './native-audio-worklet';\nexport * from './native-audio-worklet-node';\nexport * from './native-audio-worklet-node-constructor';\nexport * from './native-audio-worklet-node-constructor-factory';\nexport * from './native-audio-worklet-node-factory';\nexport * from './native-audio-worklet-node-factory-factory';\nexport * from './native-audio-worklet-node-faker-factory';\nexport * from './native-audio-worklet-node-faker-factory-factory';\nexport * from './native-audio-worklet-node-options';\nexport * from './native-biquad-filter-node';\nexport * from './native-biquad-filter-node-factory';\nexport * from './native-channel-merger-node';\nexport * from './native-channel-merger-node-factory';\nexport * from './native-channel-merger-node-factory-factory';\nexport * from './native-channel-splitter-node';\nexport * from './native-channel-splitter-node-factory';\nexport * from './native-constant-source-node';\nexport * from './native-constant-source-node-factory';\nexport * from './native-constant-source-node-factory-factory';\nexport * from './native-constant-source-node-faker-factory';\nexport * from './native-constant-source-node-faker-factory-factory';\nexport * from './native-context';\nexport * from './native-convolver-node';\nexport * from './native-convolver-node-factory';\nexport * from './native-convolver-node-factory-factory';\nexport * from './native-delay-node-factory';\nexport * from './native-delay-node';\nexport * from './native-dynamics-compressor-node';\nexport * from './native-dynamics-compressor-node-factory';\nexport * from './native-dynamics-compressor-node-factory-factory';\nexport * from './native-event-target';\nexport * from './native-gain-node';\nexport * from './native-gain-node-factory';\nexport * from './native-iir-filter-node';\nexport * from './native-iir-filter-node-factory';\nexport * from './native-iir-filter-node-factory-factory';\nexport * from './native-iir-filter-node-faker-factory';\nexport * from './native-iir-filter-node-faker-factory-factory';\nexport * from './native-media-element-audio-source-node';\nexport * from './native-media-element-audio-source-node-factory';\nexport * from './native-media-stream-audio-destination-node';\nexport * from './native-media-stream-audio-destination-node-factory';\nexport * from './native-media-stream-audio-source-node';\nexport * from './native-media-stream-audio-source-node-factory';\nexport * from './native-media-stream-track-audio-source-node';\nexport * from './native-media-stream-track-audio-source-node-factory';\nexport * from './native-media-stream-track-audio-source-node-factory-factory';\nexport * from './native-offline-audio-context';\nexport * from './native-offline-audio-context-constructor';\nexport * from './native-offline-audio-context-constructor-factory';\nexport * from './native-oscillator-node';\nexport * from './native-oscillator-node-factory';\nexport * from './native-oscillator-node-factory-factory';\nexport * from './native-panner-node';\nexport * from './native-panner-node-factory';\nexport * from './native-panner-node-factory-factory';\nexport * from './native-panner-node-faker-factory';\nexport * from './native-panner-node-faker-factory-factory';\nexport * from './native-periodic-wave';\nexport * from './native-periodic-wave-factory';\nexport * from './native-periodic-wave-factory-factory';\nexport * from './native-script-processor-node';\nexport * from './native-script-processor-node-factory';\nexport * from './native-stereo-panner-node';\nexport * from './native-stereo-panner-node-factory';\nexport * from './native-stereo-panner-node-factory-factory';\nexport * from './native-stereo-panner-node-faker-factory';\nexport * from './native-stereo-panner-node-faker-factory-factory';\nexport * from './native-wave-shaper-node';\nexport * from './native-wave-shaper-node-factory';\nexport * from './native-wave-shaper-node-factory-factory';\nexport * from './native-wave-shaper-node-faker-factory';\nexport * from './native-wave-shaper-node-faker-factory-factory';\nexport * from './not-supported-error-factory';\nexport * from './offline-audio-context-constructor-factory';\nexport * from './oscillator-node-constructor';\nexport * from './oscillator-node-constructor-factory';\nexport * from './oscillator-node-renderer';\nexport * from './oscillator-node-renderer-factory';\nexport * from './oscillator-node-renderer-factory-factory';\nexport * from './oscillator-type';\nexport * from './output-connection';\nexport * from './over-sample-type';\nexport * from './overwrite-accessors-function';\nexport * from './panner-node-constructor';\nexport * from './panner-node-constructor-factory';\nexport * from './panner-node-renderer-factory';\nexport * from './panner-node-renderer-factory-factory';\nexport * from './panning-model-type';\nexport * from './passive-audio-node-input-connection';\nexport * from './passive-audio-param-input-connection';\nexport * from './periodic-wave-constructor';\nexport * from './periodic-wave-constructor-factory';\nexport * from './pick-element-from-set-function';\nexport * from './render-automation-factory';\nexport * from './render-automation-function';\nexport * from './render-inputs-of-audio-node-factory';\nexport * from './render-inputs-of-audio-node-function';\nexport * from './render-inputs-of-audio-param-factory';\nexport * from './render-inputs-of-audio-param-function';\nexport * from './render-native-offline-audio-context-factory';\nexport * from './render-native-offline-audio-context-function';\nexport * from './sanitize-audio-worklet-node-options-function';\nexport * from './sanitize-channel-splitter-options-function';\nexport * from './sanitize-periodic-wave-options-function';\nexport * from './set-active-audio-worklet-node-inputs-factory';\nexport * from './set-active-audio-worklet-node-inputs-function';\nexport * from './set-audio-node-tail-time-factory';\nexport * from './set-audio-node-tail-time-function';\nexport * from './set-value-at-time-until-possible-function';\nexport * from './start-rendering-factory';\nexport * from './start-rendering-function';\nexport * from './stereo-panner-node-constructor';\nexport * from './stereo-panner-node-constructor-factory';\nexport * from './stereo-panner-node-renderer-factory-factory';\nexport * from './stereo-panner-node-renderer-factory';\nexport * from './test-audio-buffer-copy-channel-methods-subarray-support-factory';\nexport * from './test-audio-buffer-constructor-support-factory';\nexport * from './test-audio-context-close-method-support-factory';\nexport * from './test-audio-context-decode-audio-data-method-type-error-support-factory';\nexport * from './test-audio-context-options-support-factory';\nexport * from './test-audio-node-connect-method-support-factory';\nexport * from './test-audio-worklet-node-options-clonability-function';\nexport * from './test-audio-worklet-processor-no-outputs-support-factory';\nexport * from './test-audio-worklet-processor-post-message-support-factory';\nexport * from './test-channel-merger-node-channel-count-support-factory';\nexport * from './test-constant-source-node-accurate-scheduling-support-factory';\nexport * from './test-convolver-node-buffer-reassignability-support-factory';\nexport * from './test-convolver-node-channel-count-support-factory';\nexport * from './test-is-secure-context-support-factory';\nexport * from './test-media-stream-audio-source-node-media-stream-without-audio-track-support';\nexport * from './test-offline-audio-context-current-time-support-factory';\nexport * from './test-stereo-panner-node-default-value-support-factory';\nexport * from './unknown-error-factory';\nexport * from './unrendered-audio-worklet-node-store';\nexport * from './unrendered-audio-worklet-nodes';\nexport * from './wave-shaper-node-constructor';\nexport * from './wave-shaper-node-constructor-factory';\nexport * from './wave-shaper-node-renderer-factory-factory';\nexport * from './wave-shaper-node-renderer-factory';\nexport * from './window';\nexport * from './window-factory';\nexport * from './wrap-audio-buffer-copy-channel-methods-factory';\nexport * from './wrap-audio-buffer-copy-channel-methods-function';\nexport * from './wrap-audio-buffer-copy-channel-methods-out-of-bounds-factory';\nexport * from './wrap-audio-buffer-copy-channel-methods-out-of-bounds-function';\nexport * from './wrap-audio-buffer-source-node-start-method-offset-clamping-function';\nexport * from './wrap-audio-buffer-source-node-stop-method-nullified-buffer-factory';\nexport * from './wrap-audio-buffer-source-node-stop-method-nullified-buffer-function';\nexport * from './wrap-audio-scheduled-source-node-stop-method-consecutive-calls-function';\nexport * from './wrap-channel-merger-node-factory';\nexport * from './wrap-channel-merger-node-function';\nexport * from './wrap-event-listener-function';\n//# sourceMappingURL=index.js.map","export * from './abort-error-factory';\nexport * from './active-audio-worklet-node-inputs-store';\nexport * from './active-input-connection';\nexport * from './add-active-input-connection-to-audio-node-factory';\nexport * from './add-active-input-connection-to-audio-node-function';\nexport * from './add-audio-node-connections-factory';\nexport * from './add-audio-node-connections-function';\nexport * from './add-audio-param-connections-factory';\nexport * from './add-audio-param-connections-function';\nexport * from './add-audio-worklet-module-factory';\nexport * from './add-audio-worklet-module-function';\nexport * from './add-connection-to-audio-node-factory';\nexport * from './add-connection-to-audio-node-function';\nexport * from './add-passive-input-connection-to-audio-node-factory';\nexport * from './add-passive-input-connection-to-audio-node-function';\nexport * from './add-silent-connection-factory';\nexport * from './add-silent-connection-function';\nexport * from './add-unrendered-audio-worklet-node-factory';\nexport * from './add-unrendered-audio-worklet-node-function';\nexport * from './analyser-node-constructor';\nexport * from './analyser-node-constructor-factory';\nexport * from './analyser-node-renderer-factory';\nexport * from './analyser-node-renderer-factory-factory';\nexport * from './any-audio-buffer';\nexport * from './any-context';\nexport * from './audio-buffer-constructor';\nexport * from './audio-buffer-constructor-factory';\nexport * from './audio-buffer-source-node-constructor';\nexport * from './audio-buffer-source-node-constructor-factory';\nexport * from './audio-buffer-source-node-renderer';\nexport * from './audio-buffer-source-node-renderer-factory';\nexport * from './audio-buffer-source-node-renderer-factory-factory';\nexport * from './audio-buffer-store';\nexport * from './audio-context-constructor';\nexport * from './audio-context-constructor-factory';\nexport * from './audio-context-latency-category';\nexport * from './audio-context-state';\nexport * from './audio-destination-node-constructor';\nexport * from './audio-destination-node-constructor-factory';\nexport * from './audio-destination-node-renderer-factory';\nexport * from './audio-listener-factory';\nexport * from './audio-listener-factory-factory';\nexport * from './audio-node-connections';\nexport * from './audio-node-connections-store';\nexport * from './audio-node-constructor';\nexport * from './audio-node-constructor-factory';\nexport * from './audio-node-output-connection';\nexport * from './audio-node-renderer';\nexport * from './audio-node-store';\nexport * from './audio-node-tail-time-store';\nexport * from './audio-param-audio-node-store';\nexport * from './audio-param-connections';\nexport * from './audio-param-connections-store';\nexport * from './audio-param-factory';\nexport * from './audio-param-factory-factory';\nexport * from './audio-param-map';\nexport * from './audio-param-output-connection';\nexport * from './audio-param-renderer-factory';\nexport * from './audio-param-store';\nexport * from './audio-worklet-node-constructor';\nexport * from './audio-worklet-node-constructor-factory';\nexport * from './audio-worklet-node-renderer-factory';\nexport * from './audio-worklet-node-renderer-factory-factory';\nexport * from './backup-offline-audio-context-store';\nexport * from './base-audio-context-constructor';\nexport * from './base-audio-context-constructor-factory';\nexport * from './biquad-filter-node-constructor';\nexport * from './biquad-filter-node-constructor-factory';\nexport * from './biquad-filter-node-renderer-factory';\nexport * from './biquad-filter-node-renderer-factory-factory';\nexport * from './biquad-filter-type';\nexport * from './channel-count-mode';\nexport * from './channel-interpretation';\nexport * from './channel-merger-node-constructor';\nexport * from './channel-merger-node-constructor-factory';\nexport * from './channel-merger-node-renderer-factory';\nexport * from './channel-merger-node-renderer-factory-factory';\nexport * from './channel-splitter-node-constructor';\nexport * from './channel-splitter-node-constructor-factory';\nexport * from './channel-splitter-node-renderer-factory';\nexport * from './channel-splitter-node-renderer-factory-factory';\nexport * from './cache-test-result-factory';\nexport * from './cache-test-result-function';\nexport * from './connect-audio-param-factory';\nexport * from './connect-audio-param-function';\nexport * from './connect-multiple-outputs-factory';\nexport * from './connect-multiple-outputs-function';\nexport * from './connect-native-audio-node-to-native-audio-node-function';\nexport * from './connected-native-audio-buffer-source-node-factory';\nexport * from './connected-native-audio-buffer-source-node-factory-factory';\nexport * from './constant-source-node-constructor';\nexport * from './constant-source-node-constructor-factory';\nexport * from './constant-source-node-renderer';\nexport * from './constant-source-node-renderer-factory';\nexport * from './constant-source-node-renderer-factory-factory';\nexport * from './constructor';\nexport * from './context';\nexport * from './context-store';\nexport * from './convert-number-to-unsigned-long-factory';\nexport * from './convert-number-to-unsigned-long-function';\nexport * from './convolver-node-constructor';\nexport * from './convolver-node-constructor-factory';\nexport * from './convolver-node-renderer-factory';\nexport * from './convolver-node-renderer-factory-factory';\nexport * from './create-native-offline-audio-context-factory';\nexport * from './create-native-offline-audio-context-function';\nexport * from './cycle-counters';\nexport * from './data-clone-error-factory';\nexport * from './decode-audio-data-factory';\nexport * from './decode-audio-data-function';\nexport * from './decode-error-callback';\nexport * from './decode-success-callback';\nexport * from './decrement-cycle-counter-factory';\nexport * from './decrement-cycle-counter-function';\nexport * from './delay-node-constructor';\nexport * from './delay-node-constructor-factory';\nexport * from './delay-node-renderer-factory';\nexport * from './delay-node-renderer-factory-factory';\nexport * from './delete-active-input-connection-to-audio-node-factory';\nexport * from './delete-active-input-connection-to-audio-node-function';\nexport * from './delete-unrendered-audio-worklet-node-factory';\nexport * from './delete-unrendered-audio-worklet-node-function';\nexport * from './detect-cycles-factory';\nexport * from './detect-cycles-function';\nexport * from './disconnect-multiple-outputs-factory';\nexport * from './disconnect-multiple-outputs-function';\nexport * from './disconnect-native-audio-node-from-native-audio-node-function';\nexport * from './distance-model-type';\nexport * from './dynamics-compressor-node-constructor';\nexport * from './dynamics-compressor-node-constructor-factory';\nexport * from './dynamics-compressor-node-renderer-factory';\nexport * from './dynamics-compressor-node-renderer-factory-factory';\nexport * from './encoding-error-factory';\nexport * from './error-event-handler';\nexport * from './evaluate-audio-worklet-global-scope-function';\nexport * from './evaluate-source-factory';\nexport * from './evaluate-source-function';\nexport * from './event-handler';\nexport * from './event-target-constructor';\nexport * from './event-target-constructor-factory';\nexport * from './expose-current-frame-and-current-time-factory';\nexport * from './expose-current-frame-and-current-time-function';\nexport * from './fetch-source-factory';\nexport * from './fetch-source-function';\nexport * from './gain-node-constructor';\nexport * from './gain-node-constructor-factory';\nexport * from './gain-node-renderer-factory';\nexport * from './gain-node-renderer-factory-factory';\nexport * from './get-active-audio-worklet-node-inputs-factory';\nexport * from './get-active-audio-worklet-node-inputs-function';\nexport * from './get-audio-node-connections-function';\nexport * from './get-audio-node-renderer-factory';\nexport * from './get-audio-node-renderer-function';\nexport * from './get-audio-node-tail-time-factory';\nexport * from './get-audio-node-tail-time-function';\nexport * from './get-audio-param-connections-function';\nexport * from './get-audio-param-renderer-factory';\nexport * from './get-audio-param-renderer-function';\nexport * from './get-backup-offline-audio-context-factory';\nexport * from './get-backup-offline-audio-context-function';\nexport * from './get-event-listeners-of-audio-node-function';\nexport * from './get-first-sample-function';\nexport * from './get-native-audio-node-function';\nexport * from './get-native-audio-param-function';\nexport * from './get-native-context-factory';\nexport * from './get-native-context-function';\nexport * from './get-or-create-backup-offline-audio-context-factory';\nexport * from './get-or-create-backup-offline-audio-context-function';\nexport * from './get-unrendered-audio-worklet-nodes-factory';\nexport * from './get-unrendered-audio-worklet-nodes-function';\nexport * from './get-value-for-key-function';\nexport * from './iir-filter-node-constructor';\nexport * from './iir-filter-node-constructor-factory';\nexport * from './iir-filter-node-renderer-factory';\nexport * from './iir-filter-node-renderer-factory-factory';\nexport * from './increment-cycle-counter-factory';\nexport * from './increment-cycle-counter-factory-factory';\nexport * from './increment-cycle-counter-function';\nexport * from './index-size-error-factory';\nexport * from './insert-element-in-set-function';\nexport * from './internal-state-event-listener';\nexport * from './invalid-access-error-factory';\nexport * from './invalid-state-error-factory';\nexport * from './is-active-audio-node-function';\nexport * from './is-any-audio-context-factory';\nexport * from './is-any-audio-context-function';\nexport * from './is-any-audio-node-factory';\nexport * from './is-any-audio-node-function';\nexport * from './is-any-audio-param-factory';\nexport * from './is-any-audio-param-function';\nexport * from './is-any-offline-audio-context-factory';\nexport * from './is-any-offline-audio-context-function';\nexport * from './is-dc-curve-function';\nexport * from './is-native-audio-context-factory';\nexport * from './is-native-audio-context-function';\nexport * from './is-native-audio-node-factory';\nexport * from './is-native-audio-node-function';\nexport * from './is-native-audio-param-factory';\nexport * from './is-native-audio-param-function';\nexport * from './is-native-context-factory';\nexport * from './is-native-context-function';\nexport * from './is-native-offline-audio-context-factory';\nexport * from './is-native-offline-audio-context-function';\nexport * from './is-part-of-a-cycle-function';\nexport * from './is-passive-audio-node-function';\nexport * from './is-secure-context-factory';\nexport * from './is-supported-promise-factory';\nexport * from './media-element-audio-source-node-constructor';\nexport * from './media-element-audio-source-node-constructor-factory';\nexport * from './media-stream-audio-destination-node-constructor';\nexport * from './media-stream-audio-destination-node-constructor-factory';\nexport * from './media-stream-audio-source-node-constructor';\nexport * from './media-stream-audio-source-node-constructor-factory';\nexport * from './media-stream-track-audio-source-node-constructor';\nexport * from './media-stream-track-audio-source-node-constructor-factory';\nexport * from './minimal-audio-context-constructor';\nexport * from './minimal-audio-context-constructor-factory';\nexport * from './minimal-base-audio-context-constructor';\nexport * from './minimal-base-audio-context-constructor-factory';\nexport * from './minimal-offline-audio-context-constructor';\nexport * from './minimal-offline-audio-context-constructor-factory';\nexport * from './monitor-connections-factory';\nexport * from './monitor-connections-function';\nexport * from './native-analyser-node';\nexport * from './native-analyser-node-factory';\nexport * from './native-analyser-node-factory-factory';\nexport * from './native-audio-buffer';\nexport * from './native-audio-buffer-constructor';\nexport * from './native-audio-buffer-constructor-factory';\nexport * from './native-audio-buffer-source-node';\nexport * from './native-audio-buffer-source-node-factory';\nexport * from './native-audio-buffer-source-node-factory-factory';\nexport * from './native-audio-context';\nexport * from './native-audio-context-constructor';\nexport * from './native-audio-context-constructor-factory';\nexport * from './native-audio-destination-node';\nexport * from './native-audio-destination-node-factory';\nexport * from './native-audio-destination-node-factory-factory';\nexport * from './native-audio-listener';\nexport * from './native-audio-node';\nexport * from './native-audio-param';\nexport * from './native-audio-param-map';\nexport * from './native-audio-worklet';\nexport * from './native-audio-worklet-node';\nexport * from './native-audio-worklet-node-constructor';\nexport * from './native-audio-worklet-node-constructor-factory';\nexport * from './native-audio-worklet-node-factory';\nexport * from './native-audio-worklet-node-factory-factory';\nexport * from './native-audio-worklet-node-faker-factory';\nexport * from './native-audio-worklet-node-faker-factory-factory';\nexport * from './native-audio-worklet-node-options';\nexport * from './native-biquad-filter-node';\nexport * from './native-biquad-filter-node-factory';\nexport * from './native-channel-merger-node';\nexport * from './native-channel-merger-node-factory';\nexport * from './native-channel-merger-node-factory-factory';\nexport * from './native-channel-splitter-node';\nexport * from './native-channel-splitter-node-factory';\nexport * from './native-constant-source-node';\nexport * from './native-constant-source-node-factory';\nexport * from './native-constant-source-node-factory-factory';\nexport * from './native-constant-source-node-faker-factory';\nexport * from './native-constant-source-node-faker-factory-factory';\nexport * from './native-context';\nexport * from './native-convolver-node';\nexport * from './native-convolver-node-factory';\nexport * from './native-convolver-node-factory-factory';\nexport * from './native-delay-node-factory';\nexport * from './native-delay-node';\nexport * from './native-dynamics-compressor-node';\nexport * from './native-dynamics-compressor-node-factory';\nexport * from './native-dynamics-compressor-node-factory-factory';\nexport * from './native-event-target';\nexport * from './native-gain-node';\nexport * from './native-gain-node-factory';\nexport * from './native-iir-filter-node';\nexport * from './native-iir-filter-node-factory';\nexport * from './native-iir-filter-node-factory-factory';\nexport * from './native-iir-filter-node-faker-factory';\nexport * from './native-iir-filter-node-faker-factory-factory';\nexport * from './native-media-element-audio-source-node';\nexport * from './native-media-element-audio-source-node-factory';\nexport * from './native-media-stream-audio-destination-node';\nexport * from './native-media-stream-audio-destination-node-factory';\nexport * from './native-media-stream-audio-source-node';\nexport * from './native-media-stream-audio-source-node-factory';\nexport * from './native-media-stream-track-audio-source-node';\nexport * from './native-media-stream-track-audio-source-node-factory';\nexport * from './native-media-stream-track-audio-source-node-factory-factory';\nexport * from './native-offline-audio-context';\nexport * from './native-offline-audio-context-constructor';\nexport * from './native-offline-audio-context-constructor-factory';\nexport * from './native-oscillator-node';\nexport * from './native-oscillator-node-factory';\nexport * from './native-oscillator-node-factory-factory';\nexport * from './native-panner-node';\nexport * from './native-panner-node-factory';\nexport * from './native-panner-node-factory-factory';\nexport * from './native-panner-node-faker-factory';\nexport * from './native-panner-node-faker-factory-factory';\nexport * from './native-periodic-wave';\nexport * from './native-periodic-wave-factory';\nexport * from './native-periodic-wave-factory-factory';\nexport * from './native-script-processor-node';\nexport * from './native-script-processor-node-factory';\nexport * from './native-stereo-panner-node';\nexport * from './native-stereo-panner-node-factory';\nexport * from './native-stereo-panner-node-factory-factory';\nexport * from './native-stereo-panner-node-faker-factory';\nexport * from './native-stereo-panner-node-faker-factory-factory';\nexport * from './native-wave-shaper-node';\nexport * from './native-wave-shaper-node-factory';\nexport * from './native-wave-shaper-node-factory-factory';\nexport * from './native-wave-shaper-node-faker-factory';\nexport * from './native-wave-shaper-node-faker-factory-factory';\nexport * from './not-supported-error-factory';\nexport * from './offline-audio-context-constructor-factory';\nexport * from './oscillator-node-constructor';\nexport * from './oscillator-node-constructor-factory';\nexport * from './oscillator-node-renderer';\nexport * from './oscillator-node-renderer-factory';\nexport * from './oscillator-node-renderer-factory-factory';\nexport * from './oscillator-type';\nexport * from './output-connection';\nexport * from './over-sample-type';\nexport * from './overwrite-accessors-function';\nexport * from './panner-node-constructor';\nexport * from './panner-node-constructor-factory';\nexport * from './panner-node-renderer-factory';\nexport * from './panner-node-renderer-factory-factory';\nexport * from './panning-model-type';\nexport * from './passive-audio-node-input-connection';\nexport * from './passive-audio-param-input-connection';\nexport * from './periodic-wave-constructor';\nexport * from './periodic-wave-constructor-factory';\nexport * from './pick-element-from-set-function';\nexport * from './render-automation-factory';\nexport * from './render-automation-function';\nexport * from './render-inputs-of-audio-node-factory';\nexport * from './render-inputs-of-audio-node-function';\nexport * from './render-inputs-of-audio-param-factory';\nexport * from './render-inputs-of-audio-param-function';\nexport * from './render-native-offline-audio-context-factory';\nexport * from './render-native-offline-audio-context-function';\nexport * from './sanitize-audio-worklet-node-options-function';\nexport * from './sanitize-channel-splitter-options-function';\nexport * from './sanitize-periodic-wave-options-function';\nexport * from './set-active-audio-worklet-node-inputs-factory';\nexport * from './set-active-audio-worklet-node-inputs-function';\nexport * from './set-audio-node-tail-time-factory';\nexport * from './set-audio-node-tail-time-function';\nexport * from './set-value-at-time-until-possible-function';\nexport * from './start-rendering-factory';\nexport * from './start-rendering-function';\nexport * from './stereo-panner-node-constructor';\nexport * from './stereo-panner-node-constructor-factory';\nexport * from './stereo-panner-node-renderer-factory-factory';\nexport * from './stereo-panner-node-renderer-factory';\nexport * from './test-audio-buffer-copy-channel-methods-subarray-support-factory';\nexport * from './test-audio-buffer-constructor-support-factory';\nexport * from './test-audio-context-close-method-support-factory';\nexport * from './test-audio-context-decode-audio-data-method-type-error-support-factory';\nexport * from './test-audio-context-options-support-factory';\nexport * from './test-audio-node-connect-method-support-factory';\nexport * from './test-audio-worklet-node-options-clonability-function';\nexport * from './test-audio-worklet-processor-no-outputs-support-factory';\nexport * from './test-audio-worklet-processor-post-message-support-factory';\nexport * from './test-channel-merger-node-channel-count-support-factory';\nexport * from './test-constant-source-node-accurate-scheduling-support-factory';\nexport * from './test-convolver-node-buffer-reassignability-support-factory';\nexport * from './test-convolver-node-channel-count-support-factory';\nexport * from './test-is-secure-context-support-factory';\nexport * from './test-media-stream-audio-source-node-media-stream-without-audio-track-support';\nexport * from './test-offline-audio-context-current-time-support-factory';\nexport * from './test-stereo-panner-node-default-value-support-factory';\nexport * from './unknown-error-factory';\nexport * from './unrendered-audio-worklet-node-store';\nexport * from './unrendered-audio-worklet-nodes';\nexport * from './wave-shaper-node-constructor';\nexport * from './wave-shaper-node-constructor-factory';\nexport * from './wave-shaper-node-renderer-factory-factory';\nexport * from './wave-shaper-node-renderer-factory';\nexport * from './window';\nexport * from './window-factory';\nexport * from './wrap-audio-buffer-copy-channel-methods-factory';\nexport * from './wrap-audio-buffer-copy-channel-methods-function';\nexport * from './wrap-audio-buffer-copy-channel-methods-out-of-bounds-factory';\nexport * from './wrap-audio-buffer-copy-channel-methods-out-of-bounds-function';\nexport * from './wrap-audio-buffer-source-node-start-method-offset-clamping-function';\nexport * from './wrap-audio-buffer-source-node-stop-method-nullified-buffer-factory';\nexport * from './wrap-audio-buffer-source-node-stop-method-nullified-buffer-function';\nexport * from './wrap-audio-scheduled-source-node-stop-method-consecutive-calls-function';\nexport * from './wrap-channel-merger-node-factory';\nexport * from './wrap-channel-merger-node-function';\nexport * from './wrap-event-listener-function';\n","export type TAbortErrorFactory = () => DOMException;\n","import { TActiveInputConnection } from './active-input-connection';\nimport { TContext } from './context';\nimport { TNativeAudioWorkletNode } from './native-audio-worklet-node';\n\nexport type TActiveAudioWorkletNodeInputsStore = WeakMap>[]>;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\nimport { TInternalStateEventListener } from './internal-state-event-listener';\n\nexport type TActiveInputConnection = [IAudioNode, number, TInternalStateEventListener];\n","import { TAddActiveInputConnectionToAudioNodeFunction } from './add-active-input-connection-to-audio-node-function';\nimport { TInsertElementInSetFunction } from './insert-element-in-set-function';\n\nexport type TAddActiveInputConnectionToAudioNodeFactory = (\n insertElementInSet: TInsertElementInSetFunction\n) => TAddActiveInputConnectionToAudioNodeFunction;\n","import { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection } from './active-input-connection';\nimport { TContext } from './context';\nimport { TPassiveAudioNodeInputConnection } from './passive-audio-node-input-connection';\n\nexport type TAddActiveInputConnectionToAudioNodeFunction = (\n activeInputs: Set>[],\n source: IAudioNode,\n [output, input, eventListener]: TPassiveAudioNodeInputConnection,\n ignoreDuplicates: boolean\n) => void;\n","import { TAddAudioNodeConnectionsFunction } from './add-audio-node-connections-function';\nimport { TAudioNodeConnectionsStore } from './audio-node-connections-store';\n\nexport type TAddAudioNodeConnectionsFactory = (audioNodeConnectionsStore: TAudioNodeConnectionsStore) => TAddAudioNodeConnectionsFunction;\n","import { IAudioNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TContext } from './context';\nimport { TNativeAudioNode } from './native-audio-node';\n\nexport type TAddAudioNodeConnectionsFunction = (\n audioNode: IAudioNode,\n audioNodeRenderer: T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? IAudioNodeRenderer> : null,\n nativeAudioNode: TNativeAudioNode\n) => void;\n","import { TAddAudioParamConnectionsFunction } from './add-audio-param-connections-function';\nimport { TAudioParamConnectionsStore } from './audio-param-connections-store';\n\nexport type TAddAudioParamConnectionsFactory = (\n audioParamConnectionsStore: TAudioParamConnectionsStore\n) => TAddAudioParamConnectionsFunction;\n","import { IAudioParam, IAudioParamRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAddAudioParamConnectionsFunction = (\n audioParam: IAudioParam,\n audioParamRenderer: T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? IAudioParamRenderer : null\n) => void;\n","import { TAddAudioWorkletModuleFunction } from './add-audio-worklet-module-function';\nimport { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TContext } from './context';\nimport { TEvaluateSourceFunction } from './evaluate-source-function';\nimport { TExposeCurrentFrameAndCurrentTimeFunction } from './expose-current-frame-and-current-time-function';\nimport { TFetchSourceFunction } from './fetch-source-function';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TGetOrCreateBackupOfflineAudioContextFunction } from './get-or-create-backup-offline-audio-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeAudioWorkletNodeConstructor } from './native-audio-worklet-node-constructor';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\nimport { TWindow } from './window';\n\nexport type TAddAudioWorkletModuleFactory = (\n cacheTestResult: TCacheTestResultFunction,\n createNotSupportedError: TNotSupportedErrorFactory,\n evaluateSource: TEvaluateSourceFunction,\n exposeCurrentFrameAndCurrentTime: TExposeCurrentFrameAndCurrentTimeFunction,\n fetchSource: TFetchSourceFunction,\n getNativeContext: TGetNativeContextFunction,\n getOrCreateBackupOfflineAudioContext: TGetOrCreateBackupOfflineAudioContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n nativeAudioWorkletNodeConstructor: null | TNativeAudioWorkletNodeConstructor,\n ongoingRequests: WeakMap>>,\n resolvedRequests: WeakMap>,\n testAudioWorkletProcessorPostMessageSupport: () => Promise,\n window: TWindow\n) => TAddAudioWorkletModuleFunction;\n","import { IWorkletOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAddAudioWorkletModuleFunction = (context: TContext, moduleURL: string, options?: IWorkletOptions) => Promise;\n","import { TAddActiveInputConnectionToAudioNodeFunction } from './add-active-input-connection-to-audio-node-function';\nimport { TAddConnectionToAudioNodeFunction } from './add-connection-to-audio-node-function';\nimport { TAddPassiveInputConnectionToAudioNodeFunction } from './add-passive-input-connection-to-audio-node-function';\nimport { TConnectNativeAudioNodeToNativeAudioNodeFunction } from './connect-native-audio-node-to-native-audio-node-function';\nimport { TDeleteActiveInputConnectionToAudioNodeFunction } from './delete-active-input-connection-to-audio-node-function';\nimport { TDisconnectNativeAudioNodeFromNativeAudioNodeFunction } from './disconnect-native-audio-node-from-native-audio-node-function';\nimport { TGetAudioNodeConnectionsFunction } from './get-audio-node-connections-function';\nimport { TGetAudioNodeTailTimeFunction } from './get-audio-node-tail-time-function';\nimport { TGetEventListenersOfAudioNodeFunction } from './get-event-listeners-of-audio-node-function';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TInsertElementInSetFunction } from './insert-element-in-set-function';\nimport { TIsActiveAudioNodeFunction } from './is-active-audio-node-function';\nimport { TIsPartOfACycleFunction } from './is-part-of-a-cycle-function';\nimport { TIsPassiveAudioNodeFunction } from './is-passive-audio-node-function';\n\nexport type TAddConnectionToAudioNodeFactory = (\n addActiveInputConnectionToAudioNode: TAddActiveInputConnectionToAudioNodeFunction,\n addPassiveInputConnectionToAudioNode: TAddPassiveInputConnectionToAudioNodeFunction,\n connectNativeAudioNodeToNativeAudioNode: TConnectNativeAudioNodeToNativeAudioNodeFunction,\n deleteActiveInputConnectionToAudioNode: TDeleteActiveInputConnectionToAudioNodeFunction,\n disconnectNativeAudioNodeFromNativeAudioNode: TDisconnectNativeAudioNodeFromNativeAudioNodeFunction,\n getAudioNodeConnections: TGetAudioNodeConnectionsFunction,\n getAudioNodeTailTime: TGetAudioNodeTailTimeFunction,\n getEventListenersOfAudioNode: TGetEventListenersOfAudioNodeFunction,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n insertElementInSet: TInsertElementInSetFunction,\n isActiveAudioNode: TIsActiveAudioNodeFunction,\n isPartOfACycle: TIsPartOfACycleFunction,\n isPassiveAudioNode: TIsPassiveAudioNodeFunction\n) => TAddConnectionToAudioNodeFunction;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAddConnectionToAudioNodeFunction = (\n source: IAudioNode,\n destination: IAudioNode,\n output: number,\n input: number,\n isOffline: boolean\n) => boolean;\n","import { TAddPassiveInputConnectionToAudioNodeFunction } from './add-passive-input-connection-to-audio-node-function';\nimport { TInsertElementInSetFunction } from './insert-element-in-set-function';\n\nexport type TAddPassiveInputConnectionToAudioNodeFactory = (\n insertElementInSet: TInsertElementInSetFunction\n) => TAddPassiveInputConnectionToAudioNodeFunction;\n","import { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection } from './active-input-connection';\nimport { TContext } from './context';\nimport { TPassiveAudioNodeInputConnection } from './passive-audio-node-input-connection';\n\nexport type TAddPassiveInputConnectionToAudioNodeFunction = (\n passiveInputs: WeakMap, Set>,\n input: number,\n [source, output, eventListener]: TActiveInputConnection,\n ignoreDuplicates: boolean\n) => void;\n","import { TAddSilentConnectionFunction } from './add-silent-connection-function';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\n\nexport type TAddSilentConnectionFactory = (createNativeGainNode: TNativeGainNodeFactory) => TAddSilentConnectionFunction;\n","import { TNativeAudioBufferSourceNode } from './native-audio-buffer-source-node';\nimport { TNativeConstantSourceNode } from './native-constant-source-node';\nimport { TNativeContext } from './native-context';\nimport { TNativeOscillatorNode } from './native-oscillator-node';\n\nexport type TAddSilentConnectionFunction = (\n nativeContext: TNativeContext,\n nativeAudioScheduledSourceNode: TNativeAudioBufferSourceNode | TNativeConstantSourceNode | TNativeOscillatorNode\n) => void;\n","import { TAddUnrenderedAudioWorkletNodeFunction } from './add-unrendered-audio-worklet-node-function';\nimport { TGetUnrenderedAudioWorkletNodesFunction } from './get-unrendered-audio-worklet-nodes-function';\n\nexport type TAddUnrenderedAudioWorkletNodeFactory = (\n getUnrenderedAudioWorkletNodes: TGetUnrenderedAudioWorkletNodesFunction\n) => TAddUnrenderedAudioWorkletNodeFunction;\n","import { IAudioWorkletNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TNativeContext } from './native-context';\n\nexport type TAddUnrenderedAudioWorkletNodeFunction = (\n nativeContext: TNativeContext,\n audioWorkletNode: IAudioWorkletNode\n) => void;\n","import { IAnalyserNode, IAnalyserOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAnalyserNodeConstructor = new (context: T, options?: Partial) => IAnalyserNode;\n","import { TAnalyserNodeConstructor } from './analyser-node-constructor';\nimport { TAnalyserNodeRendererFactory } from './analyser-node-renderer-factory';\nimport { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIndexSizeErrorFactory } from './index-size-error-factory';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeAnalyserNodeFactory } from './native-analyser-node-factory';\n\nexport type TAnalyserNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createAnalyserNodeRenderer: TAnalyserNodeRendererFactory,\n createIndexSizeError: TIndexSizeErrorFactory,\n createNativeAnalyserNode: TNativeAnalyserNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction\n) => TAnalyserNodeConstructor;\n","import { IAnalyserNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TAnalyserNodeRendererFactory = () => IAudioNodeRenderer<\n T,\n IAnalyserNode\n>;\n","import { TAnalyserNodeRendererFactory } from './analyser-node-renderer-factory';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeAnalyserNodeFactory } from './native-analyser-node-factory';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TAnalyserNodeRendererFactoryFactory = (\n createNativeAnalyserNode: TNativeAnalyserNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TAnalyserNodeRendererFactory;\n","import { IAudioBuffer } from '../interfaces';\nimport { TNativeAudioBuffer } from './native-audio-buffer';\n\nexport type TAnyAudioBuffer = IAudioBuffer | TNativeAudioBuffer;\n","import { TContext } from './context';\nimport { TNativeContext } from './native-context';\n\nexport type TAnyContext = TContext | TNativeContext;\n","import { IAudioBuffer, IAudioBufferOptions } from '../interfaces';\n\nexport type TAudioBufferConstructor = new (options: IAudioBufferOptions) => IAudioBuffer;\n","import { TAudioBufferConstructor } from './audio-buffer-constructor';\nimport { TAudioBufferStore } from './audio-buffer-store';\nimport { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TNativeAudioBufferConstructor } from './native-audio-buffer-constructor';\nimport { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\nimport { TWrapAudioBufferCopyChannelMethodsFunction } from './wrap-audio-buffer-copy-channel-methods-function';\nimport { TWrapAudioBufferCopyChannelMethodsOutOfBoundsFunction } from './wrap-audio-buffer-copy-channel-methods-out-of-bounds-function';\n\nexport type TAudioBufferConstructorFactory = (\n audioBufferStore: TAudioBufferStore,\n cacheTestResult: TCacheTestResultFunction,\n createNotSupportedError: TNotSupportedErrorFactory,\n nativeAudioBufferConstructor: null | TNativeAudioBufferConstructor,\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor,\n testNativeAudioBufferConstructorSupport: () => boolean,\n wrapAudioBufferCopyChannelMethods: TWrapAudioBufferCopyChannelMethodsFunction,\n wrapAudioBufferCopyChannelMethodsOutOfBounds: TWrapAudioBufferCopyChannelMethodsOutOfBoundsFunction\n) => TAudioBufferConstructor;\n","import { IAudioBufferSourceNode, IAudioBufferSourceOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAudioBufferSourceNodeConstructor = new (\n context: T,\n options?: Partial\n) => IAudioBufferSourceNode;\n","import { TAudioBufferSourceNodeConstructor } from './audio-buffer-source-node-constructor';\nimport { TAudioBufferSourceNodeRendererFactory } from './audio-buffer-source-node-renderer-factory';\nimport { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeAudioBufferSourceNodeFactory } from './native-audio-buffer-source-node-factory';\nimport { TWrapEventListenerFunction } from './wrap-event-listener-function';\n\nexport type TAudioBufferSourceNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createAudioBufferSourceNodeRenderer: TAudioBufferSourceNodeRendererFactory,\n createAudioParam: TAudioParamFactory,\n createInvalidStateError: TInvalidStateErrorFactory,\n createNativeAudioBufferSourceNode: TNativeAudioBufferSourceNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n wrapEventListener: TWrapEventListenerFunction\n) => TAudioBufferSourceNodeConstructor;\n","import { IAudioBufferSourceNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAudioBufferSourceNodeRenderer = T extends IMinimalOfflineAudioContext | IOfflineAudioContext\n ? IAudioBufferSourceNodeRenderer\n : null;\n","import { IAudioBufferSourceNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TAudioBufferSourceNodeRendererFactory = <\n T extends IMinimalOfflineAudioContext | IOfflineAudioContext\n>() => IAudioBufferSourceNodeRenderer;\n","import { TAudioBufferSourceNodeRendererFactory } from './audio-buffer-source-node-renderer-factory';\nimport { TConnectAudioParamFunction } from './connect-audio-param-function';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeAudioBufferSourceNodeFactory } from './native-audio-buffer-source-node-factory';\nimport { TRenderAutomationFunction } from './render-automation-function';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TAudioBufferSourceNodeRendererFactoryFactory = (\n connectAudioParam: TConnectAudioParamFunction,\n createNativeAudioBufferSourceNode: TNativeAudioBufferSourceNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderAutomation: TRenderAutomationFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TAudioBufferSourceNodeRendererFactory;\n","import { IAudioBuffer } from '../interfaces';\n\nexport type TAudioBufferStore = WeakSet;\n","import { IAudioContext, IAudioContextOptions } from '../interfaces';\n\nexport type TAudioContextConstructor = new (options?: IAudioContextOptions) => IAudioContext;\n","import { TAudioContextConstructor } from './audio-context-constructor';\nimport { TBaseAudioContextConstructor } from './base-audio-context-constructor';\nimport { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TMediaElementAudioSourceNodeConstructor } from './media-element-audio-source-node-constructor';\nimport { TMediaStreamAudioDestinationNodeConstructor } from './media-stream-audio-destination-node-constructor';\nimport { TMediaStreamAudioSourceNodeConstructor } from './media-stream-audio-source-node-constructor';\nimport { TMediaStreamTrackAudioSourceNodeConstructor } from './media-stream-track-audio-source-node-constructor';\nimport { TNativeAudioContextConstructor } from './native-audio-context-constructor';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\nimport { TUnknownErrorFactory } from './unknown-error-factory';\n\nexport type TAudioContextConstructorFactory = (\n baseAudioContextConstructor: TBaseAudioContextConstructor,\n createInvalidStateError: TInvalidStateErrorFactory,\n createNotSupportedError: TNotSupportedErrorFactory,\n createUnknownError: TUnknownErrorFactory,\n mediaElementAudioSourceNodeConstructor: TMediaElementAudioSourceNodeConstructor,\n mediaStreamAudioDestinationNodeConstructor: TMediaStreamAudioDestinationNodeConstructor,\n mediaStreamAudioSourceNodeConstructor: TMediaStreamAudioSourceNodeConstructor,\n mediaStreamTrackAudioSourceNodeConstructor: TMediaStreamTrackAudioSourceNodeConstructor,\n nativeAudioContextConstructor: null | TNativeAudioContextConstructor\n) => TAudioContextConstructor;\n","export type TAudioContextLatencyCategory = 'balanced' | 'interactive' | 'playback';\n","export type TAudioContextState = 'closed' | 'running' | 'suspended';\n","import { IAudioDestinationNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAudioDestinationNodeConstructor = new (context: T, channelCount: number) => IAudioDestinationNode;\n","import { TAudioDestinationNodeConstructor } from './audio-destination-node-constructor';\nimport { TAudioDestinationNodeRendererFactory } from './audio-destination-node-renderer-factory';\nimport { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIndexSizeErrorFactory } from './index-size-error-factory';\nimport { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeAudioDestinationNodeFactory } from './native-audio-destination-node-factory';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TAudioDestinationNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createAudioDestinationNodeRenderer: TAudioDestinationNodeRendererFactory,\n createIndexSizeError: TIndexSizeErrorFactory,\n createInvalidStateError: TInvalidStateErrorFactory,\n createNativeAudioDestinationNode: TNativeAudioDestinationNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TAudioDestinationNodeConstructor;\n","import { IAudioDestinationNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TAudioDestinationNodeRendererFactory = (\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => IAudioNodeRenderer>;\n","import { IAudioListener } from '../interfaces';\nimport { TContext } from './context';\nimport { TNativeContext } from './native-context';\n\nexport type TAudioListenerFactory = (context: T, nativeContext: TNativeContext) => IAudioListener;\n","import { TAudioListenerFactory } from './audio-listener-factory';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TGetFirstSampleFunction } from './get-first-sample-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeChannelMergerNodeFactory } from './native-channel-merger-node-factory';\nimport { TNativeConstantSourceNodeFactory } from './native-constant-source-node-factory';\nimport { TNativeScriptProcessorNodeFactory } from './native-script-processor-node-factory';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\nimport { TOverwriteAccessorsFunction } from './overwrite-accessors-function';\n\nexport type TAudioListenerFactoryFactory = (\n createAudioParam: TAudioParamFactory,\n createNativeChannelMergerNode: TNativeChannelMergerNodeFactory,\n createNativeConstantSourceNode: TNativeConstantSourceNodeFactory,\n createNativeScriptProcessorNode: TNativeScriptProcessorNodeFactory,\n createNotSupportedError: TNotSupportedErrorFactory,\n getFirstSample: TGetFirstSampleFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n overwriteAccessors: TOverwriteAccessorsFunction\n) => TAudioListenerFactory;\n","import { IAudioNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TActiveInputConnection } from './active-input-connection';\nimport { TContext } from './context';\nimport { TOutputConnection } from './output-connection';\nimport { TPassiveAudioNodeInputConnection } from './passive-audio-node-input-connection';\n\nexport type TAudioNodeConnections = Readonly<{\n activeInputs: Set>[];\n\n outputs: Set>;\n\n passiveInputs: WeakMap, Set>;\n\n renderer: T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? IAudioNodeRenderer> : null;\n}>;\n","import { IAudioNode } from '../interfaces';\nimport { TAudioNodeConnections } from './audio-node-connections';\nimport { TContext } from './context';\n\nexport type TAudioNodeConnectionsStore = WeakMap, TAudioNodeConnections>;\n","import { IAudioNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TContext } from './context';\nimport { TNativeAudioNode } from './native-audio-node';\n\nexport type TAudioNodeConstructor = new = {}>(\n context: T,\n isActive: boolean,\n nativeAudioNode: TNativeAudioNode,\n audioNodeRenderer: T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? IAudioNodeRenderer> : null\n) => IAudioNode;\n","import { TAddAudioNodeConnectionsFunction } from './add-audio-node-connections-function';\nimport { TAddConnectionToAudioNodeFunction } from './add-connection-to-audio-node-function';\nimport { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TDecrementCycleCounterFunction } from './decrement-cycle-counter-function';\nimport { TDetectCyclesFunction } from './detect-cycles-function';\nimport { TEventTargetConstructor } from './event-target-constructor';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIncrementCycleCounterFactory } from './increment-cycle-counter-factory';\nimport { TIndexSizeErrorFactory } from './index-size-error-factory';\nimport { TInvalidAccessErrorFactory } from './invalid-access-error-factory';\nimport { TIsNativeAudioContextFunction } from './is-native-audio-context-function';\nimport { TIsNativeAudioNodeFunction } from './is-native-audio-node-function';\nimport { TIsNativeAudioParamFunction } from './is-native-audio-param-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeAudioWorkletNodeConstructor } from './native-audio-worklet-node-constructor';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\n\nexport type TAudioNodeConstructorFactory = (\n addAudioNodeConnections: TAddAudioNodeConnectionsFunction,\n addConnectionToAudioNode: TAddConnectionToAudioNodeFunction,\n cacheTestResult: TCacheTestResultFunction,\n createIncrementCycleCounter: TIncrementCycleCounterFactory,\n createIndexSizeError: TIndexSizeErrorFactory,\n createInvalidAccessError: TInvalidAccessErrorFactory,\n createNotSupportedError: TNotSupportedErrorFactory,\n decrementCycleCounter: TDecrementCycleCounterFunction,\n detectCycles: TDetectCyclesFunction,\n eventTargetConstructor: TEventTargetConstructor,\n getNativeContext: TGetNativeContextFunction,\n isNativeAudioContext: TIsNativeAudioContextFunction,\n isNativeAudioNode: TIsNativeAudioNodeFunction,\n isNativeAudioParam: TIsNativeAudioParamFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n nativeAudioWorkletNodeConstructor: null | TNativeAudioWorkletNodeConstructor\n) => TAudioNodeConstructor;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAudioNodeOutputConnection = [IAudioNode, number, number];\n","import { IAudioNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAudioNodeRenderer = IAudioNode> = T extends\n | IMinimalOfflineAudioContext\n | IOfflineAudioContext\n ? IAudioNodeRenderer\n : null;\n","import { IAudioNode, INativeAudioNodeFaker } from '../interfaces';\nimport { TContext } from './context';\nimport { TNativeAudioNode } from './native-audio-node';\n\nexport type TAudioNodeStore = WeakMap, TNativeAudioNode | INativeAudioNodeFaker>;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAudioNodeTailTimeStore = WeakMap, number>;\n","import { IAudioNode, IAudioParam } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAudioParamAudioNodeStore = WeakMap>;\n","import { IAudioNode, IAudioParamRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TActiveInputConnection } from './active-input-connection';\nimport { TContext } from './context';\nimport { TPassiveAudioParamInputConnection } from './passive-audio-param-input-connection';\n\nexport type TAudioParamConnections = Readonly<{\n activeInputs: Set>;\n\n passiveInputs: WeakMap, Set>;\n\n renderer: T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? IAudioParamRenderer : null;\n}>;\n","import { IAudioParam } from '../interfaces';\nimport { TAudioParamConnections } from './audio-param-connections';\nimport { TContext } from './context';\n\nexport type TAudioParamConnectionsStore = WeakMap>;\n","import { IAudioNode, IAudioParam } from '../interfaces';\nimport { TContext } from './context';\nimport { TNativeAudioParam } from './native-audio-param';\n\nexport type TAudioParamFactory = (\n audioNode: IAudioNode,\n isAudioParamOfOfflineAudioContext: boolean,\n nativeAudioParam: TNativeAudioParam,\n maxValue?: null | number,\n minValue?: null | number\n) => IAudioParam;\n","// @todo Renaming the imports is currently necessary to avoid collissions with the parameter names.\nimport {\n createCancelAndHoldAutomationEvent as createCancelAndHoldAutomationEventFunction,\n createCancelScheduledValuesAutomationEvent as createCancelScheduledValuesAutomationEventFunction,\n createExponentialRampToValueAutomationEvent as createExponentialRampToValueAutomationEventFunction,\n createLinearRampToValueAutomationEvent as createLinearRampToValueAutomationEventFunction,\n createSetTargetAutomationEvent as createSetTargetAutomationEventFunction,\n createSetValueAutomationEvent as createSetValueAutomationEventFunction,\n createSetValueCurveAutomationEvent as createSetValueCurveAutomationEventFunction\n} from 'automation-events';\nimport { TAddAudioParamConnectionsFunction } from './add-audio-param-connections-function';\nimport { TAudioParamAudioNodeStore } from './audio-param-audio-node-store';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TAudioParamRendererFactory } from './audio-param-renderer-factory';\nimport { TAudioParamStore } from './audio-param-store';\nimport { TNativeAudioContextConstructor } from './native-audio-context-constructor';\nimport { TSetValueAtTimeUntilPossibleFunction } from './set-value-at-time-until-possible-function';\n\nexport type TAudioParamFactoryFactory = (\n addAudioParamConnections: TAddAudioParamConnectionsFunction,\n audioParamAudioNodeStore: TAudioParamAudioNodeStore,\n audioParamStore: TAudioParamStore,\n createAudioParamRenderer: TAudioParamRendererFactory,\n createCancelAndHoldAutomationEvent: typeof createCancelAndHoldAutomationEventFunction,\n createCancelScheduledValuesAutomationEvent: typeof createCancelScheduledValuesAutomationEventFunction,\n createExponentialRampToValueAutomationEvent: typeof createExponentialRampToValueAutomationEventFunction,\n createLinearRampToValueAutomationEvent: typeof createLinearRampToValueAutomationEventFunction,\n createSetTargetAutomationEvent: typeof createSetTargetAutomationEventFunction,\n createSetValueAutomationEvent: typeof createSetValueAutomationEventFunction,\n createSetValueCurveAutomationEvent: typeof createSetValueCurveAutomationEventFunction,\n nativeAudioContextConstructor: null | TNativeAudioContextConstructor,\n setValueAtTimeUntilPossible: TSetValueAtTimeUntilPossibleFunction\n) => TAudioParamFactory;\n","import { IAudioParam, IReadOnlyMap } from '../interfaces';\n\nexport type TAudioParamMap = IReadOnlyMap;\n","import { IAudioParam } from '../interfaces';\n\nexport type TAudioParamOutputConnection = [IAudioParam, number];\n","import { AutomationEventList } from 'automation-events';\nimport { IAudioParamRenderer } from '../interfaces';\n\nexport type TAudioParamRendererFactory = (automationEventList: AutomationEventList) => IAudioParamRenderer;\n","import { IAudioParam } from '../interfaces';\nimport { TNativeAudioParam } from './native-audio-param';\n\nexport type TAudioParamStore = WeakMap;\n","import { IAudioWorkletNode, IAudioWorkletNodeOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TAudioWorkletNodeConstructor = new (\n context: T,\n name: string,\n options?: Partial\n) => IAudioWorkletNode;\n","import { TAddUnrenderedAudioWorkletNodeFunction } from './add-unrendered-audio-worklet-node-function';\nimport { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TAudioWorkletNodeConstructor } from './audio-worklet-node-constructor';\nimport { TAudioWorkletNodeRendererFactory } from './audio-worklet-node-renderer-factory';\nimport { TGetAudioNodeConnectionsFunction } from './get-audio-node-connections-function';\nimport { TGetBackupOfflineAudioContextFunction } from './get-backup-offline-audio-context-function';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeAudioWorkletNodeConstructor } from './native-audio-worklet-node-constructor';\nimport { TNativeAudioWorkletNodeFactory } from './native-audio-worklet-node-factory';\nimport { TSanitizeAudioWorkletNodeOptionsFunction } from './sanitize-audio-worklet-node-options-function';\nimport { TSetActiveAudioWorkletNodeInputsFunction } from './set-active-audio-worklet-node-inputs-function';\nimport { TTestAudioWorkletNodeOptionsClonabilityFunction } from './test-audio-worklet-node-options-clonability-function';\nimport { TWrapEventListenerFunction } from './wrap-event-listener-function';\n\nexport type TAudioWorkletNodeConstructorFactory = (\n addUnrenderedAudioWorkletNode: TAddUnrenderedAudioWorkletNodeFunction,\n audioNodeConstructor: TAudioNodeConstructor,\n createAudioParam: TAudioParamFactory,\n createAudioWorkletNodeRenderer: TAudioWorkletNodeRendererFactory,\n createNativeAudioWorkletNode: TNativeAudioWorkletNodeFactory,\n getAudioNodeConnections: TGetAudioNodeConnectionsFunction,\n getBackupOfflineAudioContext: TGetBackupOfflineAudioContextFunction,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n nativeAudioWorkletNodeConstructor: null | TNativeAudioWorkletNodeConstructor,\n sanitizeAudioWorkletNodeOptions: TSanitizeAudioWorkletNodeOptionsFunction,\n setActiveAudioWorkletNodeInputs: TSetActiveAudioWorkletNodeInputsFunction,\n testAudioWorkletNodeOptionsClonability: TTestAudioWorkletNodeOptionsClonabilityFunction,\n wrapEventListener: TWrapEventListenerFunction\n) => TAudioWorkletNodeConstructor;\n","import {\n IAudioNodeRenderer,\n IAudioWorkletNode,\n IAudioWorkletNodeOptions,\n IAudioWorkletProcessorConstructor,\n IMinimalOfflineAudioContext,\n IOfflineAudioContext\n} from '../interfaces';\n\nexport type TAudioWorkletNodeRendererFactory = (\n name: string,\n options: IAudioWorkletNodeOptions,\n processorConstructor: undefined | IAudioWorkletProcessorConstructor\n) => IAudioNodeRenderer>;\n","import { TAudioWorkletNodeRendererFactory } from './audio-worklet-node-renderer-factory';\nimport { TConnectAudioParamFunction } from './connect-audio-param-function';\nimport { TConnectMultipleOutputsFunction } from './connect-multiple-outputs-function';\nimport { TDeleteUnrenderedAudioWorkletNodeFunction } from './delete-unrendered-audio-worklet-node-function';\nimport { TDisconnectMultipleOutputsFunction } from './disconnect-multiple-outputs-function';\nimport { TExposeCurrentFrameAndCurrentTimeFunction } from './expose-current-frame-and-current-time-function';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeAudioBufferSourceNodeFactory } from './native-audio-buffer-source-node-factory';\nimport { TNativeAudioWorkletNodeConstructor } from './native-audio-worklet-node-constructor';\nimport { TNativeChannelMergerNodeFactory } from './native-channel-merger-node-factory';\nimport { TNativeChannelSplitterNodeFactory } from './native-channel-splitter-node-factory';\nimport { TNativeConstantSourceNodeFactory } from './native-constant-source-node-factory';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\nimport { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\nimport { TRenderAutomationFunction } from './render-automation-function';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\nimport { TRenderNativeOfflineAudioContextFunction } from './render-native-offline-audio-context-function';\n\nexport type TAudioWorkletNodeRendererFactoryFactory = (\n connectAudioParam: TConnectAudioParamFunction,\n connectMultipleOutputs: TConnectMultipleOutputsFunction,\n createNativeAudioBufferSourceNode: TNativeAudioBufferSourceNodeFactory,\n createNativeChannelMergerNode: TNativeChannelMergerNodeFactory,\n createNativeChannelSplitterNode: TNativeChannelSplitterNodeFactory,\n createNativeConstantSourceNode: TNativeConstantSourceNodeFactory,\n createNativeGainNode: TNativeGainNodeFactory,\n deleteUnrenderedAudioWorkletNode: TDeleteUnrenderedAudioWorkletNodeFunction,\n disconnectMultipleOutputs: TDisconnectMultipleOutputsFunction,\n exposeCurrentFrameAndCurrentTime: TExposeCurrentFrameAndCurrentTimeFunction,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n nativeAudioWorkletNodeConstructor: null | TNativeAudioWorkletNodeConstructor,\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor,\n renderAutomation: TRenderAutomationFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction,\n renderNativeOfflineAudioContext: TRenderNativeOfflineAudioContextFunction\n) => TAudioWorkletNodeRendererFactory;\n","import { TNativeAudioContext } from './native-audio-context';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TBackupOfflineAudioContextStore = WeakMap;\n","import { IBaseAudioContext } from '../interfaces';\nimport { TContext } from './context';\nimport { TNativeContext } from './native-context';\n\nexport type TBaseAudioContextConstructor = new (\n nativeContext: TNativeContext,\n numberOfChannels: number\n) => IBaseAudioContext;\n","import { TAddAudioWorkletModuleFunction } from './add-audio-worklet-module-function';\nimport { TAnalyserNodeConstructor } from './analyser-node-constructor';\nimport { TAudioBufferConstructor } from './audio-buffer-constructor';\nimport { TAudioBufferSourceNodeConstructor } from './audio-buffer-source-node-constructor';\nimport { TBaseAudioContextConstructor } from './base-audio-context-constructor';\nimport { TBiquadFilterNodeConstructor } from './biquad-filter-node-constructor';\nimport { TChannelMergerNodeConstructor } from './channel-merger-node-constructor';\nimport { TChannelSplitterNodeConstructor } from './channel-splitter-node-constructor';\nimport { TConstantSourceNodeConstructor } from './constant-source-node-constructor';\nimport { TConvolverNodeConstructor } from './convolver-node-constructor';\nimport { TDecodeAudioDataFunction } from './decode-audio-data-function';\nimport { TDelayNodeConstructor } from './delay-node-constructor';\nimport { TDynamicsCompressorNodeConstructor } from './dynamics-compressor-node-constructor';\nimport { TGainNodeConstructor } from './gain-node-constructor';\nimport { TIIRFilterNodeConstructor } from './iir-filter-node-constructor';\nimport { TMinimalBaseAudioContextConstructor } from './minimal-base-audio-context-constructor';\nimport { TOscillatorNodeConstructor } from './oscillator-node-constructor';\nimport { TPannerNodeConstructor } from './panner-node-constructor';\nimport { TPeriodicWaveConstructor } from './periodic-wave-constructor';\nimport { TStereoPannerNodeConstructor } from './stereo-panner-node-constructor';\nimport { TWaveShaperNodeConstructor } from './wave-shaper-node-constructor';\n\nexport type TBaseAudioContextConstructorFactory = (\n addAudioWorkletModule: undefined | TAddAudioWorkletModuleFunction,\n analyserNodeConstructor: TAnalyserNodeConstructor,\n audioBufferConstructor: TAudioBufferConstructor,\n audioBufferSourceNodeConstructor: TAudioBufferSourceNodeConstructor,\n biquadFilterNodeConstructor: TBiquadFilterNodeConstructor,\n channelMergerNodeConstructor: TChannelMergerNodeConstructor,\n channelSplitterNodeConstructor: TChannelSplitterNodeConstructor,\n constantSourceNodeConstructor: TConstantSourceNodeConstructor,\n convolverNodeConstructor: TConvolverNodeConstructor,\n decodeAudioData: TDecodeAudioDataFunction,\n delayNodeConstructor: TDelayNodeConstructor,\n dynamicsCompressorNodeConstructor: TDynamicsCompressorNodeConstructor,\n gainNodeConstructor: TGainNodeConstructor,\n iIRFilterNodeConstructor: TIIRFilterNodeConstructor,\n minimalBaseAudioContextConstructor: TMinimalBaseAudioContextConstructor,\n oscillatorNodeConstructor: TOscillatorNodeConstructor,\n pannerNodeConstructor: TPannerNodeConstructor,\n periodicWaveConstructor: TPeriodicWaveConstructor,\n stereoPannerNodeConstructor: TStereoPannerNodeConstructor,\n waveShaperNodeConstructor: TWaveShaperNodeConstructor\n) => TBaseAudioContextConstructor;\n","import { IBiquadFilterNode, IBiquadFilterOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TBiquadFilterNodeConstructor = new (\n context: T,\n options?: Partial\n) => IBiquadFilterNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TBiquadFilterNodeConstructor } from './biquad-filter-node-constructor';\nimport { TBiquadFilterNodeRendererFactory } from './biquad-filter-node-renderer-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TInvalidAccessErrorFactory } from './invalid-access-error-factory';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeBiquadFilterNodeFactory } from './native-biquad-filter-node-factory';\nimport { TSetAudioNodeTailTimeFunction } from './set-audio-node-tail-time-function';\n\nexport type TBiquadFilterNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createAudioParam: TAudioParamFactory,\n createBiquadFilterNodeRenderer: TBiquadFilterNodeRendererFactory,\n createInvalidAccessError: TInvalidAccessErrorFactory,\n createNativeBiquadFilterNode: TNativeBiquadFilterNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n setAudioNodeTailTime: TSetAudioNodeTailTimeFunction\n) => TBiquadFilterNodeConstructor;\n","import { IAudioNodeRenderer, IBiquadFilterNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TBiquadFilterNodeRendererFactory = () => IAudioNodeRenderer<\n T,\n IBiquadFilterNode\n>;\n","import { TBiquadFilterNodeRendererFactory } from './biquad-filter-node-renderer-factory';\nimport { TConnectAudioParamFunction } from './connect-audio-param-function';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeBiquadFilterNodeFactory } from './native-biquad-filter-node-factory';\nimport { TRenderAutomationFunction } from './render-automation-function';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TBiquadFilterNodeRendererFactoryFactory = (\n connectAudioParam: TConnectAudioParamFunction,\n createNativeBiquadFilterNode: TNativeBiquadFilterNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderAutomation: TRenderAutomationFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TBiquadFilterNodeRendererFactory;\n","export type TBiquadFilterType = 'allpass' | 'bandpass' | 'highpass' | 'highshelf' | 'lowpass' | 'lowshelf' | 'notch' | 'peaking';\n","export type TChannelCountMode = 'clamped-max' | 'explicit' | 'max';\n","export type TChannelInterpretation = 'discrete' | 'speakers';\n","import { IAudioNode, IChannelMergerOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TChannelMergerNodeConstructor = new (context: T, options?: Partial) => IAudioNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TChannelMergerNodeConstructor } from './channel-merger-node-constructor';\nimport { TChannelMergerNodeRendererFactory } from './channel-merger-node-renderer-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeChannelMergerNodeFactory } from './native-channel-merger-node-factory';\n\nexport type TChannelMergerNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createChannelMergerNodeRenderer: TChannelMergerNodeRendererFactory,\n createNativeChannelMergerNode: TNativeChannelMergerNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction\n) => TChannelMergerNodeConstructor;\n","import { IAudioNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TChannelMergerNodeRendererFactory = () => IAudioNodeRenderer<\n T,\n IAudioNode\n>;\n","import { TChannelMergerNodeRendererFactory } from './channel-merger-node-renderer-factory';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeChannelMergerNodeFactory } from './native-channel-merger-node-factory';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TChannelMergerNodeRendererFactoryFactory = (\n createNativeChannelMergerNode: TNativeChannelMergerNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TChannelMergerNodeRendererFactory;\n","import { IAudioNode, IChannelSplitterOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TChannelSplitterNodeConstructor = new (\n context: T,\n options?: Partial\n) => IAudioNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TChannelSplitterNodeConstructor } from './channel-splitter-node-constructor';\nimport { TChannelSplitterNodeRendererFactory } from './channel-splitter-node-renderer-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeChannelSplitterNodeFactory } from './native-channel-splitter-node-factory';\nimport { TSanitizeChannelSplitterOptionsFunction } from './sanitize-channel-splitter-options-function';\n\nexport type TChannelSplitterNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createChannelSplitterNodeRenderer: TChannelSplitterNodeRendererFactory,\n createNativeChannelSplitterNode: TNativeChannelSplitterNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n sanitizeChannelSplitterOptions: TSanitizeChannelSplitterOptionsFunction\n) => TChannelSplitterNodeConstructor;\n","import { IAudioNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TChannelSplitterNodeRendererFactory = () => IAudioNodeRenderer<\n T,\n IAudioNode\n>;\n","import { TChannelSplitterNodeRendererFactory } from './channel-splitter-node-renderer-factory';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeChannelSplitterNodeFactory } from './native-channel-splitter-node-factory';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TChannelSplitterNodeRendererFactoryFactory = (\n createNativeChannelSplitterNode: TNativeChannelSplitterNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TChannelSplitterNodeRendererFactory;\n","import { TCacheTestResultFunction } from './cache-test-result-function';\n\nexport type TCacheTestResultFactory = (\n ongoingTests: Map>,\n testResults: WeakMap\n) => TCacheTestResultFunction;\n","export type TCacheTestResultFunction = (tester: object, test: () => boolean | Promise) => boolean | Promise;\n","import { TConnectAudioParamFunction } from './connect-audio-param-function';\nimport { TRenderInputsOfAudioParamFunction } from './render-inputs-of-audio-param-function';\n\nexport type TConnectAudioParamFactory = (renderInputsOfAudioParam: TRenderInputsOfAudioParamFunction) => TConnectAudioParamFunction;\n","import { IAudioParam } from '../interfaces';\nimport { TNativeAudioParam } from './native-audio-param';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TConnectAudioParamFunction = (\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n audioParam: IAudioParam,\n nativeAudioParam: TNativeAudioParam\n) => Promise;\n","import { TConnectMultipleOutputsFunction } from './connect-multiple-outputs-function';\nimport { TIndexSizeErrorFactory } from './index-size-error-factory';\n\nexport type TConnectMultipleOutputsFactory = (createIndexSizeError: TIndexSizeErrorFactory) => TConnectMultipleOutputsFunction;\n","import { TNativeAudioNode } from './native-audio-node';\nimport { TNativeAudioParam } from './native-audio-param';\n\nexport type TConnectMultipleOutputsFunction = (\n outputAudioNodes: TNativeAudioNode[],\n destination: TNativeAudioNode | TNativeAudioParam,\n output?: number,\n input?: number\n) => void | TNativeAudioNode; // tslint:disable-line:invalid-void\n","import { INativeAudioNodeFaker } from '../interfaces';\nimport { TNativeAudioNode } from './native-audio-node';\n\nexport type TConnectNativeAudioNodeToNativeAudioNodeFunction = (\n nativeSourceAudioNode: INativeAudioNodeFaker | TNativeAudioNode,\n nativeDestinationAudioNode: INativeAudioNodeFaker | TNativeAudioNode,\n output: number,\n input: number\n) => [TNativeAudioNode, number, number];\n","import { TNativeAudioNode } from './native-audio-node';\nimport { TNativeContext } from './native-context';\n\nexport type TConnectedNativeAudioBufferSourceNodeFactory = (nativeContext: TNativeContext, nativeAudioNode: TNativeAudioNode) => () => void;\n","import { TConnectedNativeAudioBufferSourceNodeFactory } from './connected-native-audio-buffer-source-node-factory';\nimport { TNativeAudioBufferSourceNodeFactory } from './native-audio-buffer-source-node-factory';\n\nexport type TConnectedNativeAudioBufferSourceNodeFactoryFactory = (\n createNativeAudioBufferSourceNode: TNativeAudioBufferSourceNodeFactory\n) => TConnectedNativeAudioBufferSourceNodeFactory;\n","import { IConstantSourceNode, IConstantSourceOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TConstantSourceNodeConstructor = new (\n context: T,\n options?: Partial\n) => IConstantSourceNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TConstantSourceNodeConstructor } from './constant-source-node-constructor';\nimport { TConstantSourceNodeRendererFactory } from './constant-source-node-renderer-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeConstantSourceNodeFactory } from './native-constant-source-node-factory';\nimport { TWrapEventListenerFunction } from './wrap-event-listener-function';\n\nexport type TConstantSourceNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createAudioParam: TAudioParamFactory,\n createConstantSourceNodeRenderer: TConstantSourceNodeRendererFactory,\n createNativeConstantSourceNode: TNativeConstantSourceNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n wrapEventListener: TWrapEventListenerFunction\n) => TConstantSourceNodeConstructor;\n","import { IConstantSourceNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TConstantSourceNodeRenderer = T extends IMinimalOfflineAudioContext | IOfflineAudioContext\n ? IConstantSourceNodeRenderer\n : null;\n","import { IConstantSourceNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TConstantSourceNodeRendererFactory = <\n T extends IMinimalOfflineAudioContext | IOfflineAudioContext\n>() => IConstantSourceNodeRenderer;\n","import { TConnectAudioParamFunction } from './connect-audio-param-function';\nimport { TConstantSourceNodeRendererFactory } from './constant-source-node-renderer-factory';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeConstantSourceNodeFactory } from './native-constant-source-node-factory';\nimport { TRenderAutomationFunction } from './render-automation-function';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TConstantSourceNodeRendererFactoryFactory = (\n connectAudioParam: TConnectAudioParamFunction,\n createNativeConstantSourceNode: TNativeConstantSourceNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderAutomation: TRenderAutomationFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TConstantSourceNodeRendererFactory;\n","export type TConstructor = new (...args: any[]) => T;\n","import { IAudioContext, IMinimalAudioContext, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TContext = IAudioContext | IMinimalAudioContext | IMinimalOfflineAudioContext | IOfflineAudioContext;\n","import { TContext } from './context';\nimport { TNativeContext } from './native-context';\n\nexport type TContextStore = WeakMap;\n","import { TConvertNumberToUnsignedLongFunction } from './convert-number-to-unsigned-long-function';\n\nexport type TConvertNumberToUnsignedLongFactory = (uint32Array: Uint32Array) => TConvertNumberToUnsignedLongFunction;\n","export type TConvertNumberToUnsignedLongFunction = (value: number) => number;\n","import { IConvolverNode, IConvolverOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TConvolverNodeConstructor = new (context: T, options?: Partial) => IConvolverNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TConvolverNodeConstructor } from './convolver-node-constructor';\nimport { TConvolverNodeRendererFactory } from './convolver-node-renderer-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeConvolverNodeFactory } from './native-convolver-node-factory';\nimport { TSetAudioNodeTailTimeFunction } from './set-audio-node-tail-time-function';\n\nexport type TConvolverNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createConvolverNodeRenderer: TConvolverNodeRendererFactory,\n createNativeConvolverNode: TNativeConvolverNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n setAudioNodeTailTime: TSetAudioNodeTailTimeFunction\n) => TConvolverNodeConstructor;\n","import { IAudioNodeRenderer, IConvolverNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TConvolverNodeRendererFactory = () => IAudioNodeRenderer<\n T,\n IConvolverNode\n>;\n","import { TConvolverNodeRendererFactory } from './convolver-node-renderer-factory';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeConvolverNodeFactory } from './native-convolver-node-factory';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TConvolverNodeRendererFactoryFactory = (\n createNativeConvolverNode: TNativeConvolverNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TConvolverNodeRendererFactory;\n","import { TCreateNativeOfflineAudioContextFunction } from './create-native-offline-audio-context-function';\nimport { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\n\nexport type TCreateNativeOfflineAudioContextFactory = (\n createNotSupportedError: TNotSupportedErrorFactory,\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => TCreateNativeOfflineAudioContextFunction;\n","import { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TCreateNativeOfflineAudioContextFunction = (\n numberOfChannels: number,\n length: number,\n sampleRate: number\n) => TNativeOfflineAudioContext;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TCycleCounters = WeakMap, number>;\n","export type TDataCloneErrorFactory = () => DOMException;\n","import { TAudioBufferStore } from './audio-buffer-store';\nimport { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TDataCloneErrorFactory } from './data-clone-error-factory';\nimport { TDecodeAudioDataFunction } from './decode-audio-data-function';\nimport { TEncodingErrorFactory } from './encoding-error-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeContextFunction } from './is-native-context-function';\nimport { TNativeAudioBuffer } from './native-audio-buffer';\nimport { TNativeContext } from './native-context';\nimport { TWrapAudioBufferCopyChannelMethodsFunction } from './wrap-audio-buffer-copy-channel-methods-function';\nimport { TWrapAudioBufferCopyChannelMethodsOutOfBoundsFunction } from './wrap-audio-buffer-copy-channel-methods-out-of-bounds-function';\n\nexport type TDecodeAudioDataFactory = (\n audioBufferStore: TAudioBufferStore,\n cacheTestResult: TCacheTestResultFunction,\n createDataCloneError: TDataCloneErrorFactory,\n createEncodingError: TEncodingErrorFactory,\n detachedArrayBuffers: WeakSet,\n getNativeContext: TGetNativeContextFunction,\n isNativeContext: TIsNativeContextFunction,\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport: (nativeAudioBuffer: TNativeAudioBuffer) => boolean,\n testPromiseSupport: (nativeContext: TNativeContext) => boolean,\n wrapAudioBufferCopyChannelMethods: TWrapAudioBufferCopyChannelMethodsFunction,\n wrapAudioBufferCopyChannelMethodsOutOfBounds: TWrapAudioBufferCopyChannelMethodsOutOfBoundsFunction\n) => TDecodeAudioDataFunction;\n","import { IAudioBuffer } from '../interfaces';\nimport { TAnyContext } from './any-context';\n\nexport type TDecodeAudioDataFunction = (anyContext: TAnyContext, audioData: ArrayBuffer) => Promise;\n","export type TDecodeErrorCallback = (error: DOMException | TypeError) => void;\n","import { IAudioBuffer } from '../interfaces';\n\nexport type TDecodeSuccessCallback = (decodedData: IAudioBuffer) => void;\n","import { TConnectNativeAudioNodeToNativeAudioNodeFunction } from './connect-native-audio-node-to-native-audio-node-function';\nimport { TCycleCounters } from './cycle-counters';\nimport { TDecrementCycleCounterFunction } from './decrement-cycle-counter-function';\nimport { TGetAudioNodeConnectionsFunction } from './get-audio-node-connections-function';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TGetNativeAudioParamFunction } from './get-native-audio-param-function';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsActiveAudioNodeFunction } from './is-active-audio-node-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\n\nexport type TDecrementCycleCounterFactory = (\n connectNativeAudioNodeToNativeAudioNode: TConnectNativeAudioNodeToNativeAudioNodeFunction,\n cycleCounters: TCycleCounters,\n getAudioNodeConnections: TGetAudioNodeConnectionsFunction,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n getNativeAudioParam: TGetNativeAudioParamFunction,\n getNativeContext: TGetNativeContextFunction,\n isActiveAudioNode: TIsActiveAudioNodeFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction\n) => TDecrementCycleCounterFunction;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TDecrementCycleCounterFunction = (audioNode: IAudioNode, count: number) => void;\n","import { IDelayNode, IDelayOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TDelayNodeConstructor = new (context: T, options?: Partial) => IDelayNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TDelayNodeConstructor } from './delay-node-constructor';\nimport { TDelayNodeRendererFactory } from './delay-node-renderer-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeDelayNodeFactory } from './native-delay-node-factory';\nimport { TSetAudioNodeTailTimeFunction } from './set-audio-node-tail-time-function';\n\nexport type TDelayNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createAudioParam: TAudioParamFactory,\n createDelayNodeRenderer: TDelayNodeRendererFactory,\n createNativeDelayNode: TNativeDelayNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n setAudioNodeTailTime: TSetAudioNodeTailTimeFunction\n) => TDelayNodeConstructor;\n","import { IAudioNodeRenderer, IDelayNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TDelayNodeRendererFactory = (\n maxDelayTime: number\n) => IAudioNodeRenderer>;\n","import { TConnectAudioParamFunction } from './connect-audio-param-function';\nimport { TDelayNodeRendererFactory } from './delay-node-renderer-factory';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeDelayNodeFactory } from './native-delay-node-factory';\nimport { TRenderAutomationFunction } from './render-automation-function';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TDelayNodeRendererFactoryFactory = (\n connectAudioParam: TConnectAudioParamFunction,\n createNativeDelayNode: TNativeDelayNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderAutomation: TRenderAutomationFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TDelayNodeRendererFactory;\n","import { TDeleteActiveInputConnectionToAudioNodeFunction } from './delete-active-input-connection-to-audio-node-function';\nimport { TPickElementFromSetFunction } from './pick-element-from-set-function';\n\nexport type TDeleteActiveInputConnectionToAudioNodeFactory = (\n pickElementFromSet: TPickElementFromSetFunction\n) => TDeleteActiveInputConnectionToAudioNodeFunction;\n","import { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection } from './active-input-connection';\nimport { TContext } from './context';\n\nexport type TDeleteActiveInputConnectionToAudioNodeFunction = (\n activeInputs: Set>[],\n source: IAudioNode,\n output: number,\n input: number\n) => TActiveInputConnection;\n","import { TDeleteUnrenderedAudioWorkletNodeFunction } from './delete-unrendered-audio-worklet-node-function';\nimport { TGetUnrenderedAudioWorkletNodesFunction } from './get-unrendered-audio-worklet-nodes-function';\n\nexport type TDeleteUnrenderedAudioWorkletNodeFactory = (\n getUnrenderedAudioWorkletNodes: TGetUnrenderedAudioWorkletNodesFunction\n) => TDeleteUnrenderedAudioWorkletNodeFunction;\n","import { IAudioWorkletNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TNativeContext } from './native-context';\n\nexport type TDeleteUnrenderedAudioWorkletNodeFunction = (\n nativeContext: TNativeContext,\n audioWorkletNode: IAudioWorkletNode\n) => void;\n","import { TAudioParamAudioNodeStore } from './audio-param-audio-node-store';\nimport { TDetectCyclesFunction } from './detect-cycles-function';\nimport { TGetAudioNodeConnectionsFunction } from './get-audio-node-connections-function';\nimport { TGetValueForKeyFunction } from './get-value-for-key-function';\n\nexport type TDetectCyclesFactory = (\n audioParamAudioNodeStore: TAudioParamAudioNodeStore,\n getAudioNodeConnections: TGetAudioNodeConnectionsFunction,\n getValueForKey: TGetValueForKeyFunction\n) => TDetectCyclesFunction;\n","import { IAudioNode, IAudioParam } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TDetectCyclesFunction = (\n chain: IAudioNode[],\n nextLink: IAudioNode | IAudioParam\n) => IAudioNode[][];\n","import { TDisconnectMultipleOutputsFunction } from './disconnect-multiple-outputs-function';\nimport { TIndexSizeErrorFactory } from './index-size-error-factory';\n\nexport type TDisconnectMultipleOutputsFactory = (createIndexSizeError: TIndexSizeErrorFactory) => TDisconnectMultipleOutputsFunction;\n","import { TNativeAudioNode } from './native-audio-node';\nimport { TNativeAudioParam } from './native-audio-param';\n\nexport type TDisconnectMultipleOutputsFunction = (\n outputAudioNodes: TNativeAudioNode[],\n destinationOutput?: number | TNativeAudioNode | TNativeAudioParam,\n output?: number,\n input?: number\n) => void;\n","import { INativeAudioNodeFaker } from '../interfaces';\nimport { TNativeAudioNode } from './native-audio-node';\n\nexport type TDisconnectNativeAudioNodeFromNativeAudioNodeFunction = (\n nativeSourceAudioNode: INativeAudioNodeFaker | TNativeAudioNode,\n nativeDestinationAudioNode: INativeAudioNodeFaker | TNativeAudioNode,\n output: number,\n input: number\n) => void;\n","export type TDistanceModelType = 'exponential' | 'inverse' | 'linear';\n","import { IDynamicsCompressorNode, IDynamicsCompressorOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TDynamicsCompressorNodeConstructor = new (\n context: T,\n options?: Partial\n) => IDynamicsCompressorNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TDynamicsCompressorNodeConstructor } from './dynamics-compressor-node-constructor';\nimport { TDynamicsCompressorNodeRendererFactory } from './dynamics-compressor-node-renderer-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeDynamicsCompressorNodeFactory } from './native-dynamics-compressor-node-factory';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\nimport { TSetAudioNodeTailTimeFunction } from './set-audio-node-tail-time-function';\n\nexport type TDynamicsCompressorNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createAudioParam: TAudioParamFactory,\n createDynamicsCompressorNodeRenderer: TDynamicsCompressorNodeRendererFactory,\n createNativeDynamicsCompressorNode: TNativeDynamicsCompressorNodeFactory,\n createNotSupportedError: TNotSupportedErrorFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n setAudioNodeTailTime: TSetAudioNodeTailTimeFunction\n) => TDynamicsCompressorNodeConstructor;\n","import { IAudioNodeRenderer, IDynamicsCompressorNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TDynamicsCompressorNodeRendererFactory = () => IAudioNodeRenderer<\n T,\n IDynamicsCompressorNode\n>;\n","import { TConnectAudioParamFunction } from './connect-audio-param-function';\nimport { TDynamicsCompressorNodeRendererFactory } from './dynamics-compressor-node-renderer-factory';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeDynamicsCompressorNodeFactory } from './native-dynamics-compressor-node-factory';\nimport { TRenderAutomationFunction } from './render-automation-function';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TDynamicsCompressorNodeRendererFactoryFactory = (\n connectAudioParam: TConnectAudioParamFunction,\n createNativeDynamicsCompressorNode: TNativeDynamicsCompressorNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderAutomation: TRenderAutomationFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TDynamicsCompressorNodeRendererFactory;\n","export type TEncodingErrorFactory = () => DOMException;\n","import { TEventHandler } from './event-handler';\n\nexport type TErrorEventHandler = TEventHandler;\n","import { IAudioWorkletProcessorConstructor } from '../interfaces';\n\nexport type TEvaluateAudioWorkletGlobalScopeFunction = (\n AudioWorkletProcessor: Object, // tslint:disable-line:variable-name\n global: undefined,\n registerProcessor: (name: string, processorCtor: T) => void,\n sampleRate: number,\n self: undefined,\n window: undefined\n) => void;\n","import { TEvaluateSourceFunction } from './evaluate-source-function';\nimport { TWindow } from './window';\n\nexport type TEvaluateSourceFactory = (window: null | TWindow) => TEvaluateSourceFunction;\n","export type TEvaluateSourceFunction = (source: string) => Promise;\n","export type TEventHandler = (ThisType & { handler(event: U): void })['handler'];\n","import { IEventTarget } from '../interfaces';\nimport { TNativeEventTarget } from './native-event-target';\n\nexport type TEventTargetConstructor = new >(\n nativeEventTarget: TNativeEventTarget\n) => IEventTarget;\n","import { TEventTargetConstructor } from './event-target-constructor';\nimport { TWrapEventListenerFunction } from './wrap-event-listener-function';\n\nexport type TEventTargetConstructorFactory = (wrapEventListener: TWrapEventListenerFunction) => TEventTargetConstructor;\n","import { TExposeCurrentFrameAndCurrentTimeFunction } from './expose-current-frame-and-current-time-function';\nimport { TWindow } from './window';\n\nexport type TExposeCurrentFrameAndCurrentTimeFactory = (window: null | TWindow) => TExposeCurrentFrameAndCurrentTimeFunction;\n","export type TExposeCurrentFrameAndCurrentTimeFunction = (currentTime: number, sampleRate: number, fn: () => T) => T;\n","import { TAbortErrorFactory } from './abort-error-factory';\nimport { TFetchSourceFunction } from './fetch-source-function';\n\nexport type TFetchSourceFactory = (createAbortError: TAbortErrorFactory) => TFetchSourceFunction;\n","export type TFetchSourceFunction = (url: string) => Promise<[string, string]>;\n","import { IGainNode, IGainOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TGainNodeConstructor = new (context: T, options?: Partial) => IGainNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TGainNodeConstructor } from './gain-node-constructor';\nimport { TGainNodeRendererFactory } from './gain-node-renderer-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\n\nexport type TGainNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createAudioParam: TAudioParamFactory,\n createGainNodeRenderer: TGainNodeRendererFactory,\n createNativeGainNode: TNativeGainNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction\n) => TGainNodeConstructor;\n","import { IAudioNodeRenderer, IGainNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TGainNodeRendererFactory = () => IAudioNodeRenderer<\n T,\n IGainNode\n>;\n","import { TConnectAudioParamFunction } from './connect-audio-param-function';\nimport { TGainNodeRendererFactory } from './gain-node-renderer-factory';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\nimport { TRenderAutomationFunction } from './render-automation-function';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TGainNodeRendererFactoryFactory = (\n connectAudioParam: TConnectAudioParamFunction,\n createNativeGainNode: TNativeGainNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderAutomation: TRenderAutomationFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TGainNodeRendererFactory;\n","import { TActiveAudioWorkletNodeInputsStore } from './active-audio-worklet-node-inputs-store';\nimport { TGetActiveAudioWorkletNodeInputsFunction } from './get-active-audio-worklet-node-inputs-function';\nimport { TGetValueForKeyFunction } from './get-value-for-key-function';\n\nexport type TGetActiveAudioWorkletNodeInputsFactory = (\n activeAudioWorkletNodeInputsStore: TActiveAudioWorkletNodeInputsStore,\n getValueForKey: TGetValueForKeyFunction\n) => TGetActiveAudioWorkletNodeInputsFunction;\n","import { TActiveInputConnection } from './active-input-connection';\nimport { TContext } from './context';\nimport { TNativeAudioWorkletNode } from './native-audio-worklet-node';\n\nexport type TGetActiveAudioWorkletNodeInputsFunction = (\n nativeAudioWorkletNode: TNativeAudioWorkletNode\n) => Set>[];\n","import { IAudioNode } from '../interfaces';\nimport { TAudioNodeConnections } from './audio-node-connections';\nimport { TContext } from './context';\n\nexport type TGetAudioNodeConnectionsFunction = (audioNode: IAudioNode) => TAudioNodeConnections;\n","import { TGetAudioNodeConnectionsFunction } from './get-audio-node-connections-function';\nimport { TGetAudioNodeRendererFunction } from './get-audio-node-renderer-function';\n\nexport type TGetAudioNodeRendererFactory = (getAudioNodeConnections: TGetAudioNodeConnectionsFunction) => TGetAudioNodeRendererFunction;\n","import { IAudioNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TGetAudioNodeRendererFunction = (\n audioNode: IAudioNode\n) => IAudioNodeRenderer>;\n","import { TAudioNodeTailTimeStore } from './audio-node-tail-time-store';\nimport { TGetAudioNodeTailTimeFunction } from './get-audio-node-tail-time-function';\n\nexport type TGetAudioNodeTailTimeFactory = (audioNodeTailTimeStore: TAudioNodeTailTimeStore) => TGetAudioNodeTailTimeFunction;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TGetAudioNodeTailTimeFunction = (audioNode: IAudioNode) => number;\n","import { IAudioParam } from '../interfaces';\nimport { TAudioParamConnections } from './audio-param-connections';\nimport { TContext } from './context';\n\nexport type TGetAudioParamConnectionsFunction = (audioParam: IAudioParam) => TAudioParamConnections;\n","import { TGetAudioParamConnectionsFunction } from './get-audio-param-connections-function';\nimport { TGetAudioParamRendererFunction } from './get-audio-param-renderer-function';\n\nexport type TGetAudioParamRendererFactory = (getAudioParamConnections: TGetAudioParamConnectionsFunction) => TGetAudioParamRendererFunction;\n","import { IAudioParam, IAudioParamRenderer } from '../interfaces';\n\nexport type TGetAudioParamRendererFunction = (audioParam: IAudioParam) => IAudioParamRenderer;\n","import { TBackupOfflineAudioContextStore } from './backup-offline-audio-context-store';\nimport { TGetBackupOfflineAudioContextFunction } from './get-backup-offline-audio-context-function';\n\nexport type TGetBackupOfflineAudioContextFactory = (\n backupOfflineAudioContextStore: TBackupOfflineAudioContextStore\n) => TGetBackupOfflineAudioContextFunction;\n","import { TNativeAudioContext } from './native-audio-context';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TGetBackupOfflineAudioContextFunction = (nativeContext: TNativeAudioContext) => undefined | TNativeOfflineAudioContext;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\nimport { TInternalStateEventListener } from './internal-state-event-listener';\n\nexport type TGetEventListenersOfAudioNodeFunction = (audioNode: IAudioNode) => Set;\n","import { TNativeAudioBuffer } from './native-audio-buffer';\n\nexport type TGetFirstSampleFunction = (audioBuffer: TNativeAudioBuffer, buffer: Float32Array, channelNumber: number) => number;\n","import { IAudioNode, INativeAudioNodeFaker } from '../interfaces';\nimport { TContext } from './context';\nimport { TNativeAudioNode } from './native-audio-node';\n\nexport type TGetNativeAudioNodeFunction = (\n audioNode: IAudioNode\n) => U;\n","import { IAudioParam } from '../interfaces';\nimport { TNativeAudioParam } from './native-audio-param';\n\nexport type TGetNativeAudioParamFunction = (audioParam: IAudioParam) => TNativeAudioParam;\n","import { TContextStore } from './context-store';\nimport { TGetNativeContextFunction } from './get-native-context-function';\n\nexport type TGetNativeContextFactory = (contextStore: TContextStore) => TGetNativeContextFunction;\n","import { IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TContext } from './context';\nimport { TNativeAudioContext } from './native-audio-context';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TGetNativeContextFunction = (\n context: T\n) => T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? TNativeOfflineAudioContext : TNativeAudioContext;\n","import { TBackupOfflineAudioContextStore } from './backup-offline-audio-context-store';\nimport { TGetOrCreateBackupOfflineAudioContextFunction } from './get-or-create-backup-offline-audio-context-function';\nimport { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TGetOrCreateBackupOfflineAudioContextFactory = (\n backupOfflineAudioContextStore: TBackupOfflineAudioContextStore,\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => TGetOrCreateBackupOfflineAudioContextFunction;\n","import { TNativeAudioContext } from './native-audio-context';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TGetOrCreateBackupOfflineAudioContextFunction = (nativeContext: TNativeAudioContext) => TNativeOfflineAudioContext;\n","import { TGetUnrenderedAudioWorkletNodesFunction } from './get-unrendered-audio-worklet-nodes-function';\nimport { TUnrenderedAudioWorkletNodeStore } from './unrendered-audio-worklet-node-store';\n\nexport type TGetUnrenderedAudioWorkletNodesFactory = (\n unrenderedAudioWorkletNodeStore: TUnrenderedAudioWorkletNodeStore\n) => TGetUnrenderedAudioWorkletNodesFunction;\n","import { TNativeContext } from './native-context';\nimport { TUnrenderedAudioWorkletNodes } from './unrendered-audio-worklet-nodes';\n\nexport type TGetUnrenderedAudioWorkletNodesFunction = (nativeContext: TNativeContext) => TUnrenderedAudioWorkletNodes;\n","export type TGetValueForKeyFunction = (map: T extends object ? Map | WeakMap : Map, key: T) => U;\n","import { IIIRFilterNode, IIIRFilterOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TIIRFilterNodeConstructor = new (\n context: T,\n options: { feedback: IIIRFilterOptions['feedback']; feedforward: IIIRFilterOptions['feedforward'] } & Partial\n) => IIIRFilterNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIIRFilterNodeConstructor } from './iir-filter-node-constructor';\nimport { TIIRFilterNodeRendererFactory } from './iir-filter-node-renderer-factory';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeIIRFilterNodeFactory } from './native-iir-filter-node-factory';\nimport { TSetAudioNodeTailTimeFunction } from './set-audio-node-tail-time-function';\n\nexport type TIIRFilterNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createNativeIIRFilterNode: TNativeIIRFilterNodeFactory,\n createIIRFilterNodeRenderer: TIIRFilterNodeRendererFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n setAudioNodeTailTime: TSetAudioNodeTailTimeFunction\n) => TIIRFilterNodeConstructor;\n","import { IAudioNodeRenderer, IIIRFilterNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TIIRFilterNodeRendererFactory = (\n feedback: Iterable,\n feedforward: Iterable\n) => IAudioNodeRenderer>;\n","import { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TIIRFilterNodeRendererFactory } from './iir-filter-node-renderer-factory';\nimport { TNativeAudioBufferSourceNodeFactory } from './native-audio-buffer-source-node-factory';\nimport { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\nimport { TRenderNativeOfflineAudioContextFunction } from './render-native-offline-audio-context-function';\n\nexport type TIIRFilterNodeRendererFactoryFactory = (\n createNativeAudioBufferSourceNode: TNativeAudioBufferSourceNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction,\n renderNativeOfflineAudioContext: TRenderNativeOfflineAudioContextFunction\n) => TIIRFilterNodeRendererFactory;\n","import { TIncrementCycleCounterFunction } from './increment-cycle-counter-function';\n\nexport type TIncrementCycleCounterFactory = (isOffline: boolean) => TIncrementCycleCounterFunction;\n","import { TCycleCounters } from './cycle-counters';\nimport { TDisconnectNativeAudioNodeFromNativeAudioNodeFunction } from './disconnect-native-audio-node-from-native-audio-node-function';\nimport { TGetAudioNodeConnectionsFunction } from './get-audio-node-connections-function';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TGetNativeAudioParamFunction } from './get-native-audio-param-function';\nimport { TIncrementCycleCounterFactory } from './increment-cycle-counter-factory';\nimport { TIsActiveAudioNodeFunction } from './is-active-audio-node-function';\n\nexport type TIncrementCycleCounterFactoryFactory = (\n cycleCounters: TCycleCounters,\n disconnectNativeAudioNodeFromNativeAudioNode: TDisconnectNativeAudioNodeFromNativeAudioNodeFunction,\n getAudioNodeConnections: TGetAudioNodeConnectionsFunction,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n getNativeAudioParam: TGetNativeAudioParamFunction,\n isActiveAudioNode: TIsActiveAudioNodeFunction\n) => TIncrementCycleCounterFactory;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TIncrementCycleCounterFunction = (audioNode: IAudioNode, count: number) => void;\n","export type TIndexSizeErrorFactory = () => DOMException;\n","export type TInsertElementInSetFunction = (\n set: Set,\n element: T,\n predicate: (element: T) => boolean,\n ignoreDuplicates: boolean\n) => boolean;\n","export type TInternalStateEventListener = (isActive: boolean) => void;\n","export type TInvalidAccessErrorFactory = () => DOMException;\n","export type TInvalidStateErrorFactory = () => DOMException;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TIsActiveAudioNodeFunction = (audioNode: IAudioNode) => boolean;\n","import { TContextStore } from './context-store';\nimport { TIsAnyAudioContextFunction } from './is-any-audio-context-function';\nimport { TIsNativeAudioContextFunction } from './is-native-audio-context-function';\n\nexport type TIsAnyAudioContextFactory = (\n contextStore: TContextStore,\n isNativeAudioContext: TIsNativeAudioContextFunction\n) => TIsAnyAudioContextFunction;\n","import { IAudioContext, IMinimalAudioContext } from '../interfaces';\nimport { TNativeAudioContext } from './native-audio-context';\n\nexport type TIsAnyAudioContextFunction = (anything: unknown) => anything is IAudioContext | IMinimalAudioContext | TNativeAudioContext;\n","import { TAudioNodeStore } from './audio-node-store';\nimport { TIsAnyAudioNodeFunction } from './is-any-audio-node-function';\nimport { TIsNativeAudioNodeFunction } from './is-native-audio-node-function';\n\nexport type TIsAnyAudioNodeFactory = (\n audioNodeStore: TAudioNodeStore,\n isNativeAudioNode: TIsNativeAudioNodeFunction\n) => TIsAnyAudioNodeFunction;\n","import { IAudioNode } from '../interfaces';\nimport { TNativeAudioNode } from './native-audio-node';\n\nexport type TIsAnyAudioNodeFunction = (anything: unknown) => anything is IAudioNode | TNativeAudioNode;\n","import { TAudioParamStore } from './audio-param-store';\nimport { TIsAnyAudioParamFunction } from './is-any-audio-param-function';\nimport { TIsNativeAudioParamFunction } from './is-native-audio-param-function';\n\nexport type TIsAnyAudioParamFactory = (\n audioParamStore: TAudioParamStore,\n isNativeAudioParam: TIsNativeAudioParamFunction\n) => TIsAnyAudioParamFunction;\n","import { IAudioParam } from '../interfaces';\nimport { TNativeAudioParam } from './native-audio-param';\n\nexport type TIsAnyAudioParamFunction = (anything: unknown) => anything is IAudioParam | TNativeAudioParam;\n","import { TContextStore } from './context-store';\nimport { TIsAnyOfflineAudioContextFunction } from './is-any-offline-audio-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\n\nexport type TIsAnyOfflineAudioContextFactory = (\n contextStore: TContextStore,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction\n) => TIsAnyOfflineAudioContextFunction;\n","import { IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TIsAnyOfflineAudioContextFunction = (\n anything: unknown\n) => anything is IMinimalOfflineAudioContext | IOfflineAudioContext | TNativeOfflineAudioContext;\n","export type TIsDCCurveFunction = (curve: null | Float32Array) => boolean;\n","import { TIsNativeAudioContextFunction } from './is-native-audio-context-function';\nimport { TNativeAudioContextConstructor } from './native-audio-context-constructor';\n\nexport type TIsNativeAudioContextFactory = (\n nativeAudioContextConstructor: null | TNativeAudioContextConstructor\n) => TIsNativeAudioContextFunction;\n","import { TNativeAudioContext } from './native-audio-context';\n\nexport type TIsNativeAudioContextFunction = (anything: unknown) => anything is TNativeAudioContext;\n","import { TIsNativeAudioNodeFunction } from './is-native-audio-node-function';\nimport { TWindow } from './window';\n\nexport type TIsNativeAudioNodeFactory = (window: null | TWindow) => TIsNativeAudioNodeFunction;\n","import { TNativeAudioNode } from './native-audio-node';\n\nexport type TIsNativeAudioNodeFunction = (anything: unknown) => anything is TNativeAudioNode;\n","import { TIsNativeAudioParamFunction } from './is-native-audio-param-function';\nimport { TWindow } from './window';\n\nexport type TIsNativeAudioParamFactory = (window: null | TWindow) => TIsNativeAudioParamFunction;\n","import { TNativeAudioParam } from './native-audio-param';\n\nexport type TIsNativeAudioParamFunction = (anything: unknown) => anything is TNativeAudioParam;\n","import { TIsNativeAudioContextFunction } from './is-native-audio-context-function';\nimport { TIsNativeContextFunction } from './is-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\n\nexport type TIsNativeContextFactory = (\n isNativeAudioContext: TIsNativeAudioContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction\n) => TIsNativeContextFunction;\n","import { TNativeContext } from './native-context';\n\nexport type TIsNativeContextFunction = (anything: unknown) => anything is TNativeContext;\n","import { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TIsNativeOfflineAudioContextFactory = (\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => TIsNativeOfflineAudioContextFunction;\n","import { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TIsNativeOfflineAudioContextFunction = (anything: unknown) => anything is TNativeOfflineAudioContext;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TIsPartOfACycleFunction = (audioNode: IAudioNode) => boolean;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TIsPassiveAudioNodeFunction = (audioNode: IAudioNode) => boolean;\n","import { TWindow } from './window';\n\nexport type TIsSecureContextFactory = (window: null | TWindow) => boolean;\n","import { TCacheTestResultFunction } from './cache-test-result-function';\n\nexport type TIsSupportedPromiseFactory = (\n cacheTestResult: TCacheTestResultFunction,\n testAudioBufferCopyChannelMethodsSubarraySupport: () => boolean,\n testAudioContextCloseMethodSupport: () => boolean,\n testAudioContextDecodeAudioDataMethodTypeErrorSupport: () => Promise,\n testAudioContextOptionsSupport: () => boolean,\n testAudioNodeConnectMethodSupport: () => boolean,\n testAudioWorkletProcessorNoOutputsSupport: () => Promise,\n testChannelMergerNodeChannelCountSupport: () => boolean,\n testConstantSourceNodeAccurateSchedulingSupport: () => boolean,\n testConvolverNodeBufferReassignabilitySupport: () => boolean,\n testConvolverNodeChannelCountSupport: () => boolean,\n testDomExceptionContrucorSupport: () => boolean,\n testIsSecureContextSupport: () => boolean,\n testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport: () => boolean,\n testStereoPannerNodeDefaultValueSupport: () => Promise,\n testTransferablesSupport: () => Promise\n) => Promise;\n","import { IAudioContext, IMediaElementAudioSourceNode, IMediaElementAudioSourceOptions, IMinimalAudioContext } from '../interfaces';\n\nexport type TMediaElementAudioSourceNodeConstructor = new (\n context: T,\n options: IMediaElementAudioSourceOptions\n) => IMediaElementAudioSourceNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TMediaElementAudioSourceNodeConstructor } from './media-element-audio-source-node-constructor';\nimport { TNativeMediaElementAudioSourceNodeFactory } from './native-media-element-audio-source-node-factory';\n\nexport type TMediaElementAudioSourceNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createNativeMediaElementAudioSourceNode: TNativeMediaElementAudioSourceNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction\n) => TMediaElementAudioSourceNodeConstructor;\n","import { IAudioContext, IAudioNodeOptions, IMediaStreamAudioDestinationNode, IMinimalAudioContext } from '../interfaces';\n\nexport type TMediaStreamAudioDestinationNodeConstructor = new (\n context: T,\n options?: Partial\n) => IMediaStreamAudioDestinationNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TMediaStreamAudioDestinationNodeConstructor } from './media-stream-audio-destination-node-constructor';\nimport { TNativeMediaStreamAudioDestinationNodeFactory } from './native-media-stream-audio-destination-node-factory';\n\nexport type TMediaStreamAudioDestinationNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createNativeMediaStreamAudioDestinationNode: TNativeMediaStreamAudioDestinationNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction\n) => TMediaStreamAudioDestinationNodeConstructor;\n","import { IAudioContext, IMediaStreamAudioSourceNode, IMediaStreamAudioSourceOptions, IMinimalAudioContext } from '../interfaces';\n\nexport type TMediaStreamAudioSourceNodeConstructor = new (\n context: T,\n options: IMediaStreamAudioSourceOptions\n) => IMediaStreamAudioSourceNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TMediaStreamAudioSourceNodeConstructor } from './media-stream-audio-source-node-constructor';\nimport { TNativeMediaStreamAudioSourceNodeFactory } from './native-media-stream-audio-source-node-factory';\n\nexport type TMediaStreamAudioSourceNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createNativeMediaStreamAudioSourceNode: TNativeMediaStreamAudioSourceNodeFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction\n) => TMediaStreamAudioSourceNodeConstructor;\n","import { IAudioContext, IMediaStreamTrackAudioSourceNode, IMediaStreamTrackAudioSourceOptions, IMinimalAudioContext } from '../interfaces';\n\nexport type TMediaStreamTrackAudioSourceNodeConstructor = new (\n context: T,\n options: IMediaStreamTrackAudioSourceOptions\n) => IMediaStreamTrackAudioSourceNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TMediaStreamTrackAudioSourceNodeConstructor } from './media-stream-track-audio-source-node-constructor';\nimport { TNativeMediaStreamTrackAudioSourceNodeFactory } from './native-media-stream-track-audio-source-node-factory';\n\nexport type TMediaStreamTrackAudioSourceNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createNativeMediaStreamTrackAudioSourceNode: TNativeMediaStreamTrackAudioSourceNodeFactory,\n getNativeContext: TGetNativeContextFunction\n) => TMediaStreamTrackAudioSourceNodeConstructor;\n","import { IAudioContextOptions, IMinimalAudioContext } from '../interfaces';\n\nexport type TMinimalAudioContextConstructor = new (options?: IAudioContextOptions) => IMinimalAudioContext;\n","import { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TMinimalAudioContextConstructor } from './minimal-audio-context-constructor';\nimport { TMinimalBaseAudioContextConstructor } from './minimal-base-audio-context-constructor';\nimport { TNativeAudioContextConstructor } from './native-audio-context-constructor';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\nimport { TUnknownErrorFactory } from './unknown-error-factory';\n\nexport type TMinimalAudioContextConstructorFactory = (\n createInvalidStateError: TInvalidStateErrorFactory,\n createNotSupportedError: TNotSupportedErrorFactory,\n createUnknownError: TUnknownErrorFactory,\n minimalBaseAudioContextConstructor: TMinimalBaseAudioContextConstructor,\n nativeAudioContextConstructor: null | TNativeAudioContextConstructor\n) => TMinimalAudioContextConstructor;\n","import { IMinimalBaseAudioContext } from '../interfaces';\nimport { TContext } from './context';\nimport { TNativeContext } from './native-context';\n\nexport type TMinimalBaseAudioContextConstructor = new (\n nativeContext: TNativeContext,\n numberOfChannels: number\n) => IMinimalBaseAudioContext;\n","import { TAudioDestinationNodeConstructor } from './audio-destination-node-constructor';\nimport { TAudioListenerFactory } from './audio-listener-factory';\nimport { TEventTargetConstructor } from './event-target-constructor';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TMinimalBaseAudioContextConstructor } from './minimal-base-audio-context-constructor';\nimport { TUnrenderedAudioWorkletNodeStore } from './unrendered-audio-worklet-node-store';\nimport { TWrapEventListenerFunction } from './wrap-event-listener-function';\n\nexport type TMinimalBaseAudioContextConstructorFactory = (\n audioDestinationNodeConstructor: TAudioDestinationNodeConstructor,\n createAudioListener: TAudioListenerFactory,\n eventTargetConstructor: TEventTargetConstructor,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n unrenderedAudioWorkletNodeStore: TUnrenderedAudioWorkletNodeStore,\n wrapEventListener: TWrapEventListenerFunction\n) => TMinimalBaseAudioContextConstructor;\n","import { IMinimalOfflineAudioContext, IOfflineAudioContextOptions } from '../interfaces';\n\nexport type TMinimalOfflineAudioContextConstructor = new (options: IOfflineAudioContextOptions) => IMinimalOfflineAudioContext;\n","import { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TCreateNativeOfflineAudioContextFunction } from './create-native-offline-audio-context-function';\nimport { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TMinimalBaseAudioContextConstructor } from './minimal-base-audio-context-constructor';\nimport { TMinimalOfflineAudioContextConstructor } from './minimal-offline-audio-context-constructor';\nimport { TStartRenderingFunction } from './start-rendering-function';\n\nexport type TMinimalOfflineAudioContextConstructorFactory = (\n cacheTestResult: TCacheTestResultFunction,\n createInvalidStateError: TInvalidStateErrorFactory,\n createNativeOfflineAudioContext: TCreateNativeOfflineAudioContextFunction,\n minimalBaseAudioContextConstructor: TMinimalBaseAudioContextConstructor,\n startRendering: TStartRenderingFunction\n) => TMinimalOfflineAudioContextConstructor;\n","import { TInsertElementInSetFunction } from './insert-element-in-set-function';\nimport { TIsNativeAudioNodeFunction } from './is-native-audio-node-function';\nimport { TMonitorConnectionsFunction } from './monitor-connections-function';\n\nexport type TMonitorConnectionsFactory = (\n insertElementInSet: TInsertElementInSetFunction,\n isNativeAudioNode: TIsNativeAudioNodeFunction\n) => TMonitorConnectionsFunction;\n","import { TNativeAudioNode } from './native-audio-node';\n\nexport type TMonitorConnectionsFunction = (\n nativeAudioNode: T,\n whenConnected: () => void,\n whenDisconnected: () => void\n) => T;\n","export type TNativeAnalyserNode = AnalyserNode;\n","import { IAnalyserOptions } from '../interfaces';\nimport { TNativeAnalyserNode } from './native-analyser-node';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeAnalyserNodeFactory = (nativeContext: TNativeContext, options: IAnalyserOptions) => TNativeAnalyserNode;\n","import { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TIndexSizeErrorFactory } from './index-size-error-factory';\nimport { TNativeAnalyserNodeFactory } from './native-analyser-node-factory';\n\nexport type TNativeAnalyserNodeFactoryFactory = (\n cacheTestResult: TCacheTestResultFunction,\n createIndexSizeError: TIndexSizeErrorFactory\n) => TNativeAnalyserNodeFactory;\n","export type TNativeAudioBuffer = AudioBuffer;\n","export type TNativeAudioBufferConstructor = typeof AudioBuffer;\n","import { TNativeAudioBufferConstructor } from './native-audio-buffer-constructor';\nimport { TWindow } from './window';\n\nexport type TNativeAudioBufferConstructorFactory = (window: null | TWindow) => null | TNativeAudioBufferConstructor;\n","export type TNativeAudioBufferSourceNode = AudioBufferSourceNode;\n","import { IAudioBufferSourceOptions } from '../interfaces';\nimport { TNativeAudioBufferSourceNode } from './native-audio-buffer-source-node';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeAudioBufferSourceNodeFactory = (\n nativeContext: TNativeContext,\n options: IAudioBufferSourceOptions\n) => TNativeAudioBufferSourceNode;\n","import { TAddSilentConnectionFunction } from './add-silent-connection-function';\nimport { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TNativeAudioBufferSourceNodeFactory } from './native-audio-buffer-source-node-factory';\nimport { TNativeContext } from './native-context';\nimport { TWrapAudioBufferSourceNodeStartMethodOffsetClampingFunction } from './wrap-audio-buffer-source-node-start-method-offset-clamping-function';\nimport { TWrapAudioBufferSourceNodeStopMethodNullifiedBufferFunction } from './wrap-audio-buffer-source-node-stop-method-nullified-buffer-function';\nimport { TWrapAudioScheduledSourceNodeStopMethodConsecutiveCallsFunction } from './wrap-audio-scheduled-source-node-stop-method-consecutive-calls-function';\n\nexport type TNativeAudioBufferSourceNodeFactoryFactory = (\n addSilentConnection: TAddSilentConnectionFunction,\n cacheTestResult: TCacheTestResultFunction,\n testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport: (nativeContext: TNativeContext) => boolean,\n testAudioBufferSourceNodeStartMethodOffsetClampingSupport: (nativeContext: TNativeContext) => boolean,\n testAudioBufferSourceNodeStopMethodNullifiedBufferSupport: (nativeContext: TNativeContext) => boolean,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport: (nativeContext: TNativeContext) => boolean,\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport: (nativeContext: TNativeContext) => boolean,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport: (nativeContext: TNativeContext) => boolean,\n wrapAudioBufferSourceNodeStartMethodOffsetClampling: TWrapAudioBufferSourceNodeStartMethodOffsetClampingFunction,\n wrapAudioBufferSourceNodeStopMethodNullifiedBuffer: TWrapAudioBufferSourceNodeStopMethodNullifiedBufferFunction,\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls: TWrapAudioScheduledSourceNodeStopMethodConsecutiveCallsFunction\n) => TNativeAudioBufferSourceNodeFactory;\n","import { TNativeMediaStreamTrackAudioSourceNode } from './native-media-stream-track-audio-source-node';\n\nexport type TNativeAudioContext = AudioContext & {\n // @todo TypeScript v4.4 doesn't come with definitions for the MediaStreamTrackAudioSourceNode anymore.\n createMediaStreamTrackSource(mediaStreamTrack: MediaStreamTrack): TNativeMediaStreamTrackAudioSourceNode;\n};\n","import { TNativeAudioContext } from './native-audio-context';\n\n// @todo TypeScript v4.4 doesn't come with definitions for the MediaStreamTrackAudioSourceNode anymore.\nexport type TNativeAudioContextConstructor = new (options?: AudioContextOptions) => TNativeAudioContext;\n","import { TNativeAudioContextConstructor } from './native-audio-context-constructor';\nimport { TWindow } from './window';\n\nexport type TNativeAudioContextConstructorFactory = (window: null | TWindow) => null | TNativeAudioContextConstructor;\n","export type TNativeAudioDestinationNode = AudioDestinationNode;\n","import { TNativeAudioDestinationNode } from './native-audio-destination-node';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeAudioDestinationNodeFactory = (\n nativeContext: TNativeContext,\n channelCount: number,\n isNodeOfNativeOfflineAudioContext: boolean\n) => TNativeAudioDestinationNode;\n","import { TNativeAudioDestinationNodeFactory } from './native-audio-destination-node-factory';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\nimport { TOverwriteAccessorsFunction } from './overwrite-accessors-function';\n\nexport type TNativeAudioDestinationNodeFactoryFactory = (\n createNativeGainNode: TNativeGainNodeFactory,\n overwriteAccessors: TOverwriteAccessorsFunction\n) => TNativeAudioDestinationNodeFactory;\n","export type TNativeAudioListener = AudioListener;\n","export type TNativeAudioNode = AudioNode;\n","export type TNativeAudioParam = AudioParam;\n","import { IReadOnlyMap } from '../interfaces';\nimport { TNativeAudioParam } from './native-audio-param';\n\n// @todo Since there are no native types yet they need to be crafted.\nexport type TNativeAudioParamMap = IReadOnlyMap;\n","export type TNativeAudioWorklet = AudioWorklet;\n","export type TNativeAudioWorkletNode = AudioWorkletNode;\n","export type TNativeAudioWorkletNodeConstructor = typeof AudioWorkletNode;\n","import { TNativeAudioWorkletNodeConstructor } from './native-audio-worklet-node-constructor';\nimport { TWindow } from './window';\n\nexport type TNativeAudioWorkletNodeConstructorFactory = (window: null | TWindow) => null | TNativeAudioWorkletNodeConstructor;\n","import { IAudioWorkletNodeOptions, IAudioWorkletProcessorConstructor } from '../interfaces';\nimport { TNativeAudioWorkletNode } from './native-audio-worklet-node';\nimport { TNativeAudioWorkletNodeConstructor } from './native-audio-worklet-node-constructor';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeAudioWorkletNodeFactory = (\n nativeContext: TNativeContext,\n baseLatency: null | number,\n nativeAudioWorkletNodeConstructor: null | TNativeAudioWorkletNodeConstructor,\n name: string,\n processorConstructor: undefined | IAudioWorkletProcessorConstructor,\n options: IAudioWorkletNodeOptions\n) => TNativeAudioWorkletNode;\n","import { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TMonitorConnectionsFunction } from './monitor-connections-function';\nimport { TNativeAudioWorkletNodeFactory } from './native-audio-worklet-node-factory';\nimport { TNativeAudioWorkletNodeFakerFactory } from './native-audio-worklet-node-faker-factory';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\n\nexport type TNativeAudioWorkletNodeFactoryFactory = (\n createInvalidStateError: TInvalidStateErrorFactory,\n createNativeAudioWorkletNodeFaker: TNativeAudioWorkletNodeFakerFactory,\n createNativeGainNode: TNativeGainNodeFactory,\n createNotSupportedError: TNotSupportedErrorFactory,\n monitorConnections: TMonitorConnectionsFunction\n) => TNativeAudioWorkletNodeFactory;\n","import { IAudioWorkletNodeOptions, IAudioWorkletProcessorConstructor, INativeAudioWorkletNodeFaker } from '../interfaces';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeAudioWorkletNodeFakerFactory = (\n nativeContext: TNativeContext,\n baseLatency: null | number,\n processorConstructor: IAudioWorkletProcessorConstructor,\n options: IAudioWorkletNodeOptions\n) => INativeAudioWorkletNodeFaker;\n","import { TConnectMultipleOutputsFunction } from './connect-multiple-outputs-function';\nimport { TDisconnectMultipleOutputsFunction } from './disconnect-multiple-outputs-function';\nimport { TExposeCurrentFrameAndCurrentTimeFunction } from './expose-current-frame-and-current-time-function';\nimport { TGetActiveAudioWorkletNodeInputsFunction } from './get-active-audio-worklet-node-inputs-function';\nimport { TIndexSizeErrorFactory } from './index-size-error-factory';\nimport { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TMonitorConnectionsFunction } from './monitor-connections-function';\nimport { TNativeAudioWorkletNodeFakerFactory } from './native-audio-worklet-node-faker-factory';\nimport { TNativeChannelMergerNodeFactory } from './native-channel-merger-node-factory';\nimport { TNativeChannelSplitterNodeFactory } from './native-channel-splitter-node-factory';\nimport { TNativeConstantSourceNodeFactory } from './native-constant-source-node-factory';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\nimport { TNativeScriptProcessorNodeFactory } from './native-script-processor-node-factory';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\n\nexport type TNativeAudioWorkletNodeFakerFactoryFactory = (\n connectMultipleOutputs: TConnectMultipleOutputsFunction,\n createIndexSizeError: TIndexSizeErrorFactory,\n createInvalidStateError: TInvalidStateErrorFactory,\n createNativeChannelMergerNode: TNativeChannelMergerNodeFactory,\n createNativeChannelSplitterNode: TNativeChannelSplitterNodeFactory,\n createNativeConstantSourceNode: TNativeConstantSourceNodeFactory,\n createNativeGainNode: TNativeGainNodeFactory,\n createNativeScriptProcessorNode: TNativeScriptProcessorNodeFactory,\n createNotSupportedError: TNotSupportedErrorFactory,\n disconnectMultipleOutputs: TDisconnectMultipleOutputsFunction,\n exposeCurrentFrameAndCurrentTime: TExposeCurrentFrameAndCurrentTimeFunction,\n getActiveAudioWorkletNodeInputs: TGetActiveAudioWorkletNodeInputsFunction,\n monitorConnections: TMonitorConnectionsFunction\n) => TNativeAudioWorkletNodeFakerFactory;\n","export type TNativeAudioWorkletNodeOptions = AudioWorkletNodeOptions;\n","export type TNativeBiquadFilterNode = BiquadFilterNode;\n","import { IBiquadFilterOptions } from '../interfaces';\nimport { TNativeBiquadFilterNode } from './native-biquad-filter-node';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeBiquadFilterNodeFactory = (nativeContext: TNativeContext, options: IBiquadFilterOptions) => TNativeBiquadFilterNode;\n","export type TNativeChannelMergerNode = ChannelMergerNode;\n","import { IChannelMergerOptions } from '../interfaces';\nimport { TNativeChannelMergerNode } from './native-channel-merger-node';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeChannelMergerNodeFactory = (nativeContext: TNativeContext, options: IChannelMergerOptions) => TNativeChannelMergerNode;\n","import { TNativeAudioContextConstructor } from './native-audio-context-constructor';\nimport { TNativeChannelMergerNodeFactory } from './native-channel-merger-node-factory';\nimport { TWrapChannelMergerNodeFunction } from './wrap-channel-merger-node-function';\n\nexport type TNativeChannelMergerNodeFactoryFactory = (\n nativeAudioContextConstructor: null | TNativeAudioContextConstructor,\n wrapChannelMergerNode: TWrapChannelMergerNodeFunction\n) => TNativeChannelMergerNodeFactory;\n","export type TNativeChannelSplitterNode = ChannelSplitterNode;\n","import { IChannelSplitterOptions } from '../interfaces';\nimport { TNativeChannelSplitterNode } from './native-channel-splitter-node';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeChannelSplitterNodeFactory = (\n nativeContext: TNativeContext,\n options: IChannelSplitterOptions\n) => TNativeChannelSplitterNode;\n","export type TNativeConstantSourceNode = ConstantSourceNode;\n","import { IConstantSourceOptions } from '../interfaces';\nimport { TNativeConstantSourceNode } from './native-constant-source-node';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeConstantSourceNodeFactory = (\n nativeContext: TNativeContext,\n options: IConstantSourceOptions\n) => TNativeConstantSourceNode;\n","import { TAddSilentConnectionFunction } from './add-silent-connection-function';\nimport { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TNativeConstantSourceNodeFactory } from './native-constant-source-node-factory';\nimport { TNativeConstantSourceNodeFakerFactory } from './native-constant-source-node-faker-factory';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeConstantSourceNodeFactoryFactory = (\n addSilentConnection: TAddSilentConnectionFunction,\n cacheTestResult: TCacheTestResultFunction,\n createNativeConstantSourceNodeFaker: TNativeConstantSourceNodeFakerFactory,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport: (nativeContext: TNativeContext) => boolean,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport: (nativeContext: TNativeContext) => boolean\n) => TNativeConstantSourceNodeFactory;\n","import { IConstantSourceOptions, INativeConstantSourceNodeFaker } from '../interfaces';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeConstantSourceNodeFakerFactory = (\n nativeContext: TNativeContext,\n options: IConstantSourceOptions\n) => INativeConstantSourceNodeFaker;\n","import { TAddSilentConnectionFunction } from './add-silent-connection-function';\nimport { TMonitorConnectionsFunction } from './monitor-connections-function';\nimport { TNativeAudioBufferSourceNodeFactory } from './native-audio-buffer-source-node-factory';\nimport { TNativeConstantSourceNodeFakerFactory } from './native-constant-source-node-faker-factory';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\n\nexport type TNativeConstantSourceNodeFakerFactoryFactory = (\n addSilentConnection: TAddSilentConnectionFunction,\n createNativeAudioBufferSourceNode: TNativeAudioBufferSourceNodeFactory,\n createNativeGainNode: TNativeGainNodeFactory,\n monitorConnections: TMonitorConnectionsFunction\n) => TNativeConstantSourceNodeFakerFactory;\n","import { TNativeAudioContext } from './native-audio-context';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TNativeContext = TNativeAudioContext | TNativeOfflineAudioContext;\n","export type TNativeConvolverNode = ConvolverNode;\n","import { IConvolverOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\nimport { TNativeConvolverNode } from './native-convolver-node';\n\nexport type TNativeConvolverNodeFactory = (nativeContext: TNativeContext, options: IConvolverOptions) => TNativeConvolverNode;\n","import { TNativeConvolverNodeFactory } from './native-convolver-node-factory';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\nimport { TOverwriteAccessorsFunction } from './overwrite-accessors-function';\n\nexport type TNativeConvolverNodeFactoryFactory = (\n createNotSupportedError: TNotSupportedErrorFactory,\n overwriteAccessors: TOverwriteAccessorsFunction\n) => TNativeConvolverNodeFactory;\n","import { IDelayOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\nimport { TNativeDelayNode } from './native-delay-node';\n\nexport type TNativeDelayNodeFactory = (nativeContext: TNativeContext, options: IDelayOptions) => TNativeDelayNode;\n","export type TNativeDelayNode = DelayNode;\n","export type TNativeDynamicsCompressorNode = DynamicsCompressorNode;\n","import { IDynamicsCompressorOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\nimport { TNativeDynamicsCompressorNode } from './native-dynamics-compressor-node';\n\nexport type TNativeDynamicsCompressorNodeFactory = (\n nativeContext: TNativeContext,\n options: IDynamicsCompressorOptions\n) => TNativeDynamicsCompressorNode;\n","import { TNativeDynamicsCompressorNodeFactory } from './native-dynamics-compressor-node-factory';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\n\nexport type TNativeDynamicsCompressorNodeFactoryFactory = (\n createNotSupportedError: TNotSupportedErrorFactory\n) => TNativeDynamicsCompressorNodeFactory;\n","export type TNativeEventTarget = EventTarget;\n","export type TNativeGainNode = GainNode;\n","import { IGainOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\nimport { TNativeGainNode } from './native-gain-node';\n\nexport type TNativeGainNodeFactory = (nativeContext: TNativeContext, options: IGainOptions) => TNativeGainNode;\n","export type TNativeIIRFilterNode = IIRFilterNode;\n","import { IIIRFilterOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\nimport { TNativeIIRFilterNode } from './native-iir-filter-node';\n\nexport type TNativeIIRFilterNodeFactory = (\n nativeContext: TNativeContext,\n baseLatency: null | number,\n options: IIIRFilterOptions\n) => TNativeIIRFilterNode;\n","import { TNativeIIRFilterNodeFactory } from './native-iir-filter-node-factory';\nimport { TNativeIIRFilterNodeFakerFactory } from './native-iir-filter-node-faker-factory';\n\nexport type TNativeIIRFilterNodeFactoryFactory = (\n createNativeIIRFilterNodeFaker: TNativeIIRFilterNodeFakerFactory\n) => TNativeIIRFilterNodeFactory;\n","import { IIIRFilterOptions, INativeIIRFilterNodeFaker } from '../interfaces';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeIIRFilterNodeFakerFactory = (\n nativeContext: TNativeContext,\n baseLatency: null | number,\n options: IIIRFilterOptions\n) => INativeIIRFilterNodeFaker;\n","import { TInvalidAccessErrorFactory } from './invalid-access-error-factory';\nimport { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TNativeIIRFilterNodeFakerFactory } from './native-iir-filter-node-faker-factory';\nimport { TNativeScriptProcessorNodeFactory } from './native-script-processor-node-factory';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\n\nexport type TNativeIIRFilterNodeFakerFactoryFactory = (\n createInvalidAccessError: TInvalidAccessErrorFactory,\n createInvalidStateError: TInvalidStateErrorFactory,\n createNativeScriptProcessorNode: TNativeScriptProcessorNodeFactory,\n createNotSupportedError: TNotSupportedErrorFactory\n) => TNativeIIRFilterNodeFakerFactory;\n","export type TNativeMediaElementAudioSourceNode = MediaElementAudioSourceNode;\n","import { IMediaElementAudioSourceOptions } from '../interfaces';\nimport { TNativeAudioContext } from './native-audio-context';\nimport { TNativeMediaElementAudioSourceNode } from './native-media-element-audio-source-node';\n\nexport type TNativeMediaElementAudioSourceNodeFactory = (\n nativeAudioContext: TNativeAudioContext,\n options: IMediaElementAudioSourceOptions\n) => TNativeMediaElementAudioSourceNode;\n","export type TNativeMediaStreamAudioDestinationNode = MediaStreamAudioDestinationNode;\n","import { IAudioNodeOptions } from '../interfaces';\nimport { TNativeAudioContext } from './native-audio-context';\nimport { TNativeMediaStreamAudioDestinationNode } from './native-media-stream-audio-destination-node';\n\nexport type TNativeMediaStreamAudioDestinationNodeFactory = (\n nativeAudioContext: TNativeAudioContext,\n options: IAudioNodeOptions\n) => TNativeMediaStreamAudioDestinationNode;\n","export type TNativeMediaStreamAudioSourceNode = MediaStreamAudioSourceNode;\n","import { IMediaStreamAudioSourceOptions } from '../interfaces';\nimport { TNativeAudioContext } from './native-audio-context';\nimport { TNativeMediaStreamAudioSourceNode } from './native-media-stream-audio-source-node';\n\nexport type TNativeMediaStreamAudioSourceNodeFactory = (\n nativeAudioContext: TNativeAudioContext,\n options: IMediaStreamAudioSourceOptions\n) => TNativeMediaStreamAudioSourceNode;\n","import { TNativeAudioNode } from './native-audio-node';\n\n// @todo TypeScript v4.4 doesn't come with definitions for the MediaStreamTrackAudioSourceNode anymore.\nexport type TNativeMediaStreamTrackAudioSourceNode = TNativeAudioNode;\n","import { IMediaStreamTrackAudioSourceOptions } from '../interfaces';\nimport { TNativeAudioContext } from './native-audio-context';\nimport { TNativeMediaStreamTrackAudioSourceNode } from './native-media-stream-track-audio-source-node';\n\nexport type TNativeMediaStreamTrackAudioSourceNodeFactory = (\n nativeAudioContext: TNativeAudioContext,\n options: IMediaStreamTrackAudioSourceOptions\n) => TNativeMediaStreamTrackAudioSourceNode;\n","import { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeMediaStreamTrackAudioSourceNodeFactory } from './native-media-stream-track-audio-source-node-factory';\n\nexport type TNativeMediaStreamTrackAudioSourceNodeFactoryFactory = (\n createInvalidStateError: TInvalidStateErrorFactory,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction\n) => TNativeMediaStreamTrackAudioSourceNodeFactory;\n","export type TNativeOfflineAudioContext = OfflineAudioContext;\n","export type TNativeOfflineAudioContextConstructor = typeof OfflineAudioContext;\n","import { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\nimport { TWindow } from './window';\n\nexport type TNativeOfflineAudioContextConstructorFactory = (window: null | TWindow) => null | TNativeOfflineAudioContextConstructor;\n","export type TNativeOscillatorNode = OscillatorNode;\n","import { IOscillatorOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\nimport { TNativeOscillatorNode } from './native-oscillator-node';\n\nexport type TNativeOscillatorNodeFactory = (nativeContext: TNativeContext, options: IOscillatorOptions) => TNativeOscillatorNode;\n","import { TAddSilentConnectionFunction } from './add-silent-connection-function';\nimport { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TNativeContext } from './native-context';\nimport { TNativeOscillatorNodeFactory } from './native-oscillator-node-factory';\nimport { TWrapAudioScheduledSourceNodeStopMethodConsecutiveCallsFunction } from './wrap-audio-scheduled-source-node-stop-method-consecutive-calls-function';\n\nexport type TNativeOscillatorNodeFactoryFactory = (\n addSilentConnection: TAddSilentConnectionFunction,\n cacheTestResult: TCacheTestResultFunction,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport: (nativeContext: TNativeContext) => boolean,\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport: (nativeContext: TNativeContext) => boolean,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport: (nativeContext: TNativeContext) => boolean,\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls: TWrapAudioScheduledSourceNodeStopMethodConsecutiveCallsFunction\n) => TNativeOscillatorNodeFactory;\n","// @todo This is removing the deprecated functions setOrientation() and setPosition() from the native PannerNode type.\nexport type TNativePannerNode = Omit;\n","import { IPannerOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\nimport { TNativePannerNode } from './native-panner-node';\n\nexport type TNativePannerNodeFactory = (nativeContext: TNativeContext, options: IPannerOptions) => TNativePannerNode;\n","import { TNativePannerNodeFactory } from './native-panner-node-factory';\nimport { TNativePannerNodeFakerFactory } from './native-panner-node-faker-factory';\n\nexport type TNativePannerNodeFactoryFactory = (createNativePannerNodeFaker: TNativePannerNodeFakerFactory) => TNativePannerNodeFactory;\n","import { INativePannerNodeFaker, IPannerOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\n\nexport type TNativePannerNodeFakerFactory = (nativeContext: TNativeContext, options: IPannerOptions) => INativePannerNodeFaker;\n","import { TConnectNativeAudioNodeToNativeAudioNodeFunction } from './connect-native-audio-node-to-native-audio-node-function';\nimport { TDisconnectNativeAudioNodeFromNativeAudioNodeFunction } from './disconnect-native-audio-node-from-native-audio-node-function';\nimport { TGetFirstSampleFunction } from './get-first-sample-function';\nimport { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TMonitorConnectionsFunction } from './monitor-connections-function';\nimport { TNativeChannelMergerNodeFactory } from './native-channel-merger-node-factory';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\nimport { TNativePannerNodeFakerFactory } from './native-panner-node-faker-factory';\nimport { TNativeScriptProcessorNodeFactory } from './native-script-processor-node-factory';\nimport { TNativeWaveShaperNodeFactory } from './native-wave-shaper-node-factory';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\n\nexport type TNativePannerNodeFakerFactoryFactory = (\n connectNativeAudioNodeToNativeAudioNode: TConnectNativeAudioNodeToNativeAudioNodeFunction,\n createInvalidStateError: TInvalidStateErrorFactory,\n createNativeChannelMergerNode: TNativeChannelMergerNodeFactory,\n createNativeGainNode: TNativeGainNodeFactory,\n createNativeScriptProcessorNode: TNativeScriptProcessorNodeFactory,\n createNativeWaveShaperNode: TNativeWaveShaperNodeFactory,\n createNotSupportedError: TNotSupportedErrorFactory,\n disconnectNativeAudioNodeToNativeAudioNode: TDisconnectNativeAudioNodeFromNativeAudioNodeFunction,\n getFirstSample: TGetFirstSampleFunction,\n monitorConnections: TMonitorConnectionsFunction\n) => TNativePannerNodeFakerFactory;\n","export type TNativePeriodicWave = PeriodicWave;\n","import { IPeriodicWaveOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\nimport { TNativePeriodicWave } from './native-periodic-wave';\n\nexport type TNativePeriodicWaveFactory = (nativeContext: TNativeContext, options: IPeriodicWaveOptions) => TNativePeriodicWave;\n","import { TIndexSizeErrorFactory } from './index-size-error-factory';\nimport { TNativePeriodicWaveFactory } from './native-periodic-wave-factory';\n\nexport type TNativePeriodicWaveFactoryFactory = (createIndexSizeError: TIndexSizeErrorFactory) => TNativePeriodicWaveFactory;\n","export type TNativeScriptProcessorNode = ScriptProcessorNode; // tslint:disable-line:deprecation\n","import { TNativeContext } from './native-context';\nimport { TNativeScriptProcessorNode } from './native-script-processor-node';\n\nexport type TNativeScriptProcessorNodeFactory = (\n nativeContext: TNativeContext,\n bufferSize: number,\n numberOfInputChannels: number,\n numberOfOutputChannels: number\n) => TNativeScriptProcessorNode;\n","export type TNativeStereoPannerNode = StereoPannerNode;\n","import { IStereoPannerOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\nimport { TNativeStereoPannerNode } from './native-stereo-panner-node';\n\nexport type TNativeStereoPannerNodeFactory = (nativeContext: TNativeContext, options: IStereoPannerOptions) => TNativeStereoPannerNode;\n","import { TNativeStereoPannerNodeFactory } from './native-stereo-panner-node-factory';\nimport { TNativeStereoPannerNodeFakerFactory } from './native-stereo-panner-node-faker-factory';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\n\nexport type TNativeStereoPannerNodeFactoryFactory = (\n createNativeStereoPannerNodeFaker: TNativeStereoPannerNodeFakerFactory,\n createNotSupportedError: TNotSupportedErrorFactory\n) => TNativeStereoPannerNodeFactory;\n","import { INativeStereoPannerNodeFaker, IStereoPannerOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeStereoPannerNodeFakerFactory = (\n nativeContext: TNativeContext,\n options: IStereoPannerOptions\n) => INativeStereoPannerNodeFaker;\n","import { TMonitorConnectionsFunction } from './monitor-connections-function';\nimport { TNativeChannelMergerNodeFactory } from './native-channel-merger-node-factory';\nimport { TNativeChannelSplitterNodeFactory } from './native-channel-splitter-node-factory';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\nimport { TNativeStereoPannerNodeFakerFactory } from './native-stereo-panner-node-faker-factory';\nimport { TNativeWaveShaperNodeFactory } from './native-wave-shaper-node-factory';\nimport { TNotSupportedErrorFactory } from './not-supported-error-factory';\n\nexport type TNativeStereoPannerNodeFakerFactoryFactory = (\n createNativeChannelMergerNode: TNativeChannelMergerNodeFactory,\n createNativeChannelSplitterNode: TNativeChannelSplitterNodeFactory,\n createNativeGainNode: TNativeGainNodeFactory,\n createNativeWaveShaperNode: TNativeWaveShaperNodeFactory,\n createNotSupportedError: TNotSupportedErrorFactory,\n monitorConnections: TMonitorConnectionsFunction\n) => TNativeStereoPannerNodeFakerFactory;\n","export type TNativeWaveShaperNode = WaveShaperNode;\n","import { IWaveShaperOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\nimport { TNativeWaveShaperNode } from './native-wave-shaper-node';\n\nexport type TNativeWaveShaperNodeFactory = (nativeContext: TNativeContext, options: IWaveShaperOptions) => TNativeWaveShaperNode;\n","import { TConnectedNativeAudioBufferSourceNodeFactory } from './connected-native-audio-buffer-source-node-factory';\nimport { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TIsDCCurveFunction } from './is-dc-curve-function';\nimport { TMonitorConnectionsFunction } from './monitor-connections-function';\nimport { TNativeAudioContextConstructor } from './native-audio-context-constructor';\nimport { TNativeWaveShaperNodeFactory } from './native-wave-shaper-node-factory';\nimport { TNativeWaveShaperNodeFakerFactory } from './native-wave-shaper-node-faker-factory';\nimport { TOverwriteAccessorsFunction } from './overwrite-accessors-function';\n\nexport type TNativeWaveShaperNodeFactoryFactory = (\n createConnectedNativeAudioBufferSourceNode: TConnectedNativeAudioBufferSourceNodeFactory,\n createInvalidStateError: TInvalidStateErrorFactory,\n createNativeWaveShaperNodeFaker: TNativeWaveShaperNodeFakerFactory,\n isDCCurve: TIsDCCurveFunction,\n monitorConnections: TMonitorConnectionsFunction,\n nativeAudioContextConstructor: null | TNativeAudioContextConstructor,\n overwriteAccessors: TOverwriteAccessorsFunction\n) => TNativeWaveShaperNodeFactory;\n","import { INativeWaveShaperNodeFaker, IWaveShaperOptions } from '../interfaces';\nimport { TNativeContext } from './native-context';\n\nexport type TNativeWaveShaperNodeFakerFactory = (nativeContext: TNativeContext, options: IWaveShaperOptions) => INativeWaveShaperNodeFaker;\n","import { TConnectedNativeAudioBufferSourceNodeFactory } from './connected-native-audio-buffer-source-node-factory';\nimport { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TIsDCCurveFunction } from './is-dc-curve-function';\nimport { TMonitorConnectionsFunction } from './monitor-connections-function';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\nimport { TNativeWaveShaperNodeFakerFactory } from './native-wave-shaper-node-faker-factory';\n\nexport type TNativeWaveShaperNodeFakerFactoryFactory = (\n createConnectedNativeAudioBufferSourceNode: TConnectedNativeAudioBufferSourceNodeFactory,\n createInvalidStateError: TInvalidStateErrorFactory,\n createNativeGainNode: TNativeGainNodeFactory,\n isDCCurve: TIsDCCurveFunction,\n monitorConnections: TMonitorConnectionsFunction\n) => TNativeWaveShaperNodeFakerFactory;\n","export type TNotSupportedErrorFactory = () => DOMException;\n","import { IOfflineAudioContextConstructor } from '../interfaces';\nimport { TBaseAudioContextConstructor } from './base-audio-context-constructor';\nimport { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TCreateNativeOfflineAudioContextFunction } from './create-native-offline-audio-context-function';\nimport { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TStartRenderingFunction } from './start-rendering-function';\n\nexport type TOfflineAudioContextConstructorFactory = (\n baseAudioContextConstructor: TBaseAudioContextConstructor,\n cacheTestResult: TCacheTestResultFunction,\n createInvalidStateError: TInvalidStateErrorFactory,\n createNativeOfflineAudioContext: TCreateNativeOfflineAudioContextFunction,\n startRendering: TStartRenderingFunction\n) => IOfflineAudioContextConstructor;\n","import { IOscillatorNode, IOscillatorOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TOscillatorNodeConstructor = new (context: T, options?: Partial) => IOscillatorNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeOscillatorNodeFactory } from './native-oscillator-node-factory';\nimport { TOscillatorNodeConstructor } from './oscillator-node-constructor';\nimport { TOscillatorNodeRendererFactory } from './oscillator-node-renderer-factory';\nimport { TWrapEventListenerFunction } from './wrap-event-listener-function';\n\nexport type TOscillatorNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createAudioParam: TAudioParamFactory,\n createNativeOscillatorNode: TNativeOscillatorNodeFactory,\n createOscillatorNodeRenderer: TOscillatorNodeRendererFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n wrapEventListener: TWrapEventListenerFunction\n) => TOscillatorNodeConstructor;\n","import { IMinimalOfflineAudioContext, IOfflineAudioContext, IOscillatorNodeRenderer } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TOscillatorNodeRenderer = T extends IMinimalOfflineAudioContext | IOfflineAudioContext\n ? IOscillatorNodeRenderer\n : null;\n","import { IMinimalOfflineAudioContext, IOfflineAudioContext, IOscillatorNodeRenderer } from '../interfaces';\n\nexport type TOscillatorNodeRendererFactory = () => IOscillatorNodeRenderer;\n","import { TConnectAudioParamFunction } from './connect-audio-param-function';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeOscillatorNodeFactory } from './native-oscillator-node-factory';\nimport { TOscillatorNodeRendererFactory } from './oscillator-node-renderer-factory';\nimport { TRenderAutomationFunction } from './render-automation-function';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TOscillatorNodeRendererFactoryFactory = (\n connectAudioParam: TConnectAudioParamFunction,\n createNativeOscillatorNode: TNativeOscillatorNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderAutomation: TRenderAutomationFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TOscillatorNodeRendererFactory;\n","export type TOscillatorType = 'custom' | 'sawtooth' | 'sine' | 'square' | 'triangle';\n","import { TAudioNodeOutputConnection } from './audio-node-output-connection';\nimport { TAudioParamOutputConnection } from './audio-param-output-connection';\nimport { TContext } from './context';\n\nexport type TOutputConnection = TAudioNodeOutputConnection | TAudioParamOutputConnection;\n","export type TOverSampleType = '2x' | '4x' | 'none';\n","export type TOverwriteAccessorsFunction = (\n object: object,\n property: string,\n createGetter: (get: Required['get']) => Required['get'],\n createSetter: (get: Required['set']) => Required['set']\n) => void;\n","import { IPannerNode, IPannerOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TPannerNodeConstructor = new (context: T, options?: Partial) => IPannerNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativePannerNodeFactory } from './native-panner-node-factory';\nimport { TPannerNodeConstructor } from './panner-node-constructor';\nimport { TPannerNodeRendererFactory } from './panner-node-renderer-factory';\nimport { TSetAudioNodeTailTimeFunction } from './set-audio-node-tail-time-function';\n\nexport type TPannerNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createAudioParam: TAudioParamFactory,\n createNativePannerNode: TNativePannerNodeFactory,\n createPannerNodeRenderer: TPannerNodeRendererFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n setAudioNodeTailTime: TSetAudioNodeTailTimeFunction\n) => TPannerNodeConstructor;\n","import { IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext, IPannerNode } from '../interfaces';\n\nexport type TPannerNodeRendererFactory = () => IAudioNodeRenderer<\n T,\n IPannerNode\n>;\n","import { TConnectAudioParamFunction } from './connect-audio-param-function';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeChannelMergerNodeFactory } from './native-channel-merger-node-factory';\nimport { TNativeConstantSourceNodeFactory } from './native-constant-source-node-factory';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\nimport { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\nimport { TNativePannerNodeFactory } from './native-panner-node-factory';\nimport { TPannerNodeRendererFactory } from './panner-node-renderer-factory';\nimport { TRenderAutomationFunction } from './render-automation-function';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\nimport { TRenderNativeOfflineAudioContextFunction } from './render-native-offline-audio-context-function';\n\nexport type TPannerNodeRendererFactoryFactory = (\n connectAudioParam: TConnectAudioParamFunction,\n createNativeChannelMergerNode: TNativeChannelMergerNodeFactory,\n createNativeConstantSourceNode: TNativeConstantSourceNodeFactory,\n createNativeGainNode: TNativeGainNodeFactory,\n createNativePannerNode: TNativePannerNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor,\n renderAutomation: TRenderAutomationFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction,\n renderNativeOfflineAudioContext: TRenderNativeOfflineAudioContextFunction\n) => TPannerNodeRendererFactory;\n","export type TPanningModelType = 'HRTF' | 'equalpower';\n","import { TInternalStateEventListener } from './internal-state-event-listener';\n\nexport type TPassiveAudioNodeInputConnection = [number, number, TInternalStateEventListener];\n","import { TInternalStateEventListener } from './internal-state-event-listener';\n\nexport type TPassiveAudioParamInputConnection = [number, TInternalStateEventListener];\n","import { IPeriodicWave, IPeriodicWaveOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TPeriodicWaveConstructor = new (context: T, options?: Partial) => IPeriodicWave;\n","import { IPeriodicWave } from '../interfaces';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TNativePeriodicWaveFactory } from './native-periodic-wave-factory';\nimport { TPeriodicWaveConstructor } from './periodic-wave-constructor';\nimport { TSanitizePeriodicWaveOptionsFunction } from './sanitize-periodic-wave-options-function';\n\nexport type TPeriodicWaveConstructorFactory = (\n createNativePeriodicWave: TNativePeriodicWaveFactory,\n getNativeContext: TGetNativeContextFunction,\n periodicWaveStore: WeakSet,\n sanitizePeriodicWaveOptions: TSanitizePeriodicWaveOptionsFunction\n) => TPeriodicWaveConstructor;\n","export type TPickElementFromSetFunction = (set: Set, predicate: (element: T) => boolean) => T;\n","import { TGetAudioParamRendererFunction } from './get-audio-param-renderer-function';\nimport { TRenderAutomationFunction } from './render-automation-function';\nimport { TRenderInputsOfAudioParamFunction } from './render-inputs-of-audio-param-function';\n\nexport type TRenderAutomationFactory = (\n getAudioParamRenderer: TGetAudioParamRendererFunction,\n renderInputsOfAudioParam: TRenderInputsOfAudioParamFunction\n) => TRenderAutomationFunction;\n","import { IAudioParam } from '../interfaces';\nimport { TNativeAudioParam } from './native-audio-param';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TRenderAutomationFunction = (\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n audioParam: IAudioParam,\n nativeAudioParam: TNativeAudioParam\n) => Promise;\n","import { TGetAudioNodeConnectionsFunction } from './get-audio-node-connections-function';\nimport { TGetAudioNodeRendererFunction } from './get-audio-node-renderer-function';\nimport { TIsPartOfACycleFunction } from './is-part-of-a-cycle-function';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\n\nexport type TRenderInputsOfAudioNodeFactory = (\n getAudioNodeConnections: TGetAudioNodeConnectionsFunction,\n getAudioNodeRenderer: TGetAudioNodeRendererFunction,\n isPartOfACycle: TIsPartOfACycleFunction\n) => TRenderInputsOfAudioNodeFunction;\n","import { IAudioNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TNativeAudioNode } from './native-audio-node';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TRenderInputsOfAudioNodeFunction = (\n audioNode: IAudioNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n nativeAudioNode: TNativeAudioNode\n) => Promise;\n","import { TGetAudioNodeRendererFunction } from './get-audio-node-renderer-function';\nimport { TGetAudioParamConnectionsFunction } from './get-audio-param-connections-function';\nimport { TIsPartOfACycleFunction } from './is-part-of-a-cycle-function';\nimport { TRenderInputsOfAudioParamFunction } from './render-inputs-of-audio-param-function';\n\nexport type TRenderInputsOfAudioParamFactory = (\n getAudioNodeRenderer: TGetAudioNodeRendererFunction,\n getAudioParamConnections: TGetAudioParamConnectionsFunction,\n isPartOfACycle: TIsPartOfACycleFunction\n) => TRenderInputsOfAudioParamFunction;\n","import { IAudioParam } from '../interfaces';\nimport { TNativeAudioParam } from './native-audio-param';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TRenderInputsOfAudioParamFunction = (\n audioParam: IAudioParam,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n nativeAudioParam: TNativeAudioParam\n) => Promise;\n","import { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TNativeGainNodeFactory } from './native-gain-node-factory';\nimport { TNativeScriptProcessorNodeFactory } from './native-script-processor-node-factory';\nimport { TRenderNativeOfflineAudioContextFunction } from './render-native-offline-audio-context-function';\n\nexport type TRenderNativeOfflineAudioContextFactory = (\n cacheTestResult: TCacheTestResultFunction,\n createNativeGainNode: TNativeGainNodeFactory,\n createNativeScriptProcessorNode: TNativeScriptProcessorNodeFactory,\n testOfflineAudioContextCurrentTimeSupport: () => Promise\n) => TRenderNativeOfflineAudioContextFunction;\n","import { TNativeAudioBuffer } from './native-audio-buffer';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TRenderNativeOfflineAudioContextFunction = (\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n) => Promise;\n","import { IAudioWorkletNodeOptions } from '../interfaces';\n\nexport type TSanitizeAudioWorkletNodeOptionsFunction = (\n options: Partial> & Omit\n) => IAudioWorkletNodeOptions;\n","import { IChannelSplitterOptions } from '../interfaces';\n\nexport type TSanitizeChannelSplitterOptionsFunction = (options: IChannelSplitterOptions) => IChannelSplitterOptions;\n","import { IPeriodicWaveOptions } from '../interfaces';\n\nexport type TSanitizePeriodicWaveOptionsFunction = (\n options: { disableNormalization: boolean } & Partial\n) => IPeriodicWaveOptions;\n","import { TActiveAudioWorkletNodeInputsStore } from './active-audio-worklet-node-inputs-store';\nimport { TSetActiveAudioWorkletNodeInputsFunction } from './set-active-audio-worklet-node-inputs-function';\n\nexport type TSetActiveAudioWorkletNodeInputsFactory = (\n activeAudioWorkletNodeInputsStore: TActiveAudioWorkletNodeInputsStore\n) => TSetActiveAudioWorkletNodeInputsFunction;\n","import { TActiveInputConnection } from './active-input-connection';\nimport { TContext } from './context';\nimport { TNativeAudioWorkletNode } from './native-audio-worklet-node';\n\nexport type TSetActiveAudioWorkletNodeInputsFunction = (\n nativeAudioWorkletNode: TNativeAudioWorkletNode,\n activeInputs: Set>[]\n) => void;\n","import { TAudioNodeTailTimeStore } from './audio-node-tail-time-store';\nimport { TSetAudioNodeTailTimeFunction } from './set-audio-node-tail-time-function';\n\nexport type TSetAudioNodeTailTimeFactory = (audioNodeTailTimeStore: TAudioNodeTailTimeStore) => TSetAudioNodeTailTimeFunction;\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TSetAudioNodeTailTimeFunction = (audioNode: IAudioNode, tailTime: number) => void;\n","import { IAudioParam } from '../interfaces';\n\nexport type TSetValueAtTimeUntilPossibleFunction = (audioParam: IAudioParam, value: number, startTime: number) => void;\n","import { TAudioBufferStore } from './audio-buffer-store';\nimport { TCacheTestResultFunction } from './cache-test-result-function';\nimport { TGetAudioNodeRendererFunction } from './get-audio-node-renderer-function';\nimport { TGetUnrenderedAudioWorkletNodesFunction } from './get-unrendered-audio-worklet-nodes-function';\nimport { TNativeAudioBuffer } from './native-audio-buffer';\nimport { TRenderNativeOfflineAudioContextFunction } from './render-native-offline-audio-context-function';\nimport { TStartRenderingFunction } from './start-rendering-function';\nimport { TWrapAudioBufferCopyChannelMethodsFunction } from './wrap-audio-buffer-copy-channel-methods-function';\nimport { TWrapAudioBufferCopyChannelMethodsOutOfBoundsFunction } from './wrap-audio-buffer-copy-channel-methods-out-of-bounds-function';\n\nexport type TStartRenderingFactory = (\n audioBufferStore: TAudioBufferStore,\n cacheTestResult: TCacheTestResultFunction,\n getAudioNodeRenderer: TGetAudioNodeRendererFunction,\n getUnrenderedAudioWorkletNodes: TGetUnrenderedAudioWorkletNodesFunction,\n renderNativeOfflineAudioContext: TRenderNativeOfflineAudioContextFunction,\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport: (nativeAudioBuffer: TNativeAudioBuffer) => boolean,\n wrapAudioBufferCopyChannelMethods: TWrapAudioBufferCopyChannelMethodsFunction,\n wrapAudioBufferCopyChannelMethodsOutOfBounds: TWrapAudioBufferCopyChannelMethodsOutOfBoundsFunction\n) => TStartRenderingFunction;\n","import { IAudioDestinationNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TNativeAudioBuffer } from './native-audio-buffer';\nimport { TNativeOfflineAudioContext } from './native-offline-audio-context';\n\nexport type TStartRenderingFunction = (\n destination: IAudioDestinationNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n) => Promise;\n","import { IStereoPannerNode, IStereoPannerOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TStereoPannerNodeConstructor = new (\n context: T,\n options?: Partial\n) => IStereoPannerNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TAudioParamFactory } from './audio-param-factory';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeStereoPannerNodeFactory } from './native-stereo-panner-node-factory';\nimport { TStereoPannerNodeConstructor } from './stereo-panner-node-constructor';\nimport { TStereoPannerNodeRendererFactory } from './stereo-panner-node-renderer-factory';\n\nexport type TStereoPannerNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createAudioParam: TAudioParamFactory,\n createNativeStereoPannerNode: TNativeStereoPannerNodeFactory,\n createStereoPannerNodeRenderer: TStereoPannerNodeRendererFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction\n) => TStereoPannerNodeConstructor;\n","import { TConnectAudioParamFunction } from './connect-audio-param-function';\nimport { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeStereoPannerNodeFactory } from './native-stereo-panner-node-factory';\nimport { TRenderAutomationFunction } from './render-automation-function';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\nimport { TStereoPannerNodeRendererFactory } from './stereo-panner-node-renderer-factory';\n\nexport type TStereoPannerNodeRendererFactoryFactory = (\n connectAudioParam: TConnectAudioParamFunction,\n createNativeStereoPannerNode: TNativeStereoPannerNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderAutomation: TRenderAutomationFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TStereoPannerNodeRendererFactory;\n","import { IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext, IStereoPannerNode } from '../interfaces';\n\nexport type TStereoPannerNodeRendererFactory = () => IAudioNodeRenderer<\n T,\n IStereoPannerNode\n>;\n","import { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TTestAudioBufferCopyChannelMethodsSubarraySupportFactory = (\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => () => boolean;\n","import { TNativeAudioBufferConstructor } from './native-audio-buffer-constructor';\n\nexport type TTestAudioBufferConstructorSupportFactory = (\n nativeAudioBufferConstructor: null | TNativeAudioBufferConstructor\n) => () => boolean;\n","import { TNativeAudioContextConstructor } from './native-audio-context-constructor';\n\nexport type TTestAudioContextCloseMethodSupportFactory = (\n nativeAudioContextConstructor: null | TNativeAudioContextConstructor\n) => () => boolean;\n","import { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TTestAudioContextDecodeAudioDataMethodTypeErrorSupportFactory = (\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => () => Promise;\n","import { TNativeAudioContextConstructor } from './native-audio-context-constructor';\n\nexport type TTestAudioContextOptionsSupportFactory = (\n nativeAudioContextConstructor: null | TNativeAudioContextConstructor\n) => () => boolean;\n","import { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TTestAudioNodeConnectMethodSupportFactory = (\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => () => boolean;\n","import { IAudioWorkletNodeOptions } from '../interfaces';\n\nexport type TTestAudioWorkletNodeOptionsClonabilityFunction = (audioWorkletNodeOptions: IAudioWorkletNodeOptions) => void;\n","import { TNativeAudioWorkletNodeConstructor } from './native-audio-worklet-node-constructor';\nimport { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TTestAudioWorkletProcessorNoOutputsSupportFactory = (\n nativeAudioWorkletNodeConstructor: null | TNativeAudioWorkletNodeConstructor,\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => () => Promise;\n","import { TNativeAudioWorkletNodeConstructor } from './native-audio-worklet-node-constructor';\nimport { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TTestAudioWorkletProcessorPostMessageSupportFactory = (\n nativeAudioWorkletNodeConstructor: null | TNativeAudioWorkletNodeConstructor,\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => () => Promise;\n","import { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TTestChannelMergerNodeChannelCountSupportFactory = (\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => () => boolean;\n","import { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TTestConstantSourceNodeAccurateSchedulingSupportFactory = (\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => () => boolean;\n","import { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TTestConvolverNodeBufferReassignabilitySupportFactory = (\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => () => boolean;\n","import { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TTestConvolverNodeChannelCountSupportFactory = (\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => () => boolean;\n","import { TWindow } from './window';\n\nexport type TTestIsSecureContextSupportFactory = (window: null | TWindow) => () => boolean;\n","import { TNativeAudioContextConstructor } from './native-audio-context-constructor';\n\nexport type TTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupportFactory = (\n nativeAudioContextConstructor: null | TNativeAudioContextConstructor\n) => () => boolean;\n","import { TNativeGainNodeFactory } from './native-gain-node-factory';\nimport { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TTestOfflineAudioContextCurrentTimeSupportFactory = (\n createNativeGainNode: TNativeGainNodeFactory,\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => () => Promise;\n","import { TNativeOfflineAudioContextConstructor } from './native-offline-audio-context-constructor';\n\nexport type TTestStereoPannerNodeDefaultValueSupportFactory = (\n nativeOfflineAudioContextConstructor: null | TNativeOfflineAudioContextConstructor\n) => () => Promise;\n","export type TUnknownErrorFactory = () => DOMException;\n","import { TNativeContext } from './native-context';\nimport { TUnrenderedAudioWorkletNodes } from './unrendered-audio-worklet-nodes';\n\nexport type TUnrenderedAudioWorkletNodeStore = WeakMap;\n","import { IAudioWorkletNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\n\nexport type TUnrenderedAudioWorkletNodes = Set>;\n","import { IWaveShaperNode, IWaveShaperOptions } from '../interfaces';\nimport { TContext } from './context';\n\nexport type TWaveShaperNodeConstructor = new (context: T, options?: Partial) => IWaveShaperNode;\n","import { TAudioNodeConstructor } from './audio-node-constructor';\nimport { TGetNativeContextFunction } from './get-native-context-function';\nimport { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TIsNativeOfflineAudioContextFunction } from './is-native-offline-audio-context-function';\nimport { TNativeWaveShaperNodeFactory } from './native-wave-shaper-node-factory';\nimport { TSetAudioNodeTailTimeFunction } from './set-audio-node-tail-time-function';\nimport { TWaveShaperNodeConstructor } from './wave-shaper-node-constructor';\nimport { TWaveShaperNodeRendererFactory } from './wave-shaper-node-renderer-factory';\n\nexport type TWaveShaperNodeConstructorFactory = (\n audioNodeConstructor: TAudioNodeConstructor,\n createInvalidStateError: TInvalidStateErrorFactory,\n createNativeWaveShaperNode: TNativeWaveShaperNodeFactory,\n createWaveShaperNodeRenderer: TWaveShaperNodeRendererFactory,\n getNativeContext: TGetNativeContextFunction,\n isNativeOfflineAudioContext: TIsNativeOfflineAudioContextFunction,\n setAudioNodeTailTime: TSetAudioNodeTailTimeFunction\n) => TWaveShaperNodeConstructor;\n","import { TGetNativeAudioNodeFunction } from './get-native-audio-node-function';\nimport { TNativeWaveShaperNodeFactory } from './native-wave-shaper-node-factory';\nimport { TRenderInputsOfAudioNodeFunction } from './render-inputs-of-audio-node-function';\nimport { TWaveShaperNodeRendererFactory } from './wave-shaper-node-renderer-factory';\n\nexport type TWaveShaperNodeRendererFactoryFactory = (\n createNativeWaveShaperNode: TNativeWaveShaperNodeFactory,\n getNativeAudioNode: TGetNativeAudioNodeFunction,\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => TWaveShaperNodeRendererFactory;\n","import { IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext, IWaveShaperNode } from '../interfaces';\n\nexport type TWaveShaperNodeRendererFactory = () => IAudioNodeRenderer<\n T,\n IWaveShaperNode\n>;\n","export type TWindow = Window & typeof globalThis;\n","import { TWindow } from './window';\n\nexport type TWindowFactory = () => null | TWindow;\n","import { TConvertNumberToUnsignedLongFunction } from './convert-number-to-unsigned-long-function';\nimport { TIndexSizeErrorFactory } from './index-size-error-factory';\nimport { TWrapAudioBufferCopyChannelMethodsFunction } from './wrap-audio-buffer-copy-channel-methods-function';\n\nexport type TWrapAudioBufferCopyChannelMethodsFactory = (\n convertNumberToUnsignedLong: TConvertNumberToUnsignedLongFunction,\n createIndexSizeError: TIndexSizeErrorFactory\n) => TWrapAudioBufferCopyChannelMethodsFunction;\n","import { TNativeAudioBuffer } from './native-audio-buffer';\n\nexport type TWrapAudioBufferCopyChannelMethodsFunction = (nativeAudioBuffer: TNativeAudioBuffer) => void;\n","import { TConvertNumberToUnsignedLongFunction } from './convert-number-to-unsigned-long-function';\nimport { TWrapAudioBufferCopyChannelMethodsOutOfBoundsFunction } from './wrap-audio-buffer-copy-channel-methods-out-of-bounds-function';\n\nexport type TWrapAudioBufferCopyChannelMethodsOutOfBoundsFactory = (\n convertNumberToUnsignedLong: TConvertNumberToUnsignedLongFunction\n) => TWrapAudioBufferCopyChannelMethodsOutOfBoundsFunction;\n","import { TNativeAudioBuffer } from './native-audio-buffer';\n\nexport type TWrapAudioBufferCopyChannelMethodsOutOfBoundsFunction = (nativeAudioBuffer: TNativeAudioBuffer) => void;\n","import { TNativeAudioBufferSourceNode } from './native-audio-buffer-source-node';\n\nexport type TWrapAudioBufferSourceNodeStartMethodOffsetClampingFunction = (\n nativeAudioBufferSourceNode: TNativeAudioBufferSourceNode\n) => void;\n","import { TOverwriteAccessorsFunction } from './overwrite-accessors-function';\nimport { TWrapAudioBufferSourceNodeStopMethodNullifiedBufferFunction } from './wrap-audio-buffer-source-node-stop-method-nullified-buffer-function';\n\nexport type TWrapAudioBufferSourceNodeStopMethodNullifiedBufferFactory = (\n overwriteAccessors: TOverwriteAccessorsFunction\n) => TWrapAudioBufferSourceNodeStopMethodNullifiedBufferFunction;\n","import { TNativeAudioBufferSourceNode } from './native-audio-buffer-source-node';\nimport { TNativeContext } from './native-context';\n\nexport type TWrapAudioBufferSourceNodeStopMethodNullifiedBufferFunction = (\n nativeAudioBufferSourceNode: TNativeAudioBufferSourceNode,\n nativeContext: TNativeContext\n) => void;\n","import { TNativeAudioBufferSourceNode } from './native-audio-buffer-source-node';\nimport { TNativeConstantSourceNode } from './native-constant-source-node';\nimport { TNativeContext } from './native-context';\nimport { TNativeOscillatorNode } from './native-oscillator-node';\n\nexport type TWrapAudioScheduledSourceNodeStopMethodConsecutiveCallsFunction = (\n nativeAudioScheduledSourceNode: TNativeAudioBufferSourceNode | TNativeConstantSourceNode | TNativeOscillatorNode,\n nativeContext: TNativeContext\n) => void;\n","import { TInvalidStateErrorFactory } from './invalid-state-error-factory';\nimport { TMonitorConnectionsFunction } from './monitor-connections-function';\nimport { TWrapChannelMergerNodeFunction } from './wrap-channel-merger-node-function';\n\nexport type TWrapChannelMergerNodeFactory = (\n createInvalidStateError: TInvalidStateErrorFactory,\n monitorConnectionsFunction: TMonitorConnectionsFunction\n) => TWrapChannelMergerNodeFunction;\n","import { TNativeChannelMergerNode } from './native-channel-merger-node';\nimport { TNativeContext } from './native-context';\n\nexport type TWrapChannelMergerNodeFunction = (nativeContext: TNativeContext, channelMergerNode: TNativeChannelMergerNode) => void;\n","export type TWrapEventListenerFunction = (target: T, eventListener: EventListenerOrEventListenerObject) => EventListener;\n","/**\n * Assert that the statement is true, otherwise invoke the error.\n * @param statement\n * @param error The message which is passed into an Error\n */\nexport function assert(statement, error) {\n if (!statement) {\n throw new Error(error);\n }\n}\n/**\n * Make sure that the given value is within the range\n */\nexport function assertRange(value, gte, lte = Infinity) {\n if (!(gte <= value && value <= lte)) {\n throw new RangeError(`Value must be within [${gte}, ${lte}], got: ${value}`);\n }\n}\n/**\n * Make sure that the given value is within the range\n */\nexport function assertContextRunning(context) {\n // add a warning if the context is not started\n if (!context.isOffline && context.state !== \"running\") {\n warn(\"The AudioContext is \\\"suspended\\\". Invoke Tone.start() from a user action to start the audio.\");\n }\n}\n/**\n * The default logger is the console\n */\nlet defaultLogger = console;\n/**\n * Set the logging interface\n */\nexport function setLogger(logger) {\n defaultLogger = logger;\n}\n/**\n * Log anything\n */\nexport function log(...args) {\n defaultLogger.log(...args);\n}\n/**\n * Warn anything\n */\nexport function warn(...args) {\n defaultLogger.warn(...args);\n}\n//# sourceMappingURL=Debug.js.map","/**\n * Assert that the statement is true, otherwise invoke the error.\n * @param statement\n * @param error The message which is passed into an Error\n */\nexport function assert(statement: boolean, error: string): void {\n\tif (!statement) {\n\t\tthrow new Error(error);\n\t}\n}\n\n/**\n * Make sure that the given value is within the range\n */\nexport function assertRange(value: number, gte: number, lte = Infinity): void {\n\tif (!(gte <= value && value <= lte)) {\n\t\tthrow new RangeError(`Value must be within [${gte}, ${lte}], got: ${value}`);\n\t}\n}\n\n/**\n * Make sure that the given value is within the range\n */\nexport function assertContextRunning(context: import(\"../context/BaseContext\").BaseContext): void {\n\t// add a warning if the context is not started\n\tif (!context.isOffline && context.state !== \"running\") {\n\t\twarn(\"The AudioContext is \\\"suspended\\\". Invoke Tone.start() from a user action to start the audio.\");\n\t}\n}\n\n/**\n * A basic logging interface\n */\ninterface Logger {\n\tlog: (args?: any[]) => void;\n\twarn: (args?: any[]) => void;\n}\n\n/**\n * The default logger is the console\n */\nlet defaultLogger: Logger = console;\n\n/**\n * Set the logging interface\n */\nexport function setLogger(logger: Logger): void {\n\tdefaultLogger = logger;\n}\n\n/**\n * Log anything\n */\nexport function log(...args: any[]): void {\n\tdefaultLogger.log(...args);\n}\n\n/**\n * Warn anything\n */\nexport function warn(...args: any[]): void {\n\tdefaultLogger.warn(...args);\n}\n","/**\n * Test if the arg is undefined\n */\nexport function isUndef(arg) {\n return typeof arg === \"undefined\";\n}\n/**\n * Test if the arg is not undefined\n */\nexport function isDefined(arg) {\n return !isUndef(arg);\n}\n/**\n * Test if the arg is a function\n */\nexport function isFunction(arg) {\n return typeof arg === \"function\";\n}\n/**\n * Test if the argument is a number.\n */\nexport function isNumber(arg) {\n return (typeof arg === \"number\");\n}\n/**\n * Test if the given argument is an object literal (i.e. `{}`);\n */\nexport function isObject(arg) {\n return (Object.prototype.toString.call(arg) === \"[object Object]\" && arg.constructor === Object);\n}\n/**\n * Test if the argument is a boolean.\n */\nexport function isBoolean(arg) {\n return (typeof arg === \"boolean\");\n}\n/**\n * Test if the argument is an Array\n */\nexport function isArray(arg) {\n return (Array.isArray(arg));\n}\n/**\n * Test if the argument is a string.\n */\nexport function isString(arg) {\n return (typeof arg === \"string\");\n}\n/**\n * Test if the argument is in the form of a note in scientific pitch notation.\n * e.g. \"C4\"\n */\nexport function isNote(arg) {\n return isString(arg) && /^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(arg);\n}\n//# sourceMappingURL=TypeCheck.js.map","import { Note } from \"../type/Units\";\n\n/**\n * Test if the arg is undefined\n */\nexport function isUndef(arg: any): arg is undefined {\n\treturn typeof arg === \"undefined\";\n}\n\n/**\n * Test if the arg is not undefined\n */\nexport function isDefined(arg: T | undefined): arg is T {\n\treturn !isUndef(arg);\n}\n\n/**\n * Test if the arg is a function\n */\nexport function isFunction(arg: any): arg is (a: any) => any {\n\treturn typeof arg === \"function\";\n}\n\n/**\n * Test if the argument is a number.\n */\nexport function isNumber(arg: any): arg is number {\n\treturn (typeof arg === \"number\");\n}\n\n/**\n * Test if the given argument is an object literal (i.e. `{}`);\n */\nexport function isObject(arg: any): arg is object {\n\treturn (Object.prototype.toString.call(arg) === \"[object Object]\" && arg.constructor === Object);\n}\n\n/**\n * Test if the argument is a boolean.\n */\nexport function isBoolean(arg: any): arg is boolean {\n\treturn (typeof arg === \"boolean\");\n}\n\n/**\n * Test if the argument is an Array\n */\nexport function isArray(arg: any): arg is any[] {\n\treturn (Array.isArray(arg));\n}\n\n/**\n * Test if the argument is a string.\n */\nexport function isString(arg: any): arg is string {\n\treturn (typeof arg === \"string\");\n}\n\n/**\n * Test if the argument is in the form of a note in scientific pitch notation.\n * e.g. \"C4\"\n */\nexport function isNote(arg: any): arg is Note {\n\treturn isString(arg) && /^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(arg);\n}\n","import { __awaiter } from \"tslib\";\nimport { Ticker } from \"../clock/Ticker\";\nimport { isAudioContext } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { Timeline } from \"../util/Timeline\";\nimport { isDefined, isString } from \"../util/TypeCheck\";\nimport { createAudioContext, createAudioWorkletNode, } from \"./AudioContext\";\nimport { closeContext, initializeContext } from \"./ContextInitialization\";\nimport { BaseContext } from \"./BaseContext\";\nimport { assert } from \"../util/Debug\";\n/**\n * Wrapper around the native AudioContext.\n * @category Core\n */\nexport class Context extends BaseContext {\n constructor() {\n super();\n this.name = \"Context\";\n /**\n * An object containing all of the constants AudioBufferSourceNodes\n */\n this._constants = new Map();\n /**\n * All of the setTimeout events.\n */\n this._timeouts = new Timeline();\n /**\n * The timeout id counter\n */\n this._timeoutIds = 0;\n /**\n * Private indicator if the context has been initialized\n */\n this._initialized = false;\n /**\n * Indicates if the context is an OfflineAudioContext or an AudioContext\n */\n this.isOffline = false;\n //--------------------------------------------\n // AUDIO WORKLET\n //--------------------------------------------\n /**\n * Maps a module name to promise of the addModule method\n */\n this._workletModules = new Map();\n const options = optionsFromArguments(Context.getDefaults(), arguments, [\n \"context\",\n ]);\n if (options.context) {\n this._context = options.context;\n }\n else {\n this._context = createAudioContext({\n latencyHint: options.latencyHint,\n });\n }\n this._ticker = new Ticker(this.emit.bind(this, \"tick\"), options.clockSource, options.updateInterval);\n this.on(\"tick\", this._timeoutLoop.bind(this));\n // fwd events from the context\n this._context.onstatechange = () => {\n this.emit(\"statechange\", this.state);\n };\n this._setLatencyHint(options.latencyHint);\n this.lookAhead = options.lookAhead;\n }\n static getDefaults() {\n return {\n clockSource: \"worker\",\n latencyHint: \"interactive\",\n lookAhead: 0.1,\n updateInterval: 0.05,\n };\n }\n /**\n * Finish setting up the context. **You usually do not need to do this manually.**\n */\n initialize() {\n if (!this._initialized) {\n // add any additional modules\n initializeContext(this);\n this._initialized = true;\n }\n return this;\n }\n //---------------------------\n // BASE AUDIO CONTEXT METHODS\n //---------------------------\n createAnalyser() {\n return this._context.createAnalyser();\n }\n createOscillator() {\n return this._context.createOscillator();\n }\n createBufferSource() {\n return this._context.createBufferSource();\n }\n createBiquadFilter() {\n return this._context.createBiquadFilter();\n }\n createBuffer(numberOfChannels, length, sampleRate) {\n return this._context.createBuffer(numberOfChannels, length, sampleRate);\n }\n createChannelMerger(numberOfInputs) {\n return this._context.createChannelMerger(numberOfInputs);\n }\n createChannelSplitter(numberOfOutputs) {\n return this._context.createChannelSplitter(numberOfOutputs);\n }\n createConstantSource() {\n return this._context.createConstantSource();\n }\n createConvolver() {\n return this._context.createConvolver();\n }\n createDelay(maxDelayTime) {\n return this._context.createDelay(maxDelayTime);\n }\n createDynamicsCompressor() {\n return this._context.createDynamicsCompressor();\n }\n createGain() {\n return this._context.createGain();\n }\n createIIRFilter(feedForward, feedback) {\n // @ts-ignore\n return this._context.createIIRFilter(feedForward, feedback);\n }\n createPanner() {\n return this._context.createPanner();\n }\n createPeriodicWave(real, imag, constraints) {\n return this._context.createPeriodicWave(real, imag, constraints);\n }\n createStereoPanner() {\n return this._context.createStereoPanner();\n }\n createWaveShaper() {\n return this._context.createWaveShaper();\n }\n createMediaStreamSource(stream) {\n assert(isAudioContext(this._context), \"Not available if OfflineAudioContext\");\n const context = this._context;\n return context.createMediaStreamSource(stream);\n }\n createMediaElementSource(element) {\n assert(isAudioContext(this._context), \"Not available if OfflineAudioContext\");\n const context = this._context;\n return context.createMediaElementSource(element);\n }\n createMediaStreamDestination() {\n assert(isAudioContext(this._context), \"Not available if OfflineAudioContext\");\n const context = this._context;\n return context.createMediaStreamDestination();\n }\n decodeAudioData(audioData) {\n return this._context.decodeAudioData(audioData);\n }\n /**\n * The current time in seconds of the AudioContext.\n */\n get currentTime() {\n return this._context.currentTime;\n }\n /**\n * The current time in seconds of the AudioContext.\n */\n get state() {\n return this._context.state;\n }\n /**\n * The current time in seconds of the AudioContext.\n */\n get sampleRate() {\n return this._context.sampleRate;\n }\n /**\n * The listener\n */\n get listener() {\n this.initialize();\n return this._listener;\n }\n set listener(l) {\n assert(!this._initialized, \"The listener cannot be set after initialization.\");\n this._listener = l;\n }\n /**\n * There is only one Transport per Context. It is created on initialization.\n */\n get transport() {\n this.initialize();\n return this._transport;\n }\n set transport(t) {\n assert(!this._initialized, \"The transport cannot be set after initialization.\");\n this._transport = t;\n }\n /**\n * This is the Draw object for the context which is useful for synchronizing the draw frame with the Tone.js clock.\n */\n get draw() {\n this.initialize();\n return this._draw;\n }\n set draw(d) {\n assert(!this._initialized, \"Draw cannot be set after initialization.\");\n this._draw = d;\n }\n /**\n * A reference to the Context's destination node.\n */\n get destination() {\n this.initialize();\n return this._destination;\n }\n set destination(d) {\n assert(!this._initialized, \"The destination cannot be set after initialization.\");\n this._destination = d;\n }\n /**\n * Create an audio worklet node from a name and options. The module\n * must first be loaded using [[addAudioWorkletModule]].\n */\n createAudioWorkletNode(name, options) {\n return createAudioWorkletNode(this.rawContext, name, options);\n }\n /**\n * Add an AudioWorkletProcessor module\n * @param url The url of the module\n * @param name The name of the module\n */\n addAudioWorkletModule(url, name) {\n return __awaiter(this, void 0, void 0, function* () {\n assert(isDefined(this.rawContext.audioWorklet), \"AudioWorkletNode is only available in a secure context (https or localhost)\");\n if (!this._workletModules.has(name)) {\n this._workletModules.set(name, this.rawContext.audioWorklet.addModule(url));\n }\n yield this._workletModules.get(name);\n });\n }\n /**\n * Returns a promise which resolves when all of the worklets have been loaded on this context\n */\n workletsAreReady() {\n return __awaiter(this, void 0, void 0, function* () {\n const promises = [];\n this._workletModules.forEach((promise) => promises.push(promise));\n yield Promise.all(promises);\n });\n }\n //---------------------------\n // TICKER\n //---------------------------\n /**\n * How often the interval callback is invoked.\n * This number corresponds to how responsive the scheduling\n * can be. context.updateInterval + context.lookAhead gives you the\n * total latency between scheduling an event and hearing it.\n */\n get updateInterval() {\n return this._ticker.updateInterval;\n }\n set updateInterval(interval) {\n this._ticker.updateInterval = interval;\n }\n /**\n * What the source of the clock is, either \"worker\" (default),\n * \"timeout\", or \"offline\" (none).\n */\n get clockSource() {\n return this._ticker.type;\n }\n set clockSource(type) {\n this._ticker.type = type;\n }\n /**\n * The type of playback, which affects tradeoffs between audio\n * output latency and responsiveness.\n * In addition to setting the value in seconds, the latencyHint also\n * accepts the strings \"interactive\" (prioritizes low latency),\n * \"playback\" (prioritizes sustained playback), \"balanced\" (balances\n * latency and performance).\n * @example\n * // prioritize sustained playback\n * const context = new Tone.Context({ latencyHint: \"playback\" });\n * // set this context as the global Context\n * Tone.setContext(context);\n * // the global context is gettable with Tone.getContext()\n * console.log(Tone.getContext().latencyHint);\n */\n get latencyHint() {\n return this._latencyHint;\n }\n /**\n * Update the lookAhead and updateInterval based on the latencyHint\n */\n _setLatencyHint(hint) {\n let lookAheadValue = 0;\n this._latencyHint = hint;\n if (isString(hint)) {\n switch (hint) {\n case \"interactive\":\n lookAheadValue = 0.1;\n break;\n case \"playback\":\n lookAheadValue = 0.5;\n break;\n case \"balanced\":\n lookAheadValue = 0.25;\n break;\n }\n }\n this.lookAhead = lookAheadValue;\n this.updateInterval = lookAheadValue / 2;\n }\n /**\n * The unwrapped AudioContext or OfflineAudioContext\n */\n get rawContext() {\n return this._context;\n }\n /**\n * The current audio context time plus a short [[lookAhead]].\n */\n now() {\n return this._context.currentTime + this.lookAhead;\n }\n /**\n * The current audio context time without the [[lookAhead]].\n * In most cases it is better to use [[now]] instead of [[immediate]] since\n * with [[now]] the [[lookAhead]] is applied equally to _all_ components including internal components,\n * to making sure that everything is scheduled in sync. Mixing [[now]] and [[immediate]]\n * can cause some timing issues. If no lookAhead is desired, you can set the [[lookAhead]] to `0`.\n */\n immediate() {\n return this._context.currentTime;\n }\n /**\n * Starts the audio context from a suspended state. This is required\n * to initially start the AudioContext. See [[Tone.start]]\n */\n resume() {\n if (isAudioContext(this._context)) {\n return this._context.resume();\n }\n else {\n return Promise.resolve();\n }\n }\n /**\n * Close the context. Once closed, the context can no longer be used and\n * any AudioNodes created from the context will be silent.\n */\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n if (isAudioContext(this._context)) {\n yield this._context.close();\n }\n if (this._initialized) {\n closeContext(this);\n }\n });\n }\n /**\n * **Internal** Generate a looped buffer at some constant value.\n */\n getConstant(val) {\n if (this._constants.has(val)) {\n return this._constants.get(val);\n }\n else {\n const buffer = this._context.createBuffer(1, 128, this._context.sampleRate);\n const arr = buffer.getChannelData(0);\n for (let i = 0; i < arr.length; i++) {\n arr[i] = val;\n }\n const constant = this._context.createBufferSource();\n constant.channelCount = 1;\n constant.channelCountMode = \"explicit\";\n constant.buffer = buffer;\n constant.loop = true;\n constant.start(0);\n this._constants.set(val, constant);\n return constant;\n }\n }\n /**\n * Clean up. Also closes the audio context.\n */\n dispose() {\n super.dispose();\n this._ticker.dispose();\n this._timeouts.dispose();\n Object.keys(this._constants).map((val) => this._constants[val].disconnect());\n return this;\n }\n //---------------------------\n // TIMEOUTS\n //---------------------------\n /**\n * The private loop which keeps track of the context scheduled timeouts\n * Is invoked from the clock source\n */\n _timeoutLoop() {\n const now = this.now();\n let firstEvent = this._timeouts.peek();\n while (this._timeouts.length && firstEvent && firstEvent.time <= now) {\n // invoke the callback\n firstEvent.callback();\n // shift the first event off\n this._timeouts.shift();\n // get the next one\n firstEvent = this._timeouts.peek();\n }\n }\n /**\n * A setTimeout which is guaranteed by the clock source.\n * Also runs in the offline context.\n * @param fn The callback to invoke\n * @param timeout The timeout in seconds\n * @returns ID to use when invoking Context.clearTimeout\n */\n setTimeout(fn, timeout) {\n this._timeoutIds++;\n const now = this.now();\n this._timeouts.add({\n callback: fn,\n id: this._timeoutIds,\n time: now + timeout,\n });\n return this._timeoutIds;\n }\n /**\n * Clears a previously scheduled timeout with Tone.context.setTimeout\n * @param id The ID returned from setTimeout\n */\n clearTimeout(id) {\n this._timeouts.forEach((event) => {\n if (event.id === id) {\n this._timeouts.remove(event);\n }\n });\n return this;\n }\n /**\n * Clear the function scheduled by [[setInterval]]\n */\n clearInterval(id) {\n return this.clearTimeout(id);\n }\n /**\n * Adds a repeating event to the context's callback clock\n */\n setInterval(fn, interval) {\n const id = ++this._timeoutIds;\n const intervalFn = () => {\n const now = this.now();\n this._timeouts.add({\n callback: () => {\n // invoke the callback\n fn();\n // invoke the event to repeat it\n intervalFn();\n },\n id,\n time: now + interval,\n });\n };\n // kick it off\n intervalFn();\n return id;\n }\n}\n//# sourceMappingURL=Context.js.map","import { Ticker, TickerClockSource } from \"../clock/Ticker\";\nimport { Seconds } from \"../type/Units\";\nimport { isAudioContext } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { Timeline } from \"../util/Timeline\";\nimport { isDefined, isString } from \"../util/TypeCheck\";\nimport {\n\tAnyAudioContext,\n\tcreateAudioContext,\n\tcreateAudioWorkletNode,\n} from \"./AudioContext\";\nimport { closeContext, initializeContext } from \"./ContextInitialization\";\nimport { BaseContext, ContextLatencyHint } from \"./BaseContext\";\nimport { assert } from \"../util/Debug\";\n\ntype Transport = import(\"../clock/Transport\").Transport;\ntype Destination = import(\"./Destination\").Destination;\ntype Listener = import(\"./Listener\").Listener;\ntype Draw = import(\"../util/Draw\").Draw;\n\nexport interface ContextOptions {\n\tclockSource: TickerClockSource;\n\tlatencyHint: ContextLatencyHint;\n\tlookAhead: Seconds;\n\tupdateInterval: Seconds;\n\tcontext: AnyAudioContext;\n}\n\nexport interface ContextTimeoutEvent {\n\tcallback: (...args: any[]) => void;\n\tid: number;\n\ttime: Seconds;\n}\n\n/**\n * Wrapper around the native AudioContext.\n * @category Core\n */\nexport class Context extends BaseContext {\n\treadonly name: string = \"Context\";\n\n\t/**\n\t * The amount of time into the future events are scheduled. Giving Web Audio\n\t * a short amount of time into the future to schedule events can reduce clicks and\n\t * improve performance. This value can be set to 0 to get the lowest latency.\n\t */\n\tlookAhead: Seconds;\n\n\t/**\n\t * private reference to the BaseAudioContext\n\t */\n\tprotected readonly _context: AnyAudioContext;\n\n\t/**\n\t * A reliable callback method\n\t */\n\tprivate readonly _ticker: Ticker;\n\n\t/**\n\t * The default latency hint\n\t */\n\tprivate _latencyHint!: ContextLatencyHint | Seconds;\n\n\t/**\n\t * An object containing all of the constants AudioBufferSourceNodes\n\t */\n\tprivate _constants = new Map();\n\n\t/**\n\t * All of the setTimeout events.\n\t */\n\tprivate _timeouts: Timeline = new Timeline();\n\n\t/**\n\t * The timeout id counter\n\t */\n\tprivate _timeoutIds = 0;\n\n\t/**\n\t * A reference the Transport singleton belonging to this context\n\t */\n\tprivate _transport!: Transport;\n\n\t/**\n\t * A reference the Listener singleton belonging to this context\n\t */\n\tprivate _listener!: Listener;\n\n\t/**\n\t * A reference the Destination singleton belonging to this context\n\t */\n\tprivate _destination!: Destination;\n\n\t/**\n\t * A reference the Transport singleton belonging to this context\n\t */\n\tprivate _draw!: Draw;\n\n\t/**\n\t * Private indicator if the context has been initialized\n\t */\n\tprivate _initialized = false;\n\n\t/**\n\t * Indicates if the context is an OfflineAudioContext or an AudioContext\n\t */\n\treadonly isOffline: boolean = false;\n\n\tconstructor(context?: AnyAudioContext);\n\tconstructor(options?: Partial);\n\tconstructor() {\n\t\tsuper();\n\t\tconst options = optionsFromArguments(Context.getDefaults(), arguments, [\n\t\t\t\"context\",\n\t\t]);\n\n\t\tif (options.context) {\n\t\t\tthis._context = options.context;\n\t\t} else {\n\t\t\tthis._context = createAudioContext({\n\t\t\t\tlatencyHint: options.latencyHint,\n\t\t\t});\n\t\t}\n\n\t\tthis._ticker = new Ticker(\n\t\t\tthis.emit.bind(this, \"tick\"),\n\t\t\toptions.clockSource,\n\t\t\toptions.updateInterval\n\t\t);\n\t\tthis.on(\"tick\", this._timeoutLoop.bind(this));\n\n\t\t// fwd events from the context\n\t\tthis._context.onstatechange = () => {\n\t\t\tthis.emit(\"statechange\", this.state);\n\t\t};\n\n\t\tthis._setLatencyHint(options.latencyHint);\n\t\tthis.lookAhead = options.lookAhead;\n\t}\n\n\tstatic getDefaults(): ContextOptions {\n\t\treturn {\n\t\t\tclockSource: \"worker\",\n\t\t\tlatencyHint: \"interactive\",\n\t\t\tlookAhead: 0.1,\n\t\t\tupdateInterval: 0.05,\n\t\t} as ContextOptions;\n\t}\n\n\t/**\n\t * Finish setting up the context. **You usually do not need to do this manually.**\n\t */\n\tprivate initialize(): this {\n\t\tif (!this._initialized) {\n\t\t\t// add any additional modules\n\t\t\tinitializeContext(this);\n\t\t\tthis._initialized = true;\n\t\t}\n\t\treturn this;\n\t}\n\n\t//---------------------------\n\t// BASE AUDIO CONTEXT METHODS\n\t//---------------------------\n\n\tcreateAnalyser(): AnalyserNode {\n\t\treturn this._context.createAnalyser();\n\t}\n\tcreateOscillator(): OscillatorNode {\n\t\treturn this._context.createOscillator();\n\t}\n\tcreateBufferSource(): AudioBufferSourceNode {\n\t\treturn this._context.createBufferSource();\n\t}\n\tcreateBiquadFilter(): BiquadFilterNode {\n\t\treturn this._context.createBiquadFilter();\n\t}\n\tcreateBuffer(\n\t\tnumberOfChannels: number,\n\t\tlength: number,\n\t\tsampleRate: number\n\t): AudioBuffer {\n\t\treturn this._context.createBuffer(numberOfChannels, length, sampleRate);\n\t}\n\tcreateChannelMerger(\n\t\tnumberOfInputs?: number | undefined\n\t): ChannelMergerNode {\n\t\treturn this._context.createChannelMerger(numberOfInputs);\n\t}\n\tcreateChannelSplitter(\n\t\tnumberOfOutputs?: number | undefined\n\t): ChannelSplitterNode {\n\t\treturn this._context.createChannelSplitter(numberOfOutputs);\n\t}\n\tcreateConstantSource(): ConstantSourceNode {\n\t\treturn this._context.createConstantSource();\n\t}\n\tcreateConvolver(): ConvolverNode {\n\t\treturn this._context.createConvolver();\n\t}\n\tcreateDelay(maxDelayTime?: number | undefined): DelayNode {\n\t\treturn this._context.createDelay(maxDelayTime);\n\t}\n\tcreateDynamicsCompressor(): DynamicsCompressorNode {\n\t\treturn this._context.createDynamicsCompressor();\n\t}\n\tcreateGain(): GainNode {\n\t\treturn this._context.createGain();\n\t}\n\tcreateIIRFilter(\n\t\tfeedForward: number[] | Float32Array,\n\t\tfeedback: number[] | Float32Array\n\t): IIRFilterNode {\n\t\t// @ts-ignore\n\t\treturn this._context.createIIRFilter(feedForward, feedback);\n\t}\n\tcreatePanner(): PannerNode {\n\t\treturn this._context.createPanner();\n\t}\n\tcreatePeriodicWave(\n\t\treal: number[] | Float32Array,\n\t\timag: number[] | Float32Array,\n\t\tconstraints?: PeriodicWaveConstraints | undefined\n\t): PeriodicWave {\n\t\treturn this._context.createPeriodicWave(real, imag, constraints);\n\t}\n\tcreateStereoPanner(): StereoPannerNode {\n\t\treturn this._context.createStereoPanner();\n\t}\n\tcreateWaveShaper(): WaveShaperNode {\n\t\treturn this._context.createWaveShaper();\n\t}\n\tcreateMediaStreamSource(stream: MediaStream): MediaStreamAudioSourceNode {\n\t\tassert(\n\t\t\tisAudioContext(this._context),\n\t\t\t\"Not available if OfflineAudioContext\"\n\t\t);\n\t\tconst context = this._context as AudioContext;\n\t\treturn context.createMediaStreamSource(stream);\n\t}\n\tcreateMediaElementSource(\n\t\telement: HTMLMediaElement\n\t): MediaElementAudioSourceNode {\n\t\tassert(\n\t\t\tisAudioContext(this._context),\n\t\t\t\"Not available if OfflineAudioContext\"\n\t\t);\n\t\tconst context = this._context as AudioContext;\n\t\treturn context.createMediaElementSource(element);\n\t}\n\tcreateMediaStreamDestination(): MediaStreamAudioDestinationNode {\n\t\tassert(\n\t\t\tisAudioContext(this._context),\n\t\t\t\"Not available if OfflineAudioContext\"\n\t\t);\n\t\tconst context = this._context as AudioContext;\n\t\treturn context.createMediaStreamDestination();\n\t}\n\tdecodeAudioData(audioData: ArrayBuffer): Promise {\n\t\treturn this._context.decodeAudioData(audioData);\n\t}\n\n\t/**\n\t * The current time in seconds of the AudioContext.\n\t */\n\tget currentTime(): Seconds {\n\t\treturn this._context.currentTime;\n\t}\n\t/**\n\t * The current time in seconds of the AudioContext.\n\t */\n\tget state(): AudioContextState {\n\t\treturn this._context.state;\n\t}\n\t/**\n\t * The current time in seconds of the AudioContext.\n\t */\n\tget sampleRate(): number {\n\t\treturn this._context.sampleRate;\n\t}\n\n\t/**\n\t * The listener\n\t */\n\tget listener(): Listener {\n\t\tthis.initialize();\n\t\treturn this._listener;\n\t}\n\tset listener(l) {\n\t\tassert(\n\t\t\t!this._initialized,\n\t\t\t\"The listener cannot be set after initialization.\"\n\t\t);\n\t\tthis._listener = l;\n\t}\n\n\t/**\n\t * There is only one Transport per Context. It is created on initialization.\n\t */\n\tget transport(): Transport {\n\t\tthis.initialize();\n\t\treturn this._transport;\n\t}\n\tset transport(t: Transport) {\n\t\tassert(\n\t\t\t!this._initialized,\n\t\t\t\"The transport cannot be set after initialization.\"\n\t\t);\n\t\tthis._transport = t;\n\t}\n\n\t/**\n\t * This is the Draw object for the context which is useful for synchronizing the draw frame with the Tone.js clock.\n\t */\n\tget draw(): Draw {\n\t\tthis.initialize();\n\t\treturn this._draw;\n\t}\n\tset draw(d) {\n\t\tassert(!this._initialized, \"Draw cannot be set after initialization.\");\n\t\tthis._draw = d;\n\t}\n\n\t/**\n\t * A reference to the Context's destination node.\n\t */\n\tget destination(): Destination {\n\t\tthis.initialize();\n\t\treturn this._destination;\n\t}\n\tset destination(d: Destination) {\n\t\tassert(\n\t\t\t!this._initialized,\n\t\t\t\"The destination cannot be set after initialization.\"\n\t\t);\n\t\tthis._destination = d;\n\t}\n\n\t//--------------------------------------------\n\t// AUDIO WORKLET\n\t//--------------------------------------------\n\n\t/**\n\t * Maps a module name to promise of the addModule method\n\t */\n\tprivate _workletModules: Map> = new Map();\n\n\t/**\n\t * Create an audio worklet node from a name and options. The module\n\t * must first be loaded using [[addAudioWorkletModule]].\n\t */\n\tcreateAudioWorkletNode(\n\t\tname: string,\n\t\toptions?: Partial\n\t): AudioWorkletNode {\n\t\treturn createAudioWorkletNode(this.rawContext, name, options);\n\t}\n\n\t/**\n\t * Add an AudioWorkletProcessor module\n\t * @param url The url of the module\n\t * @param name The name of the module\n\t */\n\tasync addAudioWorkletModule(url: string, name: string): Promise {\n\t\tassert(\n\t\t\tisDefined(this.rawContext.audioWorklet),\n\t\t\t\"AudioWorkletNode is only available in a secure context (https or localhost)\"\n\t\t);\n\t\tif (!this._workletModules.has(name)) {\n\t\t\tthis._workletModules.set(\n\t\t\t\tname,\n\t\t\t\tthis.rawContext.audioWorklet.addModule(url)\n\t\t\t);\n\t\t}\n\t\tawait this._workletModules.get(name);\n\t}\n\n\t/**\n\t * Returns a promise which resolves when all of the worklets have been loaded on this context\n\t */\n\tprotected async workletsAreReady(): Promise {\n\t\tconst promises: Promise[] = [];\n\t\tthis._workletModules.forEach((promise) => promises.push(promise));\n\t\tawait Promise.all(promises);\n\t}\n\n\t//---------------------------\n\t// TICKER\n\t//---------------------------\n\n\t/**\n\t * How often the interval callback is invoked.\n\t * This number corresponds to how responsive the scheduling\n\t * can be. context.updateInterval + context.lookAhead gives you the\n\t * total latency between scheduling an event and hearing it.\n\t */\n\tget updateInterval(): Seconds {\n\t\treturn this._ticker.updateInterval;\n\t}\n\tset updateInterval(interval: Seconds) {\n\t\tthis._ticker.updateInterval = interval;\n\t}\n\n\t/**\n\t * What the source of the clock is, either \"worker\" (default),\n\t * \"timeout\", or \"offline\" (none).\n\t */\n\tget clockSource(): TickerClockSource {\n\t\treturn this._ticker.type;\n\t}\n\tset clockSource(type: TickerClockSource) {\n\t\tthis._ticker.type = type;\n\t}\n\n\t/**\n\t * The type of playback, which affects tradeoffs between audio\n\t * output latency and responsiveness.\n\t * In addition to setting the value in seconds, the latencyHint also\n\t * accepts the strings \"interactive\" (prioritizes low latency),\n\t * \"playback\" (prioritizes sustained playback), \"balanced\" (balances\n\t * latency and performance).\n\t * @example\n\t * // prioritize sustained playback\n\t * const context = new Tone.Context({ latencyHint: \"playback\" });\n\t * // set this context as the global Context\n\t * Tone.setContext(context);\n\t * // the global context is gettable with Tone.getContext()\n\t * console.log(Tone.getContext().latencyHint);\n\t */\n\tget latencyHint(): ContextLatencyHint | Seconds {\n\t\treturn this._latencyHint;\n\t}\n\n\t/**\n\t * Update the lookAhead and updateInterval based on the latencyHint\n\t */\n\tprivate _setLatencyHint(hint: ContextLatencyHint | Seconds): void {\n\t\tlet lookAheadValue = 0;\n\t\tthis._latencyHint = hint;\n\t\tif (isString(hint)) {\n\t\t\tswitch (hint) {\n\t\t\t\tcase \"interactive\":\n\t\t\t\t\tlookAheadValue = 0.1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"playback\":\n\t\t\t\t\tlookAheadValue = 0.5;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"balanced\":\n\t\t\t\t\tlookAheadValue = 0.25;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.lookAhead = lookAheadValue;\n\t\tthis.updateInterval = lookAheadValue / 2;\n\t}\n\n\t/**\n\t * The unwrapped AudioContext or OfflineAudioContext\n\t */\n\tget rawContext(): AnyAudioContext {\n\t\treturn this._context;\n\t}\n\n\t/**\n\t * The current audio context time plus a short [[lookAhead]].\n\t */\n\tnow(): Seconds {\n\t\treturn this._context.currentTime + this.lookAhead;\n\t}\n\n\t/**\n\t * The current audio context time without the [[lookAhead]].\n\t * In most cases it is better to use [[now]] instead of [[immediate]] since\n\t * with [[now]] the [[lookAhead]] is applied equally to _all_ components including internal components,\n\t * to making sure that everything is scheduled in sync. Mixing [[now]] and [[immediate]]\n\t * can cause some timing issues. If no lookAhead is desired, you can set the [[lookAhead]] to `0`.\n\t */\n\timmediate(): Seconds {\n\t\treturn this._context.currentTime;\n\t}\n\n\t/**\n\t * Starts the audio context from a suspended state. This is required\n\t * to initially start the AudioContext. See [[Tone.start]]\n\t */\n\tresume(): Promise {\n\t\tif (isAudioContext(this._context)) {\n\t\t\treturn this._context.resume();\n\t\t} else {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\n\t/**\n\t * Close the context. Once closed, the context can no longer be used and\n\t * any AudioNodes created from the context will be silent.\n\t */\n\tasync close(): Promise {\n\t\tif (isAudioContext(this._context)) {\n\t\t\tawait this._context.close();\n\t\t}\n\t\tif (this._initialized) {\n\t\t\tcloseContext(this);\n\t\t}\n\t}\n\n\t/**\n\t * **Internal** Generate a looped buffer at some constant value.\n\t */\n\tgetConstant(val: number): AudioBufferSourceNode {\n\t\tif (this._constants.has(val)) {\n\t\t\treturn this._constants.get(val) as AudioBufferSourceNode;\n\t\t} else {\n\t\t\tconst buffer = this._context.createBuffer(\n\t\t\t\t1,\n\t\t\t\t128,\n\t\t\t\tthis._context.sampleRate\n\t\t\t);\n\t\t\tconst arr = buffer.getChannelData(0);\n\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\tarr[i] = val;\n\t\t\t}\n\t\t\tconst constant = this._context.createBufferSource();\n\t\t\tconstant.channelCount = 1;\n\t\t\tconstant.channelCountMode = \"explicit\";\n\t\t\tconstant.buffer = buffer;\n\t\t\tconstant.loop = true;\n\t\t\tconstant.start(0);\n\t\t\tthis._constants.set(val, constant);\n\t\t\treturn constant;\n\t\t}\n\t}\n\n\t/**\n\t * Clean up. Also closes the audio context.\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._ticker.dispose();\n\t\tthis._timeouts.dispose();\n\t\tObject.keys(this._constants).map((val) =>\n\t\t\tthis._constants[val].disconnect()\n\t\t);\n\t\treturn this;\n\t}\n\n\t//---------------------------\n\t// TIMEOUTS\n\t//---------------------------\n\n\t/**\n\t * The private loop which keeps track of the context scheduled timeouts\n\t * Is invoked from the clock source\n\t */\n\tprivate _timeoutLoop(): void {\n\t\tconst now = this.now();\n\t\tlet firstEvent = this._timeouts.peek();\n\t\twhile (this._timeouts.length && firstEvent && firstEvent.time <= now) {\n\t\t\t// invoke the callback\n\t\t\tfirstEvent.callback();\n\t\t\t// shift the first event off\n\t\t\tthis._timeouts.shift();\n\t\t\t// get the next one\n\t\t\tfirstEvent = this._timeouts.peek();\n\t\t}\n\t}\n\n\t/**\n\t * A setTimeout which is guaranteed by the clock source.\n\t * Also runs in the offline context.\n\t * @param fn The callback to invoke\n\t * @param timeout The timeout in seconds\n\t * @returns ID to use when invoking Context.clearTimeout\n\t */\n\tsetTimeout(fn: (...args: any[]) => void, timeout: Seconds): number {\n\t\tthis._timeoutIds++;\n\t\tconst now = this.now();\n\t\tthis._timeouts.add({\n\t\t\tcallback: fn,\n\t\t\tid: this._timeoutIds,\n\t\t\ttime: now + timeout,\n\t\t});\n\t\treturn this._timeoutIds;\n\t}\n\n\t/**\n\t * Clears a previously scheduled timeout with Tone.context.setTimeout\n\t * @param id The ID returned from setTimeout\n\t */\n\tclearTimeout(id: number): this {\n\t\tthis._timeouts.forEach((event) => {\n\t\t\tif (event.id === id) {\n\t\t\t\tthis._timeouts.remove(event);\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clear the function scheduled by [[setInterval]]\n\t */\n\tclearInterval(id: number): this {\n\t\treturn this.clearTimeout(id);\n\t}\n\n\t/**\n\t * Adds a repeating event to the context's callback clock\n\t */\n\tsetInterval(fn: (...args: any[]) => void, interval: Seconds): number {\n\t\tconst id = ++this._timeoutIds;\n\t\tconst intervalFn = () => {\n\t\t\tconst now = this.now();\n\t\t\tthis._timeouts.add({\n\t\t\t\tcallback: () => {\n\t\t\t\t\t// invoke the callback\n\t\t\t\t\tfn();\n\t\t\t\t\t// invoke the event to repeat it\n\t\t\t\t\tintervalFn();\n\t\t\t\t},\n\t\t\t\tid,\n\t\t\t\ttime: now + interval,\n\t\t\t});\n\t\t};\n\t\t// kick it off\n\t\tintervalFn();\n\t\treturn id;\n\t}\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * A class which provides a reliable callback using either\n * a Web Worker, or if that isn't supported, falls back to setTimeout.\n */\nexport class Ticker {\n constructor(callback, type, updateInterval) {\n this._callback = callback;\n this._type = type;\n this._updateInterval = updateInterval;\n // create the clock source for the first time\n this._createClock();\n }\n /**\n * Generate a web worker\n */\n _createWorker() {\n const blob = new Blob([\n /* javascript */ `\n\t\t\t// the initial timeout time\n\t\t\tlet timeoutTime = ${(this._updateInterval * 1000).toFixed(1)};\n\t\t\t// onmessage callback\n\t\t\tself.onmessage = function(msg){\n\t\t\t\ttimeoutTime = parseInt(msg.data);\n\t\t\t};\n\t\t\t// the tick function which posts a message\n\t\t\t// and schedules a new tick\n\t\t\tfunction tick(){\n\t\t\t\tsetTimeout(tick, timeoutTime);\n\t\t\t\tself.postMessage('tick');\n\t\t\t}\n\t\t\t// call tick initially\n\t\t\ttick();\n\t\t\t`\n ], { type: \"text/javascript\" });\n const blobUrl = URL.createObjectURL(blob);\n const worker = new Worker(blobUrl);\n worker.onmessage = this._callback.bind(this);\n this._worker = worker;\n }\n /**\n * Create a timeout loop\n */\n _createTimeout() {\n this._timeout = setTimeout(() => {\n this._createTimeout();\n this._callback();\n }, this._updateInterval * 1000);\n }\n /**\n * Create the clock source.\n */\n _createClock() {\n if (this._type === \"worker\") {\n try {\n this._createWorker();\n }\n catch (e) {\n // workers not supported, fallback to timeout\n this._type = \"timeout\";\n this._createClock();\n }\n }\n else if (this._type === \"timeout\") {\n this._createTimeout();\n }\n }\n /**\n * Clean up the current clock source\n */\n _disposeClock() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n this._timeout = 0;\n }\n if (this._worker) {\n this._worker.terminate();\n this._worker.onmessage = null;\n }\n }\n /**\n * The rate in seconds the ticker will update\n */\n get updateInterval() {\n return this._updateInterval;\n }\n set updateInterval(interval) {\n this._updateInterval = Math.max(interval, 128 / 44100);\n if (this._type === \"worker\") {\n this._worker.postMessage(Math.max(interval * 1000, 1));\n }\n }\n /**\n * The type of the ticker, either a worker or a timeout\n */\n get type() {\n return this._type;\n }\n set type(type) {\n this._disposeClock();\n this._type = type;\n this._createClock();\n }\n /**\n * Clean up\n */\n dispose() {\n this._disposeClock();\n }\n}\n//# sourceMappingURL=Ticker.js.map","import { Seconds } from \"../type/Units\";\n\nexport type TickerClockSource = \"worker\" | \"timeout\" | \"offline\";\n\n/**\n * A class which provides a reliable callback using either\n * a Web Worker, or if that isn't supported, falls back to setTimeout.\n */\nexport class Ticker {\n\n\t/**\n\t * Either \"worker\" or \"timeout\" or \"offline\"\n\t */\n\tprivate _type: TickerClockSource;\n\n\t/**\n\t * The update interval of the worker\n\t */\n\tprivate _updateInterval: Seconds;\n\n\t/**\n\t * The callback to invoke at regular intervals\n\t */\n\tprivate _callback: () => void;\n\n\t/**\n\t * track the callback interval\n\t */\n\tprivate _timeout!: ReturnType;\n\n\t/**\n\t * private reference to the worker\n\t */\n\tprivate _worker!: Worker;\n\n\tconstructor(callback: () => void, type: TickerClockSource, updateInterval: Seconds) {\n\n\t\tthis._callback = callback;\n\t\tthis._type = type;\n\t\tthis._updateInterval = updateInterval;\n\n\t\t// create the clock source for the first time\n\t\tthis._createClock();\n\t}\n\n\t/**\n\t * Generate a web worker\n\t */\n\tprivate _createWorker(): void {\n\n\t\tconst blob = new Blob([\n\t\t\t/* javascript */`\n\t\t\t// the initial timeout time\n\t\t\tlet timeoutTime = ${(this._updateInterval * 1000).toFixed(1)};\n\t\t\t// onmessage callback\n\t\t\tself.onmessage = function(msg){\n\t\t\t\ttimeoutTime = parseInt(msg.data);\n\t\t\t};\n\t\t\t// the tick function which posts a message\n\t\t\t// and schedules a new tick\n\t\t\tfunction tick(){\n\t\t\t\tsetTimeout(tick, timeoutTime);\n\t\t\t\tself.postMessage('tick');\n\t\t\t}\n\t\t\t// call tick initially\n\t\t\ttick();\n\t\t\t`\n\t\t], { type: \"text/javascript\" });\n\t\tconst blobUrl = URL.createObjectURL(blob);\n\t\tconst worker = new Worker(blobUrl);\n\n\t\tworker.onmessage = this._callback.bind(this);\n\n\t\tthis._worker = worker;\n\t}\n\n\t/**\n\t * Create a timeout loop\n\t */\n\tprivate _createTimeout(): void {\n\t\tthis._timeout = setTimeout(() => {\n\t\t\tthis._createTimeout();\n\t\t\tthis._callback();\n\t\t}, this._updateInterval * 1000);\n\t}\n\n\t/**\n\t * Create the clock source.\n\t */\n\tprivate _createClock(): void {\n\t\tif (this._type === \"worker\") {\n\t\t\ttry {\n\t\t\t\tthis._createWorker();\n\t\t\t} catch (e) {\n\t\t\t\t// workers not supported, fallback to timeout\n\t\t\t\tthis._type = \"timeout\";\n\t\t\t\tthis._createClock();\n\t\t\t}\n\t\t} else if (this._type === \"timeout\") {\n\t\t\tthis._createTimeout();\n\t\t}\n\t}\n\n\t/**\n\t * Clean up the current clock source\n\t */\n\tprivate _disposeClock(): void {\n\t\tif (this._timeout) {\n\t\t\tclearTimeout(this._timeout);\n\t\t\tthis._timeout = 0;\n\t\t}\n\t\tif (this._worker) {\n\t\t\tthis._worker.terminate();\n\t\t\tthis._worker.onmessage = null;\n\t\t}\n\t}\n\n\t/**\n\t * The rate in seconds the ticker will update\n\t */\n\tget updateInterval(): Seconds {\n\t\treturn this._updateInterval;\n\t}\n\tset updateInterval(interval: Seconds) {\n\t\tthis._updateInterval = Math.max(interval, 128 / 44100);\n\t\tif (this._type === \"worker\") {\n\t\t\tthis._worker.postMessage(Math.max(interval * 1000, 1));\n\t\t}\n\t}\n\n\t/**\n\t * The type of the ticker, either a worker or a timeout\n\t */\n\tget type(): TickerClockSource {\n\t\treturn this._type;\n\t}\n\tset type(type: TickerClockSource) {\n\t\tthis._disposeClock();\n\t\tthis._type = type;\n\t\tthis._createClock();\n\t}\n\n\t/**\n\t * Clean up\n\t */\n\tdispose(): void {\n\t\tthis._disposeClock();\n\t}\n}\n","import { isAnyAudioContext, isAnyAudioNode, isAnyAudioParam, isAnyOfflineAudioContext, } from \"standardized-audio-context\";\n/**\n * Test if the given value is an instanceof AudioParam\n */\nexport function isAudioParam(arg) {\n return isAnyAudioParam(arg);\n}\n/**\n * Test if the given value is an instanceof AudioNode\n */\nexport function isAudioNode(arg) {\n return isAnyAudioNode(arg);\n}\n/**\n * Test if the arg is instanceof an OfflineAudioContext\n */\nexport function isOfflineAudioContext(arg) {\n return isAnyOfflineAudioContext(arg);\n}\n/**\n * Test if the arg is an instanceof AudioContext\n */\nexport function isAudioContext(arg) {\n return isAnyAudioContext(arg);\n}\n/**\n * Test if the arg is instanceof an AudioBuffer\n */\nexport function isAudioBuffer(arg) {\n return arg instanceof AudioBuffer;\n}\n//# sourceMappingURL=AdvancedTypeCheck.js.map","import {\n\tisAnyAudioContext, isAnyAudioNode,\n\tisAnyAudioParam, isAnyOfflineAudioContext,\n} from \"standardized-audio-context\";\n\n/**\n * Test if the given value is an instanceof AudioParam\n */\nexport function isAudioParam(arg: any): arg is AudioParam {\n\treturn isAnyAudioParam(arg);\n}\n\n/**\n * Test if the given value is an instanceof AudioNode\n */\nexport function isAudioNode(arg: any): arg is AudioNode {\n\treturn isAnyAudioNode(arg);\n}\n\n/**\n * Test if the arg is instanceof an OfflineAudioContext\n */\nexport function isOfflineAudioContext(arg: any): arg is OfflineAudioContext {\n\treturn isAnyOfflineAudioContext(arg);\n}\n\n/**\n * Test if the arg is an instanceof AudioContext\n */\nexport function isAudioContext(arg: any): arg is AudioContext {\n\treturn isAnyAudioContext(arg);\n}\n\n/**\n * Test if the arg is instanceof an AudioBuffer\n */\nexport function isAudioBuffer(arg: any): arg is AudioBuffer {\n\treturn arg instanceof AudioBuffer;\n}\n","import { isAudioBuffer, isAudioNode, isAudioParam } from \"./AdvancedTypeCheck\";\nimport { isDefined, isObject, isUndef } from \"./TypeCheck\";\n/**\n * Some objects should not be merged\n */\nfunction noCopy(key, arg) {\n return key === \"value\" || isAudioParam(arg) || isAudioNode(arg) || isAudioBuffer(arg);\n}\nexport function deepMerge(target, ...sources) {\n if (!sources.length) {\n return target;\n }\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (noCopy(key, source[key])) {\n target[key] = source[key];\n }\n else if (isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, { [key]: {} });\n }\n deepMerge(target[key], source[key]);\n }\n else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n // @ts-ignore\n return deepMerge(target, ...sources);\n}\n/**\n * Returns true if the two arrays have the same value for each of the elements\n */\nexport function deepEquals(arrayA, arrayB) {\n return arrayA.length === arrayB.length && arrayA.every((element, index) => arrayB[index] === element);\n}\n/**\n * Convert an args array into an object.\n */\nexport function optionsFromArguments(defaults, argsArray, keys = [], objKey) {\n const opts = {};\n const args = Array.from(argsArray);\n // if the first argument is an object and has an object key\n if (isObject(args[0]) && objKey && !Reflect.has(args[0], objKey)) {\n // if it's not part of the defaults\n const partOfDefaults = Object.keys(args[0]).some(key => Reflect.has(defaults, key));\n if (!partOfDefaults) {\n // merge that key\n deepMerge(opts, { [objKey]: args[0] });\n // remove the obj key from the keys\n keys.splice(keys.indexOf(objKey), 1);\n // shift the first argument off\n args.shift();\n }\n }\n if (args.length === 1 && isObject(args[0])) {\n deepMerge(opts, args[0]);\n }\n else {\n for (let i = 0; i < keys.length; i++) {\n if (isDefined(args[i])) {\n opts[keys[i]] = args[i];\n }\n }\n }\n return deepMerge(defaults, opts);\n}\n/**\n * Return this instances default values by calling Constructor.getDefaults()\n */\nexport function getDefaultsFromInstance(instance) {\n return instance.constructor.getDefaults();\n}\n/**\n * Returns the fallback if the given object is undefined.\n * Take an array of arguments and return a formatted options object.\n */\nexport function defaultArg(given, fallback) {\n if (isUndef(given)) {\n return fallback;\n }\n else {\n return given;\n }\n}\n/**\n * Remove all of the properties belonging to omit from obj.\n */\nexport function omitFromObject(obj, omit) {\n omit.forEach(prop => {\n if (Reflect.has(obj, prop)) {\n delete obj[prop];\n }\n });\n return obj;\n}\n//# sourceMappingURL=Defaults.js.map","import { isAudioBuffer, isAudioNode, isAudioParam } from \"./AdvancedTypeCheck\";\nimport { isDefined, isObject, isUndef } from \"./TypeCheck\";\n\ntype BaseToneOptions = import(\"../Tone\").BaseToneOptions;\n\n/**\n * Some objects should not be merged\n */\nfunction noCopy(key: string, arg: any): boolean {\n\treturn key === \"value\" || isAudioParam(arg) || isAudioNode(arg) || isAudioBuffer(arg);\n}\n\n/**\n * Recursively merge an object\n * @param target the object to merge into\n * @param sources the source objects to merge\n */\nexport function deepMerge(target: T): T;\nexport function deepMerge(target: T, source1: U): T & U;\nexport function deepMerge(target: T, source1: U, source2: V): T & U & V;\nexport function deepMerge(target: T, source1: U, source2: V, source3: W): T & U & V & W;\nexport function deepMerge(target: any, ...sources: any[]): any {\n\tif (!sources.length) {\n\t\treturn target; \n\t}\n\tconst source = sources.shift();\n\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (noCopy(key, source[key])) {\n\t\t\t\ttarget[key] = source[key];\n\t\t\t} else if (isObject(source[key])) {\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\tObject.assign(target, { [key]: {} }); \n\t\t\t\t}\n\t\t\t\tdeepMerge(target[key], source[key] as any);\n\t\t\t} else {\n\t\t\t\tObject.assign(target, { [key]: source[key] as any });\n\t\t\t}\n\t\t}\n\t}\n\t// @ts-ignore\n\treturn deepMerge(target, ...sources);\n}\n\n/**\n * Returns true if the two arrays have the same value for each of the elements\n */\nexport function deepEquals(arrayA: T[], arrayB: T[]): boolean {\n\treturn arrayA.length === arrayB.length && arrayA.every((element, index) => arrayB[index] === element);\n}\n\n/**\n * Convert an args array into an object.\n */\nexport function optionsFromArguments(\n\tdefaults: T,\n\targsArray: IArguments,\n\tkeys: Array = [],\n\tobjKey?: keyof T,\n): T {\n\tconst opts: Partial = {};\n\tconst args = Array.from(argsArray);\n\t// if the first argument is an object and has an object key\n\tif (isObject(args[0]) && objKey && !Reflect.has(args[0], objKey)) {\n\t\t// if it's not part of the defaults\n\t\tconst partOfDefaults = Object.keys(args[0]).some(key => Reflect.has(defaults, key));\n\t\tif (!partOfDefaults) {\n\t\t\t// merge that key\n\t\t\tdeepMerge(opts, { [objKey]: args[0] });\n\t\t\t// remove the obj key from the keys\n\t\t\tkeys.splice(keys.indexOf(objKey), 1);\n\t\t\t// shift the first argument off\n\t\t\targs.shift();\n\t\t}\n\t}\n\tif (args.length === 1 && isObject(args[0])) {\n\t\tdeepMerge(opts, args[0]);\n\t} else {\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tif (isDefined(args[i])) {\n\t\t\t\topts[keys[i]] = args[i];\n\t\t\t}\n\t\t}\n\t}\n\treturn deepMerge(defaults, opts);\n}\n\n/**\n * Return this instances default values by calling Constructor.getDefaults()\n */\nexport function getDefaultsFromInstance(instance: T): BaseToneOptions {\n\ttype ToneClass = {\n\t\tconstructor: ToneClass;\n\t\tgetDefaults: () => BaseToneOptions;\n\t} & T;\n\n\treturn (instance as ToneClass).constructor.getDefaults();\n}\n\n/**\n * Returns the fallback if the given object is undefined.\n * Take an array of arguments and return a formatted options object.\n */\nexport function defaultArg(given: T, fallback: T): T {\n\tif (isUndef(given)) {\n\t\treturn fallback;\n\t} else {\n\t\treturn given;\n\t}\n}\n\n/**\n * Remove all of the properties belonging to omit from obj.\n */\nexport function omitFromObject(obj: T, omit: O): Omit {\n\tomit.forEach(prop => {\n\t\tif (Reflect.has(obj, prop)) {\n\t\t\tdelete obj[prop];\n\t\t}\n\t});\n\treturn obj;\n}\n","import { Tone } from \"../Tone\";\nimport { optionsFromArguments } from \"./Defaults\";\nimport { assert } from \"./Debug\";\nimport { EQ, GT, GTE, LT } from \"./Math\";\n/**\n * A Timeline class for scheduling and maintaining state\n * along a timeline. All events must have a \"time\" property.\n * Internally, events are stored in time order for fast\n * retrieval.\n */\nexport class Timeline extends Tone {\n constructor() {\n super();\n this.name = \"Timeline\";\n /**\n * The array of scheduled timeline events\n */\n this._timeline = [];\n const options = optionsFromArguments(Timeline.getDefaults(), arguments, [\"memory\"]);\n this.memory = options.memory;\n this.increasing = options.increasing;\n }\n static getDefaults() {\n return {\n memory: Infinity,\n increasing: false,\n };\n }\n /**\n * The number of items in the timeline.\n */\n get length() {\n return this._timeline.length;\n }\n /**\n * Insert an event object onto the timeline. Events must have a \"time\" attribute.\n * @param event The event object to insert into the timeline.\n */\n add(event) {\n // the event needs to have a time attribute\n assert(Reflect.has(event, \"time\"), \"Timeline: events must have a time attribute\");\n event.time = event.time.valueOf();\n if (this.increasing && this.length) {\n const lastValue = this._timeline[this.length - 1];\n assert(GTE(event.time, lastValue.time), \"The time must be greater than or equal to the last scheduled time\");\n this._timeline.push(event);\n }\n else {\n const index = this._search(event.time);\n this._timeline.splice(index + 1, 0, event);\n }\n // if the length is more than the memory, remove the previous ones\n if (this.length > this.memory) {\n const diff = this.length - this.memory;\n this._timeline.splice(0, diff);\n }\n return this;\n }\n /**\n * Remove an event from the timeline.\n * @param {Object} event The event object to remove from the list.\n * @returns {Timeline} this\n */\n remove(event) {\n const index = this._timeline.indexOf(event);\n if (index !== -1) {\n this._timeline.splice(index, 1);\n }\n return this;\n }\n /**\n * Get the nearest event whose time is less than or equal to the given time.\n * @param time The time to query.\n */\n get(time, param = \"time\") {\n const index = this._search(time, param);\n if (index !== -1) {\n return this._timeline[index];\n }\n else {\n return null;\n }\n }\n /**\n * Return the first event in the timeline without removing it\n * @returns {Object} The first event object\n */\n peek() {\n return this._timeline[0];\n }\n /**\n * Return the first event in the timeline and remove it\n */\n shift() {\n return this._timeline.shift();\n }\n /**\n * Get the event which is scheduled after the given time.\n * @param time The time to query.\n */\n getAfter(time, param = \"time\") {\n const index = this._search(time, param);\n if (index + 1 < this._timeline.length) {\n return this._timeline[index + 1];\n }\n else {\n return null;\n }\n }\n /**\n * Get the event before the event at the given time.\n * @param time The time to query.\n */\n getBefore(time) {\n const len = this._timeline.length;\n // if it's after the last item, return the last item\n if (len > 0 && this._timeline[len - 1].time < time) {\n return this._timeline[len - 1];\n }\n const index = this._search(time);\n if (index - 1 >= 0) {\n return this._timeline[index - 1];\n }\n else {\n return null;\n }\n }\n /**\n * Cancel events at and after the given time\n * @param after The time to query.\n */\n cancel(after) {\n if (this._timeline.length > 1) {\n let index = this._search(after);\n if (index >= 0) {\n if (EQ(this._timeline[index].time, after)) {\n // get the first item with that time\n for (let i = index; i >= 0; i--) {\n if (EQ(this._timeline[i].time, after)) {\n index = i;\n }\n else {\n break;\n }\n }\n this._timeline = this._timeline.slice(0, index);\n }\n else {\n this._timeline = this._timeline.slice(0, index + 1);\n }\n }\n else {\n this._timeline = [];\n }\n }\n else if (this._timeline.length === 1) {\n // the first item's time\n if (GTE(this._timeline[0].time, after)) {\n this._timeline = [];\n }\n }\n return this;\n }\n /**\n * Cancel events before or equal to the given time.\n * @param time The time to cancel before.\n */\n cancelBefore(time) {\n const index = this._search(time);\n if (index >= 0) {\n this._timeline = this._timeline.slice(index + 1);\n }\n return this;\n }\n /**\n * Returns the previous event if there is one. null otherwise\n * @param event The event to find the previous one of\n * @return The event right before the given event\n */\n previousEvent(event) {\n const index = this._timeline.indexOf(event);\n if (index > 0) {\n return this._timeline[index - 1];\n }\n else {\n return null;\n }\n }\n /**\n * Does a binary search on the timeline array and returns the\n * nearest event index whose time is after or equal to the given time.\n * If a time is searched before the first index in the timeline, -1 is returned.\n * If the time is after the end, the index of the last item is returned.\n */\n _search(time, param = \"time\") {\n if (this._timeline.length === 0) {\n return -1;\n }\n let beginning = 0;\n const len = this._timeline.length;\n let end = len;\n if (len > 0 && this._timeline[len - 1][param] <= time) {\n return len - 1;\n }\n while (beginning < end) {\n // calculate the midpoint for roughly equal partition\n let midPoint = Math.floor(beginning + (end - beginning) / 2);\n const event = this._timeline[midPoint];\n const nextEvent = this._timeline[midPoint + 1];\n if (EQ(event[param], time)) {\n // choose the last one that has the same time\n for (let i = midPoint; i < this._timeline.length; i++) {\n const testEvent = this._timeline[i];\n if (EQ(testEvent[param], time)) {\n midPoint = i;\n }\n else {\n break;\n }\n }\n return midPoint;\n }\n else if (LT(event[param], time) && GT(nextEvent[param], time)) {\n return midPoint;\n }\n else if (GT(event[param], time)) {\n // search lower\n end = midPoint;\n }\n else {\n // search upper\n beginning = midPoint + 1;\n }\n }\n return -1;\n }\n /**\n * Internal iterator. Applies extra safety checks for\n * removing items from the array.\n */\n _iterate(callback, lowerBound = 0, upperBound = this._timeline.length - 1) {\n this._timeline.slice(lowerBound, upperBound + 1).forEach(callback);\n }\n /**\n * Iterate over everything in the array\n * @param callback The callback to invoke with every item\n */\n forEach(callback) {\n this._iterate(callback);\n return this;\n }\n /**\n * Iterate over everything in the array at or before the given time.\n * @param time The time to check if items are before\n * @param callback The callback to invoke with every item\n */\n forEachBefore(time, callback) {\n // iterate over the items in reverse so that removing an item doesn't break things\n const upperBound = this._search(time);\n if (upperBound !== -1) {\n this._iterate(callback, 0, upperBound);\n }\n return this;\n }\n /**\n * Iterate over everything in the array after the given time.\n * @param time The time to check if items are before\n * @param callback The callback to invoke with every item\n */\n forEachAfter(time, callback) {\n // iterate over the items in reverse so that removing an item doesn't break things\n const lowerBound = this._search(time);\n this._iterate(callback, lowerBound + 1);\n return this;\n }\n /**\n * Iterate over everything in the array between the startTime and endTime.\n * The timerange is inclusive of the startTime, but exclusive of the endTime.\n * range = [startTime, endTime).\n * @param startTime The time to check if items are before\n * @param endTime The end of the test interval.\n * @param callback The callback to invoke with every item\n */\n forEachBetween(startTime, endTime, callback) {\n let lowerBound = this._search(startTime);\n let upperBound = this._search(endTime);\n if (lowerBound !== -1 && upperBound !== -1) {\n if (this._timeline[lowerBound].time !== startTime) {\n lowerBound += 1;\n }\n // exclusive of the end time\n if (this._timeline[upperBound].time === endTime) {\n upperBound -= 1;\n }\n this._iterate(callback, lowerBound, upperBound);\n }\n else if (lowerBound === -1) {\n this._iterate(callback, 0, upperBound);\n }\n return this;\n }\n /**\n * Iterate over everything in the array at or after the given time. Similar to\n * forEachAfter, but includes the item(s) at the given time.\n * @param time The time to check if items are before\n * @param callback The callback to invoke with every item\n */\n forEachFrom(time, callback) {\n // iterate over the items in reverse so that removing an item doesn't break things\n let lowerBound = this._search(time);\n // work backwards until the event time is less than time\n while (lowerBound >= 0 && this._timeline[lowerBound].time >= time) {\n lowerBound--;\n }\n this._iterate(callback, lowerBound + 1);\n return this;\n }\n /**\n * Iterate over everything in the array at the given time\n * @param time The time to check if items are before\n * @param callback The callback to invoke with every item\n */\n forEachAtTime(time, callback) {\n // iterate over the items in reverse so that removing an item doesn't break things\n const upperBound = this._search(time);\n if (upperBound !== -1 && EQ(this._timeline[upperBound].time, time)) {\n let lowerBound = upperBound;\n for (let i = upperBound; i >= 0; i--) {\n if (EQ(this._timeline[i].time, time)) {\n lowerBound = i;\n }\n else {\n break;\n }\n }\n this._iterate(event => {\n callback(event);\n }, lowerBound, upperBound);\n }\n return this;\n }\n /**\n * Clean up.\n */\n dispose() {\n super.dispose();\n this._timeline = [];\n return this;\n }\n}\n//# sourceMappingURL=Timeline.js.map","import { Tone } from \"../Tone\";\nimport { Seconds } from \"../type/Units\";\nimport { optionsFromArguments } from \"./Defaults\";\nimport { assert } from \"./Debug\";\nimport { EQ, GT, GTE, LT } from \"./Math\";\n\ntype TimelineSearchParam = \"ticks\" | \"time\";\n\n/**\n * The options object for Timeline\n */\ninterface TimelineOptions {\n\tmemory: number;\n\tincreasing: boolean;\n}\n\n/**\n * An event must have a time number\n */\nexport interface TimelineEvent {\n\ttime: number;\n}\n\n/**\n * A Timeline class for scheduling and maintaining state\n * along a timeline. All events must have a \"time\" property.\n * Internally, events are stored in time order for fast\n * retrieval.\n */\nexport class Timeline extends Tone {\n\n\treadonly name: string = \"Timeline\";\n\n\t/**\n\t * The memory of the timeline, i.e.\n\t * how many events in the past it will retain\n\t */\n\tmemory: number;\n\n\t/**\n\t * The array of scheduled timeline events\n\t */\n\tprotected _timeline: GenericEvent[] = [];\n\n\t/**\n\t * If the time value must always be greater than or equal to the last \n\t * element on the list. \n\t */\n\tincreasing: boolean;\n\n\t/**\n\t * @param memory The number of previous events that are retained.\n\t */\n\tconstructor(memory?: number);\n\tconstructor(options?: Partial);\n\tconstructor() {\n\t\tsuper();\n\t\tconst options = optionsFromArguments(Timeline.getDefaults(), arguments, [\"memory\"]);\n\n\t\tthis.memory = options.memory;\n\t\tthis.increasing = options.increasing;\n\t}\n\n\tstatic getDefaults(): TimelineOptions {\n\t\treturn {\n\t\t\tmemory: Infinity,\n\t\t\tincreasing: false,\n\t\t};\n\t}\n\n\t/**\n\t * The number of items in the timeline.\n\t */\n\tget length(): number {\n\t\treturn this._timeline.length;\n\t}\n\n\t/**\n\t * Insert an event object onto the timeline. Events must have a \"time\" attribute.\n\t * @param event The event object to insert into the timeline.\n\t */\n\tadd(event: GenericEvent): this {\n\t\t// the event needs to have a time attribute\n\t\tassert(Reflect.has(event, \"time\"), \"Timeline: events must have a time attribute\");\n\t\tevent.time = event.time.valueOf();\n\t\tif (this.increasing && this.length) {\n\t\t\tconst lastValue = this._timeline[this.length - 1] as GenericEvent;\n\t\t\tassert(GTE(event.time, lastValue.time), \"The time must be greater than or equal to the last scheduled time\");\n\t\t\tthis._timeline.push(event);\n\t\t} else {\n\t\t\tconst index = this._search(event.time);\n\t\t\tthis._timeline.splice(index + 1, 0, event);\n\t\t}\n\t\t// if the length is more than the memory, remove the previous ones\n\t\tif (this.length > this.memory) {\n\t\t\tconst diff = this.length - this.memory;\n\t\t\tthis._timeline.splice(0, diff);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Remove an event from the timeline.\n\t * @param {Object} event The event object to remove from the list.\n\t * @returns {Timeline} this\n\t */\n\tremove(event: GenericEvent): this {\n\t\tconst index = this._timeline.indexOf(event);\n\t\tif (index !== -1) {\n\t\t\tthis._timeline.splice(index, 1);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get the nearest event whose time is less than or equal to the given time.\n\t * @param time The time to query.\n\t */\n\tget(time: number, param: TimelineSearchParam = \"time\"): GenericEvent | null {\n\t\tconst index = this._search(time, param);\n\t\tif (index !== -1) {\n\t\t\treturn this._timeline[index];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Return the first event in the timeline without removing it\n\t * @returns {Object} The first event object\n\t */\n\tpeek(): GenericEvent | undefined {\n\t\treturn this._timeline[0];\n\t}\n\n\t/**\n\t * Return the first event in the timeline and remove it\n\t */\n\tshift(): GenericEvent | undefined {\n\t\treturn this._timeline.shift();\n\t}\n\n\t/**\n\t * Get the event which is scheduled after the given time.\n\t * @param time The time to query.\n\t */\n\tgetAfter(time: number, param: TimelineSearchParam = \"time\"): GenericEvent | null {\n\t\tconst index = this._search(time, param);\n\t\tif (index + 1 < this._timeline.length) {\n\t\t\treturn this._timeline[index + 1];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Get the event before the event at the given time.\n\t * @param time The time to query.\n\t */\n\tgetBefore(time: number): GenericEvent | null {\n\t\tconst len = this._timeline.length;\n\t\t// if it's after the last item, return the last item\n\t\tif (len > 0 && this._timeline[len - 1].time < time) {\n\t\t\treturn this._timeline[len - 1];\n\t\t}\n\t\tconst index = this._search(time);\n\t\tif (index - 1 >= 0) {\n\t\t\treturn this._timeline[index - 1];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Cancel events at and after the given time\n\t * @param after The time to query.\n\t */\n\tcancel(after: number): this {\n\t\tif (this._timeline.length > 1) {\n\t\t\tlet index = this._search(after);\n\t\t\tif (index >= 0) {\n\t\t\t\tif (EQ(this._timeline[index].time, after)) {\n\t\t\t\t\t// get the first item with that time\n\t\t\t\t\tfor (let i = index; i >= 0; i--) {\n\t\t\t\t\t\tif (EQ(this._timeline[i].time, after)) {\n\t\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis._timeline = this._timeline.slice(0, index);\n\t\t\t\t} else {\n\t\t\t\t\tthis._timeline = this._timeline.slice(0, index + 1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._timeline = [];\n\t\t\t}\n\t\t} else if (this._timeline.length === 1) {\n\t\t\t// the first item's time\n\t\t\tif (GTE(this._timeline[0].time, after)) {\n\t\t\t\tthis._timeline = [];\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Cancel events before or equal to the given time.\n\t * @param time The time to cancel before.\n\t */\n\tcancelBefore(time: number): this {\n\t\tconst index = this._search(time);\n\t\tif (index >= 0) {\n\t\t\tthis._timeline = this._timeline.slice(index + 1);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns the previous event if there is one. null otherwise\n\t * @param event The event to find the previous one of\n\t * @return The event right before the given event\n\t */\n\tpreviousEvent(event: GenericEvent): GenericEvent | null {\n\t\tconst index = this._timeline.indexOf(event);\n\t\tif (index > 0) {\n\t\t\treturn this._timeline[index - 1];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Does a binary search on the timeline array and returns the\n\t * nearest event index whose time is after or equal to the given time.\n\t * If a time is searched before the first index in the timeline, -1 is returned.\n\t * If the time is after the end, the index of the last item is returned.\n\t */\n\tprotected _search(time: number, param: TimelineSearchParam = \"time\"): number {\n\t\tif (this._timeline.length === 0) {\n\t\t\treturn -1;\n\t\t}\n\t\tlet beginning = 0;\n\t\tconst len = this._timeline.length;\n\t\tlet end = len;\n\t\tif (len > 0 && this._timeline[len - 1][param] <= time) {\n\t\t\treturn len - 1;\n\t\t}\n\t\twhile (beginning < end) {\n\t\t\t// calculate the midpoint for roughly equal partition\n\t\t\tlet midPoint = Math.floor(beginning + (end - beginning) / 2);\n\t\t\tconst event = this._timeline[midPoint];\n\t\t\tconst nextEvent = this._timeline[midPoint + 1];\n\t\t\tif (EQ(event[param], time)) {\n\t\t\t\t// choose the last one that has the same time\n\t\t\t\tfor (let i = midPoint; i < this._timeline.length; i++) {\n\t\t\t\t\tconst testEvent = this._timeline[i];\n\t\t\t\t\tif (EQ(testEvent[param], time)) {\n\t\t\t\t\t\tmidPoint = i;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn midPoint;\n\t\t\t} else if (LT(event[param], time) && GT(nextEvent[param], time)) {\n\t\t\t\treturn midPoint;\n\t\t\t} else if (GT(event[param], time)) {\n\t\t\t\t// search lower\n\t\t\t\tend = midPoint;\n\t\t\t} else {\n\t\t\t\t// search upper\n\t\t\t\tbeginning = midPoint + 1;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\n\t/**\n\t * Internal iterator. Applies extra safety checks for\n\t * removing items from the array.\n\t */\n\tprivate _iterate(\n\t\tcallback: (event: GenericEvent) => void,\n\t\tlowerBound = 0, upperBound = this._timeline.length - 1,\n\t): void {\n\t\tthis._timeline.slice(lowerBound, upperBound + 1).forEach(callback);\n\t}\n\n\t/**\n\t * Iterate over everything in the array\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEach(callback: (event: GenericEvent) => void): this {\n\t\tthis._iterate(callback);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array at or before the given time.\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachBefore(time: Seconds, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tconst upperBound = this._search(time);\n\t\tif (upperBound !== -1) {\n\t\t\tthis._iterate(callback, 0, upperBound);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array after the given time.\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachAfter(time: Seconds, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tconst lowerBound = this._search(time);\n\t\tthis._iterate(callback, lowerBound + 1);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array between the startTime and endTime.\n\t * The timerange is inclusive of the startTime, but exclusive of the endTime.\n\t * range = [startTime, endTime).\n\t * @param startTime The time to check if items are before\n\t * @param endTime The end of the test interval.\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachBetween(startTime: number, endTime: number, callback: (event: GenericEvent) => void): this {\n\t\tlet lowerBound = this._search(startTime);\n\t\tlet upperBound = this._search(endTime);\n\t\tif (lowerBound !== -1 && upperBound !== -1) {\n\t\t\tif (this._timeline[lowerBound].time !== startTime) {\n\t\t\t\tlowerBound += 1;\n\t\t\t}\n\t\t\t// exclusive of the end time\n\t\t\tif (this._timeline[upperBound].time === endTime) {\n\t\t\t\tupperBound -= 1;\n\t\t\t}\n\t\t\tthis._iterate(callback, lowerBound, upperBound);\n\t\t} else if (lowerBound === -1) {\n\t\t\tthis._iterate(callback, 0, upperBound);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array at or after the given time. Similar to\n\t * forEachAfter, but includes the item(s) at the given time.\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachFrom(time: number, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tlet lowerBound = this._search(time);\n\t\t// work backwards until the event time is less than time\n\t\twhile (lowerBound >= 0 && this._timeline[lowerBound].time >= time) {\n\t\t\tlowerBound--;\n\t\t}\n\t\tthis._iterate(callback, lowerBound + 1);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array at the given time\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachAtTime(time: number, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tconst upperBound = this._search(time);\n\t\tif (upperBound !== -1 && EQ(this._timeline[upperBound].time, time)) {\n\t\t\tlet lowerBound = upperBound;\n\t\t\tfor (let i = upperBound; i >= 0; i--) {\n\t\t\t\tif (EQ(this._timeline[i].time, time)) {\n\t\t\t\t\tlowerBound = i;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._iterate(event => {\n\t\t\t\tcallback(event);\n\t\t\t}, lowerBound, upperBound);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clean up.\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._timeline = [];\n\t\treturn this;\n\t}\n}\n","/**\n * Tone.js\n * @author Yotam Mann\n * @license http://opensource.org/licenses/MIT MIT License\n * @copyright 2014-2019 Yotam Mann\n */\nimport { version } from \"../version\";\nimport { theWindow } from \"./context/AudioContext\";\nimport { log } from \"./util/Debug\";\n/**\n * @class Tone is the base class of all other classes.\n * @category Core\n * @constructor\n */\nexport class Tone {\n constructor() {\n //-------------------------------------\n // \tDEBUGGING\n //-------------------------------------\n /**\n * Set this debug flag to log all events that happen in this class.\n */\n this.debug = false;\n //-------------------------------------\n // \tDISPOSING\n //-------------------------------------\n /**\n * Indicates if the instance was disposed\n */\n this._wasDisposed = false;\n }\n /**\n * Returns all of the default options belonging to the class.\n */\n static getDefaults() {\n return {};\n }\n /**\n * Prints the outputs to the console log for debugging purposes.\n * Prints the contents only if either the object has a property\n * called `debug` set to true, or a variable called TONE_DEBUG_CLASS\n * is set to the name of the class.\n * @example\n * const osc = new Tone.Oscillator();\n * // prints all logs originating from this oscillator\n * osc.debug = true;\n * // calls to start/stop will print in the console\n * osc.start();\n */\n log(...args) {\n // if the object is either set to debug = true\n // or if there is a string on the Tone.global.with the class name\n if (this.debug || (theWindow && this.toString() === theWindow.TONE_DEBUG_CLASS)) {\n log(this, ...args);\n }\n }\n /**\n * disconnect and dispose.\n */\n dispose() {\n this._wasDisposed = true;\n return this;\n }\n /**\n * Indicates if the instance was disposed. 'Disposing' an\n * instance means that all of the Web Audio nodes that were\n * created for the instance are disconnected and freed for garbage collection.\n */\n get disposed() {\n return this._wasDisposed;\n }\n /**\n * Convert the class to a string\n * @example\n * const osc = new Tone.Oscillator();\n * console.log(osc.toString());\n */\n toString() {\n return this.name;\n }\n}\n/**\n * The version number semver\n */\nTone.version = version;\n//# sourceMappingURL=Tone.js.map","/**\n * Tone.js\n * @author Yotam Mann\n * @license http://opensource.org/licenses/MIT MIT License\n * @copyright 2014-2019 Yotam Mann\n */\nimport { version } from \"../version\";\nimport { theWindow } from \"./context/AudioContext\";\nimport { log } from \"./util/Debug\";\n\n//-------------------------------------\n// \tTONE\n//-------------------------------------\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface BaseToneOptions { }\n\n/**\n * @class Tone is the base class of all other classes.\n * @category Core\n * @constructor\n */\nexport abstract class Tone {\n\n\t/**\n\t * The version number semver\n\t */\n\tstatic version: string = version;\n\n\t/**\n\t * The name of the class\n\t */\n\tprotected abstract name: string;\n\n\t/**\n\t * Returns all of the default options belonging to the class.\n\t */\n\tstatic getDefaults(): BaseToneOptions {\n\t\treturn {};\n\t}\n\n\t//-------------------------------------\n\t// \tDEBUGGING\n\t//-------------------------------------\n\n\t/**\n\t * Set this debug flag to log all events that happen in this class.\n\t */\n\tdebug = false;\n\n\t/**\n\t * Prints the outputs to the console log for debugging purposes.\n\t * Prints the contents only if either the object has a property\n\t * called `debug` set to true, or a variable called TONE_DEBUG_CLASS\n\t * is set to the name of the class.\n\t * @example\n\t * const osc = new Tone.Oscillator();\n\t * // prints all logs originating from this oscillator\n\t * osc.debug = true;\n\t * // calls to start/stop will print in the console\n\t * osc.start();\n\t */\n\tprotected log(...args: any[]): void {\n\t\t// if the object is either set to debug = true\n\t\t// or if there is a string on the Tone.global.with the class name\n\t\tif (this.debug || (theWindow && this.toString() === theWindow.TONE_DEBUG_CLASS)) {\n\t\t\tlog(this, ...args);\n\t\t}\n\t}\n\n\t//-------------------------------------\n\t// \tDISPOSING\n\t//-------------------------------------\n\n\t/**\n\t * Indicates if the instance was disposed\n\t */\n\tprivate _wasDisposed = false;\n\n\t/**\n\t * disconnect and dispose.\n\t */\n\tdispose(): this {\n\t\tthis._wasDisposed = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Indicates if the instance was disposed. 'Disposing' an\n\t * instance means that all of the Web Audio nodes that were\n\t * created for the instance are disconnected and freed for garbage collection.\n\t */\n\tget disposed(): boolean {\n\t\treturn this._wasDisposed;\n\t}\n\n\t/**\n\t * Convert the class to a string\n\t * @example\n\t * const osc = new Tone.Oscillator();\n\t * console.log(osc.toString());\n\t */\n\ttoString(): string {\n\t\treturn this.name;\n\t}\n}\n","/**\n * The threshold for correctness for operators. Less than one sample even\n * at very high sampling rates (e.g. `1e-6 < 1 / 192000`).\n */\nconst EPSILON = 1e-6;\n/**\n * Test if A is greater than B\n */\nexport function GT(a, b) {\n return a > b + EPSILON;\n}\n/**\n * Test if A is greater than or equal to B\n */\nexport function GTE(a, b) {\n return GT(a, b) || EQ(a, b);\n}\n/**\n * Test if A is less than B\n */\nexport function LT(a, b) {\n return a + EPSILON < b;\n}\n/**\n * Test if A is less than B\n */\nexport function EQ(a, b) {\n return Math.abs(a - b) < EPSILON;\n}\n/**\n * Clamp the value within the given range\n */\nexport function clamp(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}\n//# sourceMappingURL=Math.js.map","/**\n * The threshold for correctness for operators. Less than one sample even \n * at very high sampling rates (e.g. `1e-6 < 1 / 192000`).\n */\nconst EPSILON = 1e-6;\n\n/**\n * Test if A is greater than B\n */\nexport function GT(a: number, b: number): boolean {\n\treturn a > b + EPSILON;\n}\n\n/**\n * Test if A is greater than or equal to B\n */\nexport function GTE(a: number, b: number): boolean {\n\treturn GT(a, b) || EQ(a, b);\n}\n\n/**\n * Test if A is less than B\n */\nexport function LT(a: number, b: number): boolean {\n\treturn a + EPSILON < b;\n}\n\n/**\n * Test if A is less than B\n */\nexport function EQ(a: number, b: number): boolean {\n\treturn Math.abs(a - b) < EPSILON;\n}\n\n/**\n * Clamp the value within the given range\n */\nexport function clamp(value: number, min: number, max: number): number {\n\treturn Math.max(Math.min(value, max), min);\n}\n","//-------------------------------------\n// INITIALIZING NEW CONTEXT\n//-------------------------------------\n/**\n * Array of callbacks to invoke when a new context is created\n */\nconst notifyNewContext = [];\n/**\n * Used internally to setup a new Context\n */\nexport function onContextInit(cb) {\n notifyNewContext.push(cb);\n}\n/**\n * Invoke any classes which need to also be initialized when a new context is created.\n */\nexport function initializeContext(ctx) {\n // add any additional modules\n notifyNewContext.forEach(cb => cb(ctx));\n}\n/**\n * Array of callbacks to invoke when a new context is created\n */\nconst notifyCloseContext = [];\n/**\n * Used internally to tear down a Context\n */\nexport function onContextClose(cb) {\n notifyCloseContext.push(cb);\n}\nexport function closeContext(ctx) {\n // add any additional modules\n notifyCloseContext.forEach(cb => cb(ctx));\n}\n//# sourceMappingURL=ContextInitialization.js.map","//-------------------------------------\n// INITIALIZING NEW CONTEXT\n//-------------------------------------\n\ntype Context = import(\"./Context\").Context;\n\n/**\n * Array of callbacks to invoke when a new context is created\n */\nconst notifyNewContext: Array<(ctx: Context) => void> = [];\n\n/**\n * Used internally to setup a new Context\n */\nexport function onContextInit(cb: (ctx: Context) => void): void {\n\tnotifyNewContext.push(cb);\n}\n\n/**\n * Invoke any classes which need to also be initialized when a new context is created.\n */\nexport function initializeContext(ctx: Context): void {\n\t// add any additional modules\n\tnotifyNewContext.forEach(cb => cb(ctx));\n}\n\n/**\n * Array of callbacks to invoke when a new context is created\n */\nconst notifyCloseContext: Array<(ctx: Context) => void> = [];\n\n/**\n * Used internally to tear down a Context\n */\nexport function onContextClose(cb: (ctx: Context) => void): void {\n\tnotifyCloseContext.push(cb);\n}\n\nexport function closeContext(ctx: Context): void {\n\t// add any additional modules\n\tnotifyCloseContext.forEach(cb => cb(ctx));\n}\n","import { Emitter } from \"../util/Emitter\";\nexport class BaseContext extends Emitter {\n constructor() {\n super(...arguments);\n this.isOffline = false;\n }\n /*\n * This is a placeholder so that JSON.stringify does not throw an error\n * This matches what JSON.stringify(audioContext) returns on a native\n * audioContext instance.\n */\n toJSON() {\n return {};\n }\n}\n//# sourceMappingURL=BaseContext.js.map","import { Seconds } from \"../type/Units\";\nimport { Emitter } from \"../util/Emitter\";\nimport { AnyAudioContext } from \"./AudioContext\";\n\ntype Draw = import(\"../util/Draw\").Draw;\ntype Destination = import(\"./Destination\").Destination;\ntype Transport = import(\"../clock/Transport\").Transport;\ntype Listener = import(\"./Listener\").Listener;\n\n// these are either not used in Tone.js or deprecated and not implemented.\nexport type ExcludedFromBaseAudioContext =\n\t| \"onstatechange\"\n\t| \"addEventListener\"\n\t| \"removeEventListener\"\n\t| \"listener\"\n\t| \"dispatchEvent\"\n\t| \"audioWorklet\"\n\t| \"destination\"\n\t| \"createScriptProcessor\";\n\n// the subset of the BaseAudioContext which Tone.Context implements.\nexport type BaseAudioContextSubset = Omit<\nBaseAudioContext,\nExcludedFromBaseAudioContext\n>;\n\nexport type ContextLatencyHint = AudioContextLatencyCategory;\n\nexport abstract class BaseContext\n\textends Emitter<\"statechange\" | \"tick\">\n\timplements BaseAudioContextSubset {\n\t//---------------------------\n\t// BASE AUDIO CONTEXT METHODS\n\t//---------------------------\n\tabstract createAnalyser(): AnalyserNode;\n\n\tabstract createOscillator(): OscillatorNode;\n\n\tabstract createBufferSource(): AudioBufferSourceNode;\n\n\tabstract createBiquadFilter(): BiquadFilterNode;\n\n\tabstract createBuffer(\n\t\t_numberOfChannels: number,\n\t\t_length: number,\n\t\t_sampleRate: number\n\t): AudioBuffer;\n\n\tabstract createChannelMerger(\n\t\t_numberOfInputs?: number | undefined\n\t): ChannelMergerNode;\n\n\tabstract createChannelSplitter(\n\t\t_numberOfOutputs?: number | undefined\n\t): ChannelSplitterNode;\n\n\tabstract createConstantSource(): ConstantSourceNode;\n\n\tabstract createConvolver(): ConvolverNode;\n\n\tabstract createDelay(_maxDelayTime?: number | undefined): DelayNode;\n\n\tabstract createDynamicsCompressor(): DynamicsCompressorNode;\n\n\tabstract createGain(): GainNode;\n\n\tabstract createIIRFilter(\n\t\t_feedForward: number[] | Float32Array,\n\t\t_feedback: number[] | Float32Array\n\t): IIRFilterNode;\n\n\tabstract createPanner(): PannerNode;\n\n\tabstract createPeriodicWave(\n\t\t_real: number[] | Float32Array,\n\t\t_imag: number[] | Float32Array,\n\t\t_constraints?: PeriodicWaveConstraints | undefined\n\t): PeriodicWave;\n\n\tabstract createStereoPanner(): StereoPannerNode;\n\n\tabstract createWaveShaper(): WaveShaperNode;\n\n\tabstract createMediaStreamSource(\n\t\t_stream: MediaStream\n\t): MediaStreamAudioSourceNode;\n\n\tabstract createMediaElementSource(\n\t\t_element: HTMLMediaElement\n\t): MediaElementAudioSourceNode;\n\n\tabstract createMediaStreamDestination(): MediaStreamAudioDestinationNode;\n\n\tabstract decodeAudioData(_audioData: ArrayBuffer): Promise;\n\n\t//---------------------------\n\t// TONE AUDIO CONTEXT METHODS\n\t//---------------------------\n\n\tabstract createAudioWorkletNode(\n\t\t_name: string,\n\t\t_options?: Partial\n\t): AudioWorkletNode;\n\n\tabstract get rawContext(): AnyAudioContext;\n\n\tabstract async addAudioWorkletModule(\n\t\t_url: string,\n\t\t_name: string\n\t): Promise;\n\n\tabstract lookAhead: number;\n\n\tabstract latencyHint: ContextLatencyHint | Seconds;\n\n\tabstract resume(): Promise;\n\n\tabstract setTimeout(\n\t\t_fn: (...args: any[]) => void,\n\t\t_timeout: Seconds\n\t): number;\n\n\tabstract clearTimeout(_id: number): this;\n\n\tabstract setInterval(\n\t\t_fn: (...args: any[]) => void,\n\t\t_interval: Seconds\n\t): number;\n\n\tabstract clearInterval(_id: number): this;\n\n\tabstract getConstant(_val: number): AudioBufferSourceNode;\n\n\tabstract get currentTime(): Seconds;\n\n\tabstract get state(): AudioContextState;\n\n\tabstract get sampleRate(): number;\n\n\tabstract get listener(): Listener;\n\n\tabstract get transport(): Transport;\n\n\tabstract get draw(): Draw;\n\n\tabstract get destination(): Destination;\n\n\tabstract now(): Seconds;\n\n\tabstract immediate(): Seconds;\n\n\t/*\n\t * This is a placeholder so that JSON.stringify does not throw an error\n\t * This matches what JSON.stringify(audioContext) returns on a native\n\t * audioContext instance.\n\t */\n\ttoJSON(): Record {\n\t\treturn {};\n\t}\n\n\treadonly isOffline: boolean = false;\n}\n","import { Tone } from \"../Tone\";\nimport { isUndef } from \"./TypeCheck\";\n/**\n * Emitter gives classes which extend it\n * the ability to listen for and emit events.\n * Inspiration and reference from Jerome Etienne's [MicroEvent](https://github.com/jeromeetienne/microevent.js).\n * MIT (c) 2011 Jerome Etienne.\n * @category Core\n */\nexport class Emitter extends Tone {\n constructor() {\n super(...arguments);\n this.name = \"Emitter\";\n }\n /**\n * Bind a callback to a specific event.\n * @param event The name of the event to listen for.\n * @param callback The callback to invoke when the event is emitted\n */\n on(event, callback) {\n // split the event\n const events = event.split(/\\W+/);\n events.forEach(eventName => {\n if (isUndef(this._events)) {\n this._events = {};\n }\n if (!this._events.hasOwnProperty(eventName)) {\n this._events[eventName] = [];\n }\n this._events[eventName].push(callback);\n });\n return this;\n }\n /**\n * Bind a callback which is only invoked once\n * @param event The name of the event to listen for.\n * @param callback The callback to invoke when the event is emitted\n */\n once(event, callback) {\n const boundCallback = (...args) => {\n // invoke the callback\n callback(...args);\n // remove the event\n this.off(event, boundCallback);\n };\n this.on(event, boundCallback);\n return this;\n }\n /**\n * Remove the event listener.\n * @param event The event to stop listening to.\n * @param callback The callback which was bound to the event with Emitter.on.\n * If no callback is given, all callbacks events are removed.\n */\n off(event, callback) {\n const events = event.split(/\\W+/);\n events.forEach(eventName => {\n if (isUndef(this._events)) {\n this._events = {};\n }\n if (this._events.hasOwnProperty(event)) {\n if (isUndef(callback)) {\n this._events[event] = [];\n }\n else {\n const eventList = this._events[event];\n for (let i = eventList.length - 1; i >= 0; i--) {\n if (eventList[i] === callback) {\n eventList.splice(i, 1);\n }\n }\n }\n }\n });\n return this;\n }\n /**\n * Invoke all of the callbacks bound to the event\n * with any arguments passed in.\n * @param event The name of the event.\n * @param args The arguments to pass to the functions listening.\n */\n emit(event, ...args) {\n if (this._events) {\n if (this._events.hasOwnProperty(event)) {\n const eventList = this._events[event].slice(0);\n for (let i = 0, len = eventList.length; i < len; i++) {\n eventList[i].apply(this, args);\n }\n }\n }\n return this;\n }\n /**\n * Add Emitter functions (on/off/emit) to the object\n */\n static mixin(constr) {\n // instance._events = {};\n [\"on\", \"once\", \"off\", \"emit\"].forEach(name => {\n const property = Object.getOwnPropertyDescriptor(Emitter.prototype, name);\n Object.defineProperty(constr.prototype, name, property);\n });\n }\n /**\n * Clean up\n */\n dispose() {\n super.dispose();\n this._events = undefined;\n return this;\n }\n}\n//# sourceMappingURL=Emitter.js.map","import { Tone } from \"../Tone\";\nimport { isUndef } from \"./TypeCheck\";\n\nexport interface EmitterEventObject {\n\t[event: string]: Array<(...args: any[]) => void>;\n}\n\n/**\n * Emitter gives classes which extend it\n * the ability to listen for and emit events.\n * Inspiration and reference from Jerome Etienne's [MicroEvent](https://github.com/jeromeetienne/microevent.js).\n * MIT (c) 2011 Jerome Etienne.\n * @category Core\n */\nexport class Emitter extends Tone {\n\n\treadonly name: string = \"Emitter\";\n\n\t/**\n\t * Private container for the events\n\t */\n\tprivate _events?: EmitterEventObject;\n\n\t/**\n\t * Bind a callback to a specific event.\n\t * @param event The name of the event to listen for.\n\t * @param callback The callback to invoke when the event is emitted\n\t */\n\ton(event: EventType, callback: (...args: any[]) => void): this {\n\t\t// split the event\n\t\tconst events = event.split(/\\W+/);\n\t\tevents.forEach(eventName => {\n\t\t\tif (isUndef(this._events)) {\n\t\t\t\tthis._events = {};\n\t\t\t}\n\t\t\tif (!this._events.hasOwnProperty(eventName)) {\n\t\t\t\tthis._events[eventName] = [];\n\t\t\t}\n\t\t\tthis._events[eventName].push(callback);\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Bind a callback which is only invoked once\n\t * @param event The name of the event to listen for.\n\t * @param callback The callback to invoke when the event is emitted\n\t */\n\tonce(event: EventType, callback: (...args: any[]) => void): this {\n\t\tconst boundCallback = (...args: any[]) => {\n\t\t\t// invoke the callback\n\t\t\tcallback(...args);\n\t\t\t// remove the event\n\t\t\tthis.off(event, boundCallback);\n\t\t};\n\t\tthis.on(event, boundCallback);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Remove the event listener.\n\t * @param event The event to stop listening to.\n\t * @param callback The callback which was bound to the event with Emitter.on.\n\t * If no callback is given, all callbacks events are removed.\n\t */\n\toff(event: EventType, callback?: (...args: any[]) => void): this {\n\t\tconst events = event.split(/\\W+/);\n\t\tevents.forEach(eventName => {\n\t\t\tif (isUndef(this._events)) {\n\t\t\t\tthis._events = {};\n\t\t\t}\n\t\t\tif (this._events.hasOwnProperty(event)) {\n\t\t\t\tif (isUndef(callback)) {\n\t\t\t\t\tthis._events[event] = [];\n\t\t\t\t} else {\n\t\t\t\t\tconst eventList = this._events[event];\n\t\t\t\t\tfor (let i = eventList.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (eventList[i] === callback) {\n\t\t\t\t\t\t\teventList.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Invoke all of the callbacks bound to the event\n\t * with any arguments passed in.\n\t * @param event The name of the event.\n\t * @param args The arguments to pass to the functions listening.\n\t */\n\temit(event, ...args: any[]): this {\n\t\tif (this._events) {\n\t\t\tif (this._events.hasOwnProperty(event)) {\n\t\t\t\tconst eventList = this._events[event].slice(0);\n\t\t\t\tfor (let i = 0, len = eventList.length; i < len; i++) {\n\t\t\t\t\teventList[i].apply(this, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add Emitter functions (on/off/emit) to the object\n\t */\n\tstatic mixin(constr: any): void {\n\t\t// instance._events = {};\n\t\t[\"on\", \"once\", \"off\", \"emit\"].forEach(name => {\n\t\t\tconst property = Object.getOwnPropertyDescriptor(Emitter.prototype, name) as PropertyDescriptor;\n\t\t\tObject.defineProperty(constr.prototype, name, property);\n\t\t});\n\t}\n\n\t/**\n\t * Clean up\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._events = undefined;\n\t\treturn this;\n\t}\n}\n","import { __awaiter } from \"tslib\";\nimport { BaseContext } from \"./BaseContext\";\nexport class DummyContext extends BaseContext {\n constructor() {\n super(...arguments);\n this.lookAhead = 0;\n this.latencyHint = 0;\n this.isOffline = false;\n }\n //---------------------------\n // BASE AUDIO CONTEXT METHODS\n //---------------------------\n createAnalyser() {\n return {};\n }\n createOscillator() {\n return {};\n }\n createBufferSource() {\n return {};\n }\n createBiquadFilter() {\n return {};\n }\n createBuffer(_numberOfChannels, _length, _sampleRate) {\n return {};\n }\n createChannelMerger(_numberOfInputs) {\n return {};\n }\n createChannelSplitter(_numberOfOutputs) {\n return {};\n }\n createConstantSource() {\n return {};\n }\n createConvolver() {\n return {};\n }\n createDelay(_maxDelayTime) {\n return {};\n }\n createDynamicsCompressor() {\n return {};\n }\n createGain() {\n return {};\n }\n createIIRFilter(_feedForward, _feedback) {\n return {};\n }\n createPanner() {\n return {};\n }\n createPeriodicWave(_real, _imag, _constraints) {\n return {};\n }\n createStereoPanner() {\n return {};\n }\n createWaveShaper() {\n return {};\n }\n createMediaStreamSource(_stream) {\n return {};\n }\n createMediaElementSource(_element) {\n return {};\n }\n createMediaStreamDestination() {\n return {};\n }\n decodeAudioData(_audioData) {\n return Promise.resolve({});\n }\n //---------------------------\n // TONE AUDIO CONTEXT METHODS\n //---------------------------\n createAudioWorkletNode(_name, _options) {\n return {};\n }\n get rawContext() {\n return {};\n }\n addAudioWorkletModule(_url, _name) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve();\n });\n }\n resume() {\n return Promise.resolve();\n }\n setTimeout(_fn, _timeout) {\n return 0;\n }\n clearTimeout(_id) {\n return this;\n }\n setInterval(_fn, _interval) {\n return 0;\n }\n clearInterval(_id) {\n return this;\n }\n getConstant(_val) {\n return {};\n }\n get currentTime() {\n return 0;\n }\n get state() {\n return {};\n }\n get sampleRate() {\n return 0;\n }\n get listener() {\n return {};\n }\n get transport() {\n return {};\n }\n get draw() {\n return {};\n }\n set draw(_d) { }\n get destination() {\n return {};\n }\n set destination(_d) { }\n now() {\n return 0;\n }\n immediate() {\n return 0;\n }\n}\n//# sourceMappingURL=DummyContext.js.map","import { BaseContext } from \"./BaseContext\";\nimport { Seconds } from \"../type/Units\";\nimport { AnyAudioContext } from \"./AudioContext\";\n\ntype Draw = import(\"../util/Draw\").Draw;\ntype Destination = import(\"./Destination\").Destination;\ntype Transport = import(\"../clock/Transport\").Transport;\ntype Listener = import(\"./Listener\").Listener;\n\nexport class DummyContext extends BaseContext {\n\t//---------------------------\n\t// BASE AUDIO CONTEXT METHODS\n\t//---------------------------\n\tcreateAnalyser(): AnalyserNode {\n\t\treturn {} as AnalyserNode;\n\t}\n\n\tcreateOscillator(): OscillatorNode {\n\t\treturn {} as OscillatorNode;\n\t}\n\n\tcreateBufferSource() {\n\t\treturn {} as AudioBufferSourceNode;\n\t}\n\n\tcreateBiquadFilter(): BiquadFilterNode {\n\t\treturn {} as BiquadFilterNode;\n\t}\n\n\tcreateBuffer(\n\t\t_numberOfChannels: number,\n\t\t_length: number,\n\t\t_sampleRate: number\n\t): AudioBuffer {\n\t\treturn {} as AudioBuffer;\n\t}\n\n\tcreateChannelMerger(\n\t\t_numberOfInputs?: number | undefined\n\t): ChannelMergerNode {\n\t\treturn {} as ChannelMergerNode;\n\t}\n\n\tcreateChannelSplitter(\n\t\t_numberOfOutputs?: number | undefined\n\t): ChannelSplitterNode {\n\t\treturn {} as ChannelSplitterNode;\n\t}\n\n\tcreateConstantSource(): ConstantSourceNode {\n\t\treturn {} as ConstantSourceNode;\n\t}\n\n\tcreateConvolver(): ConvolverNode {\n\t\treturn {} as ConvolverNode;\n\t}\n\n\tcreateDelay(_maxDelayTime?: number | undefined): DelayNode {\n\t\treturn {} as DelayNode;\n\t}\n\n\tcreateDynamicsCompressor(): DynamicsCompressorNode {\n\t\treturn {} as DynamicsCompressorNode;\n\t}\n\n\tcreateGain(): GainNode {\n\t\treturn {} as GainNode;\n\t}\n\n\tcreateIIRFilter(\n\t\t_feedForward: number[] | Float32Array,\n\t\t_feedback: number[] | Float32Array\n\t): IIRFilterNode {\n\t\treturn {} as IIRFilterNode;\n\t}\n\n\tcreatePanner(): PannerNode {\n\t\treturn {} as PannerNode;\n\t}\n\n\tcreatePeriodicWave(\n\t\t_real: number[] | Float32Array,\n\t\t_imag: number[] | Float32Array,\n\t\t_constraints?: PeriodicWaveConstraints | undefined\n\t): PeriodicWave {\n\t\treturn {} as PeriodicWave;\n\t}\n\n\tcreateStereoPanner(): StereoPannerNode {\n\t\treturn {} as StereoPannerNode;\n\t}\n\n\tcreateWaveShaper(): WaveShaperNode {\n\t\treturn {} as WaveShaperNode;\n\t}\n\n\tcreateMediaStreamSource(_stream: MediaStream): MediaStreamAudioSourceNode {\n\t\treturn {} as MediaStreamAudioSourceNode;\n\t}\n\n\tcreateMediaElementSource(\n\t\t_element: HTMLMediaElement\n\t): MediaElementAudioSourceNode {\n\t\treturn {} as MediaElementAudioSourceNode;\n\t}\n\n\tcreateMediaStreamDestination(): MediaStreamAudioDestinationNode {\n\t\treturn {} as MediaStreamAudioDestinationNode;\n\t}\n\n\tdecodeAudioData(_audioData: ArrayBuffer): Promise {\n\t\treturn Promise.resolve({} as AudioBuffer);\n\t}\n\n\t//---------------------------\n\t// TONE AUDIO CONTEXT METHODS\n\t//---------------------------\n\n\tcreateAudioWorkletNode(\n\t\t_name: string,\n\t\t_options?: Partial\n\t): AudioWorkletNode {\n\t\treturn {} as AudioWorkletNode;\n\t}\n\n\tget rawContext(): AnyAudioContext {\n\t\treturn {} as AnyAudioContext;\n\t}\n\n\tasync addAudioWorkletModule(_url: string, _name: string): Promise {\n\t\treturn Promise.resolve();\n\t}\n\n\tlookAhead = 0;\n\n\tlatencyHint = 0;\n\n\tresume(): Promise {\n\t\treturn Promise.resolve();\n\t}\n\n\tsetTimeout(_fn: (...args: any[]) => void, _timeout: Seconds): number {\n\t\treturn 0;\n\t}\n\n\tclearTimeout(_id: number): this {\n\t\treturn this;\n\t}\n\n\tsetInterval(_fn: (...args: any[]) => void, _interval: Seconds): number {\n\t\treturn 0;\n\t}\n\n\tclearInterval(_id: number): this {\n\t\treturn this;\n\t}\n\n\tgetConstant(_val: number): AudioBufferSourceNode {\n\t\treturn {} as AudioBufferSourceNode;\n\t}\n\n\tget currentTime(): Seconds {\n\t\treturn 0;\n\t}\n\n\tget state(): AudioContextState {\n\t\treturn {} as AudioContextState;\n\t}\n\n\tget sampleRate(): number {\n\t\treturn 0;\n\t}\n\n\tget listener(): Listener {\n\t\treturn {} as Listener;\n\t}\n\n\tget transport(): Transport {\n\t\treturn {} as Transport;\n\t}\n\n\tget draw(): Draw {\n\t\treturn {} as Draw;\n\t}\n\tset draw(_d) {}\n\n\tget destination(): Destination {\n\t\treturn {} as Destination;\n\t}\n\tset destination(_d: Destination) {}\n\n\tnow() {\n\t\treturn 0;\n\t}\n\n\timmediate() {\n\t\treturn 0;\n\t}\n\n\treadonly isOffline: boolean = false;\n}\n","import { __awaiter } from \"tslib\";\nimport { createOfflineAudioContext } from \"../context/AudioContext\";\nimport { Context } from \"../context/Context\";\nimport { isOfflineAudioContext } from \"../util/AdvancedTypeCheck\";\nimport { ToneAudioBuffer } from \"./ToneAudioBuffer\";\n/**\n * Wrapper around the OfflineAudioContext\n * @category Core\n * @example\n * // generate a single channel, 0.5 second buffer\n * const context = new Tone.OfflineContext(1, 0.5, 44100);\n * const osc = new Tone.Oscillator({ context });\n * context.render().then(buffer => {\n * \tconsole.log(buffer.numberOfChannels, buffer.duration);\n * });\n */\nexport class OfflineContext extends Context {\n constructor() {\n super({\n clockSource: \"offline\",\n context: isOfflineAudioContext(arguments[0]) ?\n arguments[0] : createOfflineAudioContext(arguments[0], arguments[1] * arguments[2], arguments[2]),\n lookAhead: 0,\n updateInterval: isOfflineAudioContext(arguments[0]) ?\n 128 / arguments[0].sampleRate : 128 / arguments[2],\n });\n this.name = \"OfflineContext\";\n /**\n * An artificial clock source\n */\n this._currentTime = 0;\n this.isOffline = true;\n this._duration = isOfflineAudioContext(arguments[0]) ?\n arguments[0].length / arguments[0].sampleRate : arguments[1];\n }\n /**\n * Override the now method to point to the internal clock time\n */\n now() {\n return this._currentTime;\n }\n /**\n * Same as this.now()\n */\n get currentTime() {\n return this._currentTime;\n }\n /**\n * Render just the clock portion of the audio context.\n */\n _renderClock(asynchronous) {\n return __awaiter(this, void 0, void 0, function* () {\n let index = 0;\n while (this._duration - this._currentTime >= 0) {\n // invoke all the callbacks on that time\n this.emit(\"tick\");\n // increment the clock in block-sized chunks\n this._currentTime += 128 / this.sampleRate;\n // yield once a second of audio\n index++;\n const yieldEvery = Math.floor(this.sampleRate / 128);\n if (asynchronous && index % yieldEvery === 0) {\n yield new Promise(done => setTimeout(done, 1));\n }\n }\n });\n }\n /**\n * Render the output of the OfflineContext\n * @param asynchronous If the clock should be rendered asynchronously, which will not block the main thread, but be slightly slower.\n */\n render(asynchronous = true) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.workletsAreReady();\n yield this._renderClock(asynchronous);\n const buffer = yield this._context.startRendering();\n return new ToneAudioBuffer(buffer);\n });\n }\n /**\n * Close the context\n */\n close() {\n return Promise.resolve();\n }\n}\n//# sourceMappingURL=OfflineContext.js.map","import { createOfflineAudioContext } from \"../context/AudioContext\";\nimport { Context } from \"../context/Context\";\nimport { Seconds } from \"../type/Units\";\nimport { isOfflineAudioContext } from \"../util/AdvancedTypeCheck\";\nimport { ToneAudioBuffer } from \"./ToneAudioBuffer\";\n\n/**\n * Wrapper around the OfflineAudioContext\n * @category Core\n * @example\n * // generate a single channel, 0.5 second buffer\n * const context = new Tone.OfflineContext(1, 0.5, 44100);\n * const osc = new Tone.Oscillator({ context });\n * context.render().then(buffer => {\n * \tconsole.log(buffer.numberOfChannels, buffer.duration);\n * });\n */\nexport class OfflineContext extends Context {\n\n\treadonly name: string = \"OfflineContext\";\n\n\t/**\n\t * A private reference to the duration\n\t */\n\tprivate readonly _duration: Seconds;\n\n\t/**\n\t * An artificial clock source\n\t */\n\tprivate _currentTime: Seconds = 0;\n\n\t/**\n\t * Private reference to the OfflineAudioContext.\n\t */\n\tprotected _context!: OfflineAudioContext;\n\n\treadonly isOffline: boolean = true;\n\n\t/**\n\t * @param channels The number of channels to render\n\t * @param duration The duration to render in seconds\n\t * @param sampleRate the sample rate to render at\n\t */\n\tconstructor(\n\t\tchannels: number,\n\t\tduration: Seconds, \n\t\tsampleRate: number,\n\t);\n\tconstructor(context: OfflineAudioContext);\n\tconstructor() {\n\n\t\tsuper({\n\t\t\tclockSource: \"offline\",\n\t\t\tcontext: isOfflineAudioContext(arguments[0]) ?\n\t\t\t\targuments[0] : createOfflineAudioContext(arguments[0], arguments[1] * arguments[2], arguments[2]),\n\t\t\tlookAhead: 0,\n\t\t\tupdateInterval: isOfflineAudioContext(arguments[0]) ?\n\t\t\t\t128 / arguments[0].sampleRate : 128 / arguments[2],\n\t\t});\n\n\t\tthis._duration = isOfflineAudioContext(arguments[0]) ?\n\t\t\targuments[0].length / arguments[0].sampleRate : arguments[1];\n\t}\n\n\t/**\n\t * Override the now method to point to the internal clock time\n\t */\n\tnow(): Seconds {\n\t\treturn this._currentTime;\n\t}\n\n\t/**\n\t * Same as this.now()\n\t */\n\tget currentTime(): Seconds {\n\t\treturn this._currentTime;\n\t}\n\n\t/**\n\t * Render just the clock portion of the audio context.\n\t */\n\tprivate async _renderClock(asynchronous: boolean): Promise {\n\t\tlet index = 0;\n\t\twhile (this._duration - this._currentTime >= 0) {\n\n\t\t\t// invoke all the callbacks on that time\n\t\t\tthis.emit(\"tick\");\n\n\t\t\t// increment the clock in block-sized chunks\n\t\t\tthis._currentTime += 128 / this.sampleRate;\n\n\t\t\t// yield once a second of audio\n\t\t\tindex++;\n\t\t\tconst yieldEvery = Math.floor(this.sampleRate / 128);\n\t\t\tif (asynchronous && index % yieldEvery === 0) {\n\t\t\t\tawait new Promise(done => setTimeout(done, 1));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Render the output of the OfflineContext\n\t * @param asynchronous If the clock should be rendered asynchronously, which will not block the main thread, but be slightly slower.\n\t */\n\tasync render(asynchronous = true): Promise {\n\t\tawait this.workletsAreReady();\n\t\tawait this._renderClock(asynchronous);\n\t\tconst buffer = await this._context.startRendering();\n\t\treturn new ToneAudioBuffer(buffer);\n\t}\n\n\t/**\n\t * Close the context\n\t */\n\tclose(): Promise {\n\t\treturn Promise.resolve();\n\t}\n}\n","import { __awaiter } from \"tslib\";\nimport { getContext } from \"../Global\";\nimport { Tone } from \"../Tone\";\nimport { isAudioBuffer } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { noOp } from \"../util/Interface\";\nimport { isArray, isNumber, isString } from \"../util/TypeCheck\";\nimport { assert } from \"../util/Debug\";\n/**\n * AudioBuffer loading and storage. ToneAudioBuffer is used internally by all\n * classes that make requests for audio files such as Tone.Player,\n * Tone.Sampler and Tone.Convolver.\n * @example\n * const buffer = new Tone.ToneAudioBuffer(\"https://tonejs.github.io/audio/casio/A1.mp3\", () => {\n * \tconsole.log(\"loaded\");\n * });\n * @category Core\n */\nexport class ToneAudioBuffer extends Tone {\n constructor() {\n super();\n this.name = \"ToneAudioBuffer\";\n /**\n * Callback when the buffer is loaded.\n */\n this.onload = noOp;\n const options = optionsFromArguments(ToneAudioBuffer.getDefaults(), arguments, [\"url\", \"onload\", \"onerror\"]);\n this.reverse = options.reverse;\n this.onload = options.onload;\n if (options.url && isAudioBuffer(options.url) || options.url instanceof ToneAudioBuffer) {\n this.set(options.url);\n }\n else if (isString(options.url)) {\n // initiate the download\n this.load(options.url).catch(options.onerror);\n }\n }\n static getDefaults() {\n return {\n onerror: noOp,\n onload: noOp,\n reverse: false,\n };\n }\n /**\n * The sample rate of the AudioBuffer\n */\n get sampleRate() {\n if (this._buffer) {\n return this._buffer.sampleRate;\n }\n else {\n return getContext().sampleRate;\n }\n }\n /**\n * Pass in an AudioBuffer or ToneAudioBuffer to set the value of this buffer.\n */\n set(buffer) {\n if (buffer instanceof ToneAudioBuffer) {\n // if it's loaded, set it\n if (buffer.loaded) {\n this._buffer = buffer.get();\n }\n else {\n // otherwise when it's loaded, invoke it's callback\n buffer.onload = () => {\n this.set(buffer);\n this.onload(this);\n };\n }\n }\n else {\n this._buffer = buffer;\n }\n // reverse it initially\n if (this._reversed) {\n this._reverse();\n }\n return this;\n }\n /**\n * The audio buffer stored in the object.\n */\n get() {\n return this._buffer;\n }\n /**\n * Makes an fetch request for the selected url then decodes the file as an audio buffer.\n * Invokes the callback once the audio buffer loads.\n * @param url The url of the buffer to load. filetype support depends on the browser.\n * @returns A Promise which resolves with this ToneAudioBuffer\n */\n load(url) {\n return __awaiter(this, void 0, void 0, function* () {\n const doneLoading = ToneAudioBuffer.load(url).then(audioBuffer => {\n this.set(audioBuffer);\n // invoke the onload method\n this.onload(this);\n });\n ToneAudioBuffer.downloads.push(doneLoading);\n try {\n yield doneLoading;\n }\n finally {\n // remove the downloaded file\n const index = ToneAudioBuffer.downloads.indexOf(doneLoading);\n ToneAudioBuffer.downloads.splice(index, 1);\n }\n return this;\n });\n }\n /**\n * clean up\n */\n dispose() {\n super.dispose();\n this._buffer = undefined;\n return this;\n }\n /**\n * Set the audio buffer from the array.\n * To create a multichannel AudioBuffer, pass in a multidimensional array.\n * @param array The array to fill the audio buffer\n */\n fromArray(array) {\n const isMultidimensional = isArray(array) && array[0].length > 0;\n const channels = isMultidimensional ? array.length : 1;\n const len = isMultidimensional ? array[0].length : array.length;\n const context = getContext();\n const buffer = context.createBuffer(channels, len, context.sampleRate);\n const multiChannelArray = !isMultidimensional && channels === 1 ?\n [array] : array;\n for (let c = 0; c < channels; c++) {\n buffer.copyToChannel(multiChannelArray[c], c);\n }\n this._buffer = buffer;\n return this;\n }\n /**\n * Sums multiple channels into 1 channel\n * @param chanNum Optionally only copy a single channel from the array.\n */\n toMono(chanNum) {\n if (isNumber(chanNum)) {\n this.fromArray(this.toArray(chanNum));\n }\n else {\n let outputArray = new Float32Array(this.length);\n const numChannels = this.numberOfChannels;\n for (let channel = 0; channel < numChannels; channel++) {\n const channelArray = this.toArray(channel);\n for (let i = 0; i < channelArray.length; i++) {\n outputArray[i] += channelArray[i];\n }\n }\n // divide by the number of channels\n outputArray = outputArray.map(sample => sample / numChannels);\n this.fromArray(outputArray);\n }\n return this;\n }\n /**\n * Get the buffer as an array. Single channel buffers will return a 1-dimensional\n * Float32Array, and multichannel buffers will return multidimensional arrays.\n * @param channel Optionally only copy a single channel from the array.\n */\n toArray(channel) {\n if (isNumber(channel)) {\n return this.getChannelData(channel);\n }\n else if (this.numberOfChannels === 1) {\n return this.toArray(0);\n }\n else {\n const ret = [];\n for (let c = 0; c < this.numberOfChannels; c++) {\n ret[c] = this.getChannelData(c);\n }\n return ret;\n }\n }\n /**\n * Returns the Float32Array representing the PCM audio data for the specific channel.\n * @param channel The channel number to return\n * @return The audio as a TypedArray\n */\n getChannelData(channel) {\n if (this._buffer) {\n return this._buffer.getChannelData(channel);\n }\n else {\n return new Float32Array(0);\n }\n }\n /**\n * Cut a subsection of the array and return a buffer of the\n * subsection. Does not modify the original buffer\n * @param start The time to start the slice\n * @param end The end time to slice. If none is given will default to the end of the buffer\n */\n slice(start, end = this.duration) {\n const startSamples = Math.floor(start * this.sampleRate);\n const endSamples = Math.floor(end * this.sampleRate);\n assert(startSamples < endSamples, \"The start time must be less than the end time\");\n const length = endSamples - startSamples;\n const retBuffer = getContext().createBuffer(this.numberOfChannels, length, this.sampleRate);\n for (let channel = 0; channel < this.numberOfChannels; channel++) {\n retBuffer.copyToChannel(this.getChannelData(channel).subarray(startSamples, endSamples), channel);\n }\n return new ToneAudioBuffer(retBuffer);\n }\n /**\n * Reverse the buffer.\n */\n _reverse() {\n if (this.loaded) {\n for (let i = 0; i < this.numberOfChannels; i++) {\n this.getChannelData(i).reverse();\n }\n }\n return this;\n }\n /**\n * If the buffer is loaded or not\n */\n get loaded() {\n return this.length > 0;\n }\n /**\n * The duration of the buffer in seconds.\n */\n get duration() {\n if (this._buffer) {\n return this._buffer.duration;\n }\n else {\n return 0;\n }\n }\n /**\n * The length of the buffer in samples\n */\n get length() {\n if (this._buffer) {\n return this._buffer.length;\n }\n else {\n return 0;\n }\n }\n /**\n * The number of discrete audio channels. Returns 0 if no buffer is loaded.\n */\n get numberOfChannels() {\n if (this._buffer) {\n return this._buffer.numberOfChannels;\n }\n else {\n return 0;\n }\n }\n /**\n * Reverse the buffer.\n */\n get reverse() {\n return this._reversed;\n }\n set reverse(rev) {\n if (this._reversed !== rev) {\n this._reversed = rev;\n this._reverse();\n }\n }\n /**\n * Create a ToneAudioBuffer from the array. To create a multichannel AudioBuffer,\n * pass in a multidimensional array.\n * @param array The array to fill the audio buffer\n * @return A ToneAudioBuffer created from the array\n */\n static fromArray(array) {\n return (new ToneAudioBuffer()).fromArray(array);\n }\n /**\n * Creates a ToneAudioBuffer from a URL, returns a promise which resolves to a ToneAudioBuffer\n * @param url The url to load.\n * @return A promise which resolves to a ToneAudioBuffer\n */\n static fromUrl(url) {\n return __awaiter(this, void 0, void 0, function* () {\n const buffer = new ToneAudioBuffer();\n return yield buffer.load(url);\n });\n }\n /**\n * Loads a url using fetch and returns the AudioBuffer.\n */\n static load(url) {\n return __awaiter(this, void 0, void 0, function* () {\n // test if the url contains multiple extensions\n const matches = url.match(/\\[([^\\]\\[]+\\|.+)\\]$/);\n if (matches) {\n const extensions = matches[1].split(\"|\");\n let extension = extensions[0];\n for (const ext of extensions) {\n if (ToneAudioBuffer.supportsType(ext)) {\n extension = ext;\n break;\n }\n }\n url = url.replace(matches[0], extension);\n }\n // make sure there is a slash between the baseUrl and the url\n const baseUrl = ToneAudioBuffer.baseUrl === \"\" || ToneAudioBuffer.baseUrl.endsWith(\"/\") ? ToneAudioBuffer.baseUrl : ToneAudioBuffer.baseUrl + \"/\";\n const response = yield fetch(baseUrl + url);\n if (!response.ok) {\n throw new Error(`could not load url: ${url}`);\n }\n const arrayBuffer = yield response.arrayBuffer();\n const audioBuffer = yield getContext().decodeAudioData(arrayBuffer);\n return audioBuffer;\n });\n }\n /**\n * Checks a url's extension to see if the current browser can play that file type.\n * @param url The url/extension to test\n * @return If the file extension can be played\n * @static\n * @example\n * Tone.ToneAudioBuffer.supportsType(\"wav\"); // returns true\n * Tone.ToneAudioBuffer.supportsType(\"path/to/file.wav\"); // returns true\n */\n static supportsType(url) {\n const extensions = url.split(\".\");\n const extension = extensions[extensions.length - 1];\n const response = document.createElement(\"audio\").canPlayType(\"audio/\" + extension);\n return response !== \"\";\n }\n /**\n * Returns a Promise which resolves when all of the buffers have loaded\n */\n static loaded() {\n return __awaiter(this, void 0, void 0, function* () {\n // this makes sure that the function is always async\n yield Promise.resolve();\n while (ToneAudioBuffer.downloads.length) {\n yield ToneAudioBuffer.downloads[0];\n }\n });\n }\n}\n//-------------------------------------\n// STATIC METHODS\n//-------------------------------------\n/**\n * A path which is prefixed before every url.\n */\nToneAudioBuffer.baseUrl = \"\";\n/**\n * All of the downloads\n */\nToneAudioBuffer.downloads = [];\n//# sourceMappingURL=ToneAudioBuffer.js.map","import { getContext } from \"../Global\";\nimport { Tone } from \"../Tone\";\nimport { Samples, Seconds } from \"../type/Units\";\nimport { isAudioBuffer } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { noOp } from \"../util/Interface\";\nimport { isArray, isNumber, isString } from \"../util/TypeCheck\";\nimport { assert } from \"../util/Debug\";\n\ninterface ToneAudioBufferOptions {\n\turl?: string | AudioBuffer | ToneAudioBuffer;\n\treverse: boolean;\n\tonload: (buffer?: ToneAudioBuffer) => void;\n\tonerror: (error: Error) => void;\n}\n\n/**\n * AudioBuffer loading and storage. ToneAudioBuffer is used internally by all\n * classes that make requests for audio files such as Tone.Player,\n * Tone.Sampler and Tone.Convolver.\n * @example\n * const buffer = new Tone.ToneAudioBuffer(\"https://tonejs.github.io/audio/casio/A1.mp3\", () => {\n * \tconsole.log(\"loaded\");\n * });\n * @category Core\n */\nexport class ToneAudioBuffer extends Tone {\n\n\treadonly name: string = \"ToneAudioBuffer\";\n\n\t/**\n\t * stores the loaded AudioBuffer\n\t */\n\tprivate _buffer?: AudioBuffer;\n\n\t/**\n\t * indicates if the buffer should be reversed or not\n\t */\n\tprivate _reversed!: boolean;\n\n\t/**\n\t * Callback when the buffer is loaded.\n\t */\n\tonload: (buffer: ToneAudioBuffer) => void = noOp;\n\n\t/**\n\t *\n\t * @param url The url to load, or the audio buffer to set.\n\t * @param onload A callback which is invoked after the buffer is loaded.\n\t * It's recommended to use `ToneAudioBuffer.on('load', callback)` instead\n\t * since it will give you a callback when _all_ buffers are loaded.\n\t * @param onerror The callback to invoke if there is an error\n\t */\n\tconstructor(\n\t\turl?: string | ToneAudioBuffer | AudioBuffer,\n\t\tonload?: (buffer: ToneAudioBuffer) => void,\n\t\tonerror?: (error: Error) => void,\n\t);\n\tconstructor(options?: Partial);\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tconst options = optionsFromArguments(ToneAudioBuffer.getDefaults(), arguments, [\"url\", \"onload\", \"onerror\"]);\n\n\t\tthis.reverse = options.reverse;\n\t\tthis.onload = options.onload;\n\n\t\tif (options.url && isAudioBuffer(options.url) || options.url instanceof ToneAudioBuffer) {\n\t\t\tthis.set(options.url);\n\t\t} else if (isString(options.url)) {\n\t\t\t// initiate the download\n\t\t\tthis.load(options.url).catch(options.onerror);\n\t\t}\n\t}\n\n\tstatic getDefaults(): ToneAudioBufferOptions {\n\t\treturn {\n\t\t\tonerror: noOp,\n\t\t\tonload: noOp,\n\t\t\treverse: false,\n\t\t};\n\t}\n\n\t/**\n\t * The sample rate of the AudioBuffer\n\t */\n\tget sampleRate(): number {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.sampleRate;\n\t\t} else {\n\t\t\treturn getContext().sampleRate;\n\t\t}\n\t}\n\n\t/**\n\t * Pass in an AudioBuffer or ToneAudioBuffer to set the value of this buffer.\n\t */\n\tset(buffer: AudioBuffer | ToneAudioBuffer): this {\n\t\tif (buffer instanceof ToneAudioBuffer) {\n\t\t\t// if it's loaded, set it\n\t\t\tif (buffer.loaded) {\n\t\t\t\tthis._buffer = buffer.get();\n\t\t\t} else {\n\t\t\t\t// otherwise when it's loaded, invoke it's callback\n\t\t\t\tbuffer.onload = () => {\n\t\t\t\t\tthis.set(buffer);\n\t\t\t\t\tthis.onload(this);\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\tthis._buffer = buffer;\n\t\t}\n\t\t// reverse it initially\n\t\tif (this._reversed) {\n\t\t\tthis._reverse();\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * The audio buffer stored in the object.\n\t */\n\tget(): AudioBuffer | undefined {\n\t\treturn this._buffer;\n\t}\n\n\t/**\n\t * Makes an fetch request for the selected url then decodes the file as an audio buffer.\n\t * Invokes the callback once the audio buffer loads.\n\t * @param url The url of the buffer to load. filetype support depends on the browser.\n\t * @returns A Promise which resolves with this ToneAudioBuffer\n\t */\n\tasync load(url: string): Promise {\n\t\tconst doneLoading: Promise = ToneAudioBuffer.load(url).then(audioBuffer => {\n\t\t\tthis.set(audioBuffer);\n\t\t\t// invoke the onload method\n\t\t\tthis.onload(this);\n\t\t});\n\t\tToneAudioBuffer.downloads.push(doneLoading);\n\t\ttry {\n\t\t\tawait doneLoading;\n\t\t} finally {\n\t\t\t// remove the downloaded file\n\t\t\tconst index = ToneAudioBuffer.downloads.indexOf(doneLoading);\n\t\t\tToneAudioBuffer.downloads.splice(index, 1);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * clean up\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._buffer = undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the audio buffer from the array.\n\t * To create a multichannel AudioBuffer, pass in a multidimensional array.\n\t * @param array The array to fill the audio buffer\n\t */\n\tfromArray(array: Float32Array | Float32Array[]): this {\n\t\tconst isMultidimensional = isArray(array) && array[0].length > 0;\n\t\tconst channels = isMultidimensional ? array.length : 1;\n\t\tconst len = isMultidimensional ? (array[0] as Float32Array).length : array.length;\n\t\tconst context = getContext();\n\t\tconst buffer = context.createBuffer(channels, len, context.sampleRate);\n\t\tconst multiChannelArray: Float32Array[] = !isMultidimensional && channels === 1 ?\n\t\t\t[array as Float32Array] : array as Float32Array[];\n\n\t\tfor (let c = 0; c < channels; c++) {\n\t\t\tbuffer.copyToChannel(multiChannelArray[c], c);\n\t\t}\n\t\tthis._buffer = buffer;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sums multiple channels into 1 channel\n\t * @param chanNum Optionally only copy a single channel from the array.\n\t */\n\ttoMono(chanNum?: number): this {\n\t\tif (isNumber(chanNum)) {\n\t\t\tthis.fromArray(this.toArray(chanNum));\n\t\t} else {\n\t\t\tlet outputArray = new Float32Array(this.length as number);\n\t\t\tconst numChannels = this.numberOfChannels;\n\t\t\tfor (let channel = 0; channel < numChannels; channel++) {\n\t\t\t\tconst channelArray = this.toArray(channel) as Float32Array;\n\t\t\t\tfor (let i = 0; i < channelArray.length; i++) {\n\t\t\t\t\toutputArray[i] += channelArray[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// divide by the number of channels\n\t\t\toutputArray = outputArray.map(sample => sample / numChannels);\n\t\t\tthis.fromArray(outputArray);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get the buffer as an array. Single channel buffers will return a 1-dimensional\n\t * Float32Array, and multichannel buffers will return multidimensional arrays.\n\t * @param channel Optionally only copy a single channel from the array.\n\t */\n\ttoArray(channel?: number): Float32Array | Float32Array[] {\n\t\tif (isNumber(channel)) {\n\t\t\treturn this.getChannelData(channel);\n\t\t} else if (this.numberOfChannels === 1) {\n\t\t\treturn this.toArray(0);\n\t\t} else {\n\t\t\tconst ret: Float32Array[] = [];\n\t\t\tfor (let c = 0; c < this.numberOfChannels; c++) {\n\t\t\t\tret[c] = this.getChannelData(c);\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the Float32Array representing the PCM audio data for the specific channel.\n\t * @param channel The channel number to return\n\t * @return The audio as a TypedArray\n\t */\n\tgetChannelData(channel: number): Float32Array {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.getChannelData(channel);\n\t\t} else {\n\t\t\treturn new Float32Array(0);\n\t\t}\n\t}\n\n\t/**\n\t * Cut a subsection of the array and return a buffer of the\n\t * subsection. Does not modify the original buffer\n\t * @param start The time to start the slice\n\t * @param end The end time to slice. If none is given will default to the end of the buffer\n\t */\n\tslice(start: Seconds, end: Seconds = this.duration): ToneAudioBuffer {\n\t\tconst startSamples = Math.floor(start * this.sampleRate);\n\t\tconst endSamples = Math.floor(end * this.sampleRate);\n\t\tassert(startSamples < endSamples, \"The start time must be less than the end time\");\n\t\tconst length = endSamples - startSamples;\n\t\tconst retBuffer = getContext().createBuffer(this.numberOfChannels, length, this.sampleRate);\n\t\tfor (let channel = 0; channel < this.numberOfChannels; channel++) {\n\t\t\tretBuffer.copyToChannel(this.getChannelData(channel).subarray(startSamples, endSamples), channel);\n\t\t}\n\t\treturn new ToneAudioBuffer(retBuffer);\n\t}\n\n\t/**\n\t * Reverse the buffer.\n\t */\n\tprivate _reverse(): this {\n\t\tif (this.loaded) {\n\t\t\tfor (let i = 0; i < this.numberOfChannels; i++) {\n\t\t\t\tthis.getChannelData(i).reverse();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * If the buffer is loaded or not\n\t */\n\tget loaded(): boolean {\n\t\treturn this.length > 0;\n\t}\n\n\t/**\n\t * The duration of the buffer in seconds.\n\t */\n\tget duration(): Seconds {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.duration;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * The length of the buffer in samples\n\t */\n\tget length(): Samples {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.length;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * The number of discrete audio channels. Returns 0 if no buffer is loaded.\n\t */\n\tget numberOfChannels(): number {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.numberOfChannels;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * Reverse the buffer.\n\t */\n\tget reverse(): boolean {\n\t\treturn this._reversed;\n\t}\n\tset reverse(rev: boolean) {\n\t\tif (this._reversed !== rev) {\n\t\t\tthis._reversed = rev;\n\t\t\tthis._reverse();\n\t\t}\n\t}\n\n\t//-------------------------------------\n\t// STATIC METHODS\n\t//-------------------------------------\n\n\t/**\n\t * A path which is prefixed before every url.\n\t */\n\tstatic baseUrl = \"\";\n\n\t/**\n\t * Create a ToneAudioBuffer from the array. To create a multichannel AudioBuffer,\n\t * pass in a multidimensional array.\n\t * @param array The array to fill the audio buffer\n\t * @return A ToneAudioBuffer created from the array\n\t */\n\tstatic fromArray(array: Float32Array | Float32Array[]): ToneAudioBuffer {\n\t\treturn (new ToneAudioBuffer()).fromArray(array);\n\t}\n\n\t/**\n\t * Creates a ToneAudioBuffer from a URL, returns a promise which resolves to a ToneAudioBuffer\n\t * @param url The url to load.\n\t * @return A promise which resolves to a ToneAudioBuffer\n\t */\n\tstatic async fromUrl(url: string): Promise {\n\t\tconst buffer = new ToneAudioBuffer();\n\t\treturn await buffer.load(url);\n\t}\n\n\t/**\n\t * All of the downloads\n\t */\n\tstatic downloads: Array> = [];\n\n\t/**\n\t * Loads a url using fetch and returns the AudioBuffer.\n\t */\n\tstatic async load(url: string): Promise {\n\n\t\t// test if the url contains multiple extensions\n\t\tconst matches = url.match(/\\[([^\\]\\[]+\\|.+)\\]$/);\n\t\tif (matches) {\n\t\t\tconst extensions = matches[1].split(\"|\");\n\t\t\tlet extension = extensions[0];\n\t\t\tfor (const ext of extensions) {\n\t\t\t\tif (ToneAudioBuffer.supportsType(ext)) {\n\t\t\t\t\textension = ext;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\turl = url.replace(matches[0], extension);\n\t\t}\n\n\t\t// make sure there is a slash between the baseUrl and the url\n\t\tconst baseUrl = ToneAudioBuffer.baseUrl === \"\" || ToneAudioBuffer.baseUrl.endsWith(\"/\") ? ToneAudioBuffer.baseUrl : ToneAudioBuffer.baseUrl + \"/\";\n\t\tconst response = await fetch(baseUrl + url);\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`could not load url: ${url}`);\n\t\t}\n\t\tconst arrayBuffer = await response.arrayBuffer();\n\n\t\tconst audioBuffer = await getContext().decodeAudioData(arrayBuffer);\n\n\t\treturn audioBuffer;\n\t}\n\n\t/**\n\t * Checks a url's extension to see if the current browser can play that file type.\n\t * @param url The url/extension to test\n\t * @return If the file extension can be played\n\t * @static\n\t * @example\n\t * Tone.ToneAudioBuffer.supportsType(\"wav\"); // returns true\n\t * Tone.ToneAudioBuffer.supportsType(\"path/to/file.wav\"); // returns true\n\t */\n\tstatic supportsType(url: string): boolean {\n\t\tconst extensions = url.split(\".\");\n\t\tconst extension = extensions[extensions.length - 1];\n\t\tconst response = document.createElement(\"audio\").canPlayType(\"audio/\" + extension);\n\t\treturn response !== \"\";\n\t}\n\n\t/**\n\t * Returns a Promise which resolves when all of the buffers have loaded\n\t */\n\tstatic async loaded(): Promise {\n\t\t// this makes sure that the function is always async\n\t\tawait Promise.resolve();\n\t\twhile (ToneAudioBuffer.downloads.length) {\n\t\t\tawait ToneAudioBuffer.downloads[0];\n\t\t}\n\t}\n}\n","import { isArray } from \"./TypeCheck\";\n/**\n * Make the property not writable using `defineProperty`. Internal use only.\n */\nexport function readOnly(target, property) {\n if (isArray(property)) {\n property.forEach(str => readOnly(target, str));\n }\n else {\n Object.defineProperty(target, property, {\n enumerable: true,\n writable: false,\n });\n }\n}\n/**\n * Make an attribute writeable. Internal use only.\n */\nexport function writable(target, property) {\n if (isArray(property)) {\n property.forEach(str => writable(target, str));\n }\n else {\n Object.defineProperty(target, property, {\n writable: true,\n });\n }\n}\nexport const noOp = () => {\n // no operation here!\n};\n//# sourceMappingURL=Interface.js.map","import { isArray } from \"./TypeCheck\";\n\n// return an interface which excludes certain keys\nexport type Omit = Pick>;\n\n/**\n * Make the property not writable using `defineProperty`. Internal use only.\n */\nexport function readOnly(target: object, property: string | string[]): void {\n\tif (isArray(property)) {\n\t\tproperty.forEach(str => readOnly(target, str));\n\t} else {\n\t\tObject.defineProperty(target, property, {\n\t\t\tenumerable: true,\n\t\t\twritable: false,\n\t\t});\n\t}\n}\n\n/**\n * Make an attribute writeable. Internal use only.\n */\nexport function writable(target: object, property: string | string[]): void {\n\tif (isArray(property)) {\n\t\tproperty.forEach(str => writable(target, str));\n\t} else {\n\t\tObject.defineProperty(target, property, {\n\t\t\twritable: true,\n\t\t});\n\t}\n}\n\nexport const noOp: (...args: any[]) => any = () => {\n\t// no operation here!\n};\n\n/**\n * Recursive Partial taken from here: https://stackoverflow.com/a/51365037\n */\nexport type RecursivePartial = {\n\t[P in keyof T]?:\n\tT[P] extends Array ? Array> :\n\t\tT[P] extends object ? RecursivePartial :\n\t\t\tT[P];\n};\n","import { Tone } from \"../Tone\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { noOp } from \"../util/Interface\";\nimport { isString } from \"../util/TypeCheck\";\nimport { ToneAudioBuffer } from \"./ToneAudioBuffer\";\nimport { assert } from \"../util/Debug\";\n/**\n * A data structure for holding multiple buffers in a Map-like datastructure.\n *\n * @example\n * const pianoSamples = new Tone.ToneAudioBuffers({\n * \tA1: \"https://tonejs.github.io/audio/casio/A1.mp3\",\n * \tA2: \"https://tonejs.github.io/audio/casio/A2.mp3\",\n * }, () => {\n * \tconst player = new Tone.Player().toDestination();\n * \t// play one of the samples when they all load\n * \tplayer.buffer = pianoSamples.get(\"A2\");\n * \tplayer.start();\n * });\n * @example\n * // To pass in additional parameters in the second parameter\n * const buffers = new Tone.ToneAudioBuffers({\n * \t urls: {\n * \t\t A1: \"A1.mp3\",\n * \t\t A2: \"A2.mp3\",\n * \t },\n * \t onload: () => console.log(\"loaded\"),\n * \t baseUrl: \"https://tonejs.github.io/audio/casio/\"\n * });\n * @category Core\n */\nexport class ToneAudioBuffers extends Tone {\n constructor() {\n super();\n this.name = \"ToneAudioBuffers\";\n /**\n * All of the buffers\n */\n this._buffers = new Map();\n /**\n * Keep track of the number of loaded buffers\n */\n this._loadingCount = 0;\n const options = optionsFromArguments(ToneAudioBuffers.getDefaults(), arguments, [\"urls\", \"onload\", \"baseUrl\"], \"urls\");\n this.baseUrl = options.baseUrl;\n // add each one\n Object.keys(options.urls).forEach(name => {\n this._loadingCount++;\n const url = options.urls[name];\n this.add(name, url, this._bufferLoaded.bind(this, options.onload), options.onerror);\n });\n }\n static getDefaults() {\n return {\n baseUrl: \"\",\n onerror: noOp,\n onload: noOp,\n urls: {},\n };\n }\n /**\n * True if the buffers object has a buffer by that name.\n * @param name The key or index of the buffer.\n */\n has(name) {\n return this._buffers.has(name.toString());\n }\n /**\n * Get a buffer by name. If an array was loaded,\n * then use the array index.\n * @param name The key or index of the buffer.\n */\n get(name) {\n assert(this.has(name), `ToneAudioBuffers has no buffer named: ${name}`);\n return this._buffers.get(name.toString());\n }\n /**\n * A buffer was loaded. decrement the counter.\n */\n _bufferLoaded(callback) {\n this._loadingCount--;\n if (this._loadingCount === 0 && callback) {\n callback();\n }\n }\n /**\n * If the buffers are loaded or not\n */\n get loaded() {\n return Array.from(this._buffers).every(([_, buffer]) => buffer.loaded);\n }\n /**\n * Add a buffer by name and url to the Buffers\n * @param name A unique name to give the buffer\n * @param url Either the url of the bufer, or a buffer which will be added with the given name.\n * @param callback The callback to invoke when the url is loaded.\n * @param onerror Invoked if the buffer can't be loaded\n */\n add(name, url, callback = noOp, onerror = noOp) {\n if (isString(url)) {\n this._buffers.set(name.toString(), new ToneAudioBuffer(this.baseUrl + url, callback, onerror));\n }\n else {\n this._buffers.set(name.toString(), new ToneAudioBuffer(url, callback, onerror));\n }\n return this;\n }\n dispose() {\n super.dispose();\n this._buffers.forEach(buffer => buffer.dispose());\n this._buffers.clear();\n return this;\n }\n}\n//# sourceMappingURL=ToneAudioBuffers.js.map","import { Tone } from \"../Tone\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { noOp } from \"../util/Interface\";\nimport { isString } from \"../util/TypeCheck\";\nimport { ToneAudioBuffer } from \"./ToneAudioBuffer\";\nimport { assert } from \"../util/Debug\";\n\nexport interface ToneAudioBuffersUrlMap {\n\t[name: string]: string | AudioBuffer | ToneAudioBuffer;\n\t[name: number]: string | AudioBuffer | ToneAudioBuffer;\n}\n\ninterface ToneAudioBuffersOptions {\n\turls: ToneAudioBuffersUrlMap;\n\tonload: () => void;\n\tonerror?: (error: Error) => void;\n\tbaseUrl: string;\n}\n\n/**\n * A data structure for holding multiple buffers in a Map-like datastructure.\n *\n * @example\n * const pianoSamples = new Tone.ToneAudioBuffers({\n * \tA1: \"https://tonejs.github.io/audio/casio/A1.mp3\",\n * \tA2: \"https://tonejs.github.io/audio/casio/A2.mp3\",\n * }, () => {\n * \tconst player = new Tone.Player().toDestination();\n * \t// play one of the samples when they all load\n * \tplayer.buffer = pianoSamples.get(\"A2\");\n * \tplayer.start();\n * });\n * @example\n * // To pass in additional parameters in the second parameter\n * const buffers = new Tone.ToneAudioBuffers({\n * \t urls: {\n * \t\t A1: \"A1.mp3\",\n * \t\t A2: \"A2.mp3\",\n * \t },\n * \t onload: () => console.log(\"loaded\"),\n * \t baseUrl: \"https://tonejs.github.io/audio/casio/\"\n * });\n * @category Core\n */\nexport class ToneAudioBuffers extends Tone {\n\n\treadonly name: string = \"ToneAudioBuffers\";\n\n\t/**\n\t * All of the buffers\n\t */\n\tprivate _buffers: Map = new Map();\n\n\t/**\n\t * A path which is prefixed before every url.\n\t */\n\tbaseUrl: string;\n\n\t/**\n\t * Keep track of the number of loaded buffers\n\t */\n\tprivate _loadingCount = 0;\n\n\t/**\n\t * @param urls An object literal or array of urls to load.\n\t * @param onload The callback to invoke when the buffers are loaded.\n\t * @param baseUrl A prefix url to add before all the urls\n\t */\n\tconstructor(\n\t\turls?: ToneAudioBuffersUrlMap,\n\t\tonload?: () => void,\n\t\tbaseUrl?: string,\n\t);\n\tconstructor(options?: Partial);\n\tconstructor() {\n\n\t\tsuper();\n\t\tconst options = optionsFromArguments(\n\t\t\tToneAudioBuffers.getDefaults(), arguments, [\"urls\", \"onload\", \"baseUrl\"], \"urls\",\n\t\t);\n\n\t\tthis.baseUrl = options.baseUrl;\n\t\t// add each one\n\t\tObject.keys(options.urls).forEach(name => {\n\t\t\tthis._loadingCount++;\n\t\t\tconst url = options.urls[name];\n\t\t\tthis.add(name, url, this._bufferLoaded.bind(this, options.onload), options.onerror);\n\t\t});\n\n\t}\n\n\tstatic getDefaults(): ToneAudioBuffersOptions {\n\t\treturn {\n\t\t\tbaseUrl: \"\",\n\t\t\tonerror: noOp,\n\t\t\tonload: noOp,\n\t\t\turls: {},\n\t\t};\n\t}\n\n\t/**\n\t * True if the buffers object has a buffer by that name.\n\t * @param name The key or index of the buffer.\n\t */\n\thas(name: string | number): boolean {\n\t\treturn this._buffers.has(name.toString());\n\t}\n\n\t/**\n\t * Get a buffer by name. If an array was loaded,\n\t * then use the array index.\n\t * @param name The key or index of the buffer.\n\t */\n\tget(name: string | number): ToneAudioBuffer {\n\t\tassert(this.has(name), `ToneAudioBuffers has no buffer named: ${name}`);\n\t\treturn this._buffers.get(name.toString()) as ToneAudioBuffer;\n\t}\n\n\t/**\n\t * A buffer was loaded. decrement the counter.\n\t */\n\tprivate _bufferLoaded(callback: () => void): void {\n\t\tthis._loadingCount--;\n\t\tif (this._loadingCount === 0 && callback) {\n\t\t\tcallback();\n\t\t}\n\t}\n\n\t/**\n\t * If the buffers are loaded or not\n\t */\n\tget loaded(): boolean {\n\t\treturn Array.from(this._buffers).every(([_, buffer]) => buffer.loaded);\n\t}\n\n\t/**\n\t * Add a buffer by name and url to the Buffers\n\t * @param name A unique name to give the buffer\n\t * @param url Either the url of the bufer, or a buffer which will be added with the given name.\n\t * @param callback The callback to invoke when the url is loaded.\n\t * @param onerror Invoked if the buffer can't be loaded\n\t */\n\tadd(\n\t\tname: string | number,\n\t\turl: string | AudioBuffer | ToneAudioBuffer,\n\t\tcallback: () => void = noOp,\n\t\tonerror: (e: Error) => void = noOp,\n\t): this {\n\t\tif (isString(url)) {\n\t\t\tthis._buffers.set(name.toString(), new ToneAudioBuffer(this.baseUrl + url, callback, onerror));\n\t\t} else {\n\t\t\tthis._buffers.set(name.toString(), new ToneAudioBuffer(url, callback, onerror));\n\t\t}\n\t\treturn this;\n\t}\n\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._buffers.forEach(buffer => buffer.dispose());\n\t\tthis._buffers.clear();\n\t\treturn this;\n\t}\n}\n","import { connect } from \"../../core/context/ToneAudioNode\";\nimport { Param } from \"../../core/context/Param\";\nimport { ToneAudioBuffer } from \"../../core/context/ToneAudioBuffer\";\nimport { defaultArg, optionsFromArguments } from \"../../core/util/Defaults\";\nimport { noOp } from \"../../core/util/Interface\";\nimport { isDefined } from \"../../core/util/TypeCheck\";\nimport { assert } from \"../../core/util/Debug\";\nimport { OneShotSource } from \"../OneShotSource\";\nimport { EQ, GTE, LT } from \"../../core/util/Math\";\n/**\n * Wrapper around the native BufferSourceNode.\n * @category Source\n */\nexport class ToneBufferSource extends OneShotSource {\n constructor() {\n super(optionsFromArguments(ToneBufferSource.getDefaults(), arguments, [\"url\", \"onload\"]));\n this.name = \"ToneBufferSource\";\n /**\n * The oscillator\n */\n this._source = this.context.createBufferSource();\n this._internalChannels = [this._source];\n /**\n * indicators if the source has started/stopped\n */\n this._sourceStarted = false;\n this._sourceStopped = false;\n const options = optionsFromArguments(ToneBufferSource.getDefaults(), arguments, [\"url\", \"onload\"]);\n connect(this._source, this._gainNode);\n this._source.onended = () => this._stopSource();\n /**\n * The playbackRate of the buffer\n */\n this.playbackRate = new Param({\n context: this.context,\n param: this._source.playbackRate,\n units: \"positive\",\n value: options.playbackRate,\n });\n // set some values initially\n this.loop = options.loop;\n this.loopStart = options.loopStart;\n this.loopEnd = options.loopEnd;\n this._buffer = new ToneAudioBuffer(options.url, options.onload, options.onerror);\n this._internalChannels.push(this._source);\n }\n static getDefaults() {\n return Object.assign(OneShotSource.getDefaults(), {\n url: new ToneAudioBuffer(),\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n onload: noOp,\n onerror: noOp,\n playbackRate: 1,\n });\n }\n /**\n * The fadeIn time of the amplitude envelope.\n */\n get fadeIn() {\n return this._fadeIn;\n }\n set fadeIn(t) {\n this._fadeIn = t;\n }\n /**\n * The fadeOut time of the amplitude envelope.\n */\n get fadeOut() {\n return this._fadeOut;\n }\n set fadeOut(t) {\n this._fadeOut = t;\n }\n /**\n * The curve applied to the fades, either \"linear\" or \"exponential\"\n */\n get curve() {\n return this._curve;\n }\n set curve(t) {\n this._curve = t;\n }\n /**\n * Start the buffer\n * @param time When the player should start.\n * @param offset The offset from the beginning of the sample to start at.\n * @param duration How long the sample should play. If no duration is given, it will default to the full length of the sample (minus any offset)\n * @param gain The gain to play the buffer back at.\n */\n start(time, offset, duration, gain = 1) {\n assert(this.buffer.loaded, \"buffer is either not set or not loaded\");\n const computedTime = this.toSeconds(time);\n // apply the gain envelope\n this._startGain(computedTime, gain);\n // if it's a loop the default offset is the loopstart point\n if (this.loop) {\n offset = defaultArg(offset, this.loopStart);\n }\n else {\n // otherwise the default offset is 0\n offset = defaultArg(offset, 0);\n }\n // make sure the offset is not less than 0\n let computedOffset = Math.max(this.toSeconds(offset), 0);\n // start the buffer source\n if (this.loop) {\n // modify the offset if it's greater than the loop time\n const loopEnd = this.toSeconds(this.loopEnd) || this.buffer.duration;\n const loopStart = this.toSeconds(this.loopStart);\n const loopDuration = loopEnd - loopStart;\n // move the offset back\n if (GTE(computedOffset, loopEnd)) {\n computedOffset = ((computedOffset - loopStart) % loopDuration) + loopStart;\n }\n // when the offset is very close to the duration, set it to 0\n if (EQ(computedOffset, this.buffer.duration)) {\n computedOffset = 0;\n }\n }\n // this.buffer.loaded would have return false if the AudioBuffer was undefined\n this._source.buffer = this.buffer.get();\n this._source.loopEnd = this.toSeconds(this.loopEnd) || this.buffer.duration;\n if (LT(computedOffset, this.buffer.duration)) {\n this._sourceStarted = true;\n this._source.start(computedTime, computedOffset);\n }\n // if a duration is given, schedule a stop\n if (isDefined(duration)) {\n let computedDur = this.toSeconds(duration);\n // make sure it's never negative\n computedDur = Math.max(computedDur, 0);\n this.stop(computedTime + computedDur);\n }\n return this;\n }\n _stopSource(time) {\n if (!this._sourceStopped && this._sourceStarted) {\n this._sourceStopped = true;\n this._source.stop(this.toSeconds(time));\n this._onended();\n }\n }\n /**\n * If loop is true, the loop will start at this position.\n */\n get loopStart() {\n return this._source.loopStart;\n }\n set loopStart(loopStart) {\n this._source.loopStart = this.toSeconds(loopStart);\n }\n /**\n * If loop is true, the loop will end at this position.\n */\n get loopEnd() {\n return this._source.loopEnd;\n }\n set loopEnd(loopEnd) {\n this._source.loopEnd = this.toSeconds(loopEnd);\n }\n /**\n * The audio buffer belonging to the player.\n */\n get buffer() {\n return this._buffer;\n }\n set buffer(buffer) {\n this._buffer.set(buffer);\n }\n /**\n * If the buffer should loop once it's over.\n */\n get loop() {\n return this._source.loop;\n }\n set loop(loop) {\n this._source.loop = loop;\n if (this._sourceStarted) {\n this.cancelStop();\n }\n }\n /**\n * Clean up.\n */\n dispose() {\n super.dispose();\n this._source.onended = null;\n this._source.disconnect();\n this._buffer.dispose();\n this.playbackRate.dispose();\n return this;\n }\n}\n//# sourceMappingURL=ToneBufferSource.js.map","import { connect } from \"../../core/context/ToneAudioNode\";\nimport { Param } from \"../../core/context/Param\";\nimport { ToneAudioBuffer } from \"../../core/context/ToneAudioBuffer\";\nimport { GainFactor, Positive, Seconds, Time } from \"../../core/type/Units\";\nimport { defaultArg, optionsFromArguments } from \"../../core/util/Defaults\";\nimport { noOp } from \"../../core/util/Interface\";\nimport { isDefined } from \"../../core/util/TypeCheck\";\nimport { assert } from \"../../core/util/Debug\";\nimport { OneShotSource, OneShotSourceCurve, OneShotSourceOptions } from \"../OneShotSource\";\nimport { EQ, GTE, LT } from \"../../core/util/Math\";\n\nexport type ToneBufferSourceCurve = OneShotSourceCurve;\n\nexport interface ToneBufferSourceOptions extends OneShotSourceOptions {\n\turl: string | AudioBuffer | ToneAudioBuffer;\n\tcurve: ToneBufferSourceCurve;\n\tplaybackRate: Positive;\n\tfadeIn: Time;\n\tfadeOut: Time;\n\tloopStart: Time;\n\tloopEnd: Time;\n\tloop: boolean;\n\tonload: () => void;\n\tonerror: (error: Error) => void;\n}\n\n/**\n * Wrapper around the native BufferSourceNode.\n * @category Source\n */\nexport class ToneBufferSource extends OneShotSource {\n\n\treadonly name: string = \"ToneBufferSource\";\n\n\t/**\n\t * The oscillator\n\t */\n\tprivate _source = this.context.createBufferSource();\n\tprotected _internalChannels = [this._source];\n\n\t/**\n\t * The frequency of the oscillator\n\t */\n\treadonly playbackRate: Param<\"positive\">;\n\n\t/**\n\t * The private instance of the buffer object\n\t */\n\tprivate _buffer: ToneAudioBuffer;\n\n\t/**\n\t * indicators if the source has started/stopped\n\t */\n\tprivate _sourceStarted = false;\n\tprivate _sourceStopped = false;\n\n\t/**\n\t * @param url The buffer to play or url to load\n\t * @param onload The callback to invoke when the buffer is done playing.\n\t */\n\tconstructor(url?: ToneAudioBuffer | AudioBuffer | string, onload?: () => void);\n\tconstructor(options?: Partial);\n\tconstructor() {\n\n\t\tsuper(optionsFromArguments(ToneBufferSource.getDefaults(), arguments, [\"url\", \"onload\"]));\n\t\tconst options = optionsFromArguments(ToneBufferSource.getDefaults(), arguments, [\"url\", \"onload\"]);\n\n\t\tconnect(this._source, this._gainNode);\n\t\tthis._source.onended = () => this._stopSource();\n\n\t\t/**\n\t\t * The playbackRate of the buffer\n\t\t */\n\t\tthis.playbackRate = new Param({\n\t\t\tcontext: this.context,\n\t\t\tparam: this._source.playbackRate,\n\t\t\tunits: \"positive\",\n\t\t\tvalue: options.playbackRate,\n\t\t});\n\n\t\t// set some values initially\n\t\tthis.loop = options.loop;\n\t\tthis.loopStart = options.loopStart;\n\t\tthis.loopEnd = options.loopEnd;\n\t\tthis._buffer = new ToneAudioBuffer(options.url, options.onload, options.onerror);\n\n\t\tthis._internalChannels.push(this._source);\n\t}\n\n\tstatic getDefaults(): ToneBufferSourceOptions {\n\t\treturn Object.assign(OneShotSource.getDefaults(), {\n\t\t\turl: new ToneAudioBuffer(),\n\t\t\tloop: false,\n\t\t\tloopEnd: 0,\n\t\t\tloopStart: 0,\n\t\t\tonload: noOp,\n\t\t\tonerror: noOp,\n\t\t\tplaybackRate: 1,\n\t\t});\n\t}\n\n\t/**\n\t * The fadeIn time of the amplitude envelope.\n\t */\n\tget fadeIn(): Time {\n\t\treturn this._fadeIn;\n\t}\n\tset fadeIn(t: Time) {\n\t\tthis._fadeIn = t;\n\t}\n\n\t/**\n\t * The fadeOut time of the amplitude envelope.\n\t */\n\tget fadeOut(): Time {\n\t\treturn this._fadeOut;\n\t}\n\tset fadeOut(t: Time) {\n\t\tthis._fadeOut = t;\n\t}\n\n\t/**\n\t * The curve applied to the fades, either \"linear\" or \"exponential\"\n\t */\n\tget curve(): ToneBufferSourceCurve {\n\t\treturn this._curve;\n\t}\n\tset curve(t) {\n\t\tthis._curve = t;\n\t}\n\n\t/**\n\t * Start the buffer\n\t * @param time When the player should start.\n\t * @param offset The offset from the beginning of the sample to start at.\n\t * @param duration How long the sample should play. If no duration is given, it will default to the full length of the sample (minus any offset)\n\t * @param gain The gain to play the buffer back at.\n\t */\n\tstart(time?: Time, offset?: Time, duration?: Time, gain: GainFactor = 1): this {\n\t\tassert(this.buffer.loaded, \"buffer is either not set or not loaded\");\n\t\tconst computedTime = this.toSeconds(time);\n\n\t\t// apply the gain envelope\n\t\tthis._startGain(computedTime, gain);\n\n\t\t// if it's a loop the default offset is the loopstart point\n\t\tif (this.loop) {\n\t\t\toffset = defaultArg(offset, this.loopStart);\n\t\t} else {\n\t\t\t// otherwise the default offset is 0\n\t\t\toffset = defaultArg(offset, 0);\n\t\t}\n\t\t// make sure the offset is not less than 0\n\t\tlet computedOffset = Math.max(this.toSeconds(offset), 0);\n\n\t\t// start the buffer source\n\t\tif (this.loop) {\n\t\t\t// modify the offset if it's greater than the loop time\n\t\t\tconst loopEnd = this.toSeconds(this.loopEnd) || this.buffer.duration;\n\t\t\tconst loopStart = this.toSeconds(this.loopStart);\n\t\t\tconst loopDuration = loopEnd - loopStart;\n\t\t\t// move the offset back\n\t\t\tif (GTE(computedOffset, loopEnd)) {\n\t\t\t\tcomputedOffset = ((computedOffset - loopStart) % loopDuration) + loopStart;\n\t\t\t}\n\t\t\t// when the offset is very close to the duration, set it to 0\n\t\t\tif (EQ(computedOffset, this.buffer.duration)) {\n\t\t\t\tcomputedOffset = 0;\n\t\t\t}\n\t\t}\n\t\t\n\t\t// this.buffer.loaded would have return false if the AudioBuffer was undefined\n\t\tthis._source.buffer = this.buffer.get() as AudioBuffer;\n\t\tthis._source.loopEnd = this.toSeconds(this.loopEnd) || this.buffer.duration;\n\t\tif (LT(computedOffset, this.buffer.duration)) {\n\t\t\tthis._sourceStarted = true;\n\t\t\tthis._source.start(computedTime, computedOffset);\n\t\t}\n\n\t\t// if a duration is given, schedule a stop\n\t\tif (isDefined(duration)) {\n\t\t\tlet computedDur = this.toSeconds(duration);\n\t\t\t// make sure it's never negative\n\t\t\tcomputedDur = Math.max(computedDur, 0);\n\t\t\tthis.stop(computedTime + computedDur);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprotected _stopSource(time?: Seconds): void {\n\t\tif (!this._sourceStopped && this._sourceStarted) {\n\t\t\tthis._sourceStopped = true;\n\t\t\tthis._source.stop(this.toSeconds(time));\n\t\t\tthis._onended();\n\t\t}\n\t}\n\n\t/**\n\t * If loop is true, the loop will start at this position.\n\t */\n\tget loopStart(): Time {\n\t\treturn this._source.loopStart;\n\t}\n\tset loopStart(loopStart: Time) {\n\t\tthis._source.loopStart = this.toSeconds(loopStart);\n\t}\n\n\t/**\n\t * If loop is true, the loop will end at this position.\n\t */\n\tget loopEnd(): Time {\n\t\treturn this._source.loopEnd;\n\t}\n\tset loopEnd(loopEnd: Time) {\n\t\tthis._source.loopEnd = this.toSeconds(loopEnd);\n\t}\n\n\t/**\n\t * The audio buffer belonging to the player.\n\t */\n\tget buffer(): ToneAudioBuffer {\n\t\treturn this._buffer;\n\t}\n\tset buffer(buffer: ToneAudioBuffer) {\n\t\tthis._buffer.set(buffer);\n\t}\n\n\t/**\n\t * If the buffer should loop once it's over.\n\t */\n\tget loop(): boolean {\n\t\treturn this._source.loop;\n\t}\n\tset loop(loop: boolean) {\n\t\tthis._source.loop = loop;\n\t\tif (this._sourceStarted) {\n\t\t\tthis.cancelStop();\n\t\t}\n\t}\n\n\t/**\n\t * Clean up.\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._source.onended = null;\n\t\tthis._source.disconnect();\n\t\tthis._buffer.dispose();\n\t\tthis.playbackRate.dispose();\n\t\treturn this;\n\t}\n}\n","import { isAudioNode, isAudioParam } from \"../util/AdvancedTypeCheck\";\nimport { isDefined } from \"../util/TypeCheck\";\nimport { Param } from \"./Param\";\nimport { ToneWithContext } from \"./ToneWithContext\";\nimport { assert, warn } from \"../util/Debug\";\n/**\n * ToneAudioNode is the base class for classes which process audio.\n */\nexport class ToneAudioNode extends ToneWithContext {\n constructor() {\n super(...arguments);\n /**\n * The name of the class\n */\n this.name = \"ToneAudioNode\";\n /**\n * List all of the node that must be set to match the ChannelProperties\n */\n this._internalChannels = [];\n }\n /**\n * The number of inputs feeding into the AudioNode.\n * For source nodes, this will be 0.\n * @example\n * const node = new Tone.Gain();\n * console.log(node.numberOfInputs);\n */\n get numberOfInputs() {\n if (isDefined(this.input)) {\n if (isAudioParam(this.input) || this.input instanceof Param) {\n return 1;\n }\n else {\n return this.input.numberOfInputs;\n }\n }\n else {\n return 0;\n }\n }\n /**\n * The number of outputs of the AudioNode.\n * @example\n * const node = new Tone.Gain();\n * console.log(node.numberOfOutputs);\n */\n get numberOfOutputs() {\n if (isDefined(this.output)) {\n return this.output.numberOfOutputs;\n }\n else {\n return 0;\n }\n }\n //-------------------------------------\n // AUDIO PROPERTIES\n //-------------------------------------\n /**\n * Used to decide which nodes to get/set properties on\n */\n _isAudioNode(node) {\n return isDefined(node) && (node instanceof ToneAudioNode || isAudioNode(node));\n }\n /**\n * Get all of the audio nodes (either internal or input/output) which together\n * make up how the class node responds to channel input/output\n */\n _getInternalNodes() {\n const nodeList = this._internalChannels.slice(0);\n if (this._isAudioNode(this.input)) {\n nodeList.push(this.input);\n }\n if (this._isAudioNode(this.output)) {\n if (this.input !== this.output) {\n nodeList.push(this.output);\n }\n }\n return nodeList;\n }\n /**\n * Set the audio options for this node such as channelInterpretation\n * channelCount, etc.\n * @param options\n */\n _setChannelProperties(options) {\n const nodeList = this._getInternalNodes();\n nodeList.forEach(node => {\n node.channelCount = options.channelCount;\n node.channelCountMode = options.channelCountMode;\n node.channelInterpretation = options.channelInterpretation;\n });\n }\n /**\n * Get the current audio options for this node such as channelInterpretation\n * channelCount, etc.\n */\n _getChannelProperties() {\n const nodeList = this._getInternalNodes();\n assert(nodeList.length > 0, \"ToneAudioNode does not have any internal nodes\");\n // use the first node to get properties\n // they should all be the same\n const node = nodeList[0];\n return {\n channelCount: node.channelCount,\n channelCountMode: node.channelCountMode,\n channelInterpretation: node.channelInterpretation,\n };\n }\n /**\n * channelCount is the number of channels used when up-mixing and down-mixing\n * connections to any inputs to the node. The default value is 2 except for\n * specific nodes where its value is specially determined.\n */\n get channelCount() {\n return this._getChannelProperties().channelCount;\n }\n set channelCount(channelCount) {\n const props = this._getChannelProperties();\n // merge it with the other properties\n this._setChannelProperties(Object.assign(props, { channelCount }));\n }\n /**\n * channelCountMode determines how channels will be counted when up-mixing and\n * down-mixing connections to any inputs to the node.\n * The default value is \"max\". This attribute has no effect for nodes with no inputs.\n * * \"max\" - computedNumberOfChannels is the maximum of the number of channels of all connections to an input. In this mode channelCount is ignored.\n * * \"clamped-max\" - computedNumberOfChannels is determined as for \"max\" and then clamped to a maximum value of the given channelCount.\n * * \"explicit\" - computedNumberOfChannels is the exact value as specified by the channelCount.\n */\n get channelCountMode() {\n return this._getChannelProperties().channelCountMode;\n }\n set channelCountMode(channelCountMode) {\n const props = this._getChannelProperties();\n // merge it with the other properties\n this._setChannelProperties(Object.assign(props, { channelCountMode }));\n }\n /**\n * channelInterpretation determines how individual channels will be treated\n * when up-mixing and down-mixing connections to any inputs to the node.\n * The default value is \"speakers\".\n */\n get channelInterpretation() {\n return this._getChannelProperties().channelInterpretation;\n }\n set channelInterpretation(channelInterpretation) {\n const props = this._getChannelProperties();\n // merge it with the other properties\n this._setChannelProperties(Object.assign(props, { channelInterpretation }));\n }\n //-------------------------------------\n // CONNECTIONS\n //-------------------------------------\n /**\n * connect the output of a ToneAudioNode to an AudioParam, AudioNode, or ToneAudioNode\n * @param destination The output to connect to\n * @param outputNum The output to connect from\n * @param inputNum The input to connect to\n */\n connect(destination, outputNum = 0, inputNum = 0) {\n connect(this, destination, outputNum, inputNum);\n return this;\n }\n /**\n * Connect the output to the context's destination node.\n * @example\n * const osc = new Tone.Oscillator(\"C2\").start();\n * osc.toDestination();\n */\n toDestination() {\n this.connect(this.context.destination);\n return this;\n }\n /**\n * Connect the output to the context's destination node.\n * See [[toDestination]]\n * @deprecated\n */\n toMaster() {\n warn(\"toMaster() has been renamed toDestination()\");\n return this.toDestination();\n }\n /**\n * disconnect the output\n */\n disconnect(destination, outputNum = 0, inputNum = 0) {\n disconnect(this, destination, outputNum, inputNum);\n return this;\n }\n /**\n * Connect the output of this node to the rest of the nodes in series.\n * @example\n * const player = new Tone.Player(\"https://tonejs.github.io/audio/drum-samples/handdrum-loop.mp3\");\n * player.autostart = true;\n * const filter = new Tone.AutoFilter(4).start();\n * const distortion = new Tone.Distortion(0.5);\n * // connect the player to the filter, distortion and then to the master output\n * player.chain(filter, distortion, Tone.Destination);\n */\n chain(...nodes) {\n connectSeries(this, ...nodes);\n return this;\n }\n /**\n * connect the output of this node to the rest of the nodes in parallel.\n * @example\n * const player = new Tone.Player(\"https://tonejs.github.io/audio/drum-samples/conga-rhythm.mp3\");\n * player.autostart = true;\n * const pitchShift = new Tone.PitchShift(4).toDestination();\n * const filter = new Tone.Filter(\"G5\").toDestination();\n * // connect a node to the pitch shift and filter in parallel\n * player.fan(pitchShift, filter);\n */\n fan(...nodes) {\n nodes.forEach(node => this.connect(node));\n return this;\n }\n /**\n * Dispose and disconnect\n */\n dispose() {\n super.dispose();\n if (isDefined(this.input)) {\n if (this.input instanceof ToneAudioNode) {\n this.input.dispose();\n }\n else if (isAudioNode(this.input)) {\n this.input.disconnect();\n }\n }\n if (isDefined(this.output)) {\n if (this.output instanceof ToneAudioNode) {\n this.output.dispose();\n }\n else if (isAudioNode(this.output)) {\n this.output.disconnect();\n }\n }\n this._internalChannels = [];\n return this;\n }\n}\n//-------------------------------------\n// CONNECTIONS\n//-------------------------------------\n/**\n * connect together all of the arguments in series\n * @param nodes\n */\nexport function connectSeries(...nodes) {\n const first = nodes.shift();\n nodes.reduce((prev, current) => {\n if (prev instanceof ToneAudioNode) {\n prev.connect(current);\n }\n else if (isAudioNode(prev)) {\n connect(prev, current);\n }\n return current;\n }, first);\n}\n/**\n * Connect two nodes together so that signal flows from the\n * first node to the second. Optionally specify the input and output channels.\n * @param srcNode The source node\n * @param dstNode The destination node\n * @param outputNumber The output channel of the srcNode\n * @param inputNumber The input channel of the dstNode\n */\nexport function connect(srcNode, dstNode, outputNumber = 0, inputNumber = 0) {\n assert(isDefined(srcNode), \"Cannot connect from undefined node\");\n assert(isDefined(dstNode), \"Cannot connect to undefined node\");\n if (dstNode instanceof ToneAudioNode || isAudioNode(dstNode)) {\n assert(dstNode.numberOfInputs > 0, \"Cannot connect to node with no inputs\");\n }\n assert(srcNode.numberOfOutputs > 0, \"Cannot connect from node with no outputs\");\n // resolve the input of the dstNode\n while ((dstNode instanceof ToneAudioNode || dstNode instanceof Param)) {\n if (isDefined(dstNode.input)) {\n dstNode = dstNode.input;\n }\n }\n while (srcNode instanceof ToneAudioNode) {\n if (isDefined(srcNode.output)) {\n srcNode = srcNode.output;\n }\n }\n // make the connection\n if (isAudioParam(dstNode)) {\n srcNode.connect(dstNode, outputNumber);\n }\n else {\n srcNode.connect(dstNode, outputNumber, inputNumber);\n }\n}\n/**\n * Disconnect a node from all nodes or optionally include a destination node and input/output channels.\n * @param srcNode The source node\n * @param dstNode The destination node\n * @param outputNumber The output channel of the srcNode\n * @param inputNumber The input channel of the dstNode\n */\nexport function disconnect(srcNode, dstNode, outputNumber = 0, inputNumber = 0) {\n // resolve the destination node\n if (isDefined(dstNode)) {\n while (dstNode instanceof ToneAudioNode) {\n dstNode = dstNode.input;\n }\n }\n // resolve the src node\n while (!(isAudioNode(srcNode))) {\n if (isDefined(srcNode.output)) {\n srcNode = srcNode.output;\n }\n }\n if (isAudioParam(dstNode)) {\n srcNode.disconnect(dstNode, outputNumber);\n }\n else if (isAudioNode(dstNode)) {\n srcNode.disconnect(dstNode, outputNumber, inputNumber);\n }\n else {\n srcNode.disconnect();\n }\n}\n//# sourceMappingURL=ToneAudioNode.js.map","import { isAudioNode, isAudioParam } from \"../util/AdvancedTypeCheck\";\nimport { isDefined } from \"../util/TypeCheck\";\nimport { Param } from \"./Param\";\nimport { ToneWithContext, ToneWithContextOptions } from \"./ToneWithContext\";\nimport { assert, warn } from \"../util/Debug\";\n\nexport type InputNode = ToneAudioNode | AudioNode | Param | AudioParam;\nexport type OutputNode = ToneAudioNode | AudioNode;\n\ninterface ChannelProperties {\n\tchannelCount: number;\n\tchannelCountMode: ChannelCountMode;\n\tchannelInterpretation: ChannelInterpretation;\n}\n\n/**\n * The possible options for this node\n */\nexport type ToneAudioNodeOptions = ToneWithContextOptions;\n\n/**\n * ToneAudioNode is the base class for classes which process audio.\n */\nexport abstract class ToneAudioNode\n\textends ToneWithContext {\n\n\t/**\n\t * The name of the class\n\t */\n\tabstract readonly name: string = \"ToneAudioNode\";\n\n\t/**\n\t * The input node or nodes. If the object is a source,\n\t * it does not have any input and this.input is undefined.\n\t */\n\tabstract input: InputNode | undefined;\n\n\t/**\n\t * The output nodes. If the object is a sink,\n\t * it does not have any output and this.output is undefined.\n\t */\n\tabstract output: OutputNode | undefined;\n\n\t/**\n\t * The number of inputs feeding into the AudioNode.\n\t * For source nodes, this will be 0.\n\t * @example\n\t * const node = new Tone.Gain();\n\t * console.log(node.numberOfInputs);\n\t */\n\tget numberOfInputs(): number {\n\t\tif (isDefined(this.input)) {\n\t\t\tif (isAudioParam(this.input) || this.input instanceof Param) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn this.input.numberOfInputs;\n\t\t\t}\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * The number of outputs of the AudioNode.\n\t * @example\n\t * const node = new Tone.Gain();\n\t * console.log(node.numberOfOutputs);\n\t */\n\tget numberOfOutputs(): number {\n\t\tif (isDefined(this.output)) {\n\t\t\treturn this.output.numberOfOutputs;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * List all of the node that must be set to match the ChannelProperties\n\t */\n\tprotected _internalChannels: OutputNode[] = [];\n\n\t//-------------------------------------\n\t// AUDIO PROPERTIES\n\t//-------------------------------------\n\n\t/**\n\t * Used to decide which nodes to get/set properties on\n\t */\n\tprivate _isAudioNode(node: any): node is AudioNode | ToneAudioNode {\n\t\treturn isDefined(node) && (node instanceof ToneAudioNode || isAudioNode(node));\n\t}\n\n\t/**\n\t * Get all of the audio nodes (either internal or input/output) which together\n\t * make up how the class node responds to channel input/output\n\t */\n\tprivate _getInternalNodes(): OutputNode[] {\n\t\tconst nodeList = this._internalChannels.slice(0);\n\t\tif (this._isAudioNode(this.input)) {\n\t\t\tnodeList.push(this.input);\n\t\t}\n\t\tif (this._isAudioNode(this.output)) {\n\t\t\tif (this.input !== this.output) {\n\t\t\t\tnodeList.push(this.output);\n\t\t\t}\n\t\t}\n\t\treturn nodeList;\n\t}\n\n\t/**\n\t * Set the audio options for this node such as channelInterpretation\n\t * channelCount, etc.\n\t * @param options\n\t */\n\tprivate _setChannelProperties(options: ChannelProperties): void {\n\t\tconst nodeList = this._getInternalNodes();\n\t\tnodeList.forEach(node => {\n\t\t\tnode.channelCount = options.channelCount;\n\t\t\tnode.channelCountMode = options.channelCountMode;\n\t\t\tnode.channelInterpretation = options.channelInterpretation;\n\t\t});\n\t}\n\n\t/**\n\t * Get the current audio options for this node such as channelInterpretation\n\t * channelCount, etc.\n\t */\n\tprivate _getChannelProperties(): ChannelProperties {\n\t\tconst nodeList = this._getInternalNodes();\n\t\tassert(nodeList.length > 0, \"ToneAudioNode does not have any internal nodes\");\n\t\t// use the first node to get properties\n\t\t// they should all be the same\n\t\tconst node = nodeList[0];\n\t\treturn {\n\t\t\tchannelCount: node.channelCount,\n\t\t\tchannelCountMode: node.channelCountMode,\n\t\t\tchannelInterpretation: node.channelInterpretation,\n\t\t};\n\t}\n\n\t/**\n\t * channelCount is the number of channels used when up-mixing and down-mixing\n\t * connections to any inputs to the node. The default value is 2 except for\n\t * specific nodes where its value is specially determined.\n\t */\n\tget channelCount(): number {\n\t\treturn this._getChannelProperties().channelCount;\n\t}\n\tset channelCount(channelCount) {\n\t\tconst props = this._getChannelProperties();\n\t\t// merge it with the other properties\n\t\tthis._setChannelProperties(Object.assign(props, { channelCount }));\n\t}\n\n\t/**\n\t * channelCountMode determines how channels will be counted when up-mixing and\n\t * down-mixing connections to any inputs to the node.\n\t * The default value is \"max\". This attribute has no effect for nodes with no inputs.\n\t * * \"max\" - computedNumberOfChannels is the maximum of the number of channels of all connections to an input. In this mode channelCount is ignored.\n\t * * \"clamped-max\" - computedNumberOfChannels is determined as for \"max\" and then clamped to a maximum value of the given channelCount.\n\t * * \"explicit\" - computedNumberOfChannels is the exact value as specified by the channelCount.\n\t */\n\tget channelCountMode(): ChannelCountMode {\n\t\treturn this._getChannelProperties().channelCountMode;\n\t}\n\tset channelCountMode(channelCountMode) {\n\t\tconst props = this._getChannelProperties();\n\t\t// merge it with the other properties\n\t\tthis._setChannelProperties(Object.assign(props, { channelCountMode }));\n\t}\n\n\t/**\n\t * channelInterpretation determines how individual channels will be treated\n\t * when up-mixing and down-mixing connections to any inputs to the node.\n\t * The default value is \"speakers\".\n\t */\n\tget channelInterpretation(): ChannelInterpretation {\n\t\treturn this._getChannelProperties().channelInterpretation;\n\t}\n\tset channelInterpretation(channelInterpretation) {\n\t\tconst props = this._getChannelProperties();\n\t\t// merge it with the other properties\n\t\tthis._setChannelProperties(Object.assign(props, { channelInterpretation }));\n\t}\n\n\t//-------------------------------------\n\t// CONNECTIONS\n\t//-------------------------------------\n\n\t/**\n\t * connect the output of a ToneAudioNode to an AudioParam, AudioNode, or ToneAudioNode\n\t * @param destination The output to connect to\n\t * @param outputNum The output to connect from\n\t * @param inputNum The input to connect to\n\t */\n\tconnect(destination: InputNode, outputNum = 0, inputNum = 0): this {\n\t\tconnect(this, destination, outputNum, inputNum);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Connect the output to the context's destination node.\n\t * @example\n\t * const osc = new Tone.Oscillator(\"C2\").start();\n\t * osc.toDestination();\n\t */\n\ttoDestination(): this {\n\t\tthis.connect(this.context.destination);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Connect the output to the context's destination node.\n\t * See [[toDestination]]\n\t * @deprecated\n\t */\n\ttoMaster(): this {\n\t\twarn(\"toMaster() has been renamed toDestination()\");\n\t\treturn this.toDestination();\n\t}\n\n\t/**\n\t * disconnect the output\n\t */\n\tdisconnect(destination?: InputNode, outputNum = 0, inputNum = 0): this {\n\t\tdisconnect(this, destination, outputNum, inputNum);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Connect the output of this node to the rest of the nodes in series.\n\t * @example\n\t * const player = new Tone.Player(\"https://tonejs.github.io/audio/drum-samples/handdrum-loop.mp3\");\n\t * player.autostart = true;\n\t * const filter = new Tone.AutoFilter(4).start();\n\t * const distortion = new Tone.Distortion(0.5);\n\t * // connect the player to the filter, distortion and then to the master output\n\t * player.chain(filter, distortion, Tone.Destination);\n\t */\n\tchain(...nodes: InputNode[]): this {\n\t\tconnectSeries(this, ...nodes);\n\t\treturn this;\n\t}\n\n\t/**\n\t * connect the output of this node to the rest of the nodes in parallel.\n\t * @example\n\t * const player = new Tone.Player(\"https://tonejs.github.io/audio/drum-samples/conga-rhythm.mp3\");\n\t * player.autostart = true;\n\t * const pitchShift = new Tone.PitchShift(4).toDestination();\n\t * const filter = new Tone.Filter(\"G5\").toDestination();\n\t * // connect a node to the pitch shift and filter in parallel\n\t * player.fan(pitchShift, filter);\n\t */\n\tfan(...nodes: InputNode[]): this {\n\t\tnodes.forEach(node => this.connect(node));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Dispose and disconnect\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tif (isDefined(this.input)) {\n\t\t\tif (this.input instanceof ToneAudioNode) {\n\t\t\t\tthis.input.dispose();\n\t\t\t} else if (isAudioNode(this.input)) {\n\t\t\t\tthis.input.disconnect();\n\t\t\t}\n\t\t}\n\t\tif (isDefined(this.output)) {\n\t\t\tif (this.output instanceof ToneAudioNode) {\n\t\t\t\tthis.output.dispose();\n\t\t\t} else if (isAudioNode(this.output)) {\n\t\t\t\tthis.output.disconnect();\n\t\t\t}\n\t\t}\n\t\tthis._internalChannels = [];\n\t\treturn this;\n\t}\n}\n\n//-------------------------------------\n// CONNECTIONS\n//-------------------------------------\n\n/**\n * connect together all of the arguments in series\n * @param nodes\n */\nexport function connectSeries(...nodes: InputNode[]): void {\n\tconst first = nodes.shift();\n\tnodes.reduce((prev, current) => {\n\t\tif (prev instanceof ToneAudioNode) {\n\t\t\tprev.connect(current);\n\t\t} else if (isAudioNode(prev)) {\n\t\t\tconnect(prev, current);\n\t\t}\n\t\treturn current;\n\t}, first);\n}\n\n/**\n * Connect two nodes together so that signal flows from the\n * first node to the second. Optionally specify the input and output channels.\n * @param srcNode The source node\n * @param dstNode The destination node\n * @param outputNumber The output channel of the srcNode\n * @param inputNumber The input channel of the dstNode\n */\nexport function connect(srcNode: OutputNode, dstNode: InputNode, outputNumber = 0, inputNumber = 0): void {\n\n\tassert(isDefined(srcNode), \"Cannot connect from undefined node\");\n\tassert(isDefined(dstNode), \"Cannot connect to undefined node\");\n\n\tif (dstNode instanceof ToneAudioNode || isAudioNode(dstNode)) {\n\t\tassert(dstNode.numberOfInputs > 0, \"Cannot connect to node with no inputs\");\n\t}\n\tassert(srcNode.numberOfOutputs > 0, \"Cannot connect from node with no outputs\");\n\n\t// resolve the input of the dstNode\n\twhile ((dstNode instanceof ToneAudioNode || dstNode instanceof Param)) {\n\t\tif (isDefined(dstNode.input)) {\n\t\t\tdstNode = dstNode.input;\n\t\t}\n\t}\n\n\twhile (srcNode instanceof ToneAudioNode) {\n\t\tif (isDefined(srcNode.output)) {\n\t\t\tsrcNode = srcNode.output;\n\t\t}\n\t}\n\n\t// make the connection\n\tif (isAudioParam(dstNode)) {\n\t\tsrcNode.connect(dstNode as AudioParam, outputNumber);\n\t} else {\n\t\tsrcNode.connect(dstNode, outputNumber, inputNumber);\n\t}\n}\n\n/**\n * Disconnect a node from all nodes or optionally include a destination node and input/output channels.\n * @param srcNode The source node\n * @param dstNode The destination node\n * @param outputNumber The output channel of the srcNode\n * @param inputNumber The input channel of the dstNode\n */\nexport function disconnect(\n\tsrcNode: OutputNode,\n\tdstNode?: InputNode,\n\toutputNumber = 0,\n\tinputNumber = 0,\n): void {\n\n\t// resolve the destination node\n\tif (isDefined(dstNode)) {\n\t\twhile (dstNode instanceof ToneAudioNode) {\n\t\t\tdstNode = dstNode.input;\n\t\t}\n\t}\n\n\t// resolve the src node\n\twhile (!(isAudioNode(srcNode))) {\n\t\tif (isDefined(srcNode.output)) {\n\t\t\tsrcNode = srcNode.output;\n\t\t}\n\t}\n\n\tif (isAudioParam(dstNode)) {\n\t\tsrcNode.disconnect(dstNode, outputNumber);\n\t} else if (isAudioNode(dstNode)) {\n\t\tsrcNode.disconnect(dstNode, outputNumber, inputNumber);\n\t} else {\n\t\tsrcNode.disconnect();\n\t}\n}\n","import { dbToGain, gainToDb } from \"../type/Conversions\";\nimport { isAudioParam } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { Timeline } from \"../util/Timeline\";\nimport { isDefined } from \"../util/TypeCheck\";\nimport { ToneWithContext } from \"./ToneWithContext\";\nimport { EQ } from \"../util/Math\";\nimport { assert, assertRange } from \"../util/Debug\";\n/**\n * Param wraps the native Web Audio's AudioParam to provide\n * additional unit conversion functionality. It also\n * serves as a base-class for classes which have a single,\n * automatable parameter.\n * @category Core\n */\nexport class Param extends ToneWithContext {\n constructor() {\n super(optionsFromArguments(Param.getDefaults(), arguments, [\"param\", \"units\", \"convert\"]));\n this.name = \"Param\";\n this.overridden = false;\n /**\n * The minimum output value\n */\n this._minOutput = 1e-7;\n const options = optionsFromArguments(Param.getDefaults(), arguments, [\"param\", \"units\", \"convert\"]);\n assert(isDefined(options.param) &&\n (isAudioParam(options.param) || options.param instanceof Param), \"param must be an AudioParam\");\n while (!isAudioParam(options.param)) {\n options.param = options.param._param;\n }\n this._swappable = isDefined(options.swappable) ? options.swappable : false;\n if (this._swappable) {\n this.input = this.context.createGain();\n // initialize\n this._param = options.param;\n this.input.connect(this._param);\n }\n else {\n this._param = this.input = options.param;\n }\n this._events = new Timeline(1000);\n this._initialValue = this._param.defaultValue;\n this.units = options.units;\n this.convert = options.convert;\n this._minValue = options.minValue;\n this._maxValue = options.maxValue;\n // if the value is defined, set it immediately\n if (isDefined(options.value) && options.value !== this._toType(this._initialValue)) {\n this.setValueAtTime(options.value, 0);\n }\n }\n static getDefaults() {\n return Object.assign(ToneWithContext.getDefaults(), {\n convert: true,\n units: \"number\",\n });\n }\n get value() {\n const now = this.now();\n return this.getValueAtTime(now);\n }\n set value(value) {\n this.cancelScheduledValues(this.now());\n this.setValueAtTime(value, this.now());\n }\n get minValue() {\n // if it's not the default minValue, return it\n if (isDefined(this._minValue)) {\n return this._minValue;\n }\n else if (this.units === \"time\" || this.units === \"frequency\" ||\n this.units === \"normalRange\" || this.units === \"positive\" ||\n this.units === \"transportTime\" || this.units === \"ticks\" ||\n this.units === \"bpm\" || this.units === \"hertz\" || this.units === \"samples\") {\n return 0;\n }\n else if (this.units === \"audioRange\") {\n return -1;\n }\n else if (this.units === \"decibels\") {\n return -Infinity;\n }\n else {\n return this._param.minValue;\n }\n }\n get maxValue() {\n if (isDefined(this._maxValue)) {\n return this._maxValue;\n }\n else if (this.units === \"normalRange\" ||\n this.units === \"audioRange\") {\n return 1;\n }\n else {\n return this._param.maxValue;\n }\n }\n /**\n * Type guard based on the unit name\n */\n _is(arg, type) {\n return this.units === type;\n }\n /**\n * Make sure the value is always in the defined range\n */\n _assertRange(value) {\n if (isDefined(this.maxValue) && isDefined(this.minValue)) {\n assertRange(value, this._fromType(this.minValue), this._fromType(this.maxValue));\n }\n return value;\n }\n /**\n * Convert the given value from the type specified by Param.units\n * into the destination value (such as Gain or Frequency).\n */\n _fromType(val) {\n if (this.convert && !this.overridden) {\n if (this._is(val, \"time\")) {\n return this.toSeconds(val);\n }\n else if (this._is(val, \"decibels\")) {\n return dbToGain(val);\n }\n else if (this._is(val, \"frequency\")) {\n return this.toFrequency(val);\n }\n else {\n return val;\n }\n }\n else if (this.overridden) {\n // if it's overridden, should only schedule 0s\n return 0;\n }\n else {\n return val;\n }\n }\n /**\n * Convert the parameters value into the units specified by Param.units.\n */\n _toType(val) {\n if (this.convert && this.units === \"decibels\") {\n return gainToDb(val);\n }\n else {\n return val;\n }\n }\n //-------------------------------------\n // ABSTRACT PARAM INTERFACE\n // all docs are generated from ParamInterface.ts\n //-------------------------------------\n setValueAtTime(value, time) {\n const computedTime = this.toSeconds(time);\n const numericValue = this._fromType(value);\n assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to setValueAtTime: ${JSON.stringify(value)}, ${JSON.stringify(time)}`);\n this._assertRange(numericValue);\n this.log(this.units, \"setValueAtTime\", value, computedTime);\n this._events.add({\n time: computedTime,\n type: \"setValueAtTime\",\n value: numericValue,\n });\n this._param.setValueAtTime(numericValue, computedTime);\n return this;\n }\n getValueAtTime(time) {\n const computedTime = Math.max(this.toSeconds(time), 0);\n const after = this._events.getAfter(computedTime);\n const before = this._events.get(computedTime);\n let value = this._initialValue;\n // if it was set by\n if (before === null) {\n value = this._initialValue;\n }\n else if (before.type === \"setTargetAtTime\" && (after === null || after.type === \"setValueAtTime\")) {\n const previous = this._events.getBefore(before.time);\n let previousVal;\n if (previous === null) {\n previousVal = this._initialValue;\n }\n else {\n previousVal = previous.value;\n }\n if (before.type === \"setTargetAtTime\") {\n value = this._exponentialApproach(before.time, previousVal, before.value, before.constant, computedTime);\n }\n }\n else if (after === null) {\n value = before.value;\n }\n else if (after.type === \"linearRampToValueAtTime\" || after.type === \"exponentialRampToValueAtTime\") {\n let beforeValue = before.value;\n if (before.type === \"setTargetAtTime\") {\n const previous = this._events.getBefore(before.time);\n if (previous === null) {\n beforeValue = this._initialValue;\n }\n else {\n beforeValue = previous.value;\n }\n }\n if (after.type === \"linearRampToValueAtTime\") {\n value = this._linearInterpolate(before.time, beforeValue, after.time, after.value, computedTime);\n }\n else {\n value = this._exponentialInterpolate(before.time, beforeValue, after.time, after.value, computedTime);\n }\n }\n else {\n value = before.value;\n }\n return this._toType(value);\n }\n setRampPoint(time) {\n time = this.toSeconds(time);\n let currentVal = this.getValueAtTime(time);\n this.cancelAndHoldAtTime(time);\n if (this._fromType(currentVal) === 0) {\n currentVal = this._toType(this._minOutput);\n }\n this.setValueAtTime(currentVal, time);\n return this;\n }\n linearRampToValueAtTime(value, endTime) {\n const numericValue = this._fromType(value);\n const computedTime = this.toSeconds(endTime);\n assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to linearRampToValueAtTime: ${JSON.stringify(value)}, ${JSON.stringify(endTime)}`);\n this._assertRange(numericValue);\n this._events.add({\n time: computedTime,\n type: \"linearRampToValueAtTime\",\n value: numericValue,\n });\n this.log(this.units, \"linearRampToValueAtTime\", value, computedTime);\n this._param.linearRampToValueAtTime(numericValue, computedTime);\n return this;\n }\n exponentialRampToValueAtTime(value, endTime) {\n let numericValue = this._fromType(value);\n // the value can't be 0\n numericValue = EQ(numericValue, 0) ? this._minOutput : numericValue;\n this._assertRange(numericValue);\n const computedTime = this.toSeconds(endTime);\n assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to exponentialRampToValueAtTime: ${JSON.stringify(value)}, ${JSON.stringify(endTime)}`);\n // store the event\n this._events.add({\n time: computedTime,\n type: \"exponentialRampToValueAtTime\",\n value: numericValue,\n });\n this.log(this.units, \"exponentialRampToValueAtTime\", value, computedTime);\n this._param.exponentialRampToValueAtTime(numericValue, computedTime);\n return this;\n }\n exponentialRampTo(value, rampTime, startTime) {\n startTime = this.toSeconds(startTime);\n this.setRampPoint(startTime);\n this.exponentialRampToValueAtTime(value, startTime + this.toSeconds(rampTime));\n return this;\n }\n linearRampTo(value, rampTime, startTime) {\n startTime = this.toSeconds(startTime);\n this.setRampPoint(startTime);\n this.linearRampToValueAtTime(value, startTime + this.toSeconds(rampTime));\n return this;\n }\n targetRampTo(value, rampTime, startTime) {\n startTime = this.toSeconds(startTime);\n this.setRampPoint(startTime);\n this.exponentialApproachValueAtTime(value, startTime, rampTime);\n return this;\n }\n exponentialApproachValueAtTime(value, time, rampTime) {\n time = this.toSeconds(time);\n rampTime = this.toSeconds(rampTime);\n const timeConstant = Math.log(rampTime + 1) / Math.log(200);\n this.setTargetAtTime(value, time, timeConstant);\n // at 90% start a linear ramp to the final value\n this.cancelAndHoldAtTime(time + rampTime * 0.9);\n this.linearRampToValueAtTime(value, time + rampTime);\n return this;\n }\n setTargetAtTime(value, startTime, timeConstant) {\n const numericValue = this._fromType(value);\n // The value will never be able to approach without timeConstant > 0.\n assert(isFinite(timeConstant) && timeConstant > 0, \"timeConstant must be a number greater than 0\");\n const computedTime = this.toSeconds(startTime);\n this._assertRange(numericValue);\n assert(isFinite(numericValue) && isFinite(computedTime), `Invalid argument(s) to setTargetAtTime: ${JSON.stringify(value)}, ${JSON.stringify(startTime)}`);\n this._events.add({\n constant: timeConstant,\n time: computedTime,\n type: \"setTargetAtTime\",\n value: numericValue,\n });\n this.log(this.units, \"setTargetAtTime\", value, computedTime, timeConstant);\n this._param.setTargetAtTime(numericValue, computedTime, timeConstant);\n return this;\n }\n setValueCurveAtTime(values, startTime, duration, scaling = 1) {\n duration = this.toSeconds(duration);\n startTime = this.toSeconds(startTime);\n const startingValue = this._fromType(values[0]) * scaling;\n this.setValueAtTime(this._toType(startingValue), startTime);\n const segTime = duration / (values.length - 1);\n for (let i = 1; i < values.length; i++) {\n const numericValue = this._fromType(values[i]) * scaling;\n this.linearRampToValueAtTime(this._toType(numericValue), startTime + i * segTime);\n }\n return this;\n }\n cancelScheduledValues(time) {\n const computedTime = this.toSeconds(time);\n assert(isFinite(computedTime), `Invalid argument to cancelScheduledValues: ${JSON.stringify(time)}`);\n this._events.cancel(computedTime);\n this._param.cancelScheduledValues(computedTime);\n this.log(this.units, \"cancelScheduledValues\", computedTime);\n return this;\n }\n cancelAndHoldAtTime(time) {\n const computedTime = this.toSeconds(time);\n const valueAtTime = this._fromType(this.getValueAtTime(computedTime));\n // remove the schedule events\n assert(isFinite(computedTime), `Invalid argument to cancelAndHoldAtTime: ${JSON.stringify(time)}`);\n this.log(this.units, \"cancelAndHoldAtTime\", computedTime, \"value=\" + valueAtTime);\n // if there is an event at the given computedTime\n // and that even is not a \"set\"\n const before = this._events.get(computedTime);\n const after = this._events.getAfter(computedTime);\n if (before && EQ(before.time, computedTime)) {\n // remove everything after\n if (after) {\n this._param.cancelScheduledValues(after.time);\n this._events.cancel(after.time);\n }\n else {\n this._param.cancelAndHoldAtTime(computedTime);\n this._events.cancel(computedTime + this.sampleTime);\n }\n }\n else if (after) {\n this._param.cancelScheduledValues(after.time);\n // cancel the next event(s)\n this._events.cancel(after.time);\n if (after.type === \"linearRampToValueAtTime\") {\n this.linearRampToValueAtTime(this._toType(valueAtTime), computedTime);\n }\n else if (after.type === \"exponentialRampToValueAtTime\") {\n this.exponentialRampToValueAtTime(this._toType(valueAtTime), computedTime);\n }\n }\n // set the value at the given time\n this._events.add({\n time: computedTime,\n type: \"setValueAtTime\",\n value: valueAtTime,\n });\n this._param.setValueAtTime(valueAtTime, computedTime);\n return this;\n }\n rampTo(value, rampTime = 0.1, startTime) {\n if (this.units === \"frequency\" || this.units === \"bpm\" || this.units === \"decibels\") {\n this.exponentialRampTo(value, rampTime, startTime);\n }\n else {\n this.linearRampTo(value, rampTime, startTime);\n }\n return this;\n }\n /**\n * Apply all of the previously scheduled events to the passed in Param or AudioParam.\n * The applied values will start at the context's current time and schedule\n * all of the events which are scheduled on this Param onto the passed in param.\n */\n apply(param) {\n const now = this.context.currentTime;\n // set the param's value at the current time and schedule everything else\n param.setValueAtTime(this.getValueAtTime(now), now);\n // if the previous event was a curve, then set the rest of it\n const previousEvent = this._events.get(now);\n if (previousEvent && previousEvent.type === \"setTargetAtTime\") {\n // approx it until the next event with linear ramps\n const nextEvent = this._events.getAfter(previousEvent.time);\n // or for 2 seconds if there is no event\n const endTime = nextEvent ? nextEvent.time : now + 2;\n const subdivisions = (endTime - now) / 10;\n for (let i = now; i < endTime; i += subdivisions) {\n param.linearRampToValueAtTime(this.getValueAtTime(i), i);\n }\n }\n this._events.forEachAfter(this.context.currentTime, event => {\n if (event.type === \"cancelScheduledValues\") {\n param.cancelScheduledValues(event.time);\n }\n else if (event.type === \"setTargetAtTime\") {\n param.setTargetAtTime(event.value, event.time, event.constant);\n }\n else {\n param[event.type](event.value, event.time);\n }\n });\n return this;\n }\n /**\n * Replace the Param's internal AudioParam. Will apply scheduled curves\n * onto the parameter and replace the connections.\n */\n setParam(param) {\n assert(this._swappable, \"The Param must be assigned as 'swappable' in the constructor\");\n const input = this.input;\n input.disconnect(this._param);\n this.apply(param);\n this._param = param;\n input.connect(this._param);\n return this;\n }\n dispose() {\n super.dispose();\n this._events.dispose();\n return this;\n }\n get defaultValue() {\n return this._toType(this._param.defaultValue);\n }\n //-------------------------------------\n // \tAUTOMATION CURVE CALCULATIONS\n // \tMIT License, copyright (c) 2014 Jordan Santell\n //-------------------------------------\n // Calculates the the value along the curve produced by setTargetAtTime\n _exponentialApproach(t0, v0, v1, timeConstant, t) {\n return v1 + (v0 - v1) * Math.exp(-(t - t0) / timeConstant);\n }\n // Calculates the the value along the curve produced by linearRampToValueAtTime\n _linearInterpolate(t0, v0, t1, v1, t) {\n return v0 + (v1 - v0) * ((t - t0) / (t1 - t0));\n }\n // Calculates the the value along the curve produced by exponentialRampToValueAtTime\n _exponentialInterpolate(t0, v0, t1, v1, t) {\n return v0 * Math.pow(v1 / v0, (t - t0) / (t1 - t0));\n }\n}\n//# sourceMappingURL=Param.js.map","import { AbstractParam } from \"../context/AbstractParam\";\nimport { dbToGain, gainToDb } from \"../type/Conversions\";\nimport { Decibels, Frequency, Positive, Time, UnitMap, UnitName } from \"../type/Units\";\nimport { isAudioParam } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { Timeline } from \"../util/Timeline\";\nimport { isDefined } from \"../util/TypeCheck\";\nimport { ToneWithContext, ToneWithContextOptions } from \"./ToneWithContext\";\nimport { EQ } from \"../util/Math\";\nimport { assert, assertRange } from \"../util/Debug\";\n\nexport interface ParamOptions extends ToneWithContextOptions {\n\tunits: TypeName;\n\tvalue?: UnitMap[TypeName];\n\tparam: AudioParam | Param;\n\tconvert: boolean;\n\tminValue?: number;\n\tmaxValue?: number;\n\tswappable?: boolean;\n}\n\n/**\n * the possible automation types\n */\ntype AutomationType = \"linearRampToValueAtTime\" | \"exponentialRampToValueAtTime\" | \"setValueAtTime\" | \"setTargetAtTime\" | \"cancelScheduledValues\";\n\ninterface TargetAutomationEvent {\n\ttype: \"setTargetAtTime\";\n\ttime: number;\n\tvalue: number;\n\tconstant: number;\n}\n\ninterface NormalAutomationEvent {\n\ttype: Exclude;\n\ttime: number;\n\tvalue: number;\n}\n/**\n * The events on the automation\n */\nexport type AutomationEvent = NormalAutomationEvent | TargetAutomationEvent;\n\n/**\n * Param wraps the native Web Audio's AudioParam to provide\n * additional unit conversion functionality. It also\n * serves as a base-class for classes which have a single,\n * automatable parameter.\n * @category Core\n */\nexport class Param\n\textends ToneWithContext>\n\timplements AbstractParam {\n\n\treadonly name: string = \"Param\";\n\n\treadonly input: GainNode | AudioParam;\n\n\treadonly units: UnitName;\n\tconvert: boolean;\n\toverridden = false;\n\n\t/**\n\t * The timeline which tracks all of the automations.\n\t */\n\tprotected _events: Timeline;\n\n\t/**\n\t * The native parameter to control\n\t */\n\tprotected _param: AudioParam;\n\n\t/**\n\t * The default value before anything is assigned\n\t */\n\tprotected _initialValue: number;\n\n\t/**\n\t * The minimum output value\n\t */\n\tprivate _minOutput = 1e-7;\n\n\t/**\n\t * Private reference to the min and max values if passed into the constructor\n\t */\n\tprivate readonly _minValue?: number;\n\tprivate readonly _maxValue?: number;\n\n\t/**\n\t * If the underlying AudioParam can be swapped out\n\t * using the setParam method. \n\t */\n\tprotected readonly _swappable: boolean;\n\n\t/**\n\t * @param param The AudioParam to wrap\n\t * @param units The unit name\n\t * @param convert Whether or not to convert the value to the target units\n\t */\n\tconstructor(param: AudioParam, units?: TypeName, convert?: boolean);\n\tconstructor(options: Partial>);\n\tconstructor() {\n\t\tsuper(optionsFromArguments(Param.getDefaults(), arguments, [\"param\", \"units\", \"convert\"]));\n\n\t\tconst options = optionsFromArguments(Param.getDefaults(), arguments, [\"param\", \"units\", \"convert\"]);\n\n\t\tassert(isDefined(options.param) &&\n\t\t\t(isAudioParam(options.param) || options.param instanceof Param), \"param must be an AudioParam\");\n\n\t\twhile (!isAudioParam(options.param)) {\n\t\t\toptions.param = options.param._param;\n\t\t}\n\n\t\tthis._swappable = isDefined(options.swappable) ? options.swappable : false;\n\t\tif (this._swappable) {\n\t\t\tthis.input = this.context.createGain();\n\t\t\t// initialize\n\t\t\tthis._param = options.param;\n\t\t\tthis.input.connect(this._param);\n\t\t} else {\n\t\t\tthis._param = this.input = options.param;\n\t\t}\n\t\tthis._events = new Timeline(1000);\n\t\tthis._initialValue = this._param.defaultValue;\n\t\tthis.units = options.units;\n\t\tthis.convert = options.convert;\n\t\tthis._minValue = options.minValue;\n\t\tthis._maxValue = options.maxValue;\n\n\t\t// if the value is defined, set it immediately\n\t\tif (isDefined(options.value) && options.value !== this._toType(this._initialValue)) {\n\t\t\tthis.setValueAtTime(options.value, 0);\n\t\t}\n\t}\n\n\tstatic getDefaults(): ParamOptions {\n\t\treturn Object.assign(ToneWithContext.getDefaults(), {\n\t\t\tconvert: true,\n\t\t\tunits: \"number\" as UnitName,\n\t\t} as ParamOptions);\n\t}\n\n\tget value(): UnitMap[TypeName] {\n\t\tconst now = this.now();\n\t\treturn this.getValueAtTime(now);\n\t}\n\tset value(value) {\n\t\tthis.cancelScheduledValues(this.now());\n\t\tthis.setValueAtTime(value, this.now());\n\t}\n\n\tget minValue(): number {\n\t\t// if it's not the default minValue, return it\n\t\tif (isDefined(this._minValue)) {\n\t\t\treturn this._minValue;\n\t\t} else if (this.units === \"time\" || this.units === \"frequency\" ||\n\t\t\tthis.units === \"normalRange\" || this.units === \"positive\" ||\n\t\t\tthis.units === \"transportTime\" || this.units === \"ticks\" ||\n\t\t\tthis.units === \"bpm\" || this.units === \"hertz\" || this.units === \"samples\") {\n\t\t\treturn 0;\n\t\t} else if (this.units === \"audioRange\") {\n\t\t\treturn -1;\n\t\t} else if (this.units === \"decibels\") {\n\t\t\treturn -Infinity;\n\t\t} else {\n\t\t\treturn this._param.minValue;\n\t\t}\n\t}\n\n\tget maxValue(): number {\n\t\tif (isDefined(this._maxValue)) {\n\t\t\treturn this._maxValue;\n\t\t} else if (this.units === \"normalRange\" ||\n\t\t\tthis.units === \"audioRange\") {\n\t\t\treturn 1;\n\t\t} else {\n\t\t\treturn this._param.maxValue;\n\t\t}\n\t}\n\n\t/**\n\t * Type guard based on the unit name\n\t */\n\tprivate _is(arg: any, type: UnitName): arg is T {\n\t\treturn this.units === type;\n\t}\n\n\t/**\n\t * Make sure the value is always in the defined range\n\t */\n\tprivate _assertRange(value: number): number {\n\t\tif (isDefined(this.maxValue) && isDefined(this.minValue)) {\n\t\t\tassertRange(value, this._fromType(this.minValue), this._fromType(this.maxValue));\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Convert the given value from the type specified by Param.units\n\t * into the destination value (such as Gain or Frequency).\n\t */\n\tprotected _fromType(val: UnitMap[TypeName]): number {\n\t\tif (this.convert && !this.overridden) {\n\t\t\tif (this._is