https://github.com/tatsh/bpmdetect
Automatic BPM (beats per minute) detection utility.
https://github.com/tatsh/bpmdetect
bpm dj music tempo
Last synced: about 1 month ago
JSON representation
Automatic BPM (beats per minute) detection utility.
- Host: GitHub
- URL: https://github.com/tatsh/bpmdetect
- Owner: Tatsh
- License: gpl-3.0
- Created: 2017-07-31T00:03:22.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2025-09-24T07:05:45.000Z (8 months ago)
- Last Synced: 2025-10-03T21:57:33.920Z (8 months ago)
- Topics: bpm, dj, music, tempo
- Language: C++
- Homepage: https://tatsh.github.io/bpmdetect/
- Size: 10.5 MB
- Stars: 7
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
- Citation: CITATION.cff
- Codeowners: CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
README
# BPM Detect
[](https://isocpp.org)
[](https://github.com/Tatsh/bpmdetect/tags)
[](https://github.com/Tatsh/bpmdetect/blob/master/LICENSE.txt)
[](https://github.com/Tatsh/bpmdetect/compare/v0.8.11...master)
[](https://github.com/dependabot)
[](https://tatsh.github.io/bpmdetect/)
[](https://github.com/Tatsh/bpmdetect/stargazers)
[](https://github.com/pre-commit/pre-commit)
[](https://cmake.org/)
[](https://prettier.io/)
[](https://bsky.app/profile/Tatsh.bsky.social)
[](https://buymeacoffee.com/Tatsh)
[](irc://irc.libera.chat/Tatsh)
[](https://hostux.social/@Tatsh)
[](https://www.patreon.com/Tatsh2)
BPM Detect is an automatic BPM (beats per minute) detection utility.
It uses SoundTouch's BPM library for detecting BPMs, ffmpeg for reading and writing BPMs to tags
and Qt for the GUI. It supports detection with any audio format that ffmpeg can read. However, for
files containing multiple audio tracks, only the first seen will be used for detection.
On Windows, this application requires
[Media Feature Pack](https://support.microsoft.com/en-us/topic/media-feature-pack-list-for-windows-n-editions-c1c6fffa-d052-8338-7a79-a4bb980a700a)
to be installed.
Some formats cannot save tags. The application will not warn you about these. M4A (AAC, 3GP, etc)
store tags in the `tmpo` atom which is limited to integers but this will not be seen as saved on
restart because ffmpeg does not parse the `tmpo` atom when reading the file.
[](https://repology.org/project/bpmdetect/versions)
[Original project](https://sourceforge.net/projects/bpmdetect/)
## Building
Required dependencies:
- CMake at build time
- [ECM](https://invent.kde.org/frameworks/extra-cmake-modules) at build time
- Qt 6.7 or later with Gui and Multimedia modules
- SoundTouch 2.3.2 or later
- ffmpeg 6 or later
In the cloned project:
```shell
mkdir build
cmake ..
make
```
On MacPorts, set the `CMAKE_PREFIX_PATH` variable to
`/opt/local/libexec/ffmpeg7;/opt/local/libexec/qt6`.
To build tests, add `-DBUILD_TESTS=ON`. Add `-DCOVERAGE=ON` to enable coverage (Clang and GCC only).
Translation support has been added but there are currently no translations. This can be enabled with
`-DI18N=ON`.