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