Are the timidity and wildmidi system packages dependencies

Need help running G/Q/ZDoom/ECWolf/Zandronum/3DGE/EDuke32/Raze? Did your computer break? Ask here.

Moderator: GZDoom Developers

Forum rules
Contrary to popular belief, we are not all-knowing-all-seeing magical beings!

If you want help you're going to have to provide lots of info. Like what is your hardware, what is your operating system, what version of GZDoom/LZDoom/whatever you're using, what mods you're loading, how you're loading it, what you've already tried for fixing the problem, and anything else that is even remotely relevant to the problem.

We can't magically figure out what it is if you're going to be vague, and if we feel like you're just wasting our time with guessing games we will act like that's what you're really doing and won't help you.
Post Reply
vilhelmgray
Posts: 15
Joined: Thu May 09, 2019 8:19 am
Contact:

Are the timidity and wildmidi system packages dependencies

Post by vilhelmgray »

I am following the ZDoom wiki instructions to compile GZDoom for Linux. The timidity and wildmidi libraries are listed as optional build and runtime dependencies. Similarly, the dependencies installation examples for most of the Linux distros lists these packages in their install list.

However, from the CMake configuration print out, it looks like it only searches for fluidsynth on the system. Does GZDoom ever build dynamically linked to the system's timidity and wildmidi libraries, or does it always build statically linked to the timidity and wildmidi provided locally within the GZDoom source code repository?
Last edited by vilhelmgray on Sat May 11, 2019 8:43 pm, edited 1 time in total.
User avatar
Rachael
Posts: 13530
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: Are the timidity++ and wildmidi system packages dependen

Post by Rachael »

The build instructions are actually a bit outdated. GZDoom uses an internal timidity library - I don't have any idea if Graf implemented support to have it use a system library for it. I would suspect not. It used to actually use timidity externally because with Timidity's licensing status it used to be illegal to include its code inside GZDoom. Even in Windows, you had to provide your own Timidity executable for it to work.

Once Graf got GZDoom into the GPL licensing status, he was able to import Timidity's library completely and use it internally, instead, which boosted its performance considerably, especially with song loading.

I am not sure about wildmidi, though. I have not kept myself appraised to its developments.
vilhelmgray
Posts: 15
Joined: Thu May 09, 2019 8:19 am
Contact:

Re: Are the timidity and wildmidi system packages dependenci

Post by vilhelmgray »

Ah, so in the past Timidity was linked externally; but now that the license allows it, Timidity will always be linked statically since it's provided internally with the GZDoom source code?
User avatar
Rachael
Posts: 13530
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: Are the timidity and wildmidi system packages dependenci

Post by Rachael »

That is correct.
vilhelmgray
Posts: 15
Joined: Thu May 09, 2019 8:19 am
Contact:

Re: Are the timidity and wildmidi system packages dependenci

Post by vilhelmgray »

You're right, it looks like the Timidity++ ZDoom wiki page lists the version this started as GZDoom version 3.3.0.
User avatar
Graf Zahl
Lead GZDoom+Raze Developer
Lead GZDoom+Raze Developer
Posts: 49056
Joined: Sat Jul 19, 2003 10:19 am
Location: Germany

Re: Are the timidity and wildmidi system packages dependenci

Post by Graf Zahl »

Both Timidity++ and WildMidi are heavily modified versions so they cannot be an external dependencies. For WildMidi the MIDI loader was removed to allow driving it by ZDoom's own MIDI player and in case of Timidity++ even more work was needed. The original code was a self-contained executable with a complete GUI that had no means to hook it up to an external player. This was stripped down to only contain the actual MIDI event processing so that, like all the other synths, could be driven by ZDoom's MIDI player.

Please note that the ZDoom building instructions no longer apply to GZDoom, because many important changes were made after ZDoom ceased development!

This still begs the question: Should the build instructions page be kept in such a messy state where it still covers 1.x and 2.x which are more than two years old? I think that page should reflect the current state of things and not be such a mess that tries to cover all eventualities.
User avatar
Rachael
Posts: 13530
Joined: Tue Jan 13, 2004 1:31 pm
Preferred Pronouns: She/Her
Contact:

Re: Are the timidity and wildmidi system packages dependenci

Post by Rachael »

The build instructions these days are pretty simple: Install git+compiler+cmake, Install OpenAL (if non-Windows, otherwise if Windows then grab the .dll's from the distributions), clone+cmake+build. If I am wrong, CMake will tell you what packages you need.

In fact, you could follow the .travis.yml file for hints on how to properly create the build system for any platform.

Hopefully someone more knowledgeable about wiki markdown will be able to update that wiki page...
Post Reply

Return to “Technical Issues”