I see what you're doing. I missed the part you said originally about footsteps. Sorry about that. Yeah you don't need loops, just plays.
You can use dbTimer() to create a delay function in ms that doesn't pause the whole program. When you play a particular sound, store the current time. Then once however many ms has passed, play the next one. If that time hasn't passed yet, then don't play the next one. Either way, you check, do or don't do, and let it move on.
And for 2 footstep sounds, you can have an array of 2 elements long for the sound IDs, and have an index to that array MODed by two (or better yet for just 2, ANDed by 1).
Something like this:
FootstepTime = 800; // 800ms
if (dbKeyState(30))
{
currentTime = dbTimer();
if ((currentTime - PreviousTime) >= FootstepTime)
{
dbPlaySound(SoundFootstepIDs[SoundIndex++]);
SoundIndex &= 1;
PreviousTime = currentTime;
}
}