Hallo Fangemeinde des musikalischen Hörgenusses,
ich bin kein Mathematiker und darum versuche ich es mal mit einfachen Worten zu erklären. Wenn man zwei Fader bzw. Werte (Volume rechts und links) mit einem einzigen Balance-Regler steuern will/muss/möchte dann ist das Maximum jeder Seite immer die Gesamtlautstärke und dann muss man ja nur noch abziehen:
Delphi-Quellcode:
procedure TFrmPlayer.BalanceChange(Sender: TObject);
var
Vol, BalanceOffset, LeftVol, RightVol: Single;
function CheckValue(const aValue: Single): Single;
begin
Result := aValue;
if Result > 1.0 then Result := 1.0 else
if Result < 0 then Result := 0;
end;
begin
Vol := GetMasterVolume;
LeftVol := Vol;
RightVol := Vol;
BalanceOffset := Balance.Position * 0.01 * Vol; // Trackbar: Min = -100...Max = 100
if BalanceOffset < 0 // Fader = links, Lautstärke rechts anpassen
then RightVol := CheckValue(Vol + BalanceOffset) else
if BalanceOffset > 0 // Fader = rechts, Lautstärke links anpassen
then LeftVol := CheckValue(Vol - BalanceOffset);
SetVolumeChannel(LeftVol, ch_LEFT);
SetVolumeChannel(RightVol, ch_RIGHT);
end;
So funktioniert das zumindest bei mir. Die Adaption auf die Komponente dürfte dann wohl nicht mehr schwer fallen. HTH
Nachtrag: ch_LEFT und ch_RIGHT sind Konstanten die ich bei Bedarf vertauschen kann. Der User hat Ausgang-links => rechts angeschlossen
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen