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
-
download, checkout or clone this repository
-
pip install .
-
see notebooks and additional Python functions for usage
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.
- 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
MIT License
Copyright (c) 2025 Alexandre R.J. Francois