Python 2 is very near end-of-life, and Python3-compatible changes to a
few scripts introduced compatibility problems with 2.7 again. It went
unnoticed for me since my system symlinks "python" to "python3", but
it broke the build on systems where that symlink is still python2. At
this point in time, I feel it is worth targetting modern Python and
forgetting about 2.7.
Organize .gitignore by moving all patterns into a top level sorted
.gitignore file. With this change both "git status" and
"git-ls-ignore-index" should return cleanly. The later checks if any
files in the index are ignored.
Using the black code reformatter, pass it over all our Python files.
This allows for a consistent style across the code base.
Exception: lumps/dmxgus/stats.py, for readability.
This is one of the built-in variables for Make and can increase
portability on different operating systems (eg, on Windows, the
built-in $(RM) may be defined as "del" instead of "rm -f").
Split the piano and bass guitar groups into separate groups to give more
variation. Move several instruments around which don't fit, and move
several random percussion instruments into an enlargened "blank" group
since these percussion effects are not really similar to each other and
it's better to leave them out than play something that sounds wrong.
The tags are shorthand for the license of each file and avoid
copying the full license text into each one (and avoids having
to manually update the dates in each one...).
The DMX sound library used by Vanilla Doom has a bug where instruments
referencing other instruments as stand-ins can only reference
instruments listed earlier in the file. Actually, the instrument
references are just arbitrary cross-reference tags and the first
instrument to use that tag is used for all instruments with that tag.
This behavior can have some strange effects; more information can be
found on David Flater's page: <http://www.flaterco.com/kb/DOOM/DMXGUS/>
This has consequences for Freedoom's GENMIDI generation, particularly
as Chocolate Doom now emulates this behavior. To avoid assigning the
wrong instrument mappings, change the ordering of instruments in the
output file, so that "leader" instruments always appear earlier in the
file than instruments that reference them.
The main instrument groupings were already pretty good but there
was some room for improvement. The generated configuration sounds
pretty good now, even when using the 256KB config.
This script generates a MIDI file that plays all of the comparison
groups from config.py. This allows instruments to be compared, so
that similar-sounding instruments can be grouped together.
Regroup GUS percussion instruments based on personally having listened
to the samples in the GUS instrument set and identifying similar-
sounding instruments.
The indices of the percussion instruments were all off-by-one. These
should be 128+genmidi number, but were 127+ by mistake. This
considerably improves the percussion in Freedoom when using GUS.
Replace the current poor-quality handcrafted GUS configuration with
a script that programatically generates an optimized configuration
file based on statistical analysis of music from various popular WAD
files.
This is a functioning (but awful) configuration file for the
Gravis Ultrasound card, which is usually stored in the IWAD as
DMXGUS / DMXGUSC. I constructed this by hand, and at least it's
better than nothing. Also included is a sanity check script that
checks the configuration will fit in the memory limits of the card.