Skip to main content

pyFDN

pyFDN Python versions License Test coverage

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.

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)

Source distribution for pyFDN 0.5.0
File Size Uploaded
pyfdn-0.5.0.tar.gz 7.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyFDN 0.5.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page