Te recomiendo cambiar un poco la forma en que analizas los datos:
Código PHP:
// Obtengo la extensión del archivo en minúsculas y sin el punto
$partes = split('\.', $nombre_archivo);
$extension = strtolower($partes[count($partes)-1]);
//compruebo si las características del archivo son las que deseo
if($extension != 'mp3')
echo "El tipo de archivo <b>$extension</b> es incorrecto, sólo se permiten archivos mp3";
else if($tamano_archivo > 8000000)
echo "Tu archivo pesa <b>$tamano_archivo</b> y el máximo permitido es de 8000000";
else {
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $carpeta)){
echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
De esta manera podrás analizar la extensión y el tamaño del archivo, además sabrás cuál es exactamente el error.