pyFDN.process_fdn#
- pyFDN.process_fdn(input_signal, delays, A, B, C, D, *, post_delay=None, post_matrix=None, post_output=None)[source]#
Simulate the feedback delay network using block processing.
Recursion per block: delay output -> optional post-delay filter -> output gains C, and in the feedback path: absorbed delay output -> feedback matrix A -> optional post-matrix filter -> + B input. The wet signal is processed with an optional post-output filter before being added to the direct signal.
- Parameters:
input_signal (
ArrayLike) – Input of shape (num_samples,) or (num_samples, num_inputs).delays (
ArrayLike) – Delay lengths in samples, shape (N,).A (
ArrayLike) – Feedback matrix: static (N, N) or FIR polynomial (N, N, order) in z^{-1} convention.B (
ArrayLike) – Static input, output, and direct gains.C (
ArrayLike) – Static input, output, and direct gains.D (
ArrayLike) – Static input, output, and direct gains.post_delay (
Any|None) – An optional filter applied to the delay output before feedback processing. Must implement a filter method that accepts and processes the delay output. Typically per-delay-line absorption, e.g.pyFDN.td.SOSBank.post_matrix (
Any|None) – An optional filter applied to the feedback signal after the feedback matrix multiplication. Must implement a filter method that accepts and processes the feedback signal (e.g.pyFDN.td.TimeVaryingMatrix).post_output (
Any|None) – An optional filter applied to the wet signal (output signal) before it is added to the direct signal. Must implement a filter method that accepts and processes the wet signal.
- Returns:
output – Shape (num_samples, num_outputs), squeezed.
- Return type: