New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Some soundfonts loaded incorrectly #171
Comments
|
May I ask where these MIDIs where taken from? I had a first look at TROPIC88.mid: it uses Roland SysEx events to control the master volume, which apparently are currently not supported by fluidsynth. One would have to extend SysEx parsing at fluid_synth.c:1270 by doing something like Though I'm not sure these sysex events are standardized, I would welcome a patch for this.
If it uses channel 2 and 3 for drum, the midi should just select the correct bank of the soundfont and it should work. How this is done (i.e. via CC0 XOR CC32 XOR (CC0 AND CC32)) depends on fluidsynths I havent yet tested your soundfont issue, will do this later. |
|
I took TROPIC88 from here. 'Something Tropical', for SC-88. Anomaria composed this song 20 years ago, distributed in NiftyServe (Japanese telnet BBS) Waltz for debby, this MIDI searched many internet sites, I found again from here today. And I want compile current development version with MinGW, |
This is an error log when execute FluidSynth in Windows(MinGW) with soundfont 'Mini Groove88ish v3'. |
|
Ok, I had a listen. Regarding distorted audio with TROPIC88 and Mini Groove88ish v3: the audio seems to clip, you may try starting fluidsynth with a lower gain:
The Harmonica sound of masquerade55 is buggy indeed. I suppose this is due to the instrument being incorrectly tuned. Do you also experience this issue with BASSMIDI? Also not sure why there are so many instrument generators discarded with the Mini Groove88ish v3.sf2. Might be due to some corruption of the file. Though I cant hear any problems. Perhabs I'll debug this on the weekend. |
|
Two soundfonts works correctly in BASSMIDI and this engine based driver, Coolsoft VirtualMIDISynth too. Current version of FluidSynth with 'Mini Groove88ish v3' showing many errors with this MIDI file. |
|
Too many voices are started by this MIDI. You'll have to increase polyphony count with |
|
No, other soundfont can play with no errors without this argument (default option). |
|
I was speaking about |
|
Hmm... I fixed a soundfont 'Mini Grooveish88 v3', load with SynthFont and save this soundfont as a new file. but, fixed 'masquerade55' has buggy harmonica sound with FluidSynth yet. I upload these fixed soundfonts to dropfile.to because these are bigger than 10MB, |
|
Given the fact that these fixed soundfonts now have the first letter of every instrument/sample/preset name missing, I assume that also SynthFont had trouble reading them apparently due to file corruption. Hard to tell why harmonica plays at incorrect pitch. |
|
The reason because so many instrument generators get discarded with 'Mini Grooveish88 v3' is because fluidsynth expects the KeyRange to be first in a generator, followed by VelRange, etc. This not the case for the given soundfont, thus fluidsynth discards them. Apparently BASSMIDI and VirtualMIDISynth are more permissive on this, which however is against the soundfont spec:
|
|
Ok, I can confirm that at least the second inst. generator of Harmonica plays two semitones higher than it should. However I couldnt figure out the problem so far. The soundfont seems to be valid, fluidsynth reads it correctly and internally correctly calculates pitches. I also exported the samples and created a new soundfont from scratch but the problem persists. This really makes me believe that the samples are simply incorrectly tuned which however is not possible since it works correctly with polyphone and apparently also with the other synths you mentioned... I'm running out of ideas. |
|
minimal soundfont + test midi for further reference: masquerade55v006-fix-synthfont1_small.sf2.zip |
|
Thanks for fixing masquerade55v006's harmonica pitch but I heard no change with FluidSynth 1.1.6 and latest development version. MiniGrooveish's Instrument name corruption was SynthFont's problem, |
|
Closing issue was click missed. sorry... |
|
I did not fix the pitch. Carefully read my comment pls:
|
|
My guess is that it has to do with the loop points. The samples are very short (some are less than 50 sample points), so any small irregularities in loop point calculations / reading will have quite a dramatic effect on the perceived pitch. Maybe this is related to #149? |
|
It was indeed a loop problem. fixup_sample changed the start offset of some of the loops. The above pull request seems to fix it. Haven't tested it extensively though... |
|
Amazing spot! Thanks a lot! |
|
Oh! This problem is solved miraculously!!! masquerade55 was made by Polyphone, this was not soundfont problem. 'Mini Groove88ish v3' was fixed(simply load and save, without modify) with Polyphone for my using, |
|
And remaining issue, how to solve multi drum bank channel and control master volume (TROPIC88.MID use this for fading) |
|
@basic2004 As mentioned before, the TROPIC88.MID controls the master volume via roland sysex events, which are not implemented in fluidsynth. I dont have the time or knowledge to implement them, I will however accept a pull request. Regarding drum channel: You'll have to modify TROPIC88.MID by inserting a Get fluidsynth from recent git and start it with the
option and it should work fine. |
|
I did with latest source, and patched #184 but this wasn't work fine. |
|
I'm not aware of any way that fluidsynth automatically detects this MIDI to be mma. I assume that your adapted MIDI doesnt work. See this one for how I meant it. |
|
I tested again, this result shows channel 9 substituted to bank 128 (drum channel). Really this needs Roland's SysEx, for changing bank correctly and control master volume. |
It's a compromise now that mma mode allows bank changes where it was previously hardcoded to bank 128. Internally channel 9 is still treated as a drum channel. If the requested preset and bank combination is not found it falls back to bank 128 because of being a drum channel. Just make sure the requested preset and bank exists in the soundfont, either by adjusting the soundfont or modifying your MIDI to request something from bank 0 for instance. However, seeing that this seems to cause confusions, I'm thinking about getting back to hardcoded drumbank, since you could also let
Dont mix things up. Roland's SysEx is only needed for controlling master volume. They may do some configuration with the drumchannels, but they are not required for fluidsynth. |
Sorry but I mix things up. Roland GS mapping drum channels by SysEx. I found how to change drum/melodic channel. 1st to 6th characters are, F0 41 10 42 12 40 is almost use to sending GS SysEx. I found changing master volume and other SysEx from http://www.bandtrax.com.au/sysex.htm 7th and 8th character 0004 to control master volume in tropic88.mid, these SysEx contained. |
|
Ok, so it seems what Roland does here is to configure the type of these channels, pretty similar to what can be achieved with
|
|
I'll wait until FluidSynth supports Roland's Sysex later. |

I used FluidSynth since 1.1.6, this loads these fonts incorrectly. and current develpment version too.
Soundfonts are here. 'Mini Groove88ish v3', 'masquerade55'
https://www.vogons.org/viewtopic.php?f=9&t=46427
I saw this error,
'No preset found' with almost instruments of 'Mini Groove88ish v3' and doesn't play MIDI (or distorted),
buggy pitch with some instruments (Harmonica) of 'masquerade55'.
BA*SMIDI loaded and played these correctly. (but this can use only Windows, not multi platform)
I tested two MIDI songs, W4DEBBY and TROPIC88.
W4DEBBY - Easy to hearing Harmonica sound, buggy with 'masquerade55'.
TROPIC88 - don't fade out when end of song. This MIDI fading down master volume. and wrong drum channel. this using drum with channel 2 and 3, 10 channel using melodic.
I attach these. miditest.zip
The text was updated successfully, but these errors were encountered: