Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Since it seems the parent repo maintainer is not interested in this, I decided to see if you would be:
This adds MIDI Support to OpenTyrian.
This is accomplished with the use of two third-party libraries and the use of vcpkg to install them.
In order to get something that played nice with SDL audio and had support for software synths like fluidsynth and the Native MIDI driver (for macOS and Windows), and ALSO allowed direct control of the mixer so that we could continue to use the same mixing we already had, I decided to use SDL-mixer-X, which is a fork of SDL-mixer that has a bunch more of the interface exposed and support for changing the MIDI backend at runtime.
I also needed a library to convert the LDS files to MIDI, so I decided to take foo_midi's integrated midi processing and spin it off into its own library.
Since those would be a pain to install since they're not packaged for distributions, I decided to use vcpkg to manage those dependencies. This is optional; you can just build them with cmake and install them as you would normally with cmake install.
If you want to use vcpkg, just install vcpkg and then run vcpkg install (vcpkg install --triplet x86_64-win-static-md on windows) in the working directory; the makefile will automatically find them using pkgconfig.
The vcpkg packages are version-pinned using the vcpkg-configuration.json file.