Libgammatone
gammatone auditory filterbanks in C++
Install / Use
/learn @mmmaat/LibgammatoneREADME
libgammatone: a generic C++ library for gammatone filterbank
-
Implementation of An efficient implementation of the Patterson-Holdsworth auditory filter bank, Slaney, 1993.
-
A lot of open source implementations have been proposed over years, mainly in Matlab or python, few in C or C++. Among these, libgammatone aims to be standard C++ implementation, suitable for research and engineering purpose.
- Documented and tested
- Clear and extensible interface
- Fast and efficient
-
Here a minimal working exemple
#include <gammatone/filter.hpp>
#include <vector>
int main()
{
// Init a gammatone filter sampled at 44.1 kHz, centered at 1 kHz
gammatone::filter<double> filter(44100, 1000);
// An input signal (here 1000 times zero, silly but minimal)
std::vector<double> input(1000, 0.0);
// Init an output buffer to store the filter response
std::vector<double> output(1000);
// Compute the output signal from input
filter.compute_range(input.begin(), input.end(), output.begin());
return 0;
}
Installation
Retrieve the code from github:
git clone https://github.com/mmmaat/libgammatone.git
- After cloning, you have the libgammatone headers in
./libgammatone/include. - You must have this dircetory in your include path in order to compile your code with libgammatone.
- You must compile with the
-std=c++11flag (tested on GCC 4.9.2).
Hello World !
Have a look to doc/exemple/src/minimal.cpp.
This minimal exemple initializes a gammatone filter and process an empty input signal. Compile it with:
g++ -std=c++11 -o minimal minimal.cpp -I/path/to/libgammatone/include
It work ? Great, you are now ready to read the [tutorial](@ref tutorial) !
Build documentation and tests
If you want to build documentation and tests you need the following programs:
- cmake to configure and compile,
- gnuplot and gnuplot-iostream to plot some tests output,
- doxygen to build the documentation.
- boost for the unit test framework
On a Debian/Ubuntu system, install it with:
sudo apt-get install libboost-dev doxygen gnuplot libgnuplot-iostream-dev cmake
You should place the build tree away from the source tree. For exemple
in ./libgammatone create a build directory from where you run cmake:
mkdir ./build
cd ./build
cmake ..
Then type make help to see all the available targets.
Here are some interesting ones...
make html # Generates the HTML documentation. Main page is doc/html/index.html
make tests # Generates standalone tests in bin
make unit # Generates a unit test executable bin/unit
make unit-all # Generates a bigger unit test executable bin/unit-all
Licence
Copyright (C) 2015, 2016 Mathieu Bernard
libgammatone is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
libgammatone is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with libgammatone. If not, see http://www.gnu.org/licenses/.
Related Skills
node-connect
332.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
81.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
332.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
81.7kCommit, push, and open a PR
