{"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;;;;"}