@pixi/sound
Version:
WebAudio API playback library with filters
1 lines • 3.2 kB
Source Map (JSON)
{"version":3,"file":"DistortionFilter.mjs","sources":["../../src/filters/DistortionFilter.ts"],"sourcesContent":["import { getInstance } from '../instance';\nimport { Filter } from './Filter';\n\n/**\n * Filter for adding adding delaynode.\n *\n * @memberof filters\n */\nclass DistortionFilter extends Filter\n{\n /** The Wave shape node use to distort */\n private _distortion: WaveShaperNode;\n\n /** The amount of distoration */\n private _amount: number;\n\n /** @param amount - The amount of distoration from 0 to 1. */\n constructor(amount = 0)\n {\n let distortion: WaveShaperNode;\n\n if (!getInstance().useLegacy)\n {\n const { audioContext } = getInstance().context;\n\n distortion = audioContext.createWaveShaper();\n }\n\n super(distortion);\n\n this._distortion = distortion;\n\n this.amount = amount;\n }\n\n /** The amount of distortion to set. */\n set amount(value: number)\n {\n this._amount = value;\n if (getInstance().useLegacy)\n {\n return;\n }\n const scaledValue = value * 1000;\n const samples = 44100;\n const curve: Float32Array = new Float32Array(samples);\n const deg: number = Math.PI / 180;\n\n let i = 0;\n let x: number;\n\n for (; i < samples; ++i)\n {\n x = (i * 2 / samples) - 1;\n curve[i] = (3 + scaledValue) * x * 20 * deg / (Math.PI + (scaledValue * Math.abs(x)));\n }\n this._distortion.curve = curve;\n this._distortion.oversample = '4x';\n }\n get amount(): number\n {\n return this._amount;\n }\n\n public destroy(): void\n {\n this._distortion = null;\n super.destroy();\n }\n}\n\nexport { DistortionFilter };\n"],"names":[],"mappings":";;;AAQA,MAAM,yBAAyB,MAC/B,CAAA;AAAA;AAAA,EAQI,WAAA,CAAY,SAAS,CACrB,EAAA;AACI,IAAI,IAAA,UAAA,CAAA;AAEJ,IAAI,IAAA,CAAC,WAAY,EAAA,CAAE,SACnB,EAAA;AACI,MAAA,MAAM,EAAE,YAAA,EAAiB,GAAA,WAAA,EAAc,CAAA,OAAA,CAAA;AAEvC,MAAA,UAAA,GAAa,aAAa,gBAAiB,EAAA,CAAA;AAAA,KAC/C;AAEA,IAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AAEhB,IAAA,IAAA,CAAK,WAAc,GAAA,UAAA,CAAA;AAEnB,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAA;AAAA,GAClB;AAAA;AAAA,EAGA,IAAI,OAAO,KACX,EAAA;AACI,IAAA,IAAA,CAAK,OAAU,GAAA,KAAA,CAAA;AACf,IAAI,IAAA,WAAA,GAAc,SAClB,EAAA;AACI,MAAA,OAAA;AAAA,KACJ;AACA,IAAA,MAAM,cAAc,KAAQ,GAAA,GAAA,CAAA;AAC5B,IAAA,MAAM,OAAU,GAAA,KAAA,CAAA;AAChB,IAAM,MAAA,KAAA,GAAsB,IAAI,YAAA,CAAa,OAAO,CAAA,CAAA;AACpD,IAAM,MAAA,GAAA,GAAc,KAAK,EAAK,GAAA,GAAA,CAAA;AAE9B,IAAA,IAAI,CAAI,GAAA,CAAA,CAAA;AACR,IAAI,IAAA,CAAA,CAAA;AAEJ,IAAO,OAAA,CAAA,GAAI,OAAS,EAAA,EAAE,CACtB,EAAA;AACI,MAAK,CAAA,GAAA,CAAA,GAAI,IAAI,OAAW,GAAA,CAAA,CAAA;AACxB,MAAA,KAAA,CAAM,CAAC,CAAA,GAAA,CAAK,CAAI,GAAA,WAAA,IAAe,CAAI,GAAA,EAAA,GAAK,GAAO,IAAA,IAAA,CAAK,EAAM,GAAA,WAAA,GAAc,IAAK,CAAA,GAAA,CAAI,CAAC,CAAA,CAAA,CAAA;AAAA,KACtF;AACA,IAAA,IAAA,CAAK,YAAY,KAAQ,GAAA,KAAA,CAAA;AACzB,IAAA,IAAA,CAAK,YAAY,UAAa,GAAA,IAAA,CAAA;AAAA,GAClC;AAAA,EACA,IAAI,MACJ,GAAA;AACI,IAAA,OAAO,IAAK,CAAA,OAAA,CAAA;AAAA,GAChB;AAAA,EAEO,OACP,GAAA;AACI,IAAA,IAAA,CAAK,WAAc,GAAA,IAAA,CAAA;AACnB,IAAA,KAAA,CAAM,OAAQ,EAAA,CAAA;AAAA,GAClB;AACJ;;;;"}