I had the Standard MIDI-File Format Spec. 1.1 which was only 18 pages.
I found and downloaded from the web The Complete MIDI 1.0 Detailed Specification (document version 96.1 third edition) 334 pages Is this the latest?
Anyways, in that on pg 4
Turn General MIDI System On F0 7E 7F 09 01 F7 Turn General MIDI System Off F0 7E 7F 09 02 F7 The word Reset is not used. So Reset = System On ? What does System Off do? Now this is not intuitive to me, whereas I thought the term GM Reset was.
Also, to the file Roundabout.mid (this sequence also ended with rests) I sent you a while back, I added (in the Master Track) a GM Reset immediately after the 2nd Tempo change, and another GM Reset at the end of the sequence, and everything works as I expected.
The file length includes the ending rests, and the playback marker jumps to these ending rests as it should. At the 2nd Tempo Change, the sound changes from a guitar to a grand piano, because of the GM Reset I presume.
Is there any way that you can think of, to test whether the final GM Reset is actually implemented? It could be I suppose, that the file does not choke, but the Reset is not actually taking place as I expect.
Finally, on a Yamaha website, I found the following: GM RESET will automatically return all PARTS to GM Bank's 001 Program: Grand Piano, except PART 10 which will select the GM Drum Kit. return all volumes to 100, set all reverb sends (cc091) to 0, set all chorus sends (cc093) to 0, set all pan (cc010) to center, flatten all filter settings (cc071, cc074), return MW (cc001) to zero, sets the Pitch Bend to +0000 etc., etc.
I'm wanting to find, in the MIDI spec, where this is confirmed, and what the etc., etc. actually is. Have you come across this documentation in the specs?
If you take a look at that full spec. document you will find a section that's called GM 1 developer guidelines. There it defines what should happen for the GM reset and also defines that it includes the requirements for Reset All Controllers. You should remember that the MIDI spec has changed quite a bit over the years, and with it some of the names of things. I had to buy a hard copy (not cheap) of the main spec and GM2 some years before it became available as a pdf (15 years ago?). It did include GM1 though.
I've never come acroos, or used, GM system off, so I'm not quite sure what it's supposed to achieve.
Note, with GM on, that you're supposed to leave time for a hardware synth to activate it. The MMA suggest 100ms is an average. Most Yamaha authored files put the GM reset at 1:1:0 and the XG reset at 1:1:240 (at 480 TPQN, 120bpm).
You sent me the Intro to Roundabout but the file contains no rests. Rests are, however displayed but not contained in the file. I'm guessing that some code, when a rest is inserted into the staff view, moves the end of track marker down past the end of the last rest.
Here's a revamped version of OneNote where I've edited the EoT marker for the track to 005:1:000. OneNoteEOT5.MID (70 B) See what that does.
There are also MMA documents called RP's and CA's that should be read which clarify various things. And I've got, I think, three copies of the XG spec in various guises, changed over the years. (I bought a Yamaha daughter board (DB50-XG) for my original SOundBlaster 16 so many years back I can't remember. Then an SW1000-XG, then the three synth daughter boards for that (DX, AN, VL), then an MU128, then an MU1000 and added a Roland SC8850 to that. My brain reels when I try to recall. I've still got the MU1000 with its synths and the 8850.
But I remember finding out was acquiring and reading specs from here and there over many years. Not that dissimilar to my main job in data communications getting stuff from the CCITT in Europe and the IEEE and ... I've forgotten.
And then there was TCP/IP for the Internet and CSMA/CD for Ethernet and so on.
Sorry, I'm a bit distracted at the moment.
Trying to get my mind around replacing components on an amplifier board for my REL Storm III sub-woofer. Not sure if it's the caps or the switch that've gone noisy.
Correction, OneNoteEOT5 DOES contain an end of track marker at measure 5 but your program can't see it.
Here's another that contains two EOT markers in measure 5. Made using Sekaiju. When I open the file in another program the track length is correctly shown as being 5 measures long. OneNoteEOT5v2.MID (71 B)