:shock: WHoa! Wish I was more OOP oriented, I can't write it but I can use it fairly well.

Forgot to free everything properly? No prob:
[pascal]destructor TOpenALSoundEngine.Destroy;
var
I: Integer;
begin
for I := low[items] to high[items] do begin
Stop(I); // If it's playing avoid errors
items[I].Free;
end;
AlutExit();
end; [/pascal]

Is that it? Thought I'd post my "fix"...
EDIT: Put in "Item[i].destroy" instead of "free"