UNPKG

ez-web-audio

Version:

Making the Web Audio API super EZ since 2024.

93 lines 3.27 kB
import { Effect } from './index'; /** * All available BiquadFilter types. */ export type FilterType = 'lowpass' | 'highpass' | 'bandpass' | 'lowshelf' | 'highshelf' | 'peaking' | 'notch' | 'allpass'; /** * Options for creating a FilterEffect. */ export interface FilterEffectOptions { /** Filter frequency in Hz (default: 350) */ frequency?: number; /** Filter Q factor (default: 1) */ q?: number; /** Filter gain in dB (default: 0) - only used for shelf and peaking filters */ gain?: number; /** Filter detune in cents (default: 0) */ detune?: number; } /** * FilterEffect - A wrapper around BiquadFilterNode that implements the Effect interface. * * Supports all 8 BiquadFilter types with wet/dry mixing via equal-power crossfade. * The bypass and mix controls allow smooth blending between filtered and dry signal. * * @example * ```typescript * const filter = createFilterEffect(audioContext, 'lowpass', { frequency: 800, q: 2 }) * filter.frequency = 1000 // Adjust cutoff * filter.mix = 0.5 // 50% wet/dry * filter.bypass = true // Bypass filter entirely * ``` */ export declare class FilterEffect implements Effect { private readonly filterNode; private readonly inputNode; private readonly outputNode; private readonly dryGain; private readonly wetGain; private _bypass; private _mix; constructor(audioContext: AudioContext, type: FilterType, options?: FilterEffectOptions); /** The input AudioNode (receives signal from chain) */ get input(): AudioNode; /** The output AudioNode (sends signal to next in chain) */ get output(): AudioNode; /** * When true, signal bypasses the filter entirely (100% dry). */ get bypass(): boolean; set bypass(v: boolean); /** * Wet/dry mix: 0 = fully dry (no filter), 1 = fully wet (all through filter). * Uses equal-power crossfade for natural mixing. */ get mix(): number; set mix(v: number); /** Filter frequency in Hz */ get frequency(): number; set frequency(v: number); /** Filter Q factor (resonance) */ get q(): number; set q(v: number); /** Filter gain in dB (for shelf and peaking filters) */ get gain(): number; set gain(v: number); /** Filter detune in cents */ get detune(): number; set detune(v: number); /** The current filter type */ get type(): FilterType; set type(v: FilterType); /** * Apply wet/dry mix using equal-power crossfade. * cos(angle) for dry, sin(angle) for wet where angle = mix * PI/2 */ private applyMix; } /** * Factory function to create a FilterEffect. * * @param audioContext - The AudioContext to use * @param type - The filter type (lowpass, highpass, bandpass, etc.) * @param options - Optional filter parameters * @returns A new FilterEffect instance * * @example * ```typescript * const lowpass = createFilterEffect(audioContext, 'lowpass', { frequency: 800 }) * const highpass = createFilterEffect(audioContext, 'highpass', { frequency: 200, q: 2 }) * ``` */ export declare function createFilterEffect(audioContext: AudioContext, type: FilterType, options?: FilterEffectOptions): FilterEffect; //# sourceMappingURL=filter-effect.d.ts.map