Hab die Balance zu TAudioVolume addiert aber ein kleines Berechnungsproblem.
Der Ausgang soll so sein das der rechte und linke Kanal jeweils 100% hat wenn meine Trackbar auf 50 also der hälfte steht.
Das Problem ist aber das im Moment bei meiner Berechnung die Lautstärke sowie beide Kanäle auf 50% stehen.
Schiebe ich den regler ganz nach links ist die Lautstärke 100% und der linke Kanal genauso.
Das gleiche wenn ich ganz nach rechts schiebe.
Meine Funktion sieht so aus.
Delphi-Quellcode:
procedure TAudioVolume.tbMasterBalanceChange(Sender: TObject);
var
Balance: single;
rightVol: single;
leftVol: single;
begin
if AudioEndpointVolume = nil then
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, @GUID_TAudioVolume);
AudioEndpointVolume.SetChannelVolumeLevelScalar(1, rightVol, @GUID_TAudioVolume);
end;
Wo ist mein Denkfehler ? Das die Lautstärke sich immer mit verändert.. bzw. die Kanäle bei 50% der Trackbar.Position nicht 100% sind.
Bewege ich den linken bzw.. den rechten Slider unter den Eigenschaften "Wiedergabegerät" separat ändert sich die Hauptlautstärke nicht.
Aber ich möchte keine zwei Trackbars dafür verwenden.
gruss