I found this code useful to play WAV files that were loaded into memory. I have no idea if it will work with MP3s (I dont have a single MP3 that I know of):

[pascal]
procedure LoadWav(const Filename: string; var Ptr: pointer);
var
Strm: TFileStream;
Size: integer;
begin
Strm := TFileStream.Create(Filename, fmOpenRead);
GetMem(Ptr, Strm.Size);
Strm.ReadBuffer(Ptr^, Strm.Size);
Strm.Free;
end;

Procedure PlayTheSound(Ptr : Pointer);
Begin
mmSystem.PlaySound(PChar(Ptr), 0, SND_MEMORY or SND_NODEFAULT or SND_ASYNC);
End;
[/pascal]

it uses the mmsystem unit.