I've done some experimentation, and I do agree that looping on music files creates a significant gap. Generally, though, this is not an unreasonable limitation.
But how about infinitely long level tracks? I've attached a zip with an absolutely minimal Pascal program to stitch sound-blocks together in a random order. The source Pascal file has been renamed to uMain.txt as opposed to uMain.pas for ease of reading. When I say minimal, I mean it!
This simple program loads some blocks in memory and then plays them. For big tracks this could use a lot precious memory, so the next experiment will be with double or tripled-buffered dynamic loading.
The sample blocks have been down-sampled from 44100 16-bit to 8000 8-bit, but they sound okay on my big Mission speakers. They are stereo, but actually, like a lot of loops are really mono, so they could use half the memory.
I downloaded these loops and they are not for distribution. They are not perfect in terms of cross-over. Ideally loops should start and end at a zero-crossing point in the waveform, but there are some slight pops - probably as a result of re-sampling.
Notes for non-Pascal people:
The interface section is available to all units which import it. It contains only definitions.
The implementation section contains the actual code.
The TAGKScene class is beautiful (thanks, Erik!) because it handles levels in a seamless way. When you switch scenes (assuming you have more than one) unless you tell it not to do it, all objects will be destroyed without you having to worry about it.
This program compiles in Delphi and Free Pascal, and should work on Windows, OS X and iOS.
If you want the project source, post here and I'll upload it.
-- Jim