If you are aiming to play the music in the background while the app is doing something else the Do loop with DoEvents is unnecessary and will as you say, take a lot of cpu and stop much else happening.
You would be better looking for another sub that is called regularly, a screen refresh maybe, and check if the if the player has finished in there, then load the next file if it has.