// Getestet mit D4 unter XP

// Variante 1 (Laustärke insgesamt regeln)

// Hiermit kann man die Lauststärke beim Abspielen von MP3s
// oder Waves mittels einer Trackbar regeln.

uses MMSystem; 
 
var 
  vol, fak: Integer; 
 
procedure TForm1.TrackBar1Change(Sender: TObject); 
var i: Integer; 
begin 
  i := fak * Trackbar1.position; 
  vol := i + i shl 16; 
  if WaveOutSetVolume(-1, vol) <> 0 then 
    ShowMessage('Fehler'); 
end; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  fak := 65535 div Trackbar1.max; 
  WaveOutGetVolume(-1, @vol); 
  Trackbar1.position := LoWord(vol) div fak; 
end;


// ---------------------------------------------------------------

// Variante 2 (Laustärke kanalweise regeln)

// Hiermit kann man die Lauststärke des rechten und linken Kanals
// beim Abspielen von MP3s oder Waves unabhängig voneinander regeln
//
(nicht mit Balance verwechseln).
 

uses 
  MMSystem; 
 
function Vol: DWord; 
begin 
  WaveoutGetVolume(-1, @Result); 
end; 
 
procedure TForm1.FormCreate(Sender: TObject); 
var d: DWord; 
begin 
  Trackbar1.Max := 65535; 
  Trackbar1.Frequency := 3277; 
  Trackbar2.Max := Trackbar1.Max; 
  Trackbar2.Frequency := Trackbar1.Frequency; 
  d := vol; 
  Trackbar1.Position := d and $FFFF; 
  Trackbar2.Position := d shr 16; 
end; 
 
procedure LeftVolume(value: DWord); 
begin 
  WaveoutSetVolume(-1, value or (hiword(vol) shl 16)); 
end; 
 
procedure RightVolume(value: DWord); 
begin 
  WaveoutSetVolume(-1, (value shl 16) or loword(vol)) 
end; 
 
 
// Lautstärke links 
 
procedure TForm1.TrackBar1Change(Sender: TObject); 
begin 
  Label1.caption := inttostr(Trackbar1.Position); 
  LeftVolume(Trackbar1.Position); 
end; 
 
// Lautstärke rechts 
 
procedure TForm1.TrackBar2Change(Sender: TObject); 
begin 
  Label2.caption := inttostr(Trackbar2.Position); 
  RightVolume(Trackbar2.Position); 
end;



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke