It seems soundfont management logic + different midi systems is not an easy subject and implementing the 'Use Bank LSB' option have not made it easier.
in the 'Soundfonts and Retrogaming MIDI' topic
Soundfonts and Retrogaming MIDI
33oldnew had some problems understanding it fully. Since I do not want to spam the other topic I answer his questions here, but I think it can be useful also for others.
@33oldnew:
The song you tested ‘NighCaro’ is intended to play on GM2 devices. GM2 is a special beast since it does not use Bank 0 for Capital Tones but Bank 121 (and 120 for drums).
And it uses Bank LSB for variation banks (thus similar to XG). https://en.wikipedia.org/wiki/General_MIDI_Level_2
Soundfonts are tightly linked to GS and they can only use 128 banks that are usually addressable by Bank MSB. (Soundfont capable hardwares such as SB AWE, Live, Audigy series always use Bank MSB for variations.)
Regarding Bank/Preset selections GS, XG, GM2 are incompatible with each other. But they are all compatible with GM that does not use Banks at all.
Bassmidi as a software soundfont engine (used by Midi Player and many other player softwares to handle soundfont based playback) is more versatile than hardware implementations but cannot overcome the SF2 format’s limits. So it is realistic that GM/GS midis can be played back with good results if you use/configure soundfonts properly. But XG/GM2 midi files that use variation banks usually cannot be used with good result.
While theoretically you can create e.g. a full SC-55 GS implementation with a soundfont (I mean the full programs/banks combinations) you cannot implement even the XG Lite standard with a soundfont.
That’s why testing soundfonts with XG/GM2 midi files is not a good choice.
Usually simple playback with only a default soundfont (placed at bank 0) is not a problem.
By default bassmidi similarly to most GS devices and SB hardware simply does not use/ignores the Bank LSB value. And if it meets a Bank MSB + program combination that does not exist it uses its Capital Tone Fallback (CTF) mechanism and simply use the given instrument at Program + Bank 0.
(If you want to see the result of CTF and so want to see the used program +bank combination instead of the real bank values the file sends, you can enable ‘Main menu -> Intruments -> Use Patch Info for Capital Tone Fallback’ in Midiplayer. https://www.youtube.com/watch?v=PrKfDTjvKDs)
But if you use multiple soundfonts and any of the soundfonts has a variation bank defined at 121 – bank offset and you try to use a GM2 midi file it will sound bad.
But let’s see how soundfont management works in Midiplayer (up to 4.7). It works the exact same way as SB series soundfont manager (sfman32). Let me repeat it: Bank LSB does not play. Bank is equivalent to Bank MSB value. (according to this in Midiplayer up to 4.7 and in Midiplayer 4.8 if ‘Use bank LSB’ is not selected Ctrl + x always sets Bank MSB value never bank LSB. @33oldnew: your guess was wrong. Test it again)
Bank 0 is supposed to be the main GM compatible bank, and other additional soundfonts to be the variations. In case of SB hardware it was never meant to place full GM/GS implementations on different banks. It is possible, but later banks overwrite overlapping presets. An example:
1. You load a default full GS soundfont at bank 0. Therefore at bank 0 program 127 you have the Gun Shot instrument, and at Bank 1 program 127 you have the Machine Gun instrument.
2. If you load another full GM/GS soundfont at Bank 1 you will have the 1st soundfont’s macine Gun instrument at Bank 0 program 127, but at Bank 1 program 127 you will have the 2nd soundfont’s Gun Shot instrument. 1st soundfont’s Machine Gun has been overwritten. Notice: bank number behaves as an offset. The 2nd soundfont’s bank 0 will be available at bank 1, bank 1 at bank 2 and so on.
To overcome this preset overlapping problem I have added the ‘Use Bank LSB’ option to MidiPlayer 4.8. If it is selected Ctrl + x always sets the Bank LSB value. This method is unique and is not available in any hardware soundfont implementation. Instead of imitating the SB hardware’s soundfont management this method is more similar to later GS implementation’s Map changing method (SC-8820/8850). Each additional full GM/GS soundfont can be considered as a complete GS map (like SC-55, SC-88 Maps in SC-8820).
And these maps can be selected by Bank LSB. And this way the variation banks in each Soundfonts can be selected by Bank MSB since they do not overlap each other.
But there was a little problem with Bassmidi’s default CTF behavior that required some workarounds. Namely by default Bassmidi always falls back to Bank MSB/LSB 0 if it does not find an exact match at the given Bank LSB + Bank MSB + Program combination. Thus it leaves the Domain of the selected Map/Soundfont by Bank LSB. This behavior is not good when you want to test a soundfont and the midi file tries to use a bank MSB + Program combination that does not exist in the soundfont selected by the Bank LSB value. So if such a situation occurs MidiPlayer resets the Bank MSB value to 0 and thus falls back to the Capital Tone Bank of the selected soundfont. So in case of ‘Use Bank LSB’ this effect result in a different program name and bank MSB value display than in 'Bank MSB mode' in case of non-existent Bank MSB + program combinations.
I hope this makes it more clear but Midi itself, different Midi systems and soundfont management are not easy subjects. And you have to gather much information from different places to get a clear picture.