fluid-dev
[Top][All Lists]
Advanced

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

[fluid-dev] Re: fluid-dev Digest, Vol 94, Issue 11


From: jimmy
Subject: [fluid-dev] Re: fluid-dev Digest, Vol 94, Issue 11
Date: Thu, 10 Feb 2011 16:29:41 -0800 (PST)


--- On Thu, 2/10/11, "Pedro Lopez-Cabanillas" <address@hidden> wrote:

> > So bank numbers above 128 usually make no sense, which
> is why MSB is 
> > ignored for XG (and why MMA style is not the
> default...). We're kind of 
> > stuck between sf2's standard and XG's standard, and
> need to figure out 
> > how to mediate between them.
> 
> Agreed. This issue has been already posted and discussed in
> this list, so here are some relevant excerpts and pointers.
> The SoundFont2 PHDR sub-chunk has this header structure:
> 
> struct sfPresetHeader
> {
>         CHAR achPresetName[20];
>         WORD wPreset;
>         WORD wBank;
>         WORD wPresetBagNdx;
>         DWORD dwLibrary;
>         DWORD dwGenre;
>         DWORD dwMorphology;
> };
> 
> Where wBank is a 16bit field, like wPreset. But the
> specification states the 
> range from 0 thru 127 for both the wBank and wPreset.
> Document "sfspec21.pdf", page 27:
> 
> "The WORD wPreset contains the MIDI Preset Number and the
> WORD wBank contains 
> the MIDI Bank Number which apply to this preset. Note that
> the presets are 
> not ordered within the SoundFont compatible bank. Presets
> should have a 
> unique set of wPreset and wBank numbers. However, if two
> presets have 
> identical values of both wPreset and wBank, the first
> occurring preset in the 
> PHDR chunk is the active preset, but any others with the
> same wBank and 
> wPreset values should be maintained so that they can be
> renumbered and used 
> at a later time. The special case of a General MIDI
> percussion bank is
> handled conventionally by a wBank value of 128. If the
> value in either field 
> is not a valid MIDI value of zero through 127, or 128 for
> wBank, the preset 
> cannot be played but should be maintained."
> 
> http://connect.creativelabs.com/developer/SoundFont/Forms/AllItems.aspx
> 
> Regards,
> Pedro
> 


For soundfont bank number, what's wrong with creating some virtual sound bank 
look up scheme beyond 128, somehow, eventually, in XG mode, or Fluidsynth 
enhanced mode?  Remembering MSB is the first step anyhow.

Just because GM say channel 10 is drum doesn't mean it should be the only one. 
Or, that there are 128 banks in GM, doesn't mean we can't have, or use more 
than 128.  Same goes for soundfont specs.  Aim high, don't go for the bare 
minimum.

Try to browse through various Cakewalk .ins instrument defintion files, or 
calculation formulae for Yamaha instrument banks.  They use that to talk to 
those devices bi-directionally (record and/or playback), I think.  They make 
use of the bank change MSB's, not throw them away.  I am not a Cakewalk user, 
only glancing through bits of info.

Rosegarden also use some instrument description file to talk to specific midi 
devices.

With Timidity configuration file, one can use a virtual bank mapping to select 
a specific bank in one soundfont to override another bank in a different 
soundfont.

How about Fluidsynth uses a configuration file to map some chunk of 
128-LSB-bank-set to one of the MSB number?  In other word, using multiple 
GM-soundfonts files, each would have a separate MSB number.  What's wrong with 
that?  Nothing.  If anything, it opens up a whole new world of MSB to us.

Jimmy








reply via email to

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