fluid-dev
[Top][All Lists]
Advanced

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

Re: MIDI Bank Select proposal (was Re: [fluid-dev] Re: Son of ticket #65


From: Pedro Lopez-Cabanillas
Subject: Re: MIDI Bank Select proposal (was Re: [fluid-dev] Re: Son of ticket #65)
Date: Fri, 13 Aug 2010 12:34:04 +0200
User-agent: KMail/1.9.6 (enterprise 20070904.708012)

On Wednesday, August 11, 2010, Elimar Green wrote:
> Actually I take that back, about it sounding good..  It seems like
> adding a MIDI mode which requires manual assignment of that value,
> without proper SYSEX handling, will likely lead to many MIDI songs not
> working properly 

Please, back your claim with some URLs. If there are really many MIDI songs 
not working properly, you can probably find a few examples on Internet.

> (like if a user is playing multiple MIDI files which 
> are of different modes).  The 1.0.9 logic, should handle most MIDI
> modes, in regards to bank switching.  Personally I think its a better 
> option at this point.  The only thing that logic doesn't do, is
> properly ignore certain messages.  Messages which are unlikely to be
> sent in their respective modes anyways, though I admit I'm not sure
> how many MIDI files might be out there which don't follow that rule
> (for example send LSB MIDI messages though they expect them to be
> ignored).  I suppose you could still add the setting, but have a
> special "auto" or "compatibility" mode which follows the 1.0.9 logic.
> The user could then force a particular mode with that setting.

FluidSynth-1.0.9 doesn't properly handle neither the GS nor the XG bank select 
messages, mainly because it doesn't ignore the CC messages that can't 
understand, processing them in a wrong way that sometimes and only by chance 
sounds acceptable. The new implementation in 1.1.2 at least handles well all 
GS files by default, and can be set to correctly handle the other standards 
as well.

About your doubts WRT the LSB messages: The LSB/CC#32 message is common in 
MIDI files created for the Roland Sound Canvas instruments [1]. This is an 
excerpt from my SC-88's Owner's Manual, Chapter 7. Appendix, page 21.
"The SC-88 recognizes the Bank Select LSB (controller number 32) as a flag for 
switching between the SC-88MAP and the SC-55MAP. With a Bank Select LSB of 
00H, the map selected by the front panel SC-55MAP button will be selected. 
With a LSB of 01H, the SC-55MAP will be selected. With a LSB of 02H, the 
SC-88MAP will be selected. Some other GS devices do not recognize the Bank 
Select LSB (Controller number 32)."

The SC-55 was an older model of the Roland Sound Canvas family. Indeed, *there 
are* songs on the net created for the SC-88/SC-55 that aren't correctly 
handled by FluidSynth-1.0.9, and are better handled by our current 1.1.2 
implementation. And eating my own dogfood, here is one.

Song: "-Funny Funny Little Girl- Galaxy Fraulein Yuna OVA#1 Opening"
http://webspace.webring.com/people/rr/rgm111/funny.mid

Initial MIDI channel assignments.
chan    cc#0    cc#32    PC
1       0       1        64
2       0       1        32
3       0       1        5
4       0       1        48
5       0       1        50
6       8       1        48
7       8       1        30
8       8       1        61
9       0       1        84
10      0       1        8
11      0       1        25
12      0       1        54
13      0       1        52 
14      0       1        100 
15      0       1        115
16      0       1        16

Rendering this file with FluidSynth-1.0.9, using Christian's GeneralUser font.

$ ./fluidsynth -a alsa GeneralUser_GS_FluidSynth_v1.43.sf2 funny.mid
fluidsynth: ALSA driver: Using format s16, rw, interleaved
FluidSynth version 1.0.9
Copyright (C) 2000-2006 Peter Hanappe and others.
Distributed under the LGPL license.
SoundFont(R) is a registered trademark of E-mu Systems, Inc.

Type 'help' for information on commands and 'help help' for help topics.

fluidsynth: warning: Instrument not found on channel 0 [bank=1 prog=64], 
substituted [bank=0 prog=64]
fluidsynth: warning: Instrument not found on channel 2 [bank=1 prog=5], 
substituted [bank=0 prog=5]
fluidsynth: warning: Instrument not found on channel 1 [bank=1 prog=32], 
substituted [bank=0 prog=32]
fluidsynth: warning: Instrument not found on channel 4 [bank=1 prog=50], 
substituted [bank=0 prog=50]
fluidsynth: warning: Instrument not found on channel 5 [bank=1025 prog=48], 
substituted [bank=0 prog=48]
fluidsynth: warning: Instrument not found on channel 6 [bank=1025 prog=30], 
substituted [bank=0 prog=30]
fluidsynth: warning: Instrument not found on channel 7 [bank=1025 prog=61], 
substituted [bank=0 prog=61]
fluidsynth: warning: Instrument not found on channel 8 [bank=1 prog=84], 
substituted [bank=0 prog=84]
fluidsynth: warning: Instrument not found on channel 10 [bank=1 prog=25], 
substituted [bank=0 prog=25]
fluidsynth: warning: Instrument not found on channel 11 [bank=1 prog=54], 
substituted [bank=0 prog=54]
fluidsynth: warning: Instrument not found on channel 13 [bank=1 prog=100], 
substituted [bank=0 prog=100]
fluidsynth: warning: Instrument not found on channel 14 [bank=1 prog=115], 
substituted [bank=0 prog=115]
fluidsynth: warning: Instrument not found on channel 15 [bank=1 prog=16], 
substituted [bank=0 prog=16]
channels
chan 0, Soprano Sax
chan 1, Acoustic Bass
chan 2, FM Electric Piano
chan 3, Mono Strings Fast
chan 4, Synth Strings 1
chan 5, Stereo Strings Fast
chan 6, Distortion Guitar
chan 7, Brass Section
chan 8, Charang
chan 9, Room
chan 10, Steel Guitar
chan 11, Synth Voice
chan 12, Concert Choir Mono
chan 13, Brightness
chan 14, Wood Block
chan 15, Tonewheel Organ
fluidsynth: warning: Instrument not found on channel 14 [bank=1 prog=32], 
substituted [bank=0 prog=32]
fluidsynth: warning: Instrument not found on channel 14 [bank=1 prog=115], 
substituted [bank=0 prog=115]
fluidsynth: warning: Instrument not found on channel 13 [bank=641 prog=124], 
substituted [bank=0 prog=124]
fluidsynth: warning: Instrument not found on channel 14 [bank=1 prog=75], 
substituted [bank=0 prog=75]
fluidsynth: warning: Instrument not found on channel 14 [bank=1 prog=115], 
substituted [bank=0 prog=115]

2. Rendering the same files with FluidSynth-1.1.2

$ ./fluidsynth -a alsa GeneralUser_GS_FluidSynth_v1.43.sf2 funny.mid
FluidSynth version 1.1.2
Copyright (C) 2000-2009 Peter Hanappe and others.
Distributed under the LGPL license.
SoundFont(R) is a registered trademark of E-mu Systems, Inc.

Type 'help' for help topics.

channels
chan 0, Soprano Sax
chan 1, Acoustic Bass
chan 2, FM Electric Piano
chan 3, Stereo Strings Fast
chan 4, Synth Strings 1
chan 5, Orchestra Pad
chan 6, Feedback Guitar
chan 7, Brass Section 2
chan 8, Charang
chan 9, Room
chan 10, Steel Guitar
chan 11, Synth Voice
chan 12, Concert Choir
chan 13, Brightness
chan 14, Wood Block
chan 15, Tonewheel Organ

The "warning: Instrument not found" messages are gone now, and the presets for 
channels 6,7 and 8 (FS#5,6 and 7) are correctly handled.

> Just some thoughts.  I'll leave it up to you guys to decide ultimately
> how it gets implemented.
>
> Regards,
> Elimar

Regards,
Pedro

[1] http://en.wikipedia.org/wiki/Roland_Sound_Canvas



reply via email to

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