Mapping MSB, LSB, Patch to Soundfonts

298 views
Skip to first unread message

Kevin D'Souza

unread,
Apr 8, 2023, 5:46:03 AM4/8/23
to midiar...@googlegroups.com
Hey,
I'm trying to re-voice some styles and save them. 
I've got some soundfonts which have data in other banks as well. No matter what combination I try, the output doesn't seem to be set correctly.

Eg: in Bank 128 i have the following kits; (example i want to use 128.12 PopDrumSet)
image.png
How do I set this in MIDI arranger? Applying MSB 1 LSB 0 
Bank = (value*MSB)+LSB 
does not seem to be working. I'm guessing my formula is wrong.

Patch 12 sets marimba on the bank which is of bank 0.
image.png
Can you please help with how to choose a different bank on the SoundFont for a voice?

Kevin D'Souza

unread,
Apr 8, 2023, 6:00:01 AM4/8/23
to midiar...@googlegroups.com
Sorry forgot what I'm trying to do. I'm trying to map the Channel 9 drum kit. So that way there are 2 Drum Kits on a style;


Iov Florin Gherman

unread,
Apr 10, 2023, 3:23:18 AM4/10/23
to MIDI Arranger
Hi,

I think it depends on the SoundFont you use and how the patches are mapped in there.

I have a suggestion, take a look at the Channel 10 in one of the built in styles and see how that is mapped. In the default SoundFont that comes with FluidSynth  I see that the drum kit on Ch10 is mapped like this: MSB:120, LSB:0, Patch:0. If this works with your SoundFont then try to take it from there.

Do you have a link to that SoundFont you are using? I can take a look if I can download it.

Thanks.

Kevin D'Souza

unread,
Apr 11, 2023, 1:20:28 PM4/11/23
to midiar...@googlegroups.com
I got it from here [TyrolandGSfix8.7z]

Tried MSB120 patch:0
It takes me to piano 

I've noticed on my Yamaha S700 as well, the drumkit is on MSB128 but I'm not able to set MSB 128 in the app,
It allows 127 as the max to be set. 

Iov Florin Gherman

unread,
Apr 11, 2023, 1:24:01 PM4/11/23
to MIDI Arranger
Actually the MSB/LSB/Patch values in the App are "zero baed", so 0 in App means 1 and 127 in App means 128.

Kevin D'Souza

unread,
Apr 11, 2023, 1:31:40 PM4/11/23
to midiar...@googlegroups.com
Tried MSB:127 with program 32 as well. It's not setting the kit on channel 9 sadly.
Screenshot_2023-04-11-22-58-43-693_net.volcanomobile.fluidsynthmidi~2.jpg
Screenshot_2023-04-11-22-58-22-104_com.iov.midiarranger.paid~2.jpg

Iov Florin Gherman

unread,
Apr 12, 2023, 9:10:23 AM4/12/23
to MIDI Arranger
Kevin,

I did some more research today into this and I am afraid it is not possible because FluidSynth does not support this via standard MIDI. At least I could not find any way to make it work. 

From FluidSynth specifications, it looks like it can operate in 4 modes, "gm, gs, xg, mma". From my tests it looks like the Android version is in GM mode because I was not able to set any other bank other than 0 (in the screenshot below, CC0 is for MSB and CC32 for LSB).

I tried another instruments, from banks lower then 128 (because 128 is not allowed in GM2) like MSB: 126, Patch: 12 - Nylon-str.Gt and it is not initiated.
I will try to get in touch with Android FluidSynth developers and see if I can get some more info about this.

By the way, the GM standard MSB/LSB/Patch initialization that MIDI Arranger is using works fine with any hardware synth I tested it.

Screenshot from FluidSynth API (https://www.fluidsynth.org/api-1.x/):

FluidSynth-BankInit.jpg

Kevin D'Souza

unread,
Apr 13, 2023, 12:09:56 AM4/13/23
to MIDI Arranger
Understood,
Thanks for Looking into;
For now, I'll just move Channel 9 data to Channel 10 that should do work with the simpler Styles. 
I've noticed other Banks and Programs are working fine. Only the Drumset is becoming a miss; 

Iov Florin Gherman

unread,
Jul 27, 2023, 6:29:23 AM7/27/23
to MIDI Arranger
Kevin,

I found out how instrument selection works in FluidSynth after I read this article: https://lists.nongnu.org/archive/html/fluid-dev/2010-08/msg00046.html
The important part is this one:
The second configuration is called ‘MMA’ mode, named after the MIDI Manufacturers Association, which defined the Bank Select Message. In this mode, the MIDI Bank index uses the LSB portion as a single increment and the MSB portion as increments of 128. This mode is also known as ‘CC0 and CC32’ mode

So, in order to select that JazzDrumSet with B:128, PGM:32 you need to send: MSB:1, LSB:0, PATCH:32. 
MSB:1 is the trick here, it actually means 128 as it is interpreted as increments of 128.

Regards.

Reply all
Reply to author
Forward
0 new messages