[Top][All Lists]

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

Re: [fluid-dev] invalid instrument/drum selection problem

From: jimmy
Subject: Re: [fluid-dev] invalid instrument/drum selection problem
Date: Mon, 7 Jan 2008 12:03:34 -0800 (PST)

Hi Josh,

Sorry, I missed the part you asked about specific MIDI
files that causes problem.  The last file on this list
is one that will cause trouble.


Fluidsynth will play all the other files fine.  On the
last file, it reset the drumset to be "Grand Piano". 
After that, if I try to go back and play the previous
files on this list, I hear "Grand Piano" for drums,
probably because the drums are never set/reset by
those files, except for the bad one that spoils it.

No matter what the GS specs.says.  The drumchannel
should never be set to "Gran Piano" if there is a
valid drumset available - don't you think?  Anyway, I
think the DRUM_INST_MASK constant in src/fluid_synth.h
should really be 128.  In the released code, it tries
to use DRUM_INST_MASK as an offset for the drum
channel selection, but that constant is erroneously
set to 

   #define DRUM_INST_MASK         ((unsigned

Some of the channel 9 progarm change uses channel 128
or higher, some uses an offset from 128.


--- Josh Green <address@hidden> wrote:

> Hello Jimmy,
> I did a little research into this issue and found
> that it is a bit more
> involved than I had initially thought.  I think it
> would help to start
> with looking at some example problem MIDI files. 
> Can you point out
> specific ones which you are having issues with?
> Reading up on the subject of MIDI bank/program
> switching I came up with
> the following information:
> There are Sysex messages for switching into GM or GS
> mode.  Looking at
> some of the MIDI files on the web page URL you
> posted, I found one that
> had a GS enable message.  I'm curious how many MIDI
> files actually have
> these.
> When in GM mode, bank change messages should be
> ignored altogether.
> Different banks specify different "flavors" of
> similar sounds.  A sound
> module should substitute an instrument with the same
> program number, if
> it does not have one in the requested bank.
> I'm not sure yet the best way to handle this in
> FluidSynth.  I think a
> good start would be to listen for the GM and GS
> sysex init messages
> which would modify the behavior accordingly.  Also a
> command line switch
> for selecting among these different standards
> manually.
> GM enable
> ---------
> Initialize all channels except #10 to Program 1
> (Grand Piano).
> Set channel #10 to bank 128:0
> Ignore bank change messages.
> GS enable
> ---------
> Setup channels like for GM
> Use bank 0 if an invalid bank is selected.
> Perhaps substituting bank 0 if an invalid
> bank/program is selected
> should be the default behavior, but that could cause
> unexpected behavior
> if someone isn't using a GM/GS bank.
> Any thoughts?  Best regards,
>       Josh

Looking for last minute shopping deals?  
Find them fast with Yahoo! Search.  

reply via email to

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