Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Because effective time is adding of 2 floats which can introduce precision error, it can be that the effective time of the previous block if AFTER the start time of the block you're processing.
This fix shifts start times according to the previous effective time to retain correct ordering. We're really only interested in effective time when placing points anyway - although those would be subject to precision error too!This is the easiest fix. The best fix would be to use the adm::Time class throughout the entire code base, but that's huge work!This fix uses chrono::nanoseconds in AutomationPoint class to avoid precision error when calculating effective time. Also includes a fixEffectiveTimeOverlaps function when processing the vector of AutomationPoints, which forces the effective time of a point to occur at or before the start time of the successive point (i.e, successive AudioBlockFormats rtime)