FAILURE MAP
← Case archive

FA-81698 / MIDI event timing / Member archive

Tick resolution conversion preserving note length: converted ticks truncated · case 03

Events that fall between target ticks always move earlier, e.g. tick 3 at 2:1 becomes 1 instead of 2.

Member previewVariant 3 · 3 implementations · 8 checks per implementation

Case contract

Input [events, source_ppq, target_ppq] with events [tick, kind, note] in time order. Each tick maps to tick*target/source rounded half up. A note-off (matched FIFO to the earliest open note-on of the same note) whose original length was positive but whose converted tick is not after its note-on is moved to note-on + 1. Invalid resolutions return None.

Why this case matters

MIDI sequencers, file readers and synth drivers depend on exact event ordering and tick/time arithmetic.

One recorded failure

Sample boundary fixture

This sample comes from the broken implementation of a controlled reproducer.

Boundary fixtureActualExpectedOutcome
oracle 0[[0, "on", 60], [1, "off", 60]][[1, "on", 60], [2, "off", 60]]Failed

MEMBER ARCHIVE

The complete case is available to members.

This record includes three runnable implementations, regression fixtures, execution results, and source hashes.

Member access is invitation-based. Sign in with your invited account to inspect the sources.

Sign in to the archive ↗