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 process_block() 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_dss() to apply frequency-dependent absorption inside the feedback loop. pyFDN.build_to_td() constructs this class for every populated SOS hook in an pyFDN.FDNBuild.

__init__(sos)[source]#

Methods

__init__(sos)

process_block(block)

Process one block and advance internal state.

process_signal(signal, *[, squeeze])

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

reset()

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

Attributes

in_channels

out_channels

process_block(block)[source]#

Process one block and advance internal state.

Return type:

ndarray

reset()[source]#

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

Return type:

None