Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
cbd46f4
[Build] recover and modernize training foundation
Jul 21, 2026
1254332
[Build] test training cache sampling and metric parity
bleugreen Jul 21, 2026
18048b4
[Build] add canonical partition generator and validation
bleugreen Jul 21, 2026
0a4e42a
generate checksummed canonical dataset manifests
bleugreen Jul 21, 2026
e08cb03
[Build] exclude unusable GiantSteps tempo annotations
bleugreen Jul 21, 2026
91151ad
[Build] parse incomplete GTZAN metadata entries
bleugreen Jul 21, 2026
acc5411
[Build] resolve GTZAN tempo annotations by track number
bleugreen Jul 21, 2026
8b6ded2
commit canonical train validation and test manifests
bleugreen Jul 21, 2026
aeefbd5
[Build] treat blank GTZAN artist metadata as unknown
bleugreen Jul 21, 2026
5f425ec
[Build] enforce GTZAN artist disjointness across source folds
bleugreen Jul 21, 2026
82467b9
commit canonical train validation and test manifests
bleugreen Jul 21, 2026
cf3081f
[Build] balance Ballroom groups across global fold targets
bleugreen Jul 21, 2026
b898008
regenerate balanced Ballroom partitions
bleugreen Jul 21, 2026
a316924
[Build] weight Ballroom fold size in stratification objective
bleugreen Jul 21, 2026
f68d72e
regenerate final Ballroom partitions
bleugreen Jul 21, 2026
d2b4a1c
[Build] conform partition tooling to project lint
bleugreen Jul 21, 2026
987f97b
[Build] add canonical manifest checksum index
bleugreen Jul 21, 2026
48e4142
publish canonical manifest SHA-256 checksums
bleugreen Jul 21, 2026
50508a9
[Build] document exact partition evidence and limitations
bleugreen Jul 21, 2026
a35b576
[Build] instrument inference with auditable classifier details
bleugreen Jul 21, 2026
9319ec1
[Build] add benchmark error taxonomy and calibration tooling
bleugreen Jul 21, 2026
974854d
[Build] remove obsolete batch inference import
bleugreen Jul 21, 2026
9ee5866
[Build] add octave correction baselines and learned classifier
bleugreen Jul 21, 2026
3cbe3d8
[Build] test and document correction experiments
bleugreen Jul 21, 2026
00c4eaf
[Build] run training cache extraction on the requested device
bleugreen Jul 21, 2026
daee89d
record v0.8 model candidate and experiment data
bleugreen Jul 21, 2026
ad9c0f0
[Build] document v0.8 metrical-level research findings
bleugreen Jul 21, 2026
9615e8f
[PR Review] enforce global disjointness and canonical validation aggr…
bleugreen Jul 21, 2026
252ead6
[PR Review] test inference instrumentation preserves legacy output
bleugreen Jul 21, 2026
9dbc01e
[PR Review] track committed research result artifacts
bleugreen Jul 21, 2026
c95259c
record v0.8 model candidate and experiment data
bleugreen Jul 21, 2026
d1cb42b
[PR Review] document v0.8 metrical-level research findings
bleugreen Jul 21, 2026
042f3f8
[PR Review] validate committed fingerprints across dataset boundaries
bleugreen Jul 21, 2026
6dfc2f3
[PR Review] lock research results to canonical test folds
bleugreen Jul 21, 2026
e80e9f4
[PR Review] remove obsolete training test import
bleugreen Jul 21, 2026
3134da5
[PR Review] track final benchmark sidecars
bleugreen Jul 21, 2026
0e6743f
archive final held-out prediction sidecars
bleugreen Jul 21, 2026
50ec781
[PR Review] make canonical folds drive training cache identity
bleugreen Jul 21, 2026
4c0c9bd
[Build] support joint domain and tempo balanced training
bleugreen Jul 21, 2026
1981de4
[Build] keep dataset labels out of HCQM content identity
bleugreen Jul 21, 2026
5e64758
[Build] support classifier-head-only fine-tuning
bleugreen Jul 21, 2026
e3b11ef
[Build] format classifier-head optimizer setup
bleugreen Jul 21, 2026
7a721e7
[Build] document broad-music release gate for v0.8
bleugreen Jul 21, 2026
ad55a4a
[Build] add preservation distillation to fine-tuning
bleugreen Jul 21, 2026
ba10388
[Build] record preservation fine-tuning outcome
bleugreen Jul 21, 2026
b4b0fa1
[Build] add hierarchical tempo and metrical-level model
bleugreen Jul 21, 2026
75c66df
[Build] support manifest-driven audio time stretching
bleugreen Jul 21, 2026
e74a6cb
[Build] document hierarchical metrical-level experiment
bleugreen Jul 21, 2026
79d61eb
[Build] fix cache import ordering
bleugreen Jul 21, 2026
00e61f2
[Build] add metrical-level annotation harness
bleugreen Jul 21, 2026
ab27e84
[Build] align active excerpts before detected onsets
bleugreen Jul 22, 2026
0525771
[Build] exclude embedded annotation UI from line lint
bleugreen Jul 22, 2026
58bff0c
[Build] advance annotation queue after skips
bleugreen Jul 22, 2026
86cccdc
[Build] document metrical annotation workflow
bleugreen Jul 22, 2026
3138921
[Build] add behavior-preserving residual metrical head
bleugreen Jul 22, 2026
af22556
[Build] optimize shared temporal spectrum preprocessing
bleugreen Jul 22, 2026
b6c9bc3
[Build] bound optional HCQM inference work
bleugreen Jul 23, 2026
1c6abf3
[Build] reuse HCQM STFT for temporal beat evidence
bleugreen Jul 23, 2026
3b496c0
[Build] document single-STFT beat-rate inference
bleugreen Jul 23, 2026
a3e31af
freeze reproducible shared-STFT fusion baseline
bleugreen Jul 23, 2026
012d7ca
record shared-STFT Slakh fusion ablation
bleugreen Jul 23, 2026
0713acb
[Build] add canonical shared-STFT v0.8 predictor
bleugreen Jul 23, 2026
6d8cb67
package immutable v0.8 model bundle
bleugreen Jul 23, 2026
7b4fc6e
format v0.8 predictor implementation
bleugreen Jul 23, 2026
1c9cb39
[Build] test packaged v0.8 predictor bundle
bleugreen Jul 23, 2026
373320e
[Build] document opt-in v0.8 predictor
bleugreen Jul 23, 2026
b318045
[Build] include v0.8 integrity manifest in distributions
bleugreen Jul 23, 2026
ba710a3
[Build] restore trained temporal fusion feature contract
bleugreen Jul 23, 2026
bf39178
[Build] test frozen fusion feature compatibility
bleugreen Jul 23, 2026
e71f746
[Build] match v0.8 inference clip aggregation to training
bleugreen Jul 23, 2026
ac2065b
[Build] reproduce v0.8 fusion cache precision at inference
bleugreen Jul 23, 2026
bd6ff52
record packaged v0.8 release qualification
bleugreen Jul 23, 2026
bb03572
[Build] document authoritative v0.8 production qualification
bleugreen Jul 23, 2026
54390db
add missing v0.8 weight integrity manifest
bleugreen Jul 23, 2026
0b14fbe
[Build] track v0.8 bundle integrity manifest
bleugreen Jul 23, 2026
aa35a70
promote distilled metrical fusion weights and qualification evidence
bleugreen Jul 30, 2026
a95ea62
[Build] document distilled v0.8 qualification
bleugreen Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
data/
data/*
!data/splits/
!data/splits/**
data/fma
experiments/
*.hdf5
*.json
!src/deeprhythm/weights/v0.8-bundle.json
!docs/research/results/*.json
!docs/research/results/**/*.jsonl
__pycache__
*.pyc
*.pyo
Expand Down
23 changes: 23 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,29 @@ pip install deeprhythm

## Usage

### Opt-in v0.8 metrical predictor

v0.8 separates rhythmic rate from metrical level and adds a frozen temporal
beat representation. Its metrical fusion was distilled from a stronger
beat-rate teacher, but inference remains self-contained and does not load that
teacher or Phasefinder. Both branches reuse one decoded waveform and one
nnAudio STFT. The versioned weights are bundled with the package and recorded
in `src/deeprhythm/weights/v0.8-bundle.json`.

```python
from deeprhythm.model import MetricalDeepRhythmPredictor

predictor = MetricalDeepRhythmPredictor(device="mps")
bpm = predictor.predict("/path/to/song.wav")
details = predictor.predict("/path/to/song.wav", include_details=True)
```

The original `DeepRhythmPredictor` remains unchanged. v0.8 is opt-in because
its measured metrical correction is a modest net improvement and can still
change an individually correct octave decision. It aggregates every complete
eight-second clip after removing the first and last clips from tracks longer
than 40 seconds, matching the frozen model's training and evaluation path.

### CLI Inference

#### Single
Expand Down
12 changes: 12 additions & 0 deletions data/splits/SHA256SUMS
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
9d4844560ef371c48ae56b4f4eb705da39e6bce8d4c8e7fac3c4c42df4ba50d4 archive-v0.7/ballroom.jsonl
2578232af9164843a35d0bd1175e065d7b71bca50114d2709c6a4ba156f83e52 archive-v0.7/giantsteps.jsonl
b0f210b7c5d9435450bdcbc8d7c240b8f3d3654710cf55bdc386c83879f3fd02 archive-v0.7/gtzan.jsonl
532ee056939f549ca6e575060d0148a7271ef18a0739df2c6e440533ede0498f ballroom/test.jsonl
6961ac3e3384835920ddf57c83509efbbea950e72e05082e250778a826159d9b ballroom/train.jsonl
cfde5d0fe110f69ba1b13b261e47aff339bab507536af169b4b6352f8d40d113 ballroom/val.jsonl
346b83bd51833e8f5f53b8c0d980f7fd8c01917642db60652c3720812e601fed giantsteps/test.jsonl
8044435b7f362a802726c98466080f63fd2351c72f8ac865f3482cebad2af644 giantsteps/train.jsonl
8b8bbaeaf933a17be9b5c3724a6138fe27920db9e79ce896fa0bd56f320abc93 giantsteps/val.jsonl
1db0216a5fd020ebb931f7682c91268c6448584fca8dd7fe67f57fef6127898f gtzan/test.jsonl
51f6bb6387ab777eb27a62d16a46c549a68d969fb6077d28c1905d8271418b87 gtzan/train.jsonl
507f7dae232c7d95bb7e391bbf85706ecaeca17f3f7bca5befdfaa3ab63cf65e gtzan/val.jsonl
698 changes: 698 additions & 0 deletions data/splits/archive-v0.7/ballroom.jsonl

Large diffs are not rendered by default.

661 changes: 661 additions & 0 deletions data/splits/archive-v0.7/giantsteps.jsonl

Large diffs are not rendered by default.

998 changes: 998 additions & 0 deletions data/splits/archive-v0.7/gtzan.jsonl

Large diffs are not rendered by default.

134 changes: 134 additions & 0 deletions data/splits/ballroom/test.jsonl

Large diffs are not rendered by default.

502 changes: 502 additions & 0 deletions data/splits/ballroom/train.jsonl

Large diffs are not rendered by default.

49 changes: 49 additions & 0 deletions data/splits/ballroom/val.jsonl

Large diffs are not rendered by default.

131 changes: 131 additions & 0 deletions data/splits/giantsteps/test.jsonl

Large diffs are not rendered by default.

464 changes: 464 additions & 0 deletions data/splits/giantsteps/train.jsonl

Large diffs are not rendered by default.

66 changes: 66 additions & 0 deletions data/splits/giantsteps/val.jsonl

Large diffs are not rendered by default.

313 changes: 313 additions & 0 deletions data/splits/gtzan/test.jsonl

Large diffs are not rendered by default.

422 changes: 422 additions & 0 deletions data/splits/gtzan/train.jsonl

Large diffs are not rendered by default.

194 changes: 194 additions & 0 deletions data/splits/gtzan/val.jsonl

Large diffs are not rendered by default.

22 changes: 22 additions & 0 deletions data/splits/sources/gtzan/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# GTZAN
Information about the GTZAN dataset for "music genre recognition" research.

- index.txt: an index into the contents of the datasets, specifically the artist and track title of most wav files.
- Fault-filtered partitions used in Kereliuk, Sturm, and Larsen, “[Deep learning, audio adversaries, and music content analysis](https://ieeexplore.ieee.org/document/7336950),” in Proc. WASPAA, 2015;
Kereliuk, Sturm, and Larsen, “[Deep learning and music adversaries](https://ieeexplore.ieee.org/document/7254179),” IEEE Trans. Multimedia, vol. 17, pp. 2059–2071, Sep. 2015;
Rodriguez-Algarra, Sturm, and Maruri-Aguilar, “[Analysing scattering-based music content analysis systems: Where’s the music?](https://scholar.google.com/citations?view_op=view_citation&hl=en&user=KdeYIvMAAAAJ&cstart=20&pagesize=80&sortby=pubdate&citation_for_view=KdeYIvMAAAAJ:sSrBHYA8nusC),” in Proc. ISMIR, 2016. Code repo: https://code.soundsoftware.ac.uk/projects/scatter_reeval
- test_filtered.txt
- test_stratified.txt
- train_filtered.txt
- train_stratified.txt
- valid_filtered.txt
- valid_stratified.txt

## Other relevant publications:
- Sturm, "[The GTZAN dataset: Its contents, its faults, their effects on evaluation, and its future use](https://arxiv.org/abs/1306.1461)", arXiv:1306.1461, 2013.
- Sturm, “[The state of the art ten years after A State of the Art: Future research in music information retrieval](https://scholar.google.com/citations?view_op=view_citation&hl=en&user=KdeYIvMAAAAJ&citation_for_view=KdeYIvMAAAAJ:EUQCXRtRnyEC),” Journal of New Music Research, vol. 43, no. 2, pp. 147 – 172, 2014.
- Sturm,“[A Simple Method to Determine if a Music Information Retrieval System is a‘Horse’](https://scholar.google.com/citations?view_op=view_citation&hl=en&user=KdeYIvMAAAAJ&cstart=20&pagesize=80&sortby=pubdate&citation_for_view=KdeYIvMAAAAJ:2P1L_qKh6hAC)”, IEEE Trans. Multimedia, vol. 16, no 6, pp. 1636 – 1644, Oct. 2014.
- Sturm, “[A survey of evaluation in music genre recognition](https://scholar.google.com/citations?view_op=view_citation&hl=en&user=KdeYIvMAAAAJ&cstart=20&pagesize=80&sortby=pubdate&citation_for_view=KdeYIvMAAAAJ:bEWYMUwI8FkC),” chapter (pp. 29-66) in Nürnberger et al., eds., Adaptive Multimedia Retrieval: Semantics, Context, and Adaptation, Springer, 2014.
- Sturm, “[An analysis of the GTZAN music genre dataset](https://scholar.google.com/citations?view_op=view_citation&hl=en&user=KdeYIvMAAAAJ&citation_for_view=KdeYIvMAAAAJ:4JMBOYKVnBMC),” in Proc. ACM Workshop on Music Info. Retrieval with User-centered and Multimodal Strategies, Nov. 2012.
- Sturm, “[Two systems for automatic music genre recognition: What are they really recognizing?](https://scholar.google.com/citations?view_op=view_citation&hl=en&user=KdeYIvMAAAAJ&cstart=20&pagesize=80&sortby=pubdate&citation_for_view=KdeYIvMAAAAJ:j3f4tGmQtD8C),” in Proc. ACM Workshop on Music Info. Retrieval with User-centered and Multimodal Strategies, Nov. 2012.

Loading
Loading