Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wave Lautstärke in Prozent angeben (https://www.delphipraxis.net/55689-wave-lautstaerke-prozent-angeben.html)

Nils_13 25. Okt 2005 13:37


Wave Lautstärke in Prozent angeben
 
Hi,

ich lass mir in zwei Labels die Wave-Lautstärke per
Delphi-Quellcode:
procedure TForm1.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 TForm1.ButtonClick;
var VolLi, VolRe: Word;
begin
  // volume
  GetVolume(VolLi,VolRe);

  vollabel.Caption:=IntToStr(VolLi);
  vollabel2.Caption:=IntToStr(VolRe);
end;
ausgeben. Nur wie wandle ich das jetzt in Prozent um ?

freak4fun 25. Okt 2005 14:41

Re: Wave Lautstärke in Prozent angeben
 
HAllo :hi:,
du brauchst die maximale Lautstärke. Wie man die raus bekommt weiß ich auch nicht. Vielleicht mal Boxen aus und dann irgendwo rumspielen. ;)

MfG
freak

Nils_13 25. Okt 2005 14:46

Re: Wave Lautstärke in Prozent angeben
 
Zitat:

Zitat von freak4fun
HAllo :hi:,
du brauchst die maximale Lautstärke. Wie man die raus bekommt weiß ich auch nicht. Vielleicht mal Boxen aus und dann irgendwo rumspielen. ;)

MfG
freak

Die Maximallaustärke ist '65535', diese muss ich erst durch 100 teilen, und dann noch mit dem Wert der aktuellen Lauststärke multiplizieren, aber wie ich hier
Delphi-Quellcode:
vollabel.Caption := IntToStr(VolLi) * StrToInt( 100);
noch / 100 * vollabel.Caption einbaue weiß ich nicht.

freak4fun 25. Okt 2005 14:53

Re: Wave Lautstärke in Prozent angeben
 
Delphi-Quellcode:
label1.Caption := FloatToStr((100 * (65535 / 2{DEr Wert hier Hälfte})) / 65535)

Nils_13 25. Okt 2005 15:02

Re: Wave Lautstärke in Prozent angeben
 
Ich habe ein Volume-Trackbar. Hiermit setze und lese ich die Lautstärke aus
Delphi-Quellcode:
function TForm1.GetWaveVolume(var LVol: DWORD; var RVol: DWORD): Boolean;
var
  WaveOutCaps: TWAVEOUTCAPS;
  Volume: DWORD;
begin
  Result := False;
  if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf(WaveOutCaps)) = MMSYSERR_NOERROR then
    if WaveOutCaps.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
    begin
      Result := WaveOutGetVolume(WAVE_MAPPER, @Volume) = MMSYSERR_NOERROR;
      LVol  := LoWord(Volume);
      RVol  := HiWord(Volume);
    end;
end;

function TForm1.SetWaveVolume(const AVolume: DWORD): Boolean;
var
  WaveOutCaps: TWAVEOUTCAPS;
begin
  Result := False;
  if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf(WaveOutCaps)) = MMSYSERR_NOERROR then
    if WaveOutCaps.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
      Result := WaveOutSetVolume(WAVE_MAPPER, AVolume) = MMSYSERR_NOERROR;
end;
weil so hab ich ja immer 50%. Es soll aber der aktuelle Wert in Prozent angegeben werden.

freak4fun 25. Okt 2005 15:17

Re: Wave Lautstärke in Prozent angeben
 
Nächste Versuch...


Delphi-Quellcode:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  Label1.Caption := FloatToStrF(((TrackBar1.Position / 65535) * 100), ffFixed, 3, 0) + '%';
end;
[edit]MAXWert der Trackbar ist 65535[/edit]

Nils_13 25. Okt 2005 15:51

Re: Wave Lautstärke in Prozent angeben
 
Zitat:

Zitat von freak4fun
Nächste Versuch...


Delphi-Quellcode:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  Label1.Caption := FloatToStrF(((TrackBar1.Position / 65535) * 100), ffFixed, 3, 0) + '%';
end;
[edit]MAXWert der Trackbar ist 65535[/edit]

Dabei entsteht dann irgendeine Zugriffsverletzung.

freak4fun 25. Okt 2005 16:02

Re: Wave Lautstärke in Prozent angeben
 
Zitat:

Zitat von Nils_13
Zitat:

Zitat von freak4fun
Nächste Versuch...


Delphi-Quellcode:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  Label1.Caption := FloatToStrF(((TrackBar1.Position / 65535) * 100), ffFixed, 3, 0) + '%';
end;
[edit]MAXWert der Trackbar ist 65535[/edit]

Dabei entsteht dann irgendeine Zugriffsverletzung.

Ich darf davon ausgehen, das du diesen Code angepasst hast. Könntest du bitte mal posten, woher du die aktuelle Lautstärke bekommst? Unterscheidet sich dabei die Lautstärke des rechten Kanals von der des Linken?

Ich möchte dir gern helfen, aber wir scheinen irgendwie an einander vorbei zu reden. :(

MfG
freak

TeronG 25. Okt 2005 16:04

Re: Wave Lautstärke in Prozent angeben
 
:gruebel: wenn das maximum 65535 ist .. dann reicht es doch schon einfach den istwert durch 655,35 zu teilen und schon hab ich die % :gruebel: oder sehe ich da was zu simpel?

Nils_13 25. Okt 2005 16:09

Re: Wave Lautstärke in Prozent angeben
 
Zitat:

Zitat von freak4fun
Zitat:

Zitat von Nils_13
Zitat:

Zitat von freak4fun
Nächste Versuch...


Delphi-Quellcode:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  Label1.Caption := FloatToStrF(((TrackBar1.Position / 65535) * 100), ffFixed, 3, 0) + '%';
end;
[edit]MAXWert der Trackbar ist 65535[/edit]

Dabei entsteht dann irgendeine Zugriffsverletzung.

Ich darf davon ausgehen, das du diesen Code angepasst hast. Könntest du bitte mal posten, woher du die aktuelle Lautstärke bekommst? Unterscheidet sich dabei die Lautstärke des rechten Kanals von der des Linken?

Ich möchte dir gern helfen, aber wir scheinen irgendwie an einander vorbei zu reden. :(

MfG
freak

Gibts hier einen Smilie, der einen Selbstmord darstellt. Thx, jetzt läufts, hab das mit der tb übersehen :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz