Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
Turbo Delphi für Win32
|
Re: MultimediaSystem Pitch/Volume
18. Sep 2005, 19:25
Du musst das direkt über die Systemlautstärke machen.
Zitat:
Mit Hilfe der Folgenenden Proceduren ist es möglich die WAV-Lautstärke des Systems auszulesen und auch zu setzen.
Beide Proceduren benötigen die Unit mmystem, die der USES-Klausel hinzugefügt werden muss.
Delphi-Quellcode:
procedure GetVolume(var volL, volR: Word);
var
hWO: HWAVEOUT;
waveF: TWAVEFORMATEX;
vol: DWORD;
begin
volL:= 0;
volR:= 0;
// init TWAVEFORMATEX
FillChar(waveF, SizeOf(waveF), 0);
// open WaveMapper = std output of playsound
waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
// get volume
waveOutGetVolume(hWO, @vol);
volL:= vol and $FFFF;
volR:= vol shr 16;
waveOutClose(hWO);
end;
procedure SetVolume(const volL, volR: Word);
var
hWO: HWAVEOUT;
waveF: TWAVEFORMATEX;
vol: DWORD;
begin
// init TWAVEFORMATEX
FillChar(waveF, SizeOf(waveF), 0);
// open WaveMapper = std output of playsound
waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
vol:= volL + volR shl 16;
// set volume
waveOutSetVolume(hWO, vol);
waveOutClose(hWO);
end;
Um die Lautstärke auszulesen kann man folgenden Aufruf verwenden:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
VolLi, VolRe: Word;
begin
GetVolume(VolLi,VolRe);
Label1.Caption:=IntToStr(VolLi);
Label2.Caption:=IntToStr(VolRe);
end;
|
|
Zitat
|