Skip to content

alexandrefrancois/noFFT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

noFFT

A reference implementation of the Resonate algorithm in C++ for Python, using pybind11. The C++ code uses the Accelerate framework and will only work on Mac/iOS platforms.

This is a crude version to demonstrate the capabilities of the algorithm through Jupyter notebooks.

The goal is to turn this into a proper Python package - contributions welcome!

Author: Alexandre R.J. François

Installation

  • download, checkout or clone this repository

  • pip install .

  • see notebooks and additional Python functions for usage

Resonate Functions

The C++ code implements a resonator bank class similar to that provided in the Oscillators Swift package with vectorized update per sample.

Python functions:

  • resonate: wraps creating the bank with the parameters provided and running the updates for an input signal.
  • resonate_wrapper: computes a resonator bank outputs from an input signal, using the C++ implementation.
  • resonate_python: computes a resonator bank outputs from a single frequency sinusoidal input signal (impulse). The loop over samples is done in Python, so much slower than the C++ counterpart.

Jupyter Notebooks

  • SpectralAnalysisExperiments: code to analyze and plot resonator and resonator bank properties.
  • Spectrograms: code to compute and plot spectrograms of audio signals, using Librosa
  • Chromas: code to compute and plot chromas and chromagrams on audio signals, using Librosa
  • MFCCs: code to compute and plot mel frequency scale spectrograms and chromagrams on audio signals, using Librosa

License

MIT License

Copyright (c) 2025 Alexandre R.J. Francois

About

A reference implementation of the Resonate algorithm in C++ for Python.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

 
 
 

Contributors