Skip to main content
Ctrl+K
pyFDN - Home pyFDN - Home
  • Overview
  • Installation
  • Usage
  • Examples Gallery
  • API Reference
    • Training losses: design notes
    • pyFDN
    • Contributing
    • Credits
    • History
    • Audio Gallery
  • GitHub
  • Overview
  • Installation
  • Usage
  • Examples Gallery
  • API Reference
  • Training losses: design notes
  • pyFDN
  • Contributing
  • Credits
  • History
  • Audio Gallery
  • GitHub
  • Examples Gallery

Examples Gallery#

Rendered Marimo notebooks demonstrating pyFDN. The gallery is generated automatically from every example_*.py file under examples/.

Getting Started#

Build an FDN with process_fdn

Hands-on walk-through of the FDN knobs - delays, feedback matrix, in/out gains and decay - assembled as a delay state space and simulated with pyFDN.process_fdn, the pure-NumPy time-domain path. Every step has experiments to try.

FDN matrix and system gallery

Explore pyFDN’s catalog of feedback matrices and complete FDN systems while checking their lossless and allpass properties.

Train an FDN to match a measured room

Hands-on walk-through of fitting an FDN to a measured room impulse response by gradient descent - a generic 1 s reverberator in, decay and output EQ trained out - with the objective, the parametrization and the runtime each a switch you can turn. Every step has experiments to try.

Vanilla FDN (FLAMO)

Build a basic FLAMO FDN, inspect its response, and process a dry audio signal through it.

Feedback Matrices#

Denser reverberation with a delay feedback matrix

Compare three feedback-path topologies to show how delay feedback matrices accelerate echo-density buildup.

Interpolate orthogonal matrices

Follow a geodesic between two orthogonal feedback matrices and listen to representative interpolated FDNs.

Nearest sign-agnostic orthogonal matrix

Fit an orthogonal matrix whose element magnitudes approximate a non-negative target matrix despite unknown signs.

Paraunitary filter feedback delay network

Build an FDN with a lossless FIR scattering matrix and verify its time-domain and modal responses.

Scattering feedback matrices

Compare dense, velvet-noise, elemental, and static feedback matrices by their echo-density buildup.

Absorption & Decay#

Absorption GEQ in an FDN

Design per-delay graphic-EQ absorption filters and confirm that the rendered FDN follows a target frequency-dependent reverberation time.

Convert a room impulse response into an FDN

Estimate octave-band decay and level from a measured room response, then design an FDN that matches both.

FDN with spread modal decay

Contrast homogeneous modal decay with a rotated absorption design that spreads reverberation times across modes.

Multi-slope decay: from a measured response to an FDN

Estimate two decay slopes per octave from a measured multi-room response and resynthesize them with parallel FDNs.

Analysis & Verification#

Decorrelation in feedback delay networks

Measure how a velvet-noise scattering feedback matrix decorrelates the input-output paths of an FDN.

FDN design tradeoff

Visualize how delay count and delay length trade computational cost against modal and echo density.

FDN eigenvectors (mode shapes)

Compute and visualize FDN mode shapes from the left and right eigenvectors of the loop polynomial.

Frequency-dependent pole boundaries

Bound the poles of an FDN with frequency-dependent absorption using loop-transfer singular values.

Random FDN statistics

Analyze the pole-angle and residue distributions of random FDNs and separate modal drive from undriven residue.

Time-domain FDN versus FLAMO

Render the same paraunitary FDN with GEQ absorption in two independent engines and verify sample-accurate agreement.

Optimization#

Colorless FDN presets

Load optimized colorless FDN builds, add a chosen decay time, and compare their magnitude responses and impulse responses.

Train a colorless FDN

Optimize an FDN for a flat lossless magnitude response, extract its build, and add decay for listening.

Allpass FDNs#

Allpass but not uniallpass FDN

Demonstrate an FDN that is allpass for one delay configuration but loses that property when its delays change.

Allpass FDN completion

Complete the input, output, and direct-path coefficients that turn a given feedback matrix into a uniallpass FDN.

Allpass FDN embedded in a larger FDN

Embed a homogeneous MIMO allpass FDN inside a larger recursive delay network with stereo output.

Gardner’s nested allpass FDN

Recreate Gardner’s SISO reverberator by iteratively nesting feedforward and feedback allpass sections.

Homogeneous allpass FDN (MIMO)

Construct and verify a multi-input, multi-output homogeneous allpass FDN from delay-line gains and an orthogonal mixing matrix.

Homogeneous allpass FDN (SISO)

Build a single-input, single-output homogeneous allpass FDN and validate its allpass response.

Poletti allpass FDN

Construct Poletti’s homogeneous allpass FDN topology and inspect its impulse and frequency responses.

Schroeder allpass in a feedback loop

Place a Schroeder allpass cascade inside a recursive loop and examine the resulting reverberator.

Schroeder allpass reverberator

Build the classic Schroeder series-allpass reverberator and verify that it is uniallpass – allpass whatever the delays.

Special FDNs#

Coupled rooms FDN

Model two rooms with different decay characteristics and join their delay networks through an acoustic coupling matrix.

Reverberation enhancement with a time-varying FDN

Reverberation enhancement system built with the pyFDN.td graph: an FDN inside an acoustic feedback loop, with a time-varying feedback matrix raising the stable gain before feedback.

Scattering delay network from room geometry

Derive a scattering delay network from room geometry and wall absorption, then render its impulse response with FLAMO.

Time-varying FDN

Process music through an FDN whose orthogonal feedback matrix changes over time at selectable modulation rates.

Representations#

Delay state-space to state-space

Convert delay state-space FDN parameters into a conventional state-space model and verify matching impulse responses.

Delay state-space to transfer function

Convert a delay state-space FDN into a matrix transfer function and verify the result in the time domain.

Poles and residues from a delay state space

Compare three pole-residue solvers by reconstructing an FDN impulse response from its modal decomposition.

Poles and residues from a FLAMO model

Convert a FLAMO feedback model with an SOS loop filter into poles and residues, including iterative pole refinement.

Export & Deployment#

Compile an FDN to FAUST

Compile a pyFDN design through FLAMO and adac into certified FAUST source for browser, offline, and plugin deployment.

Effects#

Shimmer reverberation with nonlinear FDNs

Drop five nonlinear and pitch-shifting operators into the feedback loop of an FDN and hear how each one turns a plain reverb into a shimmer effect.


All notebooks can also be browsed in the repository’s examples directory.

previous

Usage

next

API Reference

On this page
  • Getting Started
  • Feedback Matrices
  • Absorption & Decay
  • Analysis & Verification
  • Optimization
  • Allpass FDNs
  • Special FDNs
  • Representations
  • Export & Deployment
  • Effects

© Copyright 2026, Artificial Audio Lab.

Created using Sphinx 9.1.0.

Built with the PyData Sphinx Theme 0.21.0.