-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.d.ts
More file actions
121 lines (98 loc) · 6.43 KB
/
Copy pathindex.d.ts
File metadata and controls
121 lines (98 loc) · 6.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// @audio/filter — TypeScript declarations
export type Buf = Float32Array | Float64Array | number[]
export interface BiquadCoef { b0: number; b1: number; b2: number; a1: number; a2: number }
export type SOS = BiquadCoef[]
export interface LadderParams {
fc?: number // cutoff frequency Hz (default 1000)
resonance?: number // 0–1, self-oscillation at 1 (moogLadder) / ≈1.15–1.2 (diodeLadder)
fs?: number // sample rate (default 44100)
drive?: number // input drive / saturation amount (default 1)
[key: string]: unknown
}
/** Moog 4-pole transistor ladder lowpass — ZDF, –24 dB/oct, self-oscillates at resonance=1 */
export function moogLadder(data: Buf, params: LadderParams): Buf
/** Diode ladder lowpass (Roland TB-303 style) — bidirectionally-coupled ZDF tridiagonal solve, –24 dB/oct, self-oscillates at resonance≈1.15–1.2 */
export function diodeLadder(data: Buf, params: LadderParams): Buf
export interface Korg35Params extends LadderParams {
type?: 'lowpass' | 'highpass' // default 'lowpass'. Never self-oscillates (2-pole loop can't reach -180° phase at finite frequency); LP+HP=input holds exactly only at resonance=0
}
/** Korg35 2-pole filter (MS-20 style) — ZDF, –12 dB/oct */
export function korg35(data: Buf, params: Korg35Params): Buf
export interface OberheimParams {
fc?: number // cutoff frequency Hz (default 1000)
resonance?: number // 0–1 (default 0), maps to SVF damping R=1-resonance; peak gain 1/(2R)
type?: 'lowpass' | 'highpass' | 'bandpass' | 'notch' // default 'lowpass'
fs?: number // sample rate (default 44100)
[key: string]: unknown
}
/** Oberheim SEM 2-pole state-variable filter — ZDF, –12 dB/oct, multimode. No drive param. */
export function oberheim(data: Buf, params: OberheimParams): Buf
export interface DcBlockerParams { R?: number; [key: string]: unknown } // R default 0.995
/** DC blocking filter H(z) = (1−z⁻¹)/(1−R·z⁻¹) */
export function dcBlocker(data: Buf, params?: DcBlockerParams): Buf
export interface CombParams {
delay: number // delay in samples
gain?: number // feedback/feedforward gain (default 0.5)
type?: 'feedforward' | 'feedback' // default 'feedforward'
[key: string]: unknown
}
/** Comb filter (feedforward FIR or feedback IIR). Reallocates the delay line when params.delay changes on a reused params object. */
export function comb(data: Buf, params: CombParams): Buf
export interface AllpassParams { a?: number; fc?: number; Q?: number; fs?: number; [key: string]: unknown }
/** Allpass filters — unity magnitude, frequency-dependent phase shift */
export declare namespace allpass {
/** First-order allpass: H(z) = (a + z⁻¹) / (1 + a·z⁻¹). params.a is required for meaningful output. */
function first(data: Buf, params: AllpassParams): Buf
/** Second-order allpass via RBJ biquad. params.fc required, Q default 0.707, fs default 44100. */
function second(data: Buf, params: AllpassParams): Buf
}
export interface EmphasisParams { alpha?: number; [key: string]: unknown } // alpha default 0.97
/** Pre-emphasis H(z) = 1 − α·z⁻¹ */
export function emphasis(data: Buf, params?: EmphasisParams): Buf
/** De-emphasis H(z) = 1/(1 − α·z⁻¹) */
export function deemphasis(data: Buf, params?: EmphasisParams): Buf
export interface ResonatorParams { fc: number; bw?: number; fs?: number; [key: string]: unknown } // bw default 50
/** Constant-peak-gain resonator (JOS two-zero form) — modal synthesis (bells, drums, formants). Peak gain is exactly 0dB at fc for any bw. Throws if params.fc is omitted. */
export function resonator(data: Buf, params: ResonatorParams): Buf
export interface SpectralTiltParams { slope?: number; fs?: number; [key: string]: unknown } // slope default 0 (dB/octave, positive = boost highs)
/** Spectral tilt — cascade of octave-spaced first-order shelving sections, ±dB/oct */
export function spectralTilt(data: Buf, params?: SpectralTiltParams): Buf
export interface VariableBandwidthParams {
fc?: number // default 1000
Q?: number // default 0.707
fs?: number // default 44100
type?: 'lowpass' | 'highpass' | 'bandpass' // default 'lowpass'
[key: string]: unknown
}
/** Variable-bandwidth biquad filter — fc/Q exponentially smoothed (5ms time constant) and coefficients recomputed every sample, eliminating coefficient-jump clicks on mid-stream parameter changes */
export function variableBandwidth(data: Buf, params?: VariableBandwidthParams): Buf
export interface FilterParams {
fc: number // cutoff/center frequency Hz — required, throws if omitted
Q?: number // quality factor (default 0.707)
order?: number // filter order: 2 = biquad, 4+ = Butterworth cascade (default 2)
fs?: number // sample rate (default 44100)
[key: string]: unknown
}
type Butterworth = (order: number, fc: number, fs: number, type: 'lowpass' | 'highpass') => SOS
/** Highpass filter — removes below cutoff. Order 2: RBJ biquad. Order 4+: Butterworth SOS (requires highpass.useButterworth(butterworth) to be called once, see digital-filter/iir/butterworth.js). Throws if params.fc is omitted. */
export function highpass(data: Buf, params: FilterParams): Buf
export declare namespace highpass { function useButterworth(bw: Butterworth): void }
/** Lowpass filter — removes above cutoff. Order 2: RBJ biquad. Order 4+: Butterworth SOS (requires lowpass.useButterworth(butterworth) to be called once, see digital-filter/iir/butterworth.js). Throws if params.fc is omitted. */
export function lowpass(data: Buf, params: FilterParams): Buf
export declare namespace lowpass { function useButterworth(bw: Butterworth): void }
export interface BandpassParams {
fc: number // center frequency Hz — required, throws if omitted
Q?: number // quality factor (default 0.707)
fs?: number // sample rate (default 44100)
[key: string]: unknown
}
/** Bandpass filter — passes around center frequency, rejects rest. RBJ biquad (constant 0dB peak gain). Throws if params.fc is omitted. */
export function bandpass(data: Buf, params: BandpassParams): Buf
export interface NotchParams {
fc: number // notch frequency Hz — required, throws if omitted
Q?: number // quality factor (default 30)
fs?: number // sample rate (default 44100)
[key: string]: unknown
}
/** Notch (band-reject) filter — unity gain except null at fc. Throws if params.fc is omitted. */
export function notch(data: Buf, params: NotchParams): Buf