Thanks for the analysis.

I haven't contributed with many lines of code to LilyPond, but I'm
afraid I might be the culprit for this problem. I just found a copy
of a patch I submitted in summer 1999 where I removed the tempo setting
in track 0.

The reason was that I introduced support for tempo changes in the
middle of a piece and did this by adding tempo changing commands in
the track corresponding to the stave where the tempo change was
specified. This worked well with all the MIDI sequencers I had
access to. The only problem was that different sequencers read the
tracks in different order so if you had one \tempo declaration in
the \midi{...} block (which ended up in Track 0) and another in the
beginning of some stave (which ended up in the corresponding track),
I would get different tempi for different sequencers.

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?

/Mats

Nigel Warner wrote:
Dear All,

        After running a check I believe that the problems people
        are having with MIDI and Tempo are because Lilypond does
        not do "the right thing".

Picking apart the MIDI output for a simple file:

        panfluteAA = \notes {
        \time 3/4
        r2 \times 2/3 { d'8 e' g' }  |
        g'4 fis' g' |
        a' a'2   ~ |   a'   g'8( e')
        }
        \score {
        \context Voice \panfluteAA
        \paper { }
        \midi{  }
        }


MFile 1 2 384 MTrk 0 Meta Text "Creator: GNU LilyPond 2.0.1 " 0 Meta Text "Generated automatically by: GNU LilyPond 2.0.1 " 0 Meta Text "at Thu Oct 16 18:16:28 2003 " 0 Meta Text "from musical definition: /home/nigel/LilySource/TempoCheck.ly:9:25"

0 Meta SeqName "Track 0"
0 Meta TrkEnd
TrkEnd
MTrk
0 Meta TrkName ""
0 Tempo 1000000
0 TimeSig 3/4 18 8
768 On ch=1 n=62 v=127
896 Off ch=1 n=62 v=64
896 On ch=1 n=64 v=127
1024 Off ch=1 n=64 v=64
1024 On ch=1 n=67 v=127
1152 Off ch=1 n=67 v=64
1152 On ch=1 n=67 v=127
1536 Off ch=1 n=67 v=64
1536 On ch=1 n=66 v=127
1920 Off ch=1 n=66 v=64
1920 On ch=1 n=67 v=127
2304 Off ch=1 n=67 v=64
2304 On ch=1 n=69 v=127
2688 Off ch=1 n=69 v=64
2688 On ch=1 n=69 v=127
4224 Off ch=1 n=69 v=64
4224 On ch=1 n=67 v=127
4416 Off ch=1 n=67 v=64
4416 On ch=1 n=64 v=127
4608 Off ch=1 n=64 v=64
4608 Meta TrkEnd
TrkEnd

        This is not good MIDI. In a format 1 file, a file containing multiple
tracks, Tempo changes should only appear in the Conductor track, track 0,
which should only contain System Common messages. Quicktime, and other
MIDI file players, are within their rights to ignore tempo changes, key
signatures and time signatures which appear in tracks other than 0 which
should only contain Channel Mode messages and Meta Events.

        The reason I know this is because I have experimented with various
combinations of data and MIDI reading software and have come to the
conclusion that the only safe way is to ensure that the constraints
as above are obeyed. The results of feeding a disobedient file into
Sibelius, Finale and others are widely inconsistent and appear to depend
on whim.

I would consider this to be a buglet.

Regards,

Nigel.





_______________________________________________
Lilypond-user mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/lilypond-user

-- ============================================= Mats Bengtsson Signal Processing Signals, Sensors and Systems Royal Institute of Technology SE-100 44 STOCKHOLM Sweden Phone: (+46) 8 790 8463 Fax: (+46) 8 790 7260 Email: [EMAIL PROTECTED] WWW: http://www.s3.kth.se/~mabe =============================================



_______________________________________________
Lilypond-user mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/lilypond-user

Reply via email to