Absolutely. If I was too brief earlier, sorry for that.
ALSO, FOR A PREVIEW OF THIS, TRY XMP IN JAVASCRIPT (not the greatest modules to show off, but it's something):
http://www.wothke.ch/webxmp/
Keep reading while you have a listen.
Currently DP can play both .wav and .ogg sound files. That is rather limited, but good enough for waveform (pcm) style music.
But DarkPlaces previously also had module playback support. LH
removed it last year, reasoning "the library is too insecure and barely used by anyone".
In response to that I want to improve awareness of this ex-feature, and provide an alternative library to do it with (libxmp), hopefully gaining some support for including the feature again.
(Debian users using the packaged darkplaces will still have modplug support and can play around with it there.)
To explain the difference between tracked modules and PCM waveforms, I'll try to use some quake references.
A "rendered" pcm (wav,ogg,mp3,...) is essentially comparable to a "baked" BSP map. You can modify it and distort it using programs, but you can't really edit it without the source from which it was rendered/compiled.
A module tracker, on the other hand is a software
sampler.
The module file stores a list of instruments and essentially a music sheet (notes to play) for up to 64 channels. Additionally it can store pre-recorded samples to be played as notes.
So that's not much different from software you would use to create a wav in the first place (and of course you can render the result to a wav as well).
Except understanding and playing the module's format directly has a lot of advantages!
First, you never lose the source, since the module itself contains all the relevant bits.
Second, the module can contain logic, which a flat waveform can't (unless you add your own container format with some logic).
Third, the size of the file may be a lot smaller, since all the samples are only included once, no matter how often you play them, and the "music sheet" doesn't take much space. A module that has 50 minutes tracked will only be slightly larger than the same one having notes for only 5 minutes. It's a great compression scheme (and compresses even
better on top of that with zip, due to the nature of it's contents).
(I predict they will still see a big renassaince in browser games with the webaudio api, the software is already out there.)
Now that's more like playing on the Cube2 engine, where you can edit the whole map live and ingame.
The sound system of Unreal1 used that to great success. Their music modules usually contained two or three sequences (like tracks) for different moods.
One for the normal ambient and at least one other for action sequences. Now once you hit on an enemy, the system would "switch tracks" to the more aggressive music, which added most of the flair and atmosphere to Unreal back then. Especially if you hit on an ambush, it would get your blood pumping real nice.
Once the threat was over, the module would seemlessly loop back to the "relaxed" track.
To finish this with a possible future outlook, consider the applications in a game engine:
(All this isn't possible with the current state of my code, specifically no QuakeC interface exists for that, and I can't do that alone. Hopefully people might be willing to help code that.)
Having modules as a "sample storage" like an effectinfo.txt or sprite map for sounds.
With a sound mixer api for QuakeC a load of possibilities could be added. (libXMP already contains a mini mixer api which can be used to that end.)
We might have game logic doing the same as Unreal; just using stored samples as sound effects; sound scripting for bot orchestra, or adding a fully interactive piano into a map (I don't remember the map's name. hint hint).
So that's already possible, but new might be changing instruments and sets of samples on the fly; just like you can on your synthesizer keyboard with a button.
Explanation enough?