Skip to main content

Biquad

Struct Biquad 

Source
pub struct Biquad { /* private fields */ }
Expand description

A biquad filter implementation for audio equalization.

This struct implements a second-order IIR filter using the biquad algorithm. It maintains internal state (x1, x2, y1, y2) for processing continuous audio streams. The filter coefficients are calculated based on the RBJ Audio EQ Cookbook formulas.

The filter supports shelf and peak responses for tone stack equalization.

Implementations§

Source§

impl Biquad

Source

pub fn new_shelf( shelf: ShelfType, sample_rate: f32, freq: f32, gain_db: f32, ) -> Self

Creates a new biquad shelf filter with the specified parameters.

§Arguments
  • shelf - The type of shelf filter (Low, High, or Peak).
  • sample_rate - The sample rate of the audio signal (e.g., 44100.0).
  • freq - The center/cutoff frequency in Hz.
  • gain_db - The gain in decibels (positive for boost, negative for cut).
§Returns

A new Biquad instance configured with the calculated coefficients.

Source

pub fn process(&mut self, x: f32) -> f32

Processes a single audio sample through the biquad filter.

This method applies the filter to the input sample and updates the internal state for the next sample. It should be called for each sample in sequence.

§Arguments
  • x - The input audio sample.
§Returns

The filtered output sample.

Source

pub fn set_gain_db(&mut self, gain_db: f32)

Updates the gain of the biquad filter.

Recalculates the filter coefficients based on the new gain value while keeping the same frequency and shelf type. The internal state is preserved.

§Arguments
  • gain_db - The new gain in decibels.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Any for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

§

fn type_name(&self) -> &'static str

§

impl<T> AnySync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<S> FromSample<S> for S

§

fn from_sample_(s: S) -> S

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<S, T> Duplex<S> for T
where T: FromSample<S> + ToSample<S>,