-
Notifications
You must be signed in to change notification settings - Fork 198
FluidSynth/Lite: Stuff to fix #2300
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
Comments
Additional system soundfont search paths:
Arch (soundfont-fluid), Fedora/CentOS/RHEL (fluid-soundfont-gm):
Debian/Ubuntu, openSUSE/SLED/SLES (fluid-soundfont-gm):
|
I just tried this by playing hh3 with a debug build in Windows 10 using fluidlite. I used I played a bit of the intro, then went to "end game" from the menu. Now Player is hung with a black screen upon returning to the title. The intro is playing a midi, the title screen mp3.
Looks like some kind of deadlock in the audio subsystem. Unfortunately this isn't reproducable :( |
Another issue, When I play my midis in foobar2000, using BASSMIDI and scc1t2.sf2 they sound fine. When I play with Player using fluidlite and the same soundfont, I hear a faint crackling sound, like you would from an vinyl record player. |
This midi clearly shows the percussion issue in fluidlite: https://github.com/fmatthew5876/hh3-rm2k/blob/master/Music/HH3%20Castle%20of%20Life.mid The drums are replaced by some other low sounding instrument. It also displays a high amount of the crackle effect described previously. |
Same here with stock FluidSynth 2.1.1 in Player (fails to build with 1.11.1 because uses 2.x API). It was happening already with the previous interpolation mode (7). @elsemieni's uploaded rendered tests were also affected. Other stuff I've found:
By the way, there's a synth.midi-bank-select option to select how bank select commands affect percussion, but not sure if allows to workaround the fluidlite bug. A note on a possible optimization for some low memory ports (but with decent I/O maybe), synth.dynamic-sample-loading might help. |
|
When I compare it with fluidsynth or fluidsynth-sans-glib (yeah this one works) then the samples generated by FluidLite sound really bland. With fluidsynth(-sans-glib) I feel the intensity and the bass. So for platforms that have
Except if somebody wants to provide a patchset for the patchset that removes |
BUG: This code https://github.com/EasyRPG/Player/blob/master/src/audio_sdl_mixer.cpp#L430-L436 Is now handled by |
When deleting these lines:
|
Audio recording of both: |
I feel both sound fine now without the noise or degraded quality 👍. Just two things:
|
Is the "percussion" the drums? Guess I have to delete the channel to figure this out ;). This is what I meant with "it sounds dull/worse". The "power" and the bass are missing |
I found the bug in FluidLite. The Drums sound now beautiful. Basicly no difference to FluidSynth imo 👍 Wait for my patch ;) |
The jumpy uncoordinated notes issue has been fixed at #2478. |
My fix also fixed FmMidi btw, because they all share the same code. :) |
Not verified, but threading seems to be an option in CMakeLists.txt for this one. |
solidsynth by @sykhro, used in the vgmtrans project is a freshly maintained patch for upstream FluidSynth without glib, includes MSVC support. Latest update is 12h since writing this, rebased to FluidSynth 2.1.8 Though the most recent commit seems to have issues with the generated patch: https://github.com/vgmtrans/solidsynth FluidSynth 2.2.0 is coming soon and introducing C++98 compiler requirement, so it is expected the patch going at least a couple of lines smaller. |
Oh whoops, failed to generate the patch and I didn't even notice, will fix soon. |
Thanks sykhro, no rush with this. And FluidSynth 2.2.0 has been released as expected. |
No worries; actually, thanks for the info, I'll try to rebase on top of 2.2.0 but I don't expect it to be very smooth |
For us the solidsynth patchset is likely overkill. |
I created now my own patch for fluidsynth. It uses a glib.h as a shim, this makes it usable with much less patching. https://github.com/FluidSynth/fluidsynth/compare/master...Ghabry:no-glib?expand=1 Though the patch is far worse than from solidsynth. It has zero thread synchronization (we do not need this) and non-VIO based APIs are likely broken because I did not reimplement But it plays MIDIs for me 👍 |
copied the alloca patch from solidsynth over to fix the Windows build (MSVC does not support variable length arrays, they are a GNU extension): Fluidsynth sounds much better than Fluidlite. Exactly like using the Windows synth directly. So I would say Fluidlite is good enough for the non-major platforms (smaller) but for the major platforms I vote to use fluidsynth with my patch, works great :) |
Here precompiled exe for comparison:
|
And here for comparison some audio. In the later half of the track you will notice a difference of Fluidlite vs. the others. |
Cool, as expected it sounds better with FluidSynth because Windows native MIDI seems to use 22 KHz internally 👍. Because MIDI synth is performance hungry, all non-desktop ports could use 22 KHz for synth (fluidsynth and fmmidi), even if they get doubled later (resampled) for mixing, because this operation is cheaper than rendering. |
Search order is now (in Game directory and Root fs): 1. Command line (--soundfont) 2. Environment (SDL_SOUNDFONTS) 3. easyrpg.soundfont 4. More hardcoded filenames Related EasyRPG#2300
All major issues here are resolved. Until we decide to bundle something with Jenkins (which is not a Player bug) it will be "Bring your own Soundfont" :) |
Audio issues:
Better integration:
Other:
The text was updated successfully, but these errors were encountered: