[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