Upcoming talk at the 2024 Audio Developer Conference
This project uses CMake as its build system. To build the project, you must first update the submodules:
git submodule update --init --recursive
Then, you can build the project using CMake:
mkdir build
cd build
cmake ..
cmake --build .
The main contribution of this repo is just a library, not an executable. It is in the loop-tempo-estimator directory and the entry-point header file is MusicInformationRetrieval.h
.
However, the project includes a benchmarking framework as well as visualization tools. If you want to make sure that the code works, you may want to look at TatumQuantizationFitBenchmarking.cpp
and TatumQuantizationFitVisualization.cpp
.
Some visualization of some aspects of the algorithm was implemented: TatumQuantizationFitVisualization.cpp
takes a wav file as input, runs the algorithm with debug output, and writes this output to python files, which can afterwards be run to show plots.
- Set
static constexpr auto runLocally = true;
in MirTestUtils.h (should be committed asfalse
to avoid CI running visualization and benchmarking) - In
TatumQuantizationFitVisualization.cpp
, Set the value ofconst auto wavFile =
to the path of the wav file you want to analyze. - Build and run the
lib-loop-tempo-estimator-test
target. (The benchmarking will run and fail if you haven't set it up, but you can ignore it.) - In
tests/TatumQuantizationFitVisualization/
, you will findvisualize_debug_output.py
andvisualize_post-processed_STFT.py
. You can execute them using Python.
E.g. shows the onset detection function (blue), the onsets (red) and the tatums (green) as estimated by the algorithm on a 16-bar drum loop.