the return value is not 1 and 0... it returns:
0 if a sound with this handle isn't playing, A7.82 otherwise the current play position within the sound buffer in bytes.
therefor, change your while to:
if(key_w)
{
if(snd_playing(walk_handle) == 0) snd_start(walk_handle);
}
else
{
if(snd_playing(walk_handle) > 0) snd_pause(walk_handle);
}
What did I win in this quiz

?