Making Gzdoom sound like it did in 2.4.0

Discuss anything ZDoom-related that doesn't fall into one of the other categories.
Post Reply
brakenwagen
Posts: 3
Joined: Thu Nov 16, 2017 11:59 am

Making Gzdoom sound like it did in 2.4.0

Post by brakenwagen »

Since updating Gzdoom from 2.4.0 the sound is all off. I don’t know much about all this stuff but 2.4.0 I had sound system as my midi device. Now in the new version 3.2.1 it defaults to FluidSynth and it sound nothing like the old version. After playing around I switched to microsoft gs wavetable synth and that sounds right. The problem is that certain maps won’t play there music with microsoft gs wavetable synth but they did play there music in 2.4.0 with sound system. The maps I’ve noticed this on are A.T.L megawad map02 and map32 and Community Chest 4 megawad map01. There’s probably more but those are the ones I’ve noticed so far.

Going back to 2.4.0 I switched the sound backend to openal and the glitch returned in both microsoft gs wavetable synth and sound system same maps. So it must have something to do with the removal of fmodex. But while fmodex does play all music with sound system and sounds right I noticed that it doesn’t play all the music with microsoft gs wavetable synth. Sound system should just point to the default midi which is microsoft gs wavetable synth under windows right, I’m wondering if there is some compatibility issue here or something i don't know?

Now I know doom is midi based and back in the day would sound different on different sound cards but that doesn’t seem be the case anymore. I’ve played doom across multiple computers with different sound cards and it was always the same. Chocolate Doom sounds the same right now, I tracked down my old copy of the first source port I ever used Doom Legacy (the years have not been kind to it) and that sounds the same, Jdoom sounds the same, I even looked up YouTube videos of people playing the xbox version of doom just to make sure I wasn’t going crazy and guess what it sounds the same that’s not even a PC. Even the demake levels in the new 2016 Doom sound the same come on.

All I want is for doom on gzdoom to sound the way doom has always sounded my whole life thus being a quest that lasted all through the night and into the wee hours of the morning. I learned a whole bunch of stuff I never knew before midi devices, synthesizer, sound formats, timidity++, virtualmidisynth, soundfonts, dls, the windows gm.dls, microsoft gs wavetable synth, fluidsynth, aaarrrgghhh my brain hurts. But at last I think I got it as close as I can to way it sounded before.

So it seems the main issue is I want something akin to microsoft gs wavetable synth which is I guess the default midi sound you get with windows. So after learning what soundfonts are I just need to get one that was a copy of microsoft gs wavetable synth. I figured I could to just extract one from windows itself this led me the file “C:\Windows\System32\drivers\gm.dls”. Alas I could not get the thing to be read by gzdoom and all my efforts to convert the thing to sf2 failed.

So I googled “microsoft gs wavetable synth soundfont” and that led me to this YouTube video.
https://www.youtube.com/watch?v=VgkoLQMzuhw
In the description was the soundfont I was looking for. After trying both timidity++ and virtualmidisynth I came to the conclusion that fluidsynth is the most accurate. To make fluidsynth read the file go to advance settings in the sounds maneu, then you have to tell fluidsynth the name of the soundfont file under the setting Patch Set. Make sure the sf2 file is in the same directory as gzdoom and that you type the name exactly as it is including the file extension.

It not perfect but its close, but I wonder if I could get it more accurate if I could just run or convert that gm.dls file which I think is what windows uses for midi. Timidity++ is supposed to read dls but that didn’t work. I read that the software fmj soft awave studio could do the conversion but you have to buy the thing. Maybe some midi audiophile out there reads this and can help me out with a conversion or a batter imitation or something. Of course there is still that glitch when running microsoft gs wavetable synth instead of fluidsynth again fmodex didn’t have this problem under sound system but did under microsoft gs wavetable synth.

In my research I’ve read that windows default midi is bad and that might be the reason behind this change to default to fluidsynth. But you got realize that while many old timers grew up with the various dos midi sounds for many of the newer generation we grew up listening to windows default midi out. By choosing to default to something that sound nothing like the other windows source ports or even the console versions I bet its confusing a lot of casual players. I think it would be a benefit for the team to sit down and try to solve this problem fixe the glitch or find some way emulate microsoft gs wavetable synth or perhaps include that soundfont file I found (don’t know if there’s copyright issue with that though) or maybe you could make a copy form scratch. If nothing else I hope that this thread will help out others who are having the same problem and save them a lot of the headache I had.
User avatar
Rachael
Posts: 13557
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: Making Gzdoom sound like it did in 2.4.0

Post by Rachael »

Unfortunately Microsoft GS Wavetable Synth is proprietary and not GPL. If you want to see any improvements to that, you'll have to either fix the code that invokes it, or you'll have to ask Microsoft to GPL-ize it (now that they've deprecated it, anyway).

There is nothing we can do on our side to fix this. What happened was it was working through a sound back-end that we cannot use in a GPL distribution - FMOD - and like a good commercial sound library, it took care of everything for us. We may never know exactly how it worked. And even if we could access their source code, we're not allowed to use it in GZDoom because GZDoom is GPL and that would be illegal for us.

So it will take a lot of experimentation and fixing to solve this issue. If you have any ideas, you're welcome to download Git and Visual Studio and try to fix it yourself.

Basically what it comes down to is: Because everyone and their grandmother is out for money, the legalities prevent us from going the direction we want to go with this. And unfortunately, GPL is more important to us than Microsoft GS Wavetable Synth compatibility. GPL allows us to much more freely share code to and from Eternity and 3DGE and PrBoom+. Without that move, GZDoom would be caught in the licensing debacle that has stifled its development for over a decade.
User avatar
Chris
Posts: 2942
Joined: Thu Jul 17, 2003 12:07 am
Graphics Processor: ATI/AMD with Vulkan/Metal Support

Re: Making Gzdoom sound like it did in 2.4.0

Post by Chris »

brakenwagen wrote:In my research I’ve read that windows default midi is bad and that might be the reason behind this change to default to fluidsynth.
The main reason was more due to the Windows MIDI synth being buggy. There were problems with volume being reset and IIRC it affecting GZDoom's volume at the system level. It's nigh-impossible for GZDoom to be able to control the device they way it needs to. On top of that, the Windows MIDI synth is not particularly extendable. Almost no one supports DLS soundfonts besides Windows and FMOD, and there's almost no DLS soundfonts freely available. It's a dead-end that doesn't really work as necessary, which is why it's not available.
But you got realize that while many old timers grew up with the various dos midi sounds for many of the newer generation we grew up listening to windows default midi out.
The OPL synths most closely match the old DOS MIDI sound that the majority of old timers would've been exposed to. Beyond that, there were also GUS and Roland MIDI devices that some lucky SOBs had. The Windows MIDI synth would've been for Windows apps, which the original Doom wasn't.
Nevander
Posts: 2254
Joined: Mon Jan 06, 2014 11:32 pm

Re: Making Gzdoom sound like it did in 2.4.0

Post by Nevander »

Question: Is there a non-messy way for a user to re-add support for FMOD for their own personal GZDoom executable?
User avatar
Rachael
Posts: 13557
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: Making Gzdoom sound like it did in 2.4.0

Post by Rachael »

If you REALLY have to you could write a library that replaces FluidSynth or Timidity++ that would invoke FMOD.
User avatar
leileilol
Posts: 4449
Joined: Sun May 30, 2004 10:16 am
Preferred Pronouns: She/Her
Location: GNU/Hell

Re: Making Gzdoom sound like it did in 2.4.0

Post by leileilol »

Chris wrote:
brakenwagen wrote:The Windows MIDI synth would've been for Windows apps, which the original Doom wasn't.
On top of that, the GS Synthesizer was introduced in Win98 and it wasn't always available for every sound card (particularily ones that do provide native fm or wavetable)

the only "nostalgia!!! old school" majority with that particular synthesizer would have to come from those who were introduced into the "Doom Collector's Edition" camp at the earliest (2002)
brakenwagen
Posts: 3
Joined: Thu Nov 16, 2017 11:59 am

Re: Making Gzdoom sound like it did in 2.4.0

Post by brakenwagen »

leileilol wrote: the only "nostalgia!!! old school" majority with that particular synthesizer would have to come from those who were introduced into the "Doom Collector's Edition" camp at the earliest (2002)
Lol that’s me still got the box you mentioning it got all nostalgic for it so I fished the thing out just to see it again ah the memories.

Image
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49067
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: Making Gzdoom sound like it did in 2.4.0

Post by Graf Zahl »

Rachael wrote: There is nothing we can do on our side to fix this. What happened was it was working through a sound back-end that we cannot use in a GPL distribution - FMOD - and like a good commercial sound library, it took care of everything for us. We may never know exactly how it worked. And even if we could access their source code, we're not allowed to use it in GZDoom because GZDoom is GPL and that would be illegal for us.
I think it says a lot that FMOD was the only third party sound library that supported DLS. What's really odd is that it ONLY supported DLS and not SF2.
In any case, there's basically only ONE DLS sound font out there (the one that comes with Windows) and outside of FMOD and the broken GS Wavetable synth absolutely nothing that can play it.

And at some point you have to do a cost/benefit analysis. And for very obvious reasons this came out negative. It saddled us with a sound library that not only was a license roadblock but just as importantly required constant adjustment to internal changes - at the time of removal we were already several versions behind and no longer willing to keep up with this.

Regarding native MIDI on Windows: as things are, the entire Windows MIDI interface is just one huge ultra-low-level clusterfuck that puts all the responsibility into the app's domain. The entire MMAPI has been virtually unchanged for over 25 years and clearly shows all over the place how obsolete it is. The only reason it is still supported is for the odd person out to use a hardware MIDI synth with it. If that option didn't exist, the code would have been removed entirely for its shittiness factor, as the software synth has been irreparably broken since Windows Vista.
brakenwagen
Posts: 3
Joined: Thu Nov 16, 2017 11:59 am

Re: Making Gzdoom sound like it did in 2.4.0

Post by brakenwagen »

Just in case it interests anyone I’ve been doing more research and it seems that Microsoft GS Wavetable is based off of something called Roland SC-55 or SC-55 for short. Looks like it was a box you bought and attached to your PC to act as its midi device. Based on recordings I watched on YouTube of real SC-55s it seems that indeed Microsoft GS Wavetable and the SC-55 are the same. But sadly any soundfonts I’ve been able to find are not as accurate as the one I posted a link to at the top of this thread still an interesting bit of info.
User avatar
Viscra Maelstrom
Posts: 6200
Joined: Thu Dec 04, 2008 1:14 am
Location: plergleland

Re: Making Gzdoom sound like it did in 2.4.0

Post by Viscra Maelstrom »

the Microsoft GS Wavetable is essentially a watered down version of the SC-55. the Roland SC-55 is a MIDI Sound Module, a synth that you plug into a computer or music keyboard to compose music with. you could also plug it in to playback the music from various games of the mid-late 90s, since a lot of them used MIDI music back then. you can even use it with modern computers if you get a MIDI-to-USB cable. however, the SC-55 is a vintage sound module, and has to be bought used from ebay and the like nowadays, but the sound it has is quite nice.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3141
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain
Contact:

Re: Making Gzdoom sound like it did in 2.4.0

Post by drfrag »

The microsoft sw synth is a crappy low quality cut down version of the roland sound canvas, the default font included with gzdoom now is a higher quality sound canvas emulation, it's a soundfont available from vogons but i'm not sure if it's still there. Can be used with old zdoom and gzdoom versions as well of course.
https://www.vogons.org/viewtopic.php?f=9&t=45600.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49067
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: Making Gzdoom sound like it did in 2.4.0

Post by Graf Zahl »

The main reason it sounds different is FluidSynth, i.e. an entirely different player. Even using the same sound font, Timidity++ will sound very different as well and not compare to either Windows or FluidSynth.
User avatar
drfrag
Vintage GZDoom Developer
Posts: 3141
Joined: Fri Apr 23, 2004 3:51 am
Location: Spain
Contact:

Re: Making Gzdoom sound like it did in 2.4.0

Post by drfrag »

To me it sounds good after disabling reverb for fluidsynth but he might want to try coolsoft virtualmidisynth.
Post Reply

Return to “General”