UNPKG

@pixi/sound

Version:

WebAudio API playback library with filters

1 lines 3.79 kB
{"version":3,"file":"Filterable.mjs","sources":["../src/Filterable.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 */\nclass Filterable\n{\n /** Get the gain node */\n private _input: AudioNode;\n\n /** The destination output audio node */\n private _output: AudioNode;\n\n /** Collection of filters. */\n private _filters: Filter[];\n\n /**\n * @param input - The source audio node\n * @param output - The output audio node\n */\n constructor(input: AudioNode, output: AudioNode)\n {\n this._output = output;\n this._input = input;\n }\n\n /** The destination output audio node */\n get destination(): AudioNode\n {\n return this._input;\n }\n\n /** The collection of filters. */\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 {\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\n filters.forEach((filter: Filter) =>\n {\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 /** Cleans up. */\n public destroy(): void\n {\n this.filters = null;\n this._input = null;\n this._output = null;\n }\n}\n\nexport { Filterable };\n"],"names":[],"mappings":"AAOA,MAAM,UACN,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcI,WAAA,CAAY,OAAkB,MAC9B,EAAA;AACI,IAAA,IAAA,CAAK,OAAU,GAAA,MAAA,CAAA;AACf,IAAA,IAAA,CAAK,MAAS,GAAA,KAAA,CAAA;AAAA,GAClB;AAAA;AAAA,EAGA,IAAI,WACJ,GAAA;AACI,IAAA,OAAO,IAAK,CAAA,MAAA,CAAA;AAAA,GAChB;AAAA;AAAA,EAGA,IAAI,OACJ,GAAA;AACI,IAAA,OAAO,IAAK,CAAA,QAAA,CAAA;AAAA,GAChB;AAAA,EACA,IAAI,QAAQ,OACZ,EAAA;AACI,IAAA,IAAI,KAAK,QACT,EAAA;AACI,MAAK,IAAA,CAAA,QAAA,CAAS,OAAQ,CAAA,CAAC,MACvB,KAAA;AACI,QAAA,IAAI,MACJ,EAAA;AACI,UAAA,MAAA,CAAO,UAAW,EAAA,CAAA;AAAA,SACtB;AAAA,OACH,CAAA,CAAA;AACD,MAAA,IAAA,CAAK,QAAW,GAAA,IAAA,CAAA;AAEhB,MAAK,IAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,IAAA,CAAK,OAAO,CAAA,CAAA;AAAA,KACpC;AAEA,IAAI,IAAA,OAAA,IAAW,QAAQ,MACvB,EAAA;AACI,MAAK,IAAA,CAAA,QAAA,GAAW,OAAQ,CAAA,KAAA,CAAM,CAAC,CAAA,CAAA;AAG/B,MAAA,IAAA,CAAK,OAAO,UAAW,EAAA,CAAA;AAGvB,MAAA,IAAI,UAAqB,GAAA,IAAA,CAAA;AAEzB,MAAQ,OAAA,CAAA,OAAA,CAAQ,CAAC,MACjB,KAAA;AACI,QAAA,IAAI,eAAe,IACnB,EAAA;AAGI,UAAK,IAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,MAAA,CAAO,WAAW,CAAA,CAAA;AAAA,SAG1C,MAAA;AACI,UAAW,UAAA,CAAA,OAAA,CAAQ,OAAO,WAAW,CAAA,CAAA;AAAA,SACzC;AACA,QAAa,UAAA,GAAA,MAAA,CAAA;AAAA,OAChB,CAAA,CAAA;AACD,MAAW,UAAA,CAAA,OAAA,CAAQ,KAAK,OAAO,CAAA,CAAA;AAAA,KACnC;AAAA,GACJ;AAAA;AAAA,EAGO,OACP,GAAA;AACI,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA,CAAA;AACf,IAAA,IAAA,CAAK,MAAS,GAAA,IAAA,CAAA;AACd,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA,CAAA;AAAA,GACnB;AACJ;;;;"}