fbpx
Skip to main content

MIDI Forum

MIDI file request
 
Notifications
Clear all

MIDI file request

68 Posts
8 Users
0 Reactions
16.3 K Views
Sema
 Sema
Posts: 179
Reputable Member
 

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

 
Posted : 23/05/2022 1:56 pm
Carlos
Posts: 86
Estimable Member
Topic starter
 

[quotePost id=14680]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 [/quotePost]

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.

 
Posted : 24/05/2022 5:12 pm
Bavi_H
Posts: 266
Reputable Member
 

[quotePost id=14688]so GM2 XG and GS have no status off, I thought they had just forgotten about it, or is GM off good for everyone?[/quotePost]
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.

[quotePost id=14625]XG files will usually have a GM ON followed by an XG Reset[/quotePost]
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.

 
Posted : 24/05/2022 7:18 pm
JohnG
Posts: 225
Estimable Member
 

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.

 
Posted : 25/05/2022 3:17 am
Carlos
Posts: 86
Estimable Member
Topic starter
 

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?

 
Posted : 25/05/2022 5:39 am
JohnG
Posts: 225
Estimable Member
 

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.

 
Posted : 25/05/2022 8:30 am
Carlos
Posts: 86
Estimable Member
Topic starter
 

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

 
Posted : 25/05/2022 9:25 am
Geoff
Posts: 1040
Noble Member
 

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

 
Posted : 25/05/2022 10:19 am
Carlos
Posts: 86
Estimable Member
Topic starter
 

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.

 
Posted : 26/05/2022 4:02 am
Geoff
Posts: 1040
Noble Member
 

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

 
Posted : 26/05/2022 5:38 am
JohnG
Posts: 225
Estimable Member
 

[quotePost id=14711]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.[/quotePost]

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.

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.

 
Posted : 26/05/2022 7:17 am
Jason
Posts: 432
Honorable Member
 

[quotePost id=14711]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.[/quotePost]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.

 
Posted : 26/05/2022 8:17 pm
Carlos
Posts: 86
Estimable Member
Topic starter
 

[quotePost id=14622]
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
[/quotePost]
[code type=markup]// 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
[/code]

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
[code type=markup]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
[/code]

Channel
[code type=markup]
x=0 -> channel 10
x=1 -> channel 1
...
x=9 -> channel 9
x=A -> channel 11
...
x=F -> channel 16
[/code]

does this mean that channel 10 could be used as an instrument channel?

 
Posted : 30/05/2022 4:44 pm
Jason
Posts: 432
Honorable Member
 

Yes, I believe it does. I have not come across a file that does this, but this part
[code type=markup]
02 -> Data (00=OFF, 01=MAP1, 02=MAP2)
[/code]
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.

 
Posted : 30/05/2022 5:30 pm
JohnG
Posts: 225
Estimable Member
 

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.

 
Posted : 31/05/2022 3:23 am
Page 4 / 5
Share: