--- 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.