Sensenwerk: You should only have to alloc the channel once at the start of the program, try it when it's declared like this:
Global MusicChannel:TChannel = AllocChannel() '(or this could be a field, whatever suits you)
then in your PlayM method remove the alloc channel thing and have only this line (notice the assignment IS NOT needed):
PlaySound(Music[MusicNr], MusicChannel)
and it should work finem MusicChannel is passed in and reused, it doens't need to be reassigned. This is what I'm doing and my sound doesn't overwrite it.
Global MusicChannel:TChannel = AllocChannel() '(or this could be a field, whatever suits you)
then in your PlayM method remove the alloc channel thing and have only this line (notice the assignment IS NOT needed):
PlaySound(Music[MusicNr], MusicChannel)
and it should work finem MusicChannel is passed in and reused, it doens't need to be reassigned. This is what I'm doing and my sound doesn't overwrite it.