File size: 3,578 Bytes
ffd0f3a d209429 ffd0f3a | 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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | ---
license: mit
library_name: pytorch
datasets:
- JacobLinCool/taiko-1000-parsed-clean
tags:
- audio-to-symbolic
- chart-generation
- from-scratch
- hierarchical-transformer
- music
- rhythm-game
- taiko
---
# SoftChart V1.8 Hierarchical Scratch
SoftChart V1.8 generates Taiko no Tatsujin-style charts directly from log-mel audio. This release is a compact hierarchical encoder-decoder trained **from scratch** on [`JacobLinCool/taiko-1000-parsed-clean`](https://huggingface.co/datasets/JacobLinCool/taiko-1000-parsed-clean); it does not use an external pretrained model or an external song planner.
The model combines a whole-song section encoder, a local rhythmic-skeleton auxiliary head, dual time/slot generation, and a beat/downbeat head. The public Space uses time-mode generation for arbitrary uploads, then uses the beat head only to estimate BPM and quantize the exported TJA. Exact slot generation is reserved for inputs with a complete, trusted rational meter grid including a terminal edge.
## Architecture
| Item | Value |
|---|---:|
| Parameters | 8,985,091 |
| Audio encoder / chart decoder | 4 / 4 layers |
| Hidden size / attention heads | 256 / 8 |
| Feed-forward size | 960 |
| Hierarchical section encoder | 2 layers, FFN 512 |
| Vocabulary | 1,810 tokens |
| Audio input | 22,050 Hz, 128-bin log-mel |
Enabled capabilities are `hierarchical_ctx`, `aux`, `dual`, `beat_head`, and `clean_phase`. Legacy external plan conditioning is disabled.
## Frozen evaluation
The locked test split contains 120 songs and 503 authored/time charts. Exact-slot results cover only the 127 charts whose parsed authored meter has a fully bounded-safe prefix.
| Metric | Locked test |
|---|---:|
| Exact-slot micro F1 (bounded-safe prefix) | 0.6810 |
| Full-song time F1 @ 25 ms | 0.4715 |
| Full-song time F1 @ 50 ms | 0.5972 |
| Mean per-chart median timing offset | 9.39 ms |
| Don/ka accuracy on 50 ms matches | 0.6551 |
These metrics compare against one authored chart even though chart design permits multiple valid answers. They do not establish human-rated groove, fun, or playability. The release has one training seed and no fair same-split V1.6/V1.7 retraining baseline.
Known limitations include weak note-type decisions relative to onset placement, under-generation of rolls/balloons, repetitive slot-mode motifs, and beat-grid ambiguity outside stable 4/4 material.
## Use
The easiest supported interface is the [`JacobLinCool/softchart`](https://huggingface.co/spaces/JacobLinCool/softchart) Space. Programmatic loading uses the `softchart` package from the [source repository](https://github.com/JacobLinCool/SoftChart):
```python
from softchart.generate import load_hf, generate_song
model = load_hf("JacobLinCool/softchart-v18", device="cuda")
chart = generate_song(
model,
log_mel,
course="oni",
level=9,
device="cuda",
greedy=True,
)
```
Audio preprocessing is part of the model contract in `preprocessor_config.json`: FFmpeg decodes stereo float32 at 22,050 Hz, channels are averaged arithmetically, and a periodic-Hann STFT (`n_fft=2048`, `hop_length=256`) is projected to 128 mel bins before natural-log compression.
## Artifact provenance
- Source checkpoint SHA-256: `2a7a75f720369db03e5c114eff065de90ccc864259495463287509682c6352db`
- `model.safetensors` SHA-256: `68d924542033c1ad234ed23329e469cd5caaea4aa72dcfb83dec3a0d76f1295f`
- Preprocessing contract SHA-256: `2d8c542f628decc16b0fdd37befa9eff71b1734da29cf4556943260c2c8c2636`
- HF export round-trip verification: passed
Released under the MIT license.
|