import { ToneAudioNodeOptions } from "../core/context/ToneAudioNode"; import { SignalOperator } from "./SignalOperator"; import { WaveShaper } from "./WaveShaper"; /** * Return the absolute value of an incoming signal. * * @example * import { Abs, Signal } from "tone"; * const signal = new Signal(-1); * const abs = new Abs(); * signal.connect(abs); * // the output of abs is 1. * @category Signal */ export class Abs extends SignalOperator { readonly name: string = "Abs"; /** * The node which converts the audio ranges */ private _abs = new WaveShaper({ context: this.context, mapping: val => { if (Math.abs(val) < 0.001) { return 0; } else { return Math.abs(val); } }, }); /** * The AudioRange input [-1, 1] */ input = this._abs; /** * The output range [0, 1] */ output = this._abs; /** * clean up */ dispose(): this { super.dispose(); this._abs.dispose(); return this; } }