UNPKG

@pixi/sound

Version:

WebAudio API playback library with filters

46 lines (43 loc) 1.22 kB
import { getInstance } from '../instance.mjs'; import { Filter } from './Filter.mjs'; class DistortionFilter extends Filter { /** @param amount - The amount of distoration from 0 to 1. */ constructor(amount = 0) { let distortion; if (!getInstance().useLegacy) { const { audioContext } = getInstance().context; distortion = audioContext.createWaveShaper(); } super(distortion); this._distortion = distortion; this.amount = amount; } /** The amount of distortion to set. */ set amount(value) { this._amount = value; if (getInstance().useLegacy) { return; } const scaledValue = value * 1e3; const samples = 44100; const curve = new Float32Array(samples); const deg = Math.PI / 180; let i = 0; let x; for (; i < samples; ++i) { x = i * 2 / samples - 1; curve[i] = (3 + scaledValue) * x * 20 * deg / (Math.PI + scaledValue * Math.abs(x)); } this._distortion.curve = curve; this._distortion.oversample = "4x"; } get amount() { return this._amount; } destroy() { this._distortion = null; super.destroy(); } } export { DistortionFilter }; //# sourceMappingURL=DistortionFilter.mjs.map