biquadjs
Version:
Create arbitrary biquad filters to apply to signals. Created for real time biosensing, works in most general cases.
96 lines (95 loc) • 3.04 kB
TypeScript
export type FilterSettings = {
sps: number;
useSMA4?: boolean;
useNotch50?: boolean;
useNotch60?: boolean;
useLowpass?: boolean;
lowpassHz?: number;
useHighpass?: boolean;
highpassHz?: number;
useBandpass?: boolean;
bandpassLower?: number;
bandpassUpper?: number;
useDCBlock?: boolean;
DCBresonance?: number;
useScaling?: boolean;
scalar?: number;
offset?: number;
trimOutliers?: boolean;
outlierTolerance?: number;
};
export declare class BiquadChannelFilterer {
idx: number;
sps: number;
bandpassLower?: number;
bandpassUpper?: number;
useSMA4?: boolean;
last4?: number[];
filtered: number;
trimOutliers?: boolean;
outlierTolerance?: number;
useNotch50?: boolean;
useNotch60?: boolean;
useLowpass?: boolean;
lowpassHz?: number;
useHighpass?: boolean;
highpassHz?: number;
useBandpass?: boolean;
useDCBlock?: boolean;
DCBresonance?: number;
useScaling?: boolean;
offset?: number;
scalar?: number;
notch50?: any;
notch60?: any;
lp1?: any;
bp1?: any;
dcb?: any;
hp1?: any;
constructor(options?: FilterSettings);
reset(sps?: number): void;
setBandpass(bandpassLower?: number, bandpassUpper?: number, sps?: number): void;
apply(latestData?: number): number;
}
export declare class Biquad {
type: string;
freq: number;
sps: number;
Q: number;
dbGain: number;
a0: number;
a1: number;
a2: number;
b0: number;
b1: number;
b2: number;
x1: number;
x2: number;
y1: number;
y2: number;
constructor(type: 'lowpass' | 'highpass' | 'bandpass' | 'notch' | 'peak' | 'lowshelf' | 'highshelf', freq: number, sps: number, Q?: number, dbGain?: number);
lowpass(A: any, sn: any, cs: any, alpha: any, beta: any): void;
highpass(A: any, sn: any, cs: any, alpha: any, beta: any): void;
bandpass(A: any, sn: any, cs: any, alpha: any, beta: any): void;
notch(A: any, sn: any, cs: any, alpha: any, beta: any): void;
peak(A: any, sn: any, cs: any, alpha: any, beta: any): void;
lowshelf(A: any, sn: any, cs: any, alpha: any, beta: any): void;
highshelf(A: any, sn: any, cs: any, alpha: any, beta: any): void;
applyFilter(signal_step: any): number;
zResult(freq: any): number;
static calcCenterFrequency(freqStart: any, freqEnd: any): number;
static calcBandwidth(freqStart: any, freqEnd: any): number;
static calcBandpassQ(frequency: any, bandwidth: any, resonance?: number): number;
static calcNotchQ(frequency: any, bandwidth: any, resonance?: number): number;
}
export declare class DCBlocker {
r: number;
x1: number;
x2: number;
y1: number;
y2: number;
constructor(r?: number);
applyFilter(signal_step: any): number;
}
export declare const makeNotchFilter: (frequency: any, sps: any, bandwidth: any) => Biquad;
export declare const makeBandpassFilter: (freqStart: any, freqEnd: any, sps: any, resonance?: number) => Biquad;