JacobLinCool commited on
Commit
cb19f94
·
verified ·
1 Parent(s): f4ef5e0

Model card

Browse files
Files changed (1) hide show
  1. README.md +52 -11
README.md CHANGED
@@ -1,16 +1,57 @@
1
  ---
2
  license: mit
3
  tags:
4
- - audio-to-symbolic
5
- - chart-generation
6
- - model_hub_mixin
7
- - music
8
- - pytorch_model_hub_mixin
9
- - rhythm-game
10
- - taiko
11
  ---
12
 
13
- This model has been pushed to the Hub using the [PytorchModelHubMixin](https://huggingface.co/docs/huggingface_hub/package_reference/mixins#huggingface_hub.PyTorchModelHubMixin) integration:
14
- - Code: https://github.com/JacobLinCool/SoftChart
15
- - Paper: [More Information Needed]
16
- - Docs: [More Information Needed]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: mit
3
  tags:
4
+ - taiko
5
+ - rhythm-game
6
+ - chart-generation
7
+ - music
8
+ - audio-to-symbolic
 
 
9
  ---
10
 
11
+ # 🥁 SoftChart v1.5 unified model
12
+
13
+ **One 7.94M-parameter model (bf16, ~16 MB) replacing three** (slot generator +
14
+ time generator + beat model, 24.5M / ~98 MB): −68% parameters, −84% disk,
15
+ with measured quality **parity or better** on every axis.
16
+
17
+ | axis | v1.5 (this model) | v1.0 dedicated | verdict |
18
+ |---|---|---|---|
19
+ | slot-mode F1 (12 songs) | 0.663 / oni **0.732** | 0.665 / 0.727 (slot12) | parity, oni better |
20
+ | time-mode F1 | **0.682** / oni 0.721 | 0.659 (pr12) | **better** |
21
+ | beat grid ok-rate (const) | **1.0** · p50 10.5 ms | 0.93 · 10.2 ms (beatd2) | better |
22
+ | beat grid (variable BPM) | 0.9 · p50 **3.2 ms** | 1.0 · 4.0 ms | parity |
23
+ | tuplet evenness (CV) | 0.0006 | 0.0006 | parity |
24
+
25
+ How the reduction was achieved (all measured, see repo REPORT):
26
+
27
+ 1. **Role folding** — dual-mode training (50% slot / 50% time windows, MODE
28
+ token) + a hi-res beat head. Beat supervision is **masked on slot
29
+ windows**: they carry grid-phase input channels, and an unmasked head
30
+ copies the channels instead of listening (measured collapse: 723 ms →
31
+ fixed: 10.5 ms).
32
+ 2. **Factorized embeddings** (ALBERT-style, E=64) — position tokens are 95%
33
+ of the table; 463K → 132K.
34
+ 3. **bf16 weights** — training ran bf16 autocast, so fp32 storage carried no
35
+ extra information (verified: F1/grid identical within noise).
36
+
37
+ Interesting side effect: the shared trunk **improved** both the time mode
38
+ (+2.3pp over the dedicated model) and the beat ok-rate — beat supervision
39
+ appears to act as a metrical regularizer for generation, and vice versa.
40
+
41
+ Usage (drop-in for all three v1.0 roles):
42
+
43
+ ```python
44
+ from softchart.generate import load_hf, generate_song_slot, generate_song
45
+ from softchart.grid import fit_grid_piecewise
46
+ from softchart.tja import write_tja_slots
47
+
48
+ m = load_hf("JacobLinCool/softchart-v15") # one model, three roles
49
+ grid = fit_grid_piecewise(m, mel) # its own beat head drives the grid
50
+ g = generate_song_slot(m, mel, grid, "oni", level=9, density_bucket=7)
51
+ tja = write_tja_slots(g, grid, "Title", "oni", 9, "song.ogg")
52
+ # gridless fallback: generate_song(m, mel, "oni", level=9) (time mode)
53
+ ```
54
+
55
+ MIT-licensed. Trained from scratch on community-made charts
56
+ ([taiko-1000-parsed](https://huggingface.co/datasets/JacobLinCool/taiko-1000-parsed));
57
+ the official game never released chart data.