pyFDN
Documentation | Examples | Report a bug
Overview
pyFDN provides building blocks for designing, simulating, and analysing Feedback Delay Networks (FDNs). The package focuses on reusable, tested helper functions that simplify typical FDN workflows such as creating orthogonal feedback matrices, designing loop filters, and inspecting pole locations. Using flamo as a dependency, pyFDN allows modular design of advanced FDN structure with DSP operations in time and frequency domain.
The pyFDN tutorial provides an introduction to the package.
The source code is MIT-licensed. Small packaged tutorial resources retain the separate terms recorded in src/pyFDN/resources/ATTRIBUTION.md; in particular, the Pori concert-hall impulse response is limited to noncommercial use.
Highlights
Matrix polynomial helpers for evaluating, differentiating, and convolving FIR/IIR blocks.
Loop analysis utilities including pole boundary estimation and curve bounding checks.
Acoustic absorption design tools that translate RT targets into one-pole and first-order shelf loop filters.
Echo density (Abel & Huang 2006) for analysing reverberation and mixing time.
Random orthogonal matrix generation to prototype energy-preserving feedback networks.
Installation
Install the current release from PyPI:
pip install pyFDN
For local development, create a virtual environment and install the package in editable mode together with the optional tooling:
python -m venv .venv source .venv/bin/activate pip install -e .
Quick start
All main functions are accessible directly from the top-level pyFDN namespace:
import numpy as np import pyFDN fs = 48_000 delays = np.array([331, 347, 359, 373], dtype=int) # energy-preserving feedback matrix feedback = pyFDN.random_orthogonal(len(delays)) # one-pole absorption filters targeting RT of 1.2 s at DC and 0.9 s at Nyquist absorption = pyFDN.decay_to_one_pole(1.2, 0.9, delays, fs) # convert delay state-space to standard state-space (A_ss, b, c, d) A_ss, b, c, d = pyFDN.dss_to_ss(delays, feedback)
Alternatively, import specific functions directly:
from pyFDN import decay_to_one_pole, lin_to_db, random_orthogonal feedback = random_orthogonal(4) absorption = decay_to_one_pole(1.2, 0.9, [100, 150, 200, 250], 48_000)
Development
Run the test suite (the configuration mirrors CI and emits coverage details):
tox -e py311
Or, inside an activated virtual environment:
pytest --cov=src/pyFDN --cov-report=term-missing
For linting and packaging helpers see Makefile (make lint/make docs) and tox.ini for multi-environment testing.
Helpful links
Metadata
Release files for pyFDN 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyfdn-0.5.0.tar.gz | 7.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyfdn-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.5 MB
Release files / pyfdn-0.5.0.tar.gz
| Download URL | pyfdn-0.5.0.tar.gz |
|---|---|
| Size | 7.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
59161a3accdd47c42186709d7b4d81d8b14ea711915bb6fae111183fa2ddeed9
|
|
BLAKE2b-256 checksum How to use checksums |
a0362e25b60c9bf236dbeb2b26f31e0893b476ecbe844bc96dc92604a98e7f35
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency logRelease files / pyfdn-0.5.0-py3-none-any.whl
| Download URL | pyfdn-0.5.0-py3-none-any.whl |
|---|---|
| Size | 3.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
707b89ebcf56fd3bbd2531832aaa497a2b7d1d66947ceeac7ce6f8b2c591326f
|
|
BLAKE2b-256 checksum How to use checksums |
977b722f7a84b1557e9794a53556bd1e6c8a3bb9c0ad65d21ae24948780e4bdb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.
Transparency log