Ok, I have a problem here. Our MIDI time signature codes are wrong. The problem that I have in fixing this is that part of the information in a MIDI time signature is actually (typically) specified in \tempo instead.
Here is how this works: a MIDI time signature contains numerator (fine), denominator (coded like our duration-log), midi clocks (of which there are 24 per quarter note) per beat, and 8 (32nd notes per quarter which we keep constant). The midi clocks per beat is basically what we could get from the closest \tempo ... = duration specification, by taking duration in terms of whole notes and dividing by 96. This value is hardcoded as 18, corresponding to 8. (3 16th notes). That does not make a whole lot of sense. The sane way would be to take the information from the currently valid \tempo (if specified) or otherwise apply a time signature specific default (for 6/8, we don't want 6 beats per measure but 2, for example). I'd argue that if we have \tempo 60 \time 6/8 then we should likely interpret this (regarding the MIDI playing speed) as \tempo 60 = 4. \time 6/8 which would produce a different MIDI file rendition speed than what we have now, because that would be the most reasonable interpretation for the _visual_ rendition of \tempo 60 \time 6/8 In other words: looks like a long-standing mess in some need of cleaning up. Another possible information source may be the beat grouping information for a time signature (used for beaming patterns). That one will turn out to be a puzzler for things like \time 3,2 5/4 However, we could try to pick the gcd from the beat groupings and use that as a multiplier for the beat length (typically the time signature denominator). That would be tempo-independent and probably correct more often than not. And tempo-independent would leave us with a quite smaller head-ache. -- David Kastrup