fbpx


The MIDI Forum

  Friday, 13 May 2022
  67 Replies
  6K Visits
7
Votes
Undo
  Subscribe
Hello, could someone lend me some "rare" MIDI files, for example midi 2 format or with SMPTE delta times, I can't find any and also the largest "common" midi file.
The largest midi file I have weighs 84.3Kb and my program takes 0.0137 seconds to read and analyze it, I would like to try something bigger
Thank you. :)
2 months ago
·
#14661
0
Votes
Undo
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

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.)


they do start with a sysex FF 7F 00 00 40

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.)
2 months ago
·
#14663
0
Votes
Undo
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.


(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.)


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.
2 months ago
·
#14665
0
Votes
Undo
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.
2 months ago
·
#14666
0
Votes
Undo
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.


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?
2 months ago
·
#14680
0
Votes
Undo
I once made a list of most commonly used SysExes for my own reference.
Hope you can make some use of it too: https://github.com/jazz-soft/SysEx
2 months ago
·
#14688
0
Votes
Undo
I once made a list of most commonly used SysExes for my own reference.
Hope you can make some use of it too: https://github.com/jazz-soft/SysEx


Thanks, so GM2 XG and GS have no status off, I thought they had just forgotten about it, or is GM off good for everyone?

Here's another one I didn't see on your list,
ReverbType
F0H 7FH 7FH 04H 05H 01H 01H 01H 01H 01H 00H vvH F7H
I attach the manual where it appears.
2 months ago
·
#14689
0
Votes
Undo
so GM2 XG and GS have no status off, I thought they had just forgotten about it, or is GM off good for everyone?

My understanding is if a device supports more than one mode (like GM1, GM2, GS, XG, or other private modes), then each mode will have a certain System Exclusive message to turn it on. Only one mode can be active at a time, so if you want to turn off a mode, you just turn on whatever other mode you want to switch to.

A device can respond to the "GM Off" System Exclusive by switching to its default mode.


XG files will usually have a GM ON followed by an XG Reset

When you see a MIDI file sending "GM1 On" then "XG Reset" (or sending "GM1 On" then "GS Reset"), my understanding is that is used as a fallback mechanism. If a device doesn't support the second mode that was sent, then it will remain in the first mode that was sent. In that case, the GM1 sounds the device plays won't be the exact XG or GS sounds the MIDI file author intended, but they will often be a reasonable replacement.
2 months ago
·
#14692
0
Votes
Undo
What Bavi-H suggests is partly true,

One primary purpose of a GM System On message is to reset ALL controllers to their default state.
On all ports, all channels.

The command actually does more than a Reset All Controllers as it also resets Bank Select MSB and LSB to zero as well as Program Change to 1 (or 00H if you prefer).
Resets Pitch Bend range to +/- 2 and so on and various other functions.
These are all laid out right near the start of the last section, before the Appendix, of the Complete MIDI spec., the Developer Guidelines.

So, a GM On, in effect, does a complete reset of everything in a MIDI sound module, as well as defining a standard sound set.

When playing back one SMF after another, it's a very useful way of resetting e.g. Channel Volume (after a fade), Pitch Bend back to +/- 2, Expression back to 127, etc. with just one command at the start of the file. But it's also important to note that it can take some devices more than 100ms to implement it.

So the GM On should be at the very start followed a good number of "ticks" later of the GM2 On / XG On / GS On as required.
The Meta Data can be included at the very start of the SMF but any Bank Selects and Program Change messages need to come later.

The two dozen pages of the Developer Guidelines really are and essential read (in my view) for anyone intending to be creative with MIDI files.

JohnG.
2 months ago
·
#14694
0
Votes
Undo
GM defines the 128 sounds that there are, so if it is not active, what remains? Only the midi standard, but this does not ensure that there is a piano in program 0, is that correct?
2 months ago
·
#14696
0
Votes
Undo
What you get, Carlos, will depend entirely on the device and how, or even whether, it interprets or ignores the GM On.

My old Cheetah MS6 , which is pre General MIDI, will completely ignore the GM On message and produce whatever has been programmed into the first memory area.
My Yamaha AN1x synth the same, as is my Yamaha VL70m wind synth. I suspect many other synths are the same.

However, more modern Sound Modules like my Roland SC8850 and my Yamaha MU1000 will produce a grand piano sound on PC 1 (0) whether or not a GM On is sent.

I don't suppose that's a lot of help!
JohnG.
2 months ago
·
#14697
0
Votes
Undo
I have a piano that has 400 tones
128 are GM tones MSB=0
6 Drum Set GM2 MSB=120
266 I don't know what type they are because the MSB is different from 121 so it's not GM2 or GM
For example:
Stereo Grand Piano: Program Change = 0, MSB = 2
Music BOX 1: Program Change = 10, MSB = 2
Music BOX 2: Program Change = 10, MSB = 1
Dance Square Pad 2: Program Change = 90, MSB = 50
almost matches GS list https://github.com/jazz-soft/JZZ-midi-GM/blob/master/data/gs-sc8850.txt
2 months ago
·
#14698
0
Votes
Undo
Really, most devices are a law unto themselves, and there is no absolute role as to how the sounds are prganised. However, the manual should tell you how to select the individual sounds.

VERY generally, the sounds are organised into 'banks'. Carlos's piano seems to have a default GM bank for GM, which is reasonable. Then things may work like GS, in that many of the default sounds may have alternatives, selected via different MSB codes. I assume that in GS, if you select an 'alternate' sound, then you replace the basic sound with the alternate and leave all the other sounds alone.

XG, I'm not so sure. Here, if you select a sound from a bank, maybe using MSB and LSB and PC, what happens. I've always assumed that this uses the selected sound, and it could be used anywhere (any track/channel) without affecting everything else, but is that the case. Looking at the XG bank charts, then each bank has the full 128 sounds, which are mostly the standard sounds, but some will be new, i.e. specific to that bank. Are you selecting the new sound ONLY, or are you using the bank, which might affect other sounds as well. Surely NOT, as you can, I believe, select sounds from different banks, at the same time?

Geoff
2 months ago
·
#14711
0
Votes
Undo
I have looked at the list of names of another model but the same brand and they also change, which makes these MSB numbers completely useless.
2 months ago
·
#14714
0
Votes
Undo
Carlos,

I've just had a quick look at the Bank Charts for my main two devices, Yamaha MU90r and Korg NS5r. I was specifically looking for a sound called Santur which appears in a couple of XG midi files I like. Actually, this sound has the same codes (MSB, LSB and PC) to select it in both devices. Most of the other sounds in the tables nearby were also the same on both devices. At least they had the same name, so I guess they would be similar enough. I've not looked further than this.

The Yamaha device is explicitly XG, the Korg is not.

So I suppose it's pot luck - some sounds may be the same. If you use a specific 'extra/banked' sound in a midi files, then maybe you need to check if it appears on other devices? Not an easy task, I agree.

Geoff
2 months ago
·
#14715
0
Votes
Undo
I have looked at the list of names of another model but the same brand and they also change, which makes these MSB numbers completely useless.


This is quite normal.
Usually the top end product will have "Instruments" that are not available in the lower price range.

Instruments vary in VSTs too.
Below you'll find two trumpets from different VST libraries from the same company. Both called Trumpet1_KS (KS=key switch).
You'll notice that the range of MIDI controllers implemented with one trumpet is significantly different from the other one.

Trumpet1-GPO5.jpg


Trumpet1-JaBB.jpg

One is an orchestral trumpet, the other for Jazz.
Clearly, the MIDI controllers used for the Jazz trumpet will do absolutely nothing with the orchestral trumpet.

This, as far as I'm concerned, is one of the interesting joys of MIDI, tailoring each file to play at its best with the hardware/software at your own disposal.
Of course, others will differ.
2 months ago
·
#14718
0
Votes
Undo
I have looked at the list of names of another model but the same brand and they also change, which makes these MSB numbers completely useless.
If you are purely looking for display purposes, the best you can do is a best guess.
What I have done is used a specific list for GM, another for GS, and another for XG. I use the most complete lists I could find, which are based on the newest/most complete devices of each type. This gives me the broadest coverage. You will never have a 100% accurate list for every bank select and every device. I recently added allowing the loading of a custom instrument list (as I wanted it to match what was in the soundfonts I am using). You may want to try something along those lines.

See these screenshots of a GS file loaded in my instrument editor. I have a quick toggle so you can view it in any of the three modes in case the file does not detect the mode, or you are planning on converting it to another format.
It shows a few things:
- Names (at least for MSB 0, LSB 0, which should the GM bank in any GM compatible device) are all variations of essentially the same thing. Once you go in to higher number banks, you will see more differences.
- If you don't have a name/instrument for something, generally it will "fall back" to what is in the default bank. This isn't always the case, but most devices should handle this. The MIDI implementation charts in the device manuals usually show what sound will play if a particular bank selection does not exist. I have seen ones that will play the default bank sound, ones that will play the previously selected sound, and in Yamaha devices, certain specific banks (like SFX Bank) that will play no sound if a valid one is not selected. (in my example, all of the instruments are using MSB 0 LSB 1, which is not a "standard" GS setting, but is probably a valid variation used in the device the file was created in, and my software displays the default bank names for the items)
- If you allow custom naming, any missing things can be supplied by the user/customized to a particular device. There are tons of CakeWalk Instrument Definition Files that have been made by many people that cover a huge amount of specific devices. These are text file that list all of the instruments in a particular device.
Files for various Yamaha devices can be found here:
http://www.jososoft.dk/yamaha/ins_files.htm
Five ins files come with Sekaiju if you download it. I posted a few of them earlier, and I use some of them for my naming. A google search will yield additional files.
My custom naming files come from the soundfont info in VirtualMIDISynth. It lists all of the instruments in a particular soundfont, and I copy those in to a text file that I can load in my editor. This way, I can have instruments that are an exact match for what I have available, and if anyone else makes a file following this format, those can be loaded as well.
2 months ago
·
#14743
0
Votes
Undo

And finally, for the GS percussion channel assignment SYSEX.
Information about this can be found.... in the manual? I'll have to dig through my stuff when I have more time to see where I got it from. I just did a quick look through the SC-8850 manual but didn't see it, but I'm sure it's in there. SYSEX explanations start around page 229.
https://cdn.roland.com/assets/media/pdf/SC-8850_OM.pdf

// GS Custom Percussion Assignment
// F0 0A 41 (10) 42 12 [40 1A 15] [02] 0F F7
// [.. 1x ..] x = part# / (probably) ch# 1-9, 0, A-F
// [0y] y = type: 0 = standard, 1 = drum map 1, 2 = drum map 2


I finally understand this (page 238)
40 1x 15, x is channel by default there is only percussion on channel 10 (MAP1), the only thing different is that x=0 represents channel 10
F0 -> Exclusive status
0A -> variable length
41 -> ID number Roland
10 -> Device ID
42 -> Model ID
12 -> Command ID -> DT1
40 -> Address MSB
1A -> Address (A is channel, page 237)
15 -> Address LSB
02 -> Data (00=OFF, 01=MAP1, 02=MAP2)
0F -> Checksum (page 245)
F7 -> End


Channel

x=0 -> channel 10
x=1 -> channel 1
...
x=9 -> channel 9
x=A -> channel 11
...
x=F -> channel 16


does this mean that channel 10 could be used as an instrument channel?
2 months ago
·
#14744
0
Votes
Undo
Yes, I believe it does. I have not come across a file that does this, but this part

02 -> Data (00=OFF, 01=MAP1, 02=MAP2)

selects whether it is normal (instrument), or MAP1/MAP2 (percussion)

So if you had
F0 0A 41 10 42 12 40 10 15 00 0F F7

that should assign a standard instrument channel to channel 10.

We may have to wait for someone with a GS instrument to verify ;)

Actually, I manually edited a test file that Sema provided a while ago for setting custom GS drums. I moved the notes to channel 10 and modified the SYSEX as above.

My editor needs to be updated to reflect this possibility :p

Both Winamp and MidiPlayer played an organ on channel 10.
2 months ago
·
#14748
0
Votes
Undo
Just to clarify the use of channel 10 for rhythm, or not, in the various specifications.

The General MIDI specification, i.e. version 1, says the following (I quote):
Key-based Percussion is always on channel 10.

The GM2 specification says a lot more (again I quote):
2.4 Melody Channels and Rhythm Channels
[required]
A Melody Channel is a Channel that can select timbres or sounds from the GM2 Sound Set. These timbres are Programs
in Bank 79H/xxH (79H/00H, 79H/01H, 79H/02H, etc.).
A Rhythm Channel is a Channel that can select timbres from the GM2 Percussion Sound Set. These timbres are
Programs in Bank 78H/xxH.
Any Channel can be used as a Melody Channel, including Channel 10. Channels 10 and 11 can be used as Rhythm
Channels (see Bank Select). Channel 10 defaults to a Rhythm Channel and Channel 11 defaults to a Melody Channel.
[optional]
Any Channel can be used as a Rhythm Channel by sending the Bank Select message 78H/xxH followed by a Program
Change message. GM2 scores that use this optional message may be incompatible with some GM2 devices.


The GS and the XG implementations both follow the GM2 specs. in this respect, so melody instruments can be on all 16 channels.
Channel 11 is the one normally chosen for an extra drum set.
The normal way of switching between melody and rhythm is by the Bank Select MSB, although a SysEx message is an alternative.

JohnG.
2 months ago
·
#14766
0
Votes
Undo
What happens with a program change on channel 10 in GM?
  • Page :
  • 1
  • 2
  • 3
  • 4
There are no replies made for this post yet.
Be one of the first to reply to this post!