Ich Antworte mal selber.
Ok so geht's..
Delphi-Quellcode:
procedure TAudioVolume.tbMasterBalanceChange(Sender: TObject);
var
Balance: single;
rightVol: single;
leftVol: single;
Channels: UINT;
HR: HResult;
begin
if AudioEndpointVolume = nil then
exit;
HR := AudioEndpointVolume.GetChannelCount(Channels);
if HR = S_OK then
begin
if Channels < 2 then
exit;
end else
exit;
Balance := Max(-tbMasterBalance.Max, Min(tbMasterBalance.Max, tbMasterBalance.Position));
leftVol := 1.0 - Max(0.0, (Balance / tbMasterBalance.Max));
rightVol := 1.0 + Min(0.0, -leftVol);
AudioEndpointVolume.SetChannelVolumeLevelScalar(0, leftVol * Channels, @GUID_TAudioVolume);
AudioEndpointVolume.SetChannelVolumeLevelScalar(1, rightVol * Channels, @GUID_TAudioVolume);
end;
Musste die Kanäle noch mit Channels Multiplizieren.
Hat sich dann vorerst mal erledigt.
Muss jetzt noch die Position beim initialisieren berechnen.
gruss