Closed ziyamete closed 6 years ago
Does XG use CC32 or CC0 for bank selection? Because documentation for synth.midi-bank-select
says it uses CC32 while CC0 is ignored. However the decision made whether it's a drum channel or melodic channel is implemented for CC0 (Bank MSB): https://github.com/FluidSynth/fluidsynth/blob/cce7dce2da6f7f8312e7885ac9266a80cf96c9e5/src/synth/fluid_chan.c#L255-L268
For XG DrumKits: CC0=127, CC32=0, PgCh=xxx For XG SFXKits: CC0=126, CC32=0, PgCh=xxx For XG Melodic Banks: CC0=0, CC32=BankNo, PgChg=xx
Ok. It seems to me that you were only using CC32 and set it to 127. But CC0 decides on whether the channel is drum or meldoic, which in turn influences the bank fallback. Or if you were using CC0 you have not specified -o synth.midi-bank-select=xg
when starting fluidsynth.
Thus: How did you start fluidsynth? And perhaps provide a simple test midi.
This is Original Yamaha PSR-7300 Demo file, for testing. Techno.S484.MID.zip
starting: (nothing special) fluidsynth -f fluid.ini "G:\SF2\Some.sf2" midifile.mid
fluid.ini: (just reverb, gain and interp. settings) gain 0.5 interp 7 reverb 1 rev_setroomsize 0.8 rev_setdamp 0.3 rev_setwidth 0.5 rev_setlevel 0.5
I'm creating Soundfonts. I'm looking at the behaviors of the different SNYTHs. (Falcosoft Midi Player, Virtual Midi Synth, XMPlay, Fluidsynth, Vienna, BASS etc.) midi files I use to test : Roland original, Yamaha original demo files. In addition, the various files that come with the synths and other soundfonts.
Without having actually tested it: You're missing to specify the midi bank selection. You have to start it like
fluidsynth -f fluid.ini -o synth.midi-bank-select=xg "G:\SF2\Some.sf2" midifile.mid
Otherwise it defaults to GS bank selection. See fluidsynth manpage or http://www.fluidsynth.org/api/index.html#CreatingSynth
This parameter working good. But can't fluidsynth do this automatically (detect inside)? Because "banks (126, 127, 120, 121 and 128)" are special banks.
PS: Maybe, selecting the wrong file when attaching the midi file.; I meant this file. (Sorry) JazzGuitar.S084.MID.zip
But can't fluidsynth do this automatically (detect inside)?
Impossible. Given the 4 different bank selection supported, these are 4 different ways to interpret CC0 and CC32. The semantic of these controllers must be provided by the user.
Because "banks (126, 127, 120, 121 and 128)" are special banks.
They are not so special in MMA mode for instance.
Okay, I got it.
If you have a playlist and you send it to FluidSynth, you have to say "this file xg, this, gm, this gs, this mma" every time.
I know up to two people who can do this: one is me and the other is you.
Thanks for your interest.
If you have a playlist and you send it to FluidSynth, you have to say "this file xg, this, gm, this gs, this mma" every time.
Unfortunately yes. It's not standardized by MIDI, so every file may handle this differently.
Closing as invalid.
ver:1.1.6 and 1.1.7 win7, 32
fluidsynth: warning: Instrument not found on channel 5 [bank=127 prog=0], subs tituted [bank=0 prog=0]
bank 127 for XG drumkits. correct fallback for drumkits is: bank=128, program=x
and yes; any channel can be used as drum channel.