Now it is working. As far as I understood the embedded SoundFont has always the precedence on whatever I set with BASS_MIDI_StreamSetFonts().
I have found a couple of issues with BASS_MIDI_StreamGetFonts() with those files:
If I call it with fonts = null and count = 0 to get the number of fonts, I get a JNI error
BASS_MIDI_StreamGetFonts() called with: handle = [-2147483635], fonts = [null], count = [0]
java_vm_ext.cc:591] JNI DETECTED ERROR IN APPLICATION: jarray was NULL
java_vm_ext.cc:591] in call to SetObjectArrayElement
java_vm_ext.cc:591] from int com.un4seen.bass.BASSMIDI.BASS_MIDI_StreamGetFonts(int, com.un4seen.bass.BASSMIDI$BASS_MIDI_FONT[], int)
If I call it with an array of 0 elements and count = 0, I get an ArrayIndexOutOfBoundsException
BASS_MIDI_StreamGetFonts() called with: handle = [-2147483550], fonts = [[Lcom.un4seen.bass.BASSMIDI$BASS_MIDI_FONT;@a9913d1], count = [0]
java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at com.un4seen.bass.BASSMIDI.BASS_MIDI_StreamGetFonts(Native Method)
I can live with those, as now I always call it with count = 1 and a corresponding array, but probably they should be fixed in a next release.
Then, only with the BadApple file, I get corrupted name, comment and copyright strings from the embedded SoundFont:
name: SpessaSynth GMGS MergeICRD
comment ending: Includes FX, drum kits and some aditional presets.ISFT
copyright: noneICMT
Thank you again.