import { Gain } from "../../core/context/Gain"; import { ToneAudioNode, ToneAudioNodeOptions } from "../../core/context/ToneAudioNode"; import { NormalRange } from "../../core/type/Units"; import { Signal } from "../../signal/Signal"; interface CrossFadeOptions extends ToneAudioNodeOptions { fade: NormalRange; } /** * Tone.Crossfade provides equal power fading between two inputs. * More on crossfading technique [here](https://en.wikipedia.org/wiki/Fade_(audio_engineering)#Crossfading). * ``` * +---------+ * +> input a +>--+ * +-----------+ +---------------------+ | | | * | 1s signal +>--> stereoPannerNode L +>----> gain | | * +-----------+ | | +---------+ | * +-> pan R +>-+ | +--------+ * | +---------------------+ | +---> output +> * +------+ | | +---------+ | +--------+ * | fade +>----+ | +> input b +>--+ * +------+ | | | * +--> gain | * +---------+ * ``` * @example * var crossFade = new CrossFade(0.5); * //connect effect A to crossfade from * //effect output 0 to crossfade input 0 * effectA.connect(crossFade.a); * //connect effect B to crossfade from * //effect output 0 to crossfade input 1 * effectB.connect(crossFade.b); * crossFade.fade.value = 0; * // ^ only effectA is output * crossFade.fade.value = 1; * // ^ only effectB is output * crossFade.fade.value = 0.5; * // ^ the two signals are mixed equally. * @category Component */ export declare class CrossFade extends ToneAudioNode { readonly name: string; /** * The crossfading is done by a StereoPannerNode */ private _panner; /** * Split the output of the panner node into two values used to control the gains. */ private _split; /** * Convert the fade value into an audio range value so it can be connected * to the panner.pan AudioParam */ private _g2a; /** * The input which is at full level when fade = 0 */ readonly a: Gain; /** * The input which is at full level when fade = 1 */ readonly b: Gain; /** * The output is a mix between `a` and `b` at the ratio of `fade` */ readonly output: Gain; /** * CrossFade has no input, you must choose either `a` or `b` */ readonly input: undefined; /** * The mix between the two inputs. A fade value of 0 * will output 100% crossFade.a and * a value of 1 will output 100% crossFade.b. */ readonly fade: Signal; protected _internalChannels: Gain[]; /** * @param fade The initial fade value [0, 1]. */ constructor(fade?: NormalRange); constructor(options?: Partial); static getDefaults(): CrossFadeOptions; dispose(): this; } export {};