I'm forwarding the answer from Nigel. It was a long time since I looked carefully at this implementation, but would it make sense to move the Key_performer, Tempo_performer and Time_signature_performer to the score level and let all performers on the Score level output the commands to track 0.
/Mats
-------- Original Message -------- Subject: RE: MIDI Tempo Off...Everywhere Date: Fri, 17 Oct 2003 17:13:47 +0100 From: Nigel Warner <[EMAIL PROTECTED]> Reply-To: <[EMAIL PROTECTED]> To: 'Mats Bengtsson' <[EMAIL PROTECTED]>
Mats,
Anyway, I'm still curious to hear from a MIDI expert how tempo changes in the middle of a piece should be specified in a MIDI file? Should they also be inserted (only) in track 0?
In a word yes. The reasoning is that tempo changes, which do not contain a channel number, should apply to all tracks in the file. There are a number of holes in the MIDI specification which various designers of sequencers and such like have interpreted differently; for example key changes should also be confined to track 0. If they are instead scattered throughout the tracks in an attempt to represent transposing instruments then no typesetting program that I have found, even those which cost an arm and a leg, will attempt to deal with the admittedly rather complex logic required to deduce the intention.
The bottom line is that channel mode messages, those which contain the channel number in the low order nibble of the status byte should only appear in the track containing the data for that channel and should never appear in track 0. Messages which do not contain a channel number are intended to apply to all tracks and as such should only appear in track 0.
FYI my "expertise" in MIDI derives from many hours spent tinkering with my own program which translates a text file written in a language of my own devising into MIDI. Just to see what happens with such programs as Sibelius and Finale and others I deliberately concocted MIDI files which contained all sorts of peculiar combinations of data in order to provide a page or two of information in the documentation about how to best structure MIDI data for each program; what you can and can't do in order to obtain various typographic effects in each package. Needless to say this was one humongous can of worms and so I decided instead to investigate MusiXTeX and Lilypond as typesetting options for my (so far) nonexistent users and for my own purposes in writing the documentation for my program. Of course, Lilypond won that particular battle and I hope to release a beta version which emits Lilypond code (ahem) "real soon now".
Hope this helps.
Nigel.
_______________________________________________ Bug-lilypond mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-lilypond