[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [fluid-dev] Multiple Synthesizers

From: Garth Hjelte
Subject: Re: [fluid-dev] Multiple Synthesizers
Date: Mon, 29 Sep 2014 13:14:38 -0500

At 11:43 AM 9/29/2014, you wrote:

>Hmm, the bank offset is defined as an 'int' - so there is plenty of
>room for "full" SoundFonts even on a 32bit architecture. Those banks
>aren't selectable with MIDI but as long as your app can select them
>via fluidsynth's API there shouldn't be any problem.

My assumption was that since Bank numbers only go up to 128 in the MIDI spec 
and (presumably) the SoundFont spec, that was the natural limit for FluidSynth. 
The SF spec has Preset (interesting how the words Program and preset seem to be 
abused, it should only be Preset) numbers and Bank numbers as 16-bit unsigned 
integers, but it's specified that these coordinate with the MIDI spec.

"The WORD wPreset contains the MIDI Preset Number and the WORD wBank contains 
the MIDI Bank Number which apply to this preset."

But I certainly don't mind if Fluidsynth sort of breaks-the-law here and 
considers BankNum's up to 65355. In other words, if I've loaded 70 single-bank 
SoundFonts, and then load a SoundFont that uses 128 Banks, those will be 
indexed from 71 to 197; so that a call to fluid_synth_bankselect() with the 
BankNum = 150 will select the 150th loaded Bank, correct?

But is that truly the case? The API specifically says that BankNum under 
fluid_synth_bankselect() is the MIDI Bank Number. However, I understand that 
even the MIDI spec allows for 16384 bank numbers, but I haven't found any 
explicit information that says the limit is 127 (0-127, per 7-bit numbers). 
Most specs cave under the fact that pretty much no sound module supports for 
than 128 Banks. But there's no reason why something can, I guess.

Note: Bank Numbers can be selected via MIDI, just not with the explicit Program 
CHange command; it's done via CC 0=MSB and 32=LSB.

So, blah blah blah - does FluidSynth support Bank numbers greater than 127, via 
the sfload() command, set_bank_offset(), and bank_select() (and the other 
select commands)? I hope so, making multiple synths doesn't seem very fun =) 

Garth Hjelte
Sampler User

reply via email to

[Prev in Thread] Current Thread [Next in Thread]