[quotePost id=14614]
The bank selector allows many different instruments, is there a list with the names?
[/quotePost]
There is: https://github.com/jazz-soft/JZZ-midi-GM
You can have them printed from your MIDI file using this tool: https://github.com/jazz-soft/test-midi-files
Thanks, in my code I read always assuming that the variable length byte exists, I save it and use it to read the rest of the message so it always looks like in hardware, is it ok to do that?
[quotePost id=14622]
For GM1 System On and GM2 System On
[code type=markup]
//GM reset
//F0 7E 7F 09 01 F7 (GM1 hardware)
//F0 05 7E 7F 09 01 F7 (GM1 software)
//F0 7E 7F 09 03 F7 (GM2 hardware)
//F0 05 7E 7F 09 03 F7 (GM2 software)
[/code]
[/quotePost]
For GM I found this http://midi.teragonaudio.com/tech/midispec/sysen.htm it says that the third byte is the channel, in this case it ignores the channel, can it be something other than 7F?
I was analyzing the file that I uploaded, in this case it would be a GM and XG file at the same time
[code type=markup]
F0 7E 7F 09 01 F7 -> GM ON
F0 43 10 4C 00 00 7E 00 F7 -> XG reset
Is there the same code to turn off GM2?
F0 7E 7F 09 00 F7 -> GM OFF according to teragonaudio.com
F0 7E 7F 09 02 F7 -> GM OFF according casio manual
[/code]
If there is no active type, it would be the "classic" midi, what is its name? Is GM equal to GM1?
[quotePost id=14623]
There is: https://github.com/jazz-soft/JZZ-midi-GM
You can have them printed from your MIDI file using this tool: https://github.com/jazz-soft/test-midi-files [/quotePost]
Thanks, this was the first midi list I found for my tests. Are the instruments different for GM GM2 GS XG? I have a list of 400 instruments that comes with my Casio piano, but only change the MSB
[quotePost id=14624]Thanks, in my code I read always assuming that the variable length byte exists, I save it and use it to read the rest of the message so it always looks like in hardware, is it ok to do that?[/quotePost]
Yes, that is perfectly fine. However, if you write it back to a MIDI file later you need to include the length byte.
For GM I found this http://midi.teragonaudio.com/tech/midispec/sysen.htm it says that the third byte is the channel, in this case it ignores the channel, can it be something other than 7F?
I have only seen it with 7F. But it can be any device number. 7F broadcasts to all connected devices. Generally, a software MIDI player doesn't care which device number is there. MIDI hardware may only respond to it's own device ID or 7F.
See page 4 of the General MIDI Level 1 specs (page 6 of the pdf).
https://midi.org/specifications/midi1-specifications/general-midi-specifications/general-midi-1
Also page 22 of the General MIDI Level 2 specs (page 26 of the pdf).
https://midi.org/specifications/midi1-specifications/general-midi-specifications/general-midi-2
I was analyzing the file that I uploaded, in this case it would be a GM and XG file at the same time
[code type=markup]
F0 7E 7F 09 01 F7 -> GM ON
F0 43 10 4C 00 00 7E 00 F7 -> XG resetIs there the same code to turn off GM?
F0 7E 7F 09 00 F7 -> GM OFF
[/code]
GM OFF is F0 7E 7F 09 02 F7
XG files will usually have a GM ON followed by an XG Reset, without turning GM off.
If there is no active type, it would be the "classic" midi, what is its name? Is GM equal to GM1?
Yes, they are used interchangeably.
[quotePost id=14613]Hello,
Very interesting to be reminded about the website re the adventures/queststudios.
I'd been to that site some time ago, but lost the links to it. Seeing it again, I note the reference to the long/complete soundtracks. I need to check some of them out.
I use the Roland card LAPC-I as part of my midi system, this is MT-32 compat, so it will respond to the SYSEX load of the special sounds (instruments & sound effects). I've heard bits from other soundtracks and these special sounds can add a LOT to the effectiveness of the soundtrack. This is of course one of the interesting aspects of the Roland card, there are so many 'extras' readily available. My Yamaha MU90r has a C/M mode as an alternative to the default XG mode, and this will cope with the 'normal' MT-32 sound set, but this does NOT allow the special/extra sounds as the sound programming is totally different.
Geoff[/quotePost]
That sounds really neat. I know that when I play back XG files on my computer, I can get them sounding pretty good, but when I hear the same file recorded from an actual XG device, the difference is can be astounding. I don't want to hijack this thread, but I'd be curious to hear some of these MT-32 files on your hardware versus how they would play for me on my computer.
[quotePost id=14624]Are the instruments different for GM GM2 GS XG?[/quotePost]
GM is a common subset of GM2, GS and XG. Other instruments differ.
However, GM2, GS and XG banks don't overlap, so, theoretically it's possible to support all standards simultaneously.
[quotePost id=14626] I'd be curious to hear some of these MT-32 files[/quotePost]
You can hear them converted to MP3 on sites like this one.
Does channel 16 have something to do with percussion? I've only seen it on linthesia https://github.com/linthesia/linthesia/blob/main/src/libmidi/MidiTrack.cpp#L164
[quotePost id=14651]Does channel 16 have something to do with percussion?[/quotePost]
That depends on the device receiving the MIDI messages. Having percussion on channel 10 is just a convention, not a requirement. Some devices let you choose which channel(s) is(are) for percussion while other devices don't give you a choice.
Percussion Channels
[quotePost id=14654]Having percussion on channel 10 is just a convention, not a requirement.[/quotePost]
Well, it's a requirement if a device uses General MIDI Level 1 and is in its General MIDI Level 1 mode. My understanding is:[list]
Linthesia Code
[quotePost id=14651]I've only seen [Channel 16 having to do with percussion] on linthesia https://github.com/linthesia/linthesia/blob/main/src/libmidi/MidiTrack.cpp#L164 [/quotePost]
Looking over that code a little bit, the code appears to consider a track as a percussion track if all of the notes in the track are for Channel 10 or Channel 16.
As mentioned above, on a General MIDI Level 1 device (or a device in a GM1 mode) Channel 10 can only be used for percussion. If Linthesia is designed to only support General MIDI Level 1 devices and MIDI files, then hard-coding Channel 10 as percussion might be understandable. But hard-coding Channel 16 as percussion doesn't make sense to me, since that's something not every device supports, it seems like it would be better to have as an option you could change.
Channel 16 Percussion Examples
[quotePost id=14651]Does channel 16 have something to do with percussion?[/quotePost]
I think devices (or modes) where Channel 16 is used for percussion are not common in modern devices. But maybe that might have been common in older MIDI devices? I looked over PDF manuals that I have gathered for various MIDI devices and found the following examples.
In the following Roland manuals, I noticed there are two MIDI implementation charts. The chart for Style (or Arranger) mode shows Channel 10 is for arranger drums and style Program Changes and Channel 16 is for manual drums. The chart for Song (or SMF Player) mode shows Channel 10 is for manual drums.[list]
In a "Technics SX-KN501 SX-KN701 Owner's Manual" PDF file I have, PDF page 50 (printed page 49) shows "Part 16 (Drums)" defaults to Channel 16. In the corresponding "Technics SX-KN501 SX-KN701 Reference Guide" PDF file I have, page 26 shows that in General MIDI mode, the keyboard's "Part 16" is assigned to Channel 10. [You may be able to find these PDF files on various manual sites with lots of advertisements, but I'm not comfortable linking to one of those.]
Something else that uses Channel 16 for percussion is the following:
Multimedia PC (MPC) Specification MIDI Files
Around the time of Windows 3.1, there was a "Multimedia PC" (MPC) specification that wanted MIDI files to contain both an "Extended" arrangement on channels 1 to 10 with percussion on channel 10 and a "Base" arrangement on channels 13 to 16 with percussion on channel 16. The idea was that less capable sound systems would use the Base arrangement that had less polyphony and fewer instrument sounds, while more capable sound systems could use the Extended arrangement.
You can read a little bit about this MPC specification at the following places:[list]
A MIDI file that follows this guideline will have a Sequencer-Specific meta event containing the Microsoft Manufacturer ID at the beginning of the MIDI file. People making MIDI files could use a program called MARKMIDI.EXE from Microsoft to add this event to their MIDI files. Even modern versions of Windows Media Player (at least I've confirmed to Windows 8.1) will notice if this event is in a MIDI file and if it is, Windows Media Player will ignore channels 13 to 16 during playback, so you only hear the Extended arrangement.
From what I remember, the original Windows 3.1 Media Player would notice if a MIDI file didn't have the special mark and pop up a message that the MIDI file might not sound correct. Most MIDI files never had this mark, so they always popped up the warning message, but they actually sounded fine. You couldn't turn this annoying warning message off, so you typically found another MIDI player to use instead of Media Player.
By the next version of Windows and Media Player (I think in Windows 3.11 for Workgroups?) this guideline was abandoned and the warning message was removed. But I believe every version of Windows Media Player still looks for the mark in a MIDI file and if it's there, it ignores channels 13 to 16 during playback. (At least I've confirmed my Windows 8.1 Windows Media Player does this. I'm guessing Windows 10 and 11 probably does too.)
CANYON.MID, PASSPORT.MID, and the other Passport Designs MIDI files that came with Windows in this time period follow this guideline. But I don't remember encountering any other MIDI files that follow this guideline.
For example, if you play CANYON.MID on a modern system in Windows Media Player, channels 13 to 16 are ignored. If you play CANYON.MID using something other than Windows Media Player, the channel 16 notes will sound like a piano, but they were intended to be the Base arrangement percussion. However, it seems Passport Designs anticipated some MIDI players would play the Extended and Base arrangements at the same time: In their MPC MIDI files Channel 16 notes are softer than the rest of the channels, so when both the Extended and Base arrangements are played together you're less likely to notice the Channel 16 piano sounds that were supposed to be the Base arrangement percussion.
So it's not an official MIDI thing, I have the midi files you mention, I think I got them from a windows 95 when I was using it, mine don't have any channel greater than 10 but they do start with a sysex FF 7F 00 00 40
[quotePost id=14657]I have the midi files you mention, I think I got them from a windows 95 when I was using it, mine don't have any channel greater than 10[/quotePost]
Thanks for the information! I also found these pages on the Internet Archive that contain the MIDI files included with Windows 3.0 and Windows 95, if anyone else wants to compare them.
Windows 3.0 MIDI
Windows 95 audio media
While reviewing information about the Passport Designs MIDI files, I found a wiki site devoted to documenting various old MIDI files like these. (Warning: This wiki site has lots of ads, I suggest you use an ad-blocker or disable JavaScript to view these pages.)
https://midis.fandom.com/wiki/Category:Passport_Designs_Midis
https://midis.fandom.com/wiki/Canyon
https://midis.fandom.com/wiki/Passport
https://midis.fandom.com/wiki/Midi_Related_Glitches#Out_of_Tune_Piano_Tracks_on_Older_Midis
The pages describe CANYON.MID and PASSPORT.MID had new versions in Windows 95 with less channels. I didn't bring it up in my post above because I thought that information might be wrong, perhaps because someone had edited their copy of the file. But now you've reported your Windows 95 MIDIs only have channels up to 10 that helps confirm that information is correct. It makes sense they no longer wanted the MPC Base arrangements anymore.
(The pages actually describe this the other way around, they describe the version that originated with Windows 3.0 is an "alternate version" with more channels and an "out of tune piano" on channel 16 that is a "prototype of the drum track". The wiki authors there don't seem to be fully aware of the MPC standard. The channel 16 notes weren't a "prototype" and were there on purpose. They are percussion for the MPC Base arrangement, meant to work with something that would play either the Extended or the Base arrangement in the MIDI file as appropriate.)
[quotePost id=14657]they do start with a sysex FF 7F 00 00 40[/quotePost]
In the original versions, the meta-event is the following bytes in the MIDI file:
FF 7F 03 00 00 41
This is the Sequencer-Specific meta event that contains the Microsoft Manufacturer ID that I mentioned.
In a MIDI file, a "status" byte of FF is used for a meta event.
The next byte, 7F, means it's a Sequencer-Specific meta event.
The next byte, 03, is a variable length quantity for the value 3, which means the contents of the meta event continues for the next 3 bytes.
The next bytes, 00 00 41, are the Manufacturer ID for Microsoft.
According to the Standard MIDI Files specification, a Sequencer-Specific meta event must begin with a Manufacturer ID. Any bytes in the meta-event after the Manufacturer ID can be anything the manufacturer wants. In this case, the only thing the Sequencer-Specific meta event contains is the Manufacturer ID for Microsoft and nothing else. This meta event is used by Windows Media Player to recognize that a MIDI file contains (or might contain) a Base arrangement on channels 13 to 16, and Windows Media Player will just ignore those channels and only play the Extended arrangement.
However, in the Windows 95 versions (at least the versions on that Internet Archive page) the meta-event does contain the bytes 00 00 40 ! That's the Manufacturer ID for some other company called Richmond Sound Design. I don't understand why this event was changed, I think it could have just been removed? I find this detail interesting and I didn't know about until you mentioned it. Thanks for the information.
(Note: Be aware that a Sequencer-Specific meta event is a different thing from a System Exclusive message, but has a similar kind of purpose. They're both manufacturer-specific messages whose contents begin with a Manufacturer ID. But a System Exclusive message will get sent out on a MIDI port for a MIDI device to see. A Sequencer-Specific meta event, like all meta events in a MIDI file, only exists in the MIDI file and can only be seen by the MIDI file software, it doesn't get sent out to the MIDI port for a MIDI device to see.)
Interesting, it's like having two versions of the song in the same file, so if I detect the microsoft ID it should only ignore channels 13 to 16.
[quotePost id=14661]
(Note: Be aware that a Sequencer-Specific meta event is a different thing from a System Exclusive message, but has a similar kind of purpose. They're both manufacturer-specific messages whose contents begin with a Manufacturer ID. But a System Exclusive message will get sent out on a MIDI port for a MIDI device to see. A Sequencer-Specific meta event, like all meta events in a MIDI file, only exists in the MIDI file and can only be seen by the MIDI file software, it doesn't get sent out to the MIDI port for a MIDI device to see.)
[/quotePost]
I always confuse them, I didn't understand why two were the same, I hadn't noticed that meta-events can't be sent to devices.
Going back to your initial post, a discussion about GM2 files can be found here:
https://midi.org/forum/12671-looking-for-gm2-files-in-the-wild
Only one of the files has a GM2 SYSEX reset in it. The rest have no resets. Half of the files are also not all fully compliant (as I understand it) as some channels are missing a bank select MSB = 121, but they still play fine on my players.
I've attached the ones I downloaded.
[quotePost id=14665]Going back to your initial post, a discussion about GM2 files can be found here:
https://midi.org/forum/12671-looking-for-gm2-files-in-the-wild
Only one of the files has a GM2 SYSEX reset in it. The rest have no resets. Half of the files are also not all fully compliant (as I understand it) as some channels are missing a bank select MSB = 121, but they still play fine on my players.
I've attached the ones I downloaded.[/quotePost]
Thank you, so the only way to know that it is a GM2 would be through the MSB 120 on channel 10 or 11. Without the msb 120 on these channels it would not be percussion?