File size: 1,849 Bytes
ed1ef2c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | ---
license: mit
tags:
- beat-tracking
- downbeat-tracking
- core-ai
- aimodel
- apple-silicon
- macos
library_name: swift-music-transcriber
---
# Beat This! for Core AI (`.aimodel`)
Apple Core AI conversion of **Beat This!**, the beat and downbeat tracker by Francesco Foscarin,
Jan Schlüter and Gerhard Widmer (CPJKU) — *Beat This! Accurate Beat Tracking Without DBN
Postprocessing*, ISMIR 2024 — checkpoint `final0` from
[github.com/CPJKU/beat_this](https://github.com/CPJKU/beat_this) (MIT, 20M parameters).
`scribe-beat-this-float32.aimodel` (79 MB) takes a log-mel spectrogram `[1, T, 128]` at 50 fps
(22.05 kHz audio) and returns framewise beat and downbeat logits. The front end, the 1500-frame
chunking with 6-frame borders, the minimal peak picker and the tempo/metre fit live in
[swift-music-transcriber](https://github.com/arraypress/swift-music-transcriber), which uses this
as the beat tracker for its MIDI grids — the same tracker MuScriptor's own pipeline uses.
## Faithfulness
One method (`Attention.forward`) was re-authored for the Core AI compiler, which rejected the
original einops reshape on a dynamic sequence length; RoPE became a constant matrix. The export
script asserts the re-authored module matches the original before exporting (max |diff| below
1e-3 on random input, 0 in practice). End to end, beats land within one frame of upstream on the
reference clips; resampling (julius versus soxr) is the only step not shared with upstream.
## Use
```sh
hf download arraypress/scribe-beat-this --local-dir models
scribe model install models/scribe-beat-this-float32.aimodel # picked up automatically as the tracker
```
Reproduce with `uv run Tools/export_beat_this.py` in the library repo. macOS 27, Apple silicon.
## Licence
MIT, as upstream. Please cite the ISMIR 2024 paper if you use it.
|