Hola,
Yo separaría sin dudar los archivos del ejecutable. Por otro lado, puedes recurrir a funciones como esta, implementada en la unidad "SysUtils":
Código Delphi
[-]
var
s: string;
begin
s := ExtractFilePath(ParamStr(0));
end;
La variable "s" contendría la ruta absoluta al directorio donde se encuentra el archivo ejecutable de tu aplicación. A partir de ahí tú podrías construir el resto de la ruta necesaria para llegar al archivo correspondiente:
Código Delphi
[-]
var
s, a: string;
begin
s := ExtractFilePath(ParamStr(0));
a := s + 'cd1\archivo-musica.mp3';
end;
La variable "a" contendría la ruta completa al "archivo-musica.mp3", independientemente de dónde estuviera tu aplicación, si en un CD, si en el disco duro, en una unidad o en otra. Evidentemente, quedaría por comprobar que, efectivamente, el archivo existe, y para eso puedes utilizar la función "FileExists()", como sabes.