13
0
livetrax/libs/evoral
Robin Gareus cd53301d06
Significantly speed up loading SMF tempo-maps
Files that have many tracks, each with tempo information
were near impossible to load (30+ mins on modern 4.2Ghz CPU!),
because tempo is parsed incrementally:

```
For each new track:
  for each new tempo-event:
    rewind()
    for each loaded track so far:
      for each event on this track so far
```

This reduces the complexity from O(tracks^2 * tempos^2)
to O(tracks * tempos).

"Come Thou Fount Tempo Map.mid" has 238 Tracks and 56168 total
Tempo Changes (236 per track). This now requires only 56168 iterations
in smf_create_tempo_map_and_compute_seconds, rather than 1.64e+9
iterations
2022-02-05 17:33:21 +01:00
..
evoral Add API to query SMF note-count and pgm-changes 2022-02-05 17:33:21 +01:00
libsmf Significantly speed up loading SMF tempo-maps 2022-02-05 17:33:21 +01:00
MSVCevoral
test changes to compile against libtemporal and use of timepos_t/timecnt_t 2021-08-13 12:51:28 -06:00
Control.cc libevoral: tweaks related to timeline types based on libardour conversion 2021-08-13 12:51:29 -06:00
ControlList.cc Use updated temporal API 1/2 2021-12-11 14:42:36 +01:00
ControlSet.cc Automatable now requires (and owns) a time domain to be used by automation data 2021-08-13 12:51:32 -06:00
Curve.cc NO-OP: clean up maths, remove extra brackets 2021-09-02 20:45:30 +02:00
debug.cc
Event.cc
Note.cc
run-tests.sh
Sequence.cc libevoral: fix some existing or potential issues with time domains 2021-08-13 12:51:34 -06:00
SMF.cc Add API to query SMF note-count and pgm-changes 2022-02-05 17:33:21 +01:00
SMFReader.cc
wscript wscript: drop configure statements already present in the top level wscript 2022-01-22 22:19:03 +01:00