A tempo track: TempoEvents sorted by startBeat, strictly ascending.
The first entry is the time origin — beatsToSeconds returns 0 for its
startBeat — and its tempo also governs the beats before it, which is where
a pickup sounds. A map cannot say anything else about that stretch, and a
piece is played into its first downbeat at the tempo it starts in, so elapsed
time there is negative rather than an error.
A tempo track: TempoEvents sorted by
startBeat, strictly ascending.The first entry is the time origin — beatsToSeconds returns 0 for its
startBeat— and its tempo also governs the beats before it, which is where a pickup sounds. A map cannot say anything else about that stretch, and a piece is played into its first downbeat at the tempo it starts in, so elapsed time there is negative rather than an error.