pyFDN.td.SOSBank#

class pyFDN.td.SOSBank(sos)[source]#

Stateful per-channel SOS filter cascade (e.g. in-loop absorption).

One cascade of second-order sections per channel, filtered with scipy.signal.sosfilt(). State persists across filter() calls, so a long signal can be processed in consecutive blocks.

Parameters:

sos (ArrayLike) – Per-channel SOS bank of shape (n_sections, 6, N) where N = num_channels. Section rows are [b0, b1, b2, a0, a1, a2]. This is the canonical SOS bank layout in pyFDN: it matches the FLAMO parallelSOSFilter input and the output of pyFDN.decay_to_first_order_shelf(), pyFDN.decay_to_one_pole(), and pyFDN.decay_to_geq().

Variables:

sos – The same bank in the (N, n_sections, 6) layout scipy.signal.sosfilt() expects, one cascade per row.

Notes

Pass an instance as post_delay to pyFDN.process_fdn() to apply frequency-dependent absorption inside the feedback loop. pyFDN.build_to_impz() also constructs this class internally when an pyFDN.FDNBuild contains per-delay-line filters.

__init__(sos)[source]#

Methods

__init__(sos)

filter(block)

Filter one block and advance internal state.

process(signal, *[, squeeze])

Filter a whole signal in one call, from the current state.

reset()

Clear internal state (no-op for stateless operators).

Attributes

in_channels

out_channels

filter(block)[source]#

Filter one block and advance internal state.

Return type:

ndarray

reset()[source]#

Clear internal state (no-op for stateless operators).

Return type:

None