57edc7aecf
Before: - If there was a #BPMCHANGE, tana's adjustment would be applied to _the current measure's duration_. This would result in very strange looking, impossible durations (e.g. negative) - Additionally, this method required us to look ahead to the _next_ measure to determine the adjustment. - Finally, it required us to keep track of two different durations: measureDurationBase (unadjusted) and measureDuration (adjusted) After: - Instead, we now leave the measureDuration as purely as "unadjusted". - Then, we apply the "BPMCHANGE adjustment" _only_ when computing the fumenOffset start of the next measure. - This requires us to keep track of both the start *and* end fumenOffset (where end = start + duration) - However, this greatly simplifies and clarifies the code, since we: - No longer need to "look ahead" to the next measure to compute the offset adjustment. - No longer need to keep track of two different measureDurations (adjusted/unadjusted) - Only need to work with a single pair of measures at a time (measureFumen, measureFumenPrev) - The measure duration (and fumenOffsetEnd) times are now more comprehensible, since any negative offsets are only applied to the fumenOffsetStart value of the next measure. After: