I am still thinking about theses problem still. Really it comes down to the hardware isn't to great with audio. Reading audio from HDD and output via ST DAC is a great idea. CPU power is a problem, plus ram. So only direct playing from HDD is possible.
Though Could the data from the drive be output to a new dac circuit, even as 2 channels. Idea being to allow DMA to control hard drive as normal (access audio files), but when DMA has the data ready to output to bus, disable its request line to MMU and send the data to a new dac circuit instead. If the drive and DMA is fast enough, then sound effects and must could be played direct from disk much like you are doing now anyway.
The idea overall, is that if the ST had a better audio mixer, then possible to mix any audio with any number of channels. Problem is, data storage. Can't use RAM, so HDD is best method. Though as these are files, we have to access the files via HDD interface (DMA) etc.
In anycase, I take it the hard drive isn't fast enough to playmusic and play sound effects at same time ? That just makes me think about better audio hardware.. but same problems as you have now which is lack of CPU time and RAM. Audio from external source is easy to wire, but its accessing the audio at a fast speed. As most will not want to update with complex hardware hacks, the HDD is the only easy source for the audio.
As speed drive speed is probably a bottleneck, only RAM would work. Though this would mean adding in more ram (maybe alt-ram) and loading sound samples into that RAM area, but then would need CPU time to access the RAM locations, then would need some special hardware fix to play the ram locations directly. In which case, this becomes a better idea to create new audio hardware with RAM to hold sound samples. There are sound controllers out there which can do the job. Or just create small GAL code to cycle the "audio ram" locations and output to a dac. Then GAL code would have to be controlled by a location in ST RAM so the program could play those samples. Don't think that would be a problem.
Problem would be loading the "audio ram" with data from hard drive in first place. Similar issues with using alt-ram really. So its back to the DMA so it controls the drive as normal, but the bus request line controlled so data could be loaded into another ram location directly without needing to go though MMU.
Playing audio from RAM (external to the CPU) isn't a problem. There are solutions for a audio chip to play audio direct from RAM. This is done with audio in ROM and played back using hardware select lines to the CPU to chose the sample memory to be played. Control lines can be a register in ST ram. No problem there. Only problem is to load audio from HDD to the audio ram locations.
There may be a workaround for this. Read drive data into a RAM location, then have extra ram circuit pickup that value, then auto increase ram location in external ram etc This way it just loads all data from HDD into one 8bit location in STram, and copy value over to a extra RAM location which the sample playback circuit can use. To play the audio samples, another ST RAM location used, really just send "play" command to external audio circuit.
Its actually a really old circuit, I can't remember the chip name. But I think the only real problem is to replace the "audio in ROM" with Audio which is loaded from HDD into a external "audio ram" location.
Just thinking out loud here thats all