{"version":3,"file":"pixi-sound.js","sources":["../src/Filterable.ts","../src/htmlaudio/HTMLAudioInstance.ts","../src/htmlaudio/HTMLAudioMedia.ts","../node_modules/promise-polyfill/promise.js","../src/filters/Filter.ts","../src/webaudio/WebAudioUtils.ts","../src/filters/EqualizerFilter.ts","../src/filters/DistortionFilter.ts","../src/filters/StereoFilter.ts","../src/filters/ReverbFilter.ts","../src/filters/MonoFilter.ts","../src/filters/TelephoneFilter.ts","../src/htmlaudio/HTMLAudioContext.ts","../src/webaudio/WebAudioInstance.ts","../src/webaudio/WebAudioNodes.ts","../src/webaudio/WebAudioMedia.ts","../src/utils/SoundUtils.ts","../src/loader/Loader.ts","../src/loader/LoaderMiddleware.ts","../src/sprites/SoundSprite.ts","../src/webaudio/WebAudioContext.ts","../src/SoundLibrary.ts","../src/Sound.ts","../src/index.ts"],"sourcesContent":["import Filter from \"./filters/Filter\";\n\n/**\n * Abstract class which SoundNodes and SoundContext\n * both extend. This provides the functionality for adding\n * dynamic filters.\n * @class Filterable\n * @memberof PIXI.sound\n * @param {AudioNode} source The source audio node\n * @param {AudioNode} destination The output audio node\n * @private\n */\nexport default class Filterable\n{\n /**\n * Get the gain node\n * @name PIXI.sound.Filterable#_input\n * @type {AudioNode}\n * @private\n */\n private _input: AudioNode;\n\n /**\n * The destination output audio node\n * @name PIXI.sound.Filterable#_output\n * @type {AudioNode}\n * @private\n */\n private _output: AudioNode;\n\n /**\n * Collection of filters.\n * @name PIXI.sound.Filterable#_filters\n * @type {PIXI.sound.filters.Filter[]}\n * @private\n */\n private _filters: Filter[];\n\n constructor(input: AudioNode, output: AudioNode)\n {\n this._output = output;\n this._input = input;\n }\n\n /**\n * The destination output audio node\n * @name PIXI.sound.Filterable#destination\n * @type {AudioNode}\n * @readonly\n */\n get destination(): AudioNode\n {\n return this._input;\n }\n\n /**\n * The collection of filters\n * @name PIXI.sound.Filterable#filters\n * @type {PIXI.sound.filters.Filter[]}\n */\n get filters(): Filter[]\n {\n return this._filters;\n }\n set filters(filters: Filter[])\n {\n if (this._filters)\n {\n this._filters.forEach((filter: Filter) => {\n if (filter)\n {\n filter.disconnect();\n }\n });\n this._filters = null;\n // Reconnect direct path\n this._input.connect(this._output);\n }\n\n if (filters && filters.length)\n {\n this._filters = filters.slice(0);\n\n // Disconnect direct path before inserting filters\n this._input.disconnect();\n\n // Connect each filter\n let prevFilter: Filter = null;\n filters.forEach((filter: Filter) => {\n if (prevFilter === null)\n {\n // first filter is the destination\n // for the analyser\n this._input.connect(filter.destination);\n }\n else\n {\n prevFilter.connect(filter.destination);\n }\n prevFilter = filter;\n });\n prevFilter.connect(this._output);\n }\n }\n\n /**\n * Cleans up.\n * @method PIXI.sound.Filterable#destroy\n */\n public destroy(): void\n {\n this.filters = null;\n this._input = null;\n this._output = null;\n }\n}\n","import HTMLAudioMedia from \"./HTMLAudioMedia\";\nimport {IMediaInstance} from \"../interfaces/IMediaInstance\";\nimport {PlayOptions} from \"../Sound\";\n\nlet id = 0;\n\n/**\n * Instance which wraps the `