As if that were the big issue...Chris wrote:It should be possible to have Timidity++ read the MIDI file through an stdin pipe, so it doesn't have to be physically written to disk.
I already checked that. Timidity++ not just reads the file but also does some processing on the event data before it gets played. So preconversion is the only solution.I'm curious if it's possible to have the pipe handle MIDI commands generated over time, or if it's required to read it in completely before starting (i.e. if you could start by just writing a header for a single-track smf to the pipe, then write MIDI commands to it over time indefinitely).
Yes, it can read additional config files - but AFAIK they are not used from a blank state but on top of the internal one. Like I said: Utterly insane.The default configuration may be off-limits, but it's entirely possible to specify a different configuration with the -c switch. That's actually what my PR does, add a cvar specifying the cfg file and passing it via the -c switch (although the string parser GZDoom uses on Linux is currently not good so it doesn't split the options properly; however it could probably do away with the parser and simply construct the individual argument strings directly).
It can hide the gritty details, sure, but it cannot eliminate them. The main problem with Timidity is that they way it works is rather shitty and prone to problems.I do agree that having a clean library API like FluidSynth is nicer from a developer point of view, but from the user/modder's point of view they should be able to work similarly. One needs a DLL and the other needs an executable, but the engine can handle all the gritty details for you.
What I'd really like to do one day is integrate the player into ZDoom but for that to work the first thing to do is to make it reinitializable. It's really a huge mess of old C code, littered with global variables that keep their content until it exits, and to top it off, overstuffed with #defines for endless conditions. I once got it to compile on Visual Studio but the output was broken because apparently some subtle thing got broken while I was trying to remove one of the GCC-isms in the code.