Rémi Bernon (@rbernon) commented about dlls/dmime/midi.c:
- /* MIDI deltaTime can be either tempo dependent or not. If
* ticks_per_quarter_note is 0, then ticks_per_second should be used.
* Converting MIDI time to DirectMusic MUSIC_TIME is complicated. MUSIC_TIME
* is number of quarter notes times DMUS_PPQ, this is tempo dependent. If
* MIDI time is tempo dependent as well, then we just need to multiply it by
* a factor (because MIDI can have a different division of quarter notes).
*
* If MIDI time is not tempo dependent however, the conversion would be
* difficult because tempo information can be stored in another track. And
* we need the tempo information to convert MIDI time to MUSIC_TIME. The
* only reasonable way to do this is to report a "fake", fixed tempo, which
* makes MUSIC_TIME and MIDI time the same.
*/
- UINT ticks_per_quarter_note;
- UINT ticks_per_second;
The tempo event thing looks complicated, and I would suggest writing tests for them, and implementing their parsing separately.