.. FLAMO documentation master file, created by
sphinx-quickstart on Sun Sep 22 19:51:49 2024.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
FLAMO
=================================
Frequency-sampling Library for Audio-Module Optimization (FLAMO) is an open-source frequecy-sampling library for audio-module optimization in `PyTorch `_.
FLAMO is designed to implement and optimize differentiable linear time-invariant audio systems and is built on the frequency-sampling filter design method.
It allows for the creation of differentiable modules that can be used stand-alone or within the computation graph of neural networks, simplifying the development of differentiable audio systems.
It includes predefined filtering modules and auxiliary classes for constructing, training, and logging the optimized systems, all accessible through an intuitive interface.
The code can be found in `this github repository `_.
Installation
---------------------------
To install FlAMO via `pip `_, on a new python virtual environment ``flamo-env``
.. code-block:: bash
python3.10 -m venv .flamo-env
source .flamo-env/bin/activate
pip install flamo
If you are using `conda `_, you might need to install ``libsndfile`` manually
.. code-block:: bash
conda create -n flamo-env python=3.10
conda activate flamo-env
pip install flamo
conda install -c conda-forge libsndfile
For local installation: clone and install dependencies on a new pyton virtual environment ``flamo-env``
.. code-block:: bash
git clone https://github.com/gdalsanto/flamo
cd flamo
python3.10 -m venv .flamo-env
source .flamo-env/bin/activate
pip install -e .
Note that it requires python>=3.10
Contents
--------------------------
The main code is contained in **processor** and is divided in two parts:
* ``dsp`` contains the differentiable systems (e.g., filters, delays) and basic transformations (e.g. FFT, IFFT)
* ``system`` contains classes that allow to build differentiable systems (i.e. Series, Recursion) and other utility classes (i.e. Shell).
.. toctree::
:maxdepth: 2
:caption: Processor
processor/dsp
processor/system
The **optimize** module contains classes for handling training, validation, results logging, etc. It comes with a set of datasets and loss functions.
.. toctree::
:maxdepth: 2
:caption: Optimization
optimize/trainer
optimize/dataset
optimize/loss
optimize/utils
The **functional** module is a collector of signal processing function and transformations that can be used as, e.g., parameters mappings.
.. toctree::
:maxdepth: 2
:caption: Functional
functional
The **auxiliary** module is a collector of auxiliary function and modules that showcase and expand applications of the library.
.. toctree::
:maxdepth: 2
:caption: Auxiliary
auxiliary/eq
auxiliary/filterbank
auxiliary/minimize
auxiliary/reverb
auxiliary/scattering
Reference and Contacts
---------------------------
If you use FLAMO in your research, please cite the following conference paper:
* Gloria Dal Santo, Gian Marco De Bortoli, Karolina Prawda, Sebastian Jiro Schlecht, Vesa Välimäki "FLAMO: An Open-Source Library for Frequency-Domain Differentiable Audio Processing", in Proceedings of the *2025 International Conference on Acoustics, Speech, and Signal Processing* (ICASSP), Hyderabad, India, 2025.
For any questions or issues, please contact
* `Gloria Dal Santo `_
* `Gian Marco De Bortoli `_
or open an issue on the `github repository `_.
License
---------------------------
FLAMO is licensed under the MIT License.
.. code-block:: bash
MIT License
Copyright (c) 2024 Gloria Dal Santo, Gian Marco De Bortoli, Sebastian Jiro Schlecht
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.