audioJS

@audio/filter-biquad

Status calibrated

npm2.0.2licenseMIT

Audio-facing biquad filters — highpass, lowpass, bandpass, notch, allpass (Hz/Q params, per-channel state)

Overview

Install
Updated
Family
filter, 16 packages under it
Tags
shape
import { highpass, lowpass, bandpass, notch, allpass } from '@audio/filter-biquad'

Hz/Q-parameterized wrappers over the shared @audio/biquad kernel — one call per filter shape, coefficients recomputed only when fc/Q/fs/order actually change, state cached on the params object.

lowpass(buffer, { fc: 2000, fs: 44100 })                // 2nd-order (default) — no registration needed
highpass(buffer, { fc: 80, fs: 44100 })                  // rumble filter
bandpass(buffer, { fc: 1000, Q: 5, fs: 44100 })          // narrow band
notch(buffer, { fc: 50, Q: 30, fs: 44100 })              // remove 50 Hz mains hum
allpass.first(buffer, { a: 0.5 })                        // 1st-order, coefficient a
allpass.second(buffer, { fc: 1000, Q: 1, fs: 44100 })    // 2nd-order, center fc, quality Q

lowpass/highpass default to a 2nd-order RBJ biquad (−12 dB/oct-12\,\text{dB/oct}). For 4th-order-and-up Butterworth cascades, register a designer once — kept out of the default import so the common 2nd-order case stays dependency-free:

import butterworth from 'digital-filter/iir/butterworth.js'

lowpass.useButterworth(butterworth)                       // once, before any order > 2 call
lowpass(buffer, { fc: 2000, order: 4, fs: 44100 })        // 4th-order Butterworth, -24 dB/oct
Function Param Default
lowpass, highpass fc — required, Hz
order 2 2 = RBJ biquad; 4+ = Butterworth (needs useButterworth)
Q 0.707 quality factor (1/√2, maximally flat)
fs 44100 sample rate, Hz
bandpass fc — required, center Hz
Q 0.707 narrower band = higher Q (differs from the raw @audio/biquad kernel's default of 1)
fs 44100 sample rate, Hz
notch fc — required, null frequency Hz
Q 30 notch width — lower (e.g. 5) is wider
fs 44100 sample rate, Hz
allpass.first a — required, pole at z = −a
allpass.second fc, Q, fs — / 0.707 / 44100 RBJ cookbook allpass

Pass the same params object on every call to persist state across blocks:

let params = { fc: 1000, fs: 44100 }
for (let buf of stream) lowpass(buf, params)

Use when: building an audio-facing biquad filter (Hz/Q, not raw SOS coefficients); bypass this and use @audio/biquad directly when you already have coefficients or need cascade/analysis primitives.


Part of @audio/filter — the filter family umbrella. This README is generated from the umbrella docs.

MIT © audiojs