MIDI implementation is complete! Now the game has an integrated MIDI playback engine, and plays back MIDI files from the art directory that have specific names. You can mod the game by replacing those files with any midi files you want as long as the filenames are the same.
It is all done in revision 836. Revision 836 also fixed several bugs from recent revisions that made it not compile correctly, and made various other improvements. You can toggle the music on or off from the title screen, from the review/move equipment menu in base mode, and from the settings menu in site mode, so it's fairly simple to toggle music on or off at any point in the game.
It is done using SDL 2.0.3 and SDL_mixer 2.0. If your system cannot compile correctly with them you can uncomment the #define DONT_INCLUDE_SDL line in common.h and that'll make the game revert to its prior behavior of not having MIDI music and not having SDL dependencies. However the menu items on the screen for enabling and disabling sound will remain there... you can toggle music on and off in a build that has SDL disabled, and then if you load your savegame in a build that has SDL and music enabled, it will remember your settings.
All of the MIDI music is public domain. It is all from long enough ago that nobody holds any copyright on it so it's entirely in the public domain. Most of it is classical music because that is the music that is old enough to be free of any intellectual property restrictions. I tried to make a good selection of songs. The only song that is composed recently enough that it would be POSSIBLE to have it be copyright is the Soviet/Russian national anthem (stalinized.mid in the art directory); however, the post-Soviet Russian government has explicitly passed legislation making that music public domain. Specifically, Article 1259 of Part IV of Civil Code No. 230-FZ of the Russian Federation of December 18, 2006 states that state symbols such as the national anthem are not subject to copyright, and under international law, the Russian Federation is the successor state to the Union of Soviet Socialist Republics and has thus inherited all its intellectual property rights, and that legislation has released the Soviet anthem and many other things into the public domain. Everything else I have as MIDI besides the Soviet national anthem is older than that, way older, old enough so that even if the creators wanted to they wouldn't be able to extend copyright this long, since everything else is over 100 years old and automatically public domain under international copyright law.
Of course what might not necessarily be public domain are MIDI wavetable instruments used in MIDI synthesizers, so if you make a WAV/OGG/MP3 etc. recording of any of these MIDI files, the instrument samples may be subject to copyright depending on how you do it. But there are plenty of public domain SoundFonts as well as public domain Gravis Ultrasound patchsets that can be used for MIDI synthesis to create wavetable recordings that are still entirely public domain.
Well I do need some help with one thing: I need some Linux and/or Mac OS X developers to get the makefiles working with these new SDL2 and SDL2_mixer dependencies. I've managed to get the Code::Blocks and Microsoft Visual C++ projects set up so they both work (hopefully... I don't have Microsoft Visual C++, only Code::Blocks, so I've only been able to confirm that it works on Code::Blocks, but I manually edited the Visual C++ project file which was in a simple easy-to-read XML format and I'm fairly certain I did it correctly so it should compile and build properly).
So what I need now is some Linux or Mac OS X or other UNIX, maybe even *BSD people, to get the makefiles working with these new dependencies. It ought to be a little simpler on Mac OS X than Linux, and simpler on Linux than *BSD... because Mac OS X has native MIDI support, Linux has support of its ALSA sound subsystem but probably needs a bit of extra stuff for MIDI (FluidSynth is recommended for highest sound quality), and *BSD uses OSS instead of ALSA so you also have to install JACK for the audio to work. Mac OS X might be originally based on *BSD, but its audio subsystem CoreAudio is quite a bit better than the old, outdated OSS audio subsystem in *BSD, and *BSD can't use ALSA because they avoid GNU GPL stuff and only use BSD licensed stuff.
Oh yeah and for ordinary users I'd recommend you try out the latest revision, revision 836. There are quite a lot of changes between revision 835 and 836. Revision 835 had no sound, SDL, or MIDI stuff at all in it, but in revision 836 it's all completely implemented. Anyway I have a detailed changelog here:
http://sourceforge.net/p/lcsgame/code/836/. Actually that changelog isn't even remotely detailed enough to describe all the stuff I did. If I actually described everything I did in that revision the changelog would be 10 times as long. Oh yeah and you might notice that the title screen has more stuff on it... like along with being able to toggle music on and off it also has links to this website and the LCS wiki added to it... so that's 3 lines of text added to it... so there's a bit less whitespace between lines but still plenty, still more than enough for everything to fit nicely. Oh yeah and if you use one of the .exe files, for now it's best to use a Debug build, it seems some of the optimizations I use with GCC on Release builds (namely, compiling at the "-Ofast" level that's even faster than "-O3") make it just a teensy weensy bit unstable. Not that there's anything wrong with those optimizations, no of course not... it's just that, if you integrate code compiled with them with code from SDL that was compiled in a different way, well the SDL code is what crashes, not my code. In fact I even had to patch a bug in one of the SDL 2.0.3 header files to get it to compile properly on MinGW-GCC, as mentioned in the changelog. I am hoping that SDL and SDL_mixer put out more stable releases soon to fix some of the bugs they have (since by looking at their source code repositories I can see they've fixed a number of bugs since their last stable releases but they haven't released those bugfixes as stable releases to the rest of us which they ought to do because it would be the nice, friendly, helpful thing to do).
So yeah... MIDI music... DONE. If you want to play it, you can download it off SourceForge, follow the packaging instructions in the README, and use the Debug build, not the Release one. Release ones used to work without strange random crashes prior to SDL but it seems SDL changes some stuff once you include it. Of course SDL can easily be disabled by defining the DONT_INCLUDE_SDL macro, which I was careful to implement throughout the code so that you can still compile it without SDL or audio the old-fashioned way.