I wrote this quit fast, so don't blame me if it contais an error or 2, but this is the general idea of how it works.
// name of the file that need to be downloaded.
$filename = "your.mp3";
// get the file extension, need it later. there's a better way to do this but i just have to write it quickly.
$ext = substr($filename, -4);
// get the data of the file that should be downloaded.
$thefile = "$DOCUMENT_ROOT/downloads/files/mp3s/$filename";
// the file that will be downloaded needs to go here, and it will have a different name. I renamed as the original name, and make it "personally" by adding the user session ($PHPSESSID, you should use the vbulletin session name)
$dldir = "$DOCUMENT_ROOT/downloads/dlfiles/$filename_$PHPSESSID.$ext";
// now lets copy the file from the original dir (/downloads/files/mp3s/) to the dl dir (/downloads/dlfiles/)
@copy($thefile, $dldir);
After checking if everything went ok you could redirect it to the file by giving a link to $dldir or jscript or header("location: $dldir"); them.
With this, they dont know the original url of the files, so they have to be registered/logged in to download. If you run the server yourself, you could make a script that will delete the temp file after the download is complete. If not, you would have to do it yourself or let a script do it, but the scripts need to be accessed somehow.
As you can see, this code copies the file to another dir, it doesn't move it, original will stay. And it will also be renamed, and the temp file can be removed.