This significantly speeds up parsing MIDI files with complex tempo-maps. e.g. "Black MIDI Trilogy_2.mid" has 24134 Tempo changes. Prior to this commit parsing that file took over 5 minutes. now it loads in under one seconds (libsmf only; libardour still add overhead, and now needs about 30-40 seconds, previously it took about 10 mins). The problem was that every call to `smf_track_add_event_pulses()` calls `seconds_from_pulses()` which calls `smf_get_tempo_by_seconds()` which iterates over the tempo-map: for every midi-event { for ever tempo until that midi-event {..} } This does not scale to 3.5M events and 24k tempo-changes. |
||
---|---|---|
.. | ||
evoral | ||
libsmf | ||
MSVCevoral | ||
test | ||
Control.cc | ||
ControlList.cc | ||
ControlSet.cc | ||
Curve.cc | ||
debug.cc | ||
Event.cc | ||
Note.cc | ||
run-tests.sh | ||
Sequence.cc | ||
SMF.cc | ||
SMFReader.cc | ||
TimeConverter.cc | ||
wscript |