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; 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 Space. Programmatic loading uses the softchart package from the source repository:

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.

Downloads last month
42
Safetensors
Model size
8.99M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train JacobLinCool/softchart-v18

Space using JacobLinCool/softchart-v18 1