Python library for Feedback Delay Networks
Project description
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.
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 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.one_pole_absorption(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 random_orthogonal, one_pole_absorption, lin_to_db feedback = random_orthogonal(4) absorption = one_pole_absorption(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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyfdn-0.1.0.tar.gz.
File metadata
- Download URL: pyfdn-0.1.0.tar.gz
- Upload date:
- Size: 6.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac1e6011c1fa71d0d905acb69fad4b7c1be7a1dac32985c28b604e9f6045c265
|
|
| MD5 |
14f4b4d0f9417c8e74338aed43f95215
|
|
| BLAKE2b-256 |
27def2bab610054eec540c3dabe7907ba5b502b3d30202795b095f20387b5f8a
|
Provenance
The following attestation bundles were made for pyfdn-0.1.0.tar.gz:
Publisher:
release.yml on artificial-audio/pyFDN
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyfdn-0.1.0.tar.gz -
Subject digest:
ac1e6011c1fa71d0d905acb69fad4b7c1be7a1dac32985c28b604e9f6045c265 - Sigstore transparency entry: 2040112541
- Sigstore integration time:
-
Permalink:
artificial-audio/pyFDN@e43dec44431fd7a272667fe5cf072bbcb1415ea0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/artificial-audio
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e43dec44431fd7a272667fe5cf072bbcb1415ea0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pyfdn-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pyfdn-0.1.0-py3-none-any.whl
- Upload date:
- Size: 2.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73d6f9be48de66d8b5ed5870861bd0b3576e85ff46b530693ef45841ba46bc21
|
|
| MD5 |
72901cce101acbc218f7cb816ed4e3a4
|
|
| BLAKE2b-256 |
d378d082c447c5d88568f0d36eef089cea4fbfa96fb5ca9cc31f575d392d8302
|
Provenance
The following attestation bundles were made for pyfdn-0.1.0-py3-none-any.whl:
Publisher:
release.yml on artificial-audio/pyFDN
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyfdn-0.1.0-py3-none-any.whl -
Subject digest:
73d6f9be48de66d8b5ed5870861bd0b3576e85ff46b530693ef45841ba46bc21 - Sigstore transparency entry: 2040112562
- Sigstore integration time:
-
Permalink:
artificial-audio/pyFDN@e43dec44431fd7a272667fe5cf072bbcb1415ea0 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/artificial-audio
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e43dec44431fd7a272667fe5cf072bbcb1415ea0 -
Trigger Event:
push
-
Statement type: