• v0.7.1 9a59742125

    v0.7.1 Stable

    joe released this 2026-08-18 02:56:13 +01:00 | 5 commits to main since this release

    Nothing new. Charts that branch were being read wrongly in six separate ways, and the worst
    of them left 181 charts playing seconds out of step with their own music — 90 of those
    ending after their own audio had stopped, with notes nobody could ever reach. This release
    only puts notes back where they belong.

    The faults were found by walking the format against OpenTaiko's source rather than reasoning
    about it, and then settled by playing SHAPESHIFTER — the chart that prompted the work —
    beside OpenTaiko playing the same file. Its gimmicks now land at the same moments in both.

    Fixed

    • 181 charts were playing seconds out of step with their own music. A #MEASURE or
      #BARLINEOFF on the line before a #BRANCHSTART was being read as an empty bar of rest,
      which pushed the branched section — and, since the song carries on from where a branch
      ends, everything after it — most of a measure late. Commands are not a measure; only note
      data makes one. Across the 3578-chart corpus this moved 216 courses by a median of 6.3
      seconds
      and put 90 of them back inside their own audio: SHAPESHIFTER's Oni was
      ending 5.8 s after the song had finished, with notes that could never be played.
    • Branches are decided at the right moment. The determining point is the last bar line
      before the branch, so the lead is however long that measure was — not a measure computed
      from the signature in force. SHAPESHIFTER's fake-outs lead by half a beat and now do; they
      led by 3.5 beats, so the swap the chart exists for happened off screen. Roll conditions
      wait for the roll to end, a hidden bar line still decides a branch, and a chart opening on
      one is judged four beats before it starts.
    • Branch points are ordered by when they are decided, not by where their section starts
      — two different times, which a negative #MEASURE can put in different orders. Ties keep
      the order they were written in, so a chart can bury an unwanted branch change under a
      wanted one, as the reference's own changelog describes.
    • A branch group ends where its last-defined path left off, not where the longest one
      did — the same answer on an ordinary chart, and the wrong one whenever a path rewinds
      through negative measures. This is what stopped SHAPESHIFTER's central trick working:
      its two branch changes are folded onto one instant so that the unwanted one is hidden
      under the wanted one, and we were missing that instant by three bars and showing both.
      You now see one "level up" at 75 s where there were two changes 2.45 s apart.
    • A branched chart names its path from the first frame, reading "Normal" until something
      changes it, rather than showing nothing until the first branch. HIDDENBRANCH is now read
      and is the only thing that holds the name back.
    Downloads