Skip to main content

Python library for Feedback Delay Networks

Project description

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.

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfdn-0.1.0.tar.gz (6.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfdn-0.1.0-py3-none-any.whl (2.4 MB view details)

Uploaded Python 3

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

Hashes for pyfdn-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ac1e6011c1fa71d0d905acb69fad4b7c1be7a1dac32985c28b604e9f6045c265
MD5 14f4b4d0f9417c8e74338aed43f95215
BLAKE2b-256 27def2bab610054eec540c3dabe7907ba5b502b3d30202795b095f20387b5f8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyfdn-0.1.0.tar.gz:

Publisher: release.yml on artificial-audio/pyFDN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for pyfdn-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 73d6f9be48de66d8b5ed5870861bd0b3576e85ff46b530693ef45841ba46bc21
MD5 72901cce101acbc218f7cb816ed4e3a4
BLAKE2b-256 d378d082c447c5d88568f0d36eef089cea4fbfa96fb5ca9cc31f575d392d8302

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyfdn-0.1.0-py3-none-any.whl:

Publisher: release.yml on artificial-audio/pyFDN

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page