Audio fingerprint library
C++ CMake C
Pull request Compare This branch is 4 commits ahead, 220 commits behind acoustid:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



The library itself only depends on a FFT library, which at the moment can be either FFmpeg (at least r22291, 0.6 is fine), FFTW3 or if you are on iOS or OS X, you can use the Accelerate/vDSP framework. See the next section for details.

The fpcalc utility included in the package requires FFmpeg (can be older).

In order to build the test suite, you will need the Google Test library and Boost Filesystem.


The most common way to build Chromaprint is like this:

$ make
$ sudo make install

This will build Chromaprint as a shared library and also include the fpcalc utility (which is used by MusicBrainz Picard, for example).

See below for other options.

FFT Library

Chromaprint can use three FFT libraries, FFmpeg, FFTW3 and vDSP. FFmpeg is preffered, as it's a little faster for our purposes and it's LGPL-licensed, so it doesn't impact the license of Chromaprint. The FFT interface was added only recently though, so it might not be available in Linux distributions yet. FFTW3 can be used in this case, but this library is released under the GPL license, which makes also the resulting Chromaprint binary GPL licensed.

If you run simple cmake ., it will try to find both FFmpeg and FFTW3 and select the first one it finds. If you have new FFmpeg installed in a separate location, you can let CMake know using the FFMPEG_ROOT option:

$ cmake -DFFMPEG_ROOT=/path/to/local/ffmpeg/install .

If you have new FFmpeg installed, but for some reason prefer to use FFTW3, you can use the WITH_FFTW3 option:

$ cmake -DWITH_FFTW3=ON .

There is also a WITH_AVFFT option, but the script will select the FFmpeg FFT automatically if it's available, so it shouldn't be necessary to use it.

If you are on Mac, you can use the standard Accelerate framework with the vDSP library. This requires you to install no external libraries. It will use vDSP by default on OS X (but there still is a WITH_VDSP option).

Unit Tests

The test suite can be built and run using the following commands:

$ cmake -DBUILD_TESTS=ON .
$ make check

Related Projects

Standing on the Shoulder of Giants

I've learned a lot while working on this project, which would not be possible without having information from past research. I've read many papers, but the concrete ideas implemented in this library are based on the following papers: