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 _______________________________________________ fluid-dev mailing list fluid-dev@nongnu.org http://lists.nongnu.org/mailman/listinfo/fluid-dev