You might want to use filename substitution in Bash.
Code:
cd <source directory>
for song in *.mp3; do
mv "${song}" "<destination directory>/${song// /_}"
done
If a filename contains spaces, you need double quotes around the bash variable. "song" in this example.
The "\ " in the names that you mentioned allow you to have a space treated literally with a command. The backslash is not a part of the name. The "//" two forward slashes in the destination part will replace all of the spaces to underscores. A single slash would have just replaced the first space.