[Top][All Lists]

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

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

From: Josh Green
Subject: Re: [fluid-dev] invalid instrument/drum selection
Date: Wed, 28 Jan 2009 10:18:54 -0800

Hi Jimmy,

Just keeping the already selected instrument when an invalid selection
is received seems strange to me.  Do you think that would create the
desired effect in most MIDI files?  It is a case of the MIDI file
expecting an instrument to be present, which is not, right?  I'm not
convinced that just keeping the previous instrument selection is any
better than trying to be a little smarter about it, depending on the
mode (GM, GS, XG, etc).  If a SoundFont was loaded, which supported all
the instruments of the playing MIDI file, then there would be no issue.

Best regards,

On Wed, 2009-01-28 at 06:08 -0800, jimmy wrote:
> Hi Josh,
> If bank 0 has a full GM soundfont, then what you said should work.
> In an ideal situation, since FS allows loading multiple soundfonts in any 
> order, I think a search for all soundfonts and all soundbanks of each 
> soundfont for the first available prognum for this substitution scenario.  
> However, I do know this could potentially slows FS down, I think this mapping 
> of 128 "fall-back" instruments could be done once, after all soundfonts have 
> been loaded, and cached for performance reasons.  Of course, if one of these 
> 128 fall-back instruments doesn't exist, then keep the currently loaded 
> instrument on that channel.  My suggested "if-statement" only keeps the 
> currently loaded instrument.
> Whatever you did last year did solve the drum portion already, for me at 
> least.  Somehow that also did seem to take care of invalid program change for 
> those 6 or so midi test files of the time.
> I only notice the problem with this one midi file because several of the 
> instruments did not sound, and one instrument is panned off-center so it 
> sounded odd, and I took a closer look.
> Best regards,
> Jimmy

reply via email to

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