Background music not playing: figured out the issue

For me the issue with background music not playing wasn’t fixed by installing the provided vcredist 2013 runtime.

So I was trying to figure which runtime files where actually used and it appears that libogg.dll and libvorbis.dll need MSVCR100.dll.

I’ve compiled ogg and vorbis dlls from source using mingw32 compilers, as they link against msvcrt.dll by default. That fixed it. Or just add the missing runtime files to the bin directory. I think they where from the 2010 vcredist.

By the way there is also libsasl.dll which needs MSVCR80.dll (vcredist 2005 I think).

This really only occurred with my while I was playing On A Rail Uncut, every time I’d load my save, the music wouldn’t play.

Are the music files custom music that you’re trying to play from a map of your own…
Or the offical music files?

Because for some sounds to work in the workshop, you have to input
snd_restart
in the console with a point_clientcommand at the startup of the map.

You can see the console whining about not being able to read some .ogg files, but with the snd_restart this fixes it.
However it will stop all playing sounds, so you would have manually play looping sounds (ambients, vents, machines, etc) after inputting the command.

Was that a reply to me? I’m actually talking about official maps. For example, if you start the chapter Unforseen Consequences, right after leaving the test chamber ambient music is supposed to start. But the console shows errors if MSVCR100.dll is missing. When I use the libogg and libvorbis that I’ve compiled from source (linked against MSVCRT.dll) everything works.

When I once reported the same issue (long time ago) I was told to install the vcredist 2013 that’s bundled with Black Mesa. Dunno why that fixed it at that time, but the last time it didn’t, so I tracked down all the dependencies and figured out that MSVCR100.dll from the 2010 (?) redist was required. I was doing this in “Bash on Ubuntu on Windows” using the command objdump -x “some-dll.dll” 2>/dev/null | sed -nr ‘s|.DLL Name: (.).*|\1|p’

To sum it up: only the client and server DLLs require the bundled 2013 redist. bin/libogg.dll and bin/libvorbis.dll require MSVCR100.dll (2010 redist?), bin/libsasl.dll needs MSVCR80.dll (vcredist 2005 or 2008). Other binaries are linked against the default msvcrt.dll. I don’t even know what libsasl.dll is used for.

It was meant towards BlackMesaScience as he was playing On A Rail Uncut.
But I guess your solution may be fix for it too.

I’ve attached the MinGW builds of libogg.dll and libvorbis.dll if anyone is interested. I don’t remember what source versions I built them from, probably the latest stable releases.
libogg_libvorbis_MinGW.zip (102 KB)

Founded in 2004, Leakfree.org became one of the first online communities dedicated to Valve’s Source engine development. It is more famously known for the formation of Black Mesa: Source under the 'Leakfree Modification Team' handle in September 2004.