I did notice one problem in your original linear pan (just a typo I think):
Code: Select all
if fPan > 0 then begin
Buf[L] := Buf[L]*(1-fPan);
{ Buf[R] := Buf[L] + Buf[R]*(fPan); L & R back to front }
Buf[R] := Buf[R] + Buf[L]*(fPan);
end
else if fPan < 0 then begin
Buf[L] := Buf[L] + Buf[R]*(-fPan);
Buf[R] := Buf[R]*(1+fPan);
end;Brad
