-
-
Notifications
You must be signed in to change notification settings - Fork 159
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
FluidSynth: Pans mostly to the left and sounds distorted/chorus and reverb settings have no effect #1525
Comments
There are two issues at play:
So right now, comparisons against real SC-55 hardware are apples-to-known-oranges. What about GZDOOM? This is a native port and they've made a pile of music improvements: https://github.com/coelckers/gzdoom/tree/master/fm_banks An apples-to-apples comparison would be a DOS machine with GM sound card (and loadable or extractable soundfont) versus Staging + FluidSynth. where both the game and soundfont are identical. I understand several of Creative Labs Audigy and XFi soundfonts have been dumped, and those compare well. Chorus and reverb are active - but I believe they're quite subtle. @GranMinigun has noted audible differences, and noted that some sounfonts are affected negatively (Staging uses a simple filename match and will log a warning if it's shutting off chorus and reverb when the SF2 is known to be affected). We've discussed GS as well, amung many other issues (just for background context): https://github.com/dosbox-staging/dosbox-staging/issues?q=is%3Aissue+midi |
Tell me if I'm understanding this part correctly: Because of the work done on GZDOOM to improve its music playback capabilities, even if this incomplete SC-55 soundfont is being used by replacing the one that comes with GZDOOM, it will still play back decently thanks to those core music enhancements? |
I didn't go through the code, but reading those the fm_banks text files indicated they've augmented their music using a lot of "hybrid" techniques - like modifying OPL3 sounds to satisfy general standard instruments.
I'm not sure if there's a way to make GZDOOM behave in some kind of "legacy-only-mode" that strips away all of their improvements that let us get closer to an apple-to-apples comparison. The best would be a DOS machine w/ Trevor402's SF2 loaded in an audio card, and see how that compares (if we're trying to compare SC-55 soundfont behavior in an apples-to-apples way). |
Yeah, currently trying some different soundfonts - still mostly based on the SC-55 since that's the sound I'm after, being what most of the games from that time period were composed on etc. - and running with the default auto for chorus and reverb on those, your implementation is definitely doing considerably better, confirming it's mostly a soundfont issue. EDIT: Something that I did notice though, playing with soundfont here, even when chorus and reverb are set to off, the volume of instruments often go up and down - while the playback itself sounds pretty good. EDIT2: Same thing happens with Patch93's version and on the same spots on song 24 in Tyrian, so my guess is rather that it's the game's fault - it's too much of a coincidence. Could this be related to the overall issues between FluidSynth and Roland based soundfonts, or even the frequencies being all over the place, like specifically mentioned in the issue you referred to? |
That's right; a midi song is essentially digital sheet music with even more information, like pitch bending and volume changes for each instrument as frequently as needed. See the example section: https://www.cs.cmu.edu/~music/cmsip/readings/davids-midi-spec.htm |
Hi. Unfortunately, those projects (https://github.com/Kitrinx/SC55_Soundfont and https://github.com/trevor0402/SC55Soundfont) no longer seem to be in development or in any case there have been no steps forward. All SC-55 soundfonts I've tried have problems (some instruments sound weird, volume unbalanced, etc) even though I haven't tried them with Fluidsynth. Unfortunately there is no emulator for the SC-55 (like MUNT for the MT-32). However, there is Sound Canvas VA, Roland's official VSTi that emulates the SC-8820 (supports the SC-55, SC-88, SC-88Pro, SC-8820 instrument maps) but it is expensive and doesn't emulate perfectly the 'SC-55, but still sounds better than soundfonts. If you search in Google you may also find it (I don't think I can say further here). |
Thanks @Kappa971. In fact, yesterday I did buy Sound Canvas VA and found some videos on how to set it up with SAVIHost, loopMIDI, and MIDIMapper for good measure to make sure that my preferred MIDI device is always used - couldn't be happier. That's it to not derail the conversation, cheers and let's continue to make this project the best it can be. |
Roland SCVA is the most accurate software solution available for now for Roland SC-55. |
Instead of SAVIHost I recommend Falcosoft MIDI Player. |
Those with Sound Canvas VA might wish to return it and get either SC55mk2 or SCC1a if you need to hear like the game composers intended in games that were composed for those hardware units. (Important if you are implementing a soundfont or emulator I guess) (as said above by Kappa the VA doesn't emulate SC55 but a newer unit and voices and effects aren't always right) 2 Alternatives to implementing something like munt.
|
I don't know in America or other parts of the world, but here in Italy they are available on Ebay at exaggerated prices (€ 200-300+). With all due respect to the game composers, I would never spend that money on a 30-year-old device :)
Sound Canvas VA has no problem mapping SC-55 instruments when used with Falcosoft MIDI Player + LoopMIDI. Some instruments just sound slightly different from a real SC-55. The only "effect" not supported by SCVA is the instruments that are not cut when repeated quickly, used for example in Doom E1M1 (but I guess it was more of a limitation of the original SC-55). |
@Kappa971 For what it's worth, the quality overall, tightness and ability to play sounds in quick succession improved dramatically when switching from SAVIHost to FalcoSoft MIDI Player. |
With a bunch of different external midi setups, an apples to apples comparison would be:
Oh: I noticed if one searches for "vsti to sf2", a software tool and guide exists. Presumably to provide wider portability for VSTi owners. |
i have all of those soundfonts i was looking at this issue at hand that differences between ex: gzdoom and dosbox-staging with the same soundfont unfortunately im not an audiophile, i dont even play games or anything with headphones
these will only play midi and show you notes playing on the screen. ive also recorded DOOM using both of these: lastly, dosbox-staging has a list ready for you! |
heres some further batch script i can suggest which makes switching easier and faster in dosbox-staging: MT32.bat
CM32L.bat
FSMIDI.bat (set your path to sf2 file)
FS2MIDI.bat
annnddd some quick midi play (edit your midi file and locations) DOSMID.bat
GSPMID.bat
|
Lots of great info, thanks for the help, @arrowgent! |
here is the GSPLAY.doc
etc and DOSMID.txt
etc just to cover all the bases |
Closing this.
We have many MIDI users, and no one else has reported FluidSynth's built-in playback panned to the left or sounding distorted. @RavenMacDaddy : if you still experience this, please provide recordings captured from DOSBox Staging or via your OS and a canned setup as zip file (demo game or midi player + embedded conf + embedded SF2 or download URL) so the team can compare apples-to-apples on their system and reproduce the issue. |
So, I've noticed this now: there is definitely a difference between how FluidSynth sounds on 0.80.1 and our latest main version. In 0.80.1, the sounds are subtly or sometimes not-so-subtly panned to the left. In general, the sound is imbalanced and slightly "steering" to the left globally. It's more noticeable with some soundfont and game combinations than others. Definitely very noticeable in the level 8 Descent soundtrack. Check my recordings on headphones ( https://archive.org/details/dosbox-staging-v0.81.0-fluidsynth-fixes @kcgen any ideas? I've checked the commit logs of Now, how to present this in our release notes... "FluidSynth is now fixed... somehow, we have no idea! But... hey, rejoice! " 😅 |
Nothing I know of either; always nice getting free fixes from dependencies! Looking back at the wrap syncs commits, 0.80.1 would have been using 2.3.0, and we're now shipping 2.3.3-2. These were bumped in commits:
I remember most of these had at least one audible fix.. but I don't remember any mention of panning issues being fixed. |
Yeah, I can't see anything that could've fixed this in the changelogs still, and I'm not gonna go through all their commits. I'll just mention it in the notes that now FluidSynth is now "better" or something 😄 |
Changed closed signal to completed as this was fixed in a FluidSynth update. |
Fair call. I spent like an hour trying to figure out what fixed it. Surely it could be eventually figured out, but I couldn't bother. If it's indeed a FS update that fixed it as we think, that's slightly troublesome because they did not advertise this explicitly in their changelog. Maybe they're not even aware they fixed some issues, dunno. Meaning regressions can happen the same way, unannounced, because they might have some quality assurance problems there... We'll see with time, I guess 🤞🏻 |
Fixed in FluidSynth 2.3.6: This should be the final fix for the left panning issue. I hope we get this release of FluidSynth for 0.82.0. FluidSynth has got significantly more robust after it was selected as the MIDI backend for Wine. |
vcpkg only has 2.3.5 currently: Let's not screw around with a big dependency upgrade before the release. We'll upgrade after 0.82.0 is out. 99% of people won't notice these minor issues, and the current FS version works well enough. |
I haven't noticed this issue after 0.81.0 so guess we're safe with what we got. This is the final fix for it for builds with single precision floats (FluidSynth default is double precision floats). |
Are you using the latest Dosbox-Staging Version?
Different version than latest?
No response
What Operating System are you using?
Windows 11
If Other OS, please describe
No response
Relevant hardware info
CPU: AMD Ryzen 3600 | MB: MSI B450 Gaming Plus MAX | DAC: RME ADI-2 DAC | Speakers: EVE Audio SC205
Have you checked that no other similar issue already exists?
A clear and concise description of what the bug is.
What follows is used as it makes the mentioned issues very easy to hear and identify/reproduce;
Comparing FluidSynth using the SF2 soundfont found here, based on the Roland SC-55, using it on both DOSBox - both Staging and the DOSBox-X fork for reference testing - and the FluidSynth implementation in GZDOOM, running the same soundfont, there are some crucial noticed differences, or rather, issues only present in DOSBox.
To make a shortlist of what's observed with DOSBox:
Some examples, starting with DOOM being the easiest one since we're comparing to GZDOOM for reference:
Chorus and reverb off in GZDOOM with the aforementioned soundfont, it sounds pretty close to a real SC-55 playing back, or at least, the MIDI effects get turned off as expected and give what's close to the DOOM music sound, e.g. E1M1 - whereas with DOSBox there's still that panning to the left and reverb constantly throughout.
In Tyrian, many tracks sound like instruments are missing completely as not even certain melodies are playing at all in some songs - hey, maybe they actually are missing in the font, but combined with the issues observed I can't be sure that the font itself is to blame.
When testing with DOSBox-X as well for reference, the problems in this report seemed even worse, so not sure what's going on.
In Duke Nukem 3D, the same issues with playing sounds mostly on the left side and reverb always active is easily noticed, compared to for example using the built-in Microsoft GS Wavetable Synth (based on Roland SC) where things play as expected with stereo-imaging based in the center and no unnecessary reverb.
As described in the beginning, this is only to have a great example for troubleshooting - the FluidSynth implementation acts the same way regardless of the soundfont that's being used (basically it's more or less profound depending on which one you're using), the example simply makes it the easiest to identify the issues that are going on.
This is what comes to mind while writing this so far, will edit/update if I think of anything else.
Steps to reproduce the behaviour.
For DOOM:
For Tyrian:
Duke Nukem 3D:
Your configuration
No response
Provide a Log
No response
Code of Conduct & Contributing Guidelines
The text was updated successfully, but these errors were encountered: