dtinth/open2jam — pull request #4 by dtinth (2012-09-10 03:59:48+00:00)
Title: Use a TimingData class instead of an IntervalTree.

Instead of storing the note speeds in a velocity tree, we can instead use a simple array, with each item holding:

* Starting time
* BPM

With that data, we can calculate the starting beat for each segment. Now, we can find the beat at any given time using binary search, which gives O(log N) running time.

By factoring the velocity array out of render, we can hand the timing data into other classes, for example judgment classes that can figure out the judgment by beat.