First, thank you for your work on the 3D Sound System. It must be quite popular since Minecraft is using it.
I started a remake of Settlers 1 and I am using your library. Because the music is in MIDI format I am using the MIDI system and found a bug:
In class MidiChannel in method meta(MetaMessage message) line 1030:
sequenceQueue is null if you are not using it before and that means a NullPointerException is stopping the loop from working.
If you are interested in the game check out:https://www.simpleguide.net/sg/serflings.jsf
Two more things to optimize MIDI playback:
1. In MidiChannel always add parameter false when fetching the Sequencer (MidiSystem.getSequencer(false)). False means to not connect to a Synthesizer, which is done later anyway. If not given this parameter the output is terrible, at least in java 8. I guess this is because there is more than one Synthesizer connected.
2. I found out that on my system the volume control is not on controller 7 but on controller 11. I don't know if this is always the case but it worked for me. Now I set the volume on both controllers (method resetGain).