Avatar billede fedtoere Praktikant
29. november 2007 - 14:17 Der er 3 kommentarer og
1 løsning

kontrol over lyd (volume-kontrol)

Jeg bruger en Delphi mediaplayer til at afspille nogle wave filer i.
Mit problem er at skrue op og ned for lyden. Jeg har ikke fundet en løsning på dette. Hvad gør jeg i Delphi for at opnå denne kontrol ?
Avatar billede hrc Mester
29. november 2007 - 23:11 #1
Avatar billede hrc Mester
29. november 2007 - 23:38 #2
Her er min unit - som jeg desværre ikke kan få til at virke (klokken er også for mange). Arbejder videre når jeg får tid igen:

unit UVolume;

interface

type
  TDeviceTypes = (adtWave,
                  adtMIDI,
                  adtCDAudio,
                  adtLineIn,
                  adtMicrophone,
                  adtMaster,
                  adtPCLoudspeaker);

const
  DeviceNames: array[TDeviceTypes] of string =
      ('Wave',
        'MIDI',
        'CDAudio',
        'Line-In',
        'Microphone',
        'Master',
        'PC-loudspeaker');

procedure SetVolume(const aDeviceType: TDeviceTypes; const aVolume: byte);
function GetVolume(const aDeviceType: TDeviceTypes): cardinal;

implementation

uses
  Windows, MMSystem;

type
  TVolumeRec = record
    case Integer of
      0: (LongVolume: Longint);
      1: (LeftVolume, RightVolume : Word);
    end;

procedure SetVolume(const aDeviceType: TDeviceTypes; const aVolume: byte);
var
  Vol: TVolumeRec;
begin
  Vol.LeftVolume := aVolume shl 8;
  Vol.RightVolume := Vol.LeftVolume;
  auxSetVolume(UINT(aDeviceType), Vol.LongVolume) ;
end;

function GetVolume(const aDeviceType: TDeviceTypes): cardinal;
var
  Vol: TVolumeRec;
begin
  AuxGetVolume(UINT(aDeviceType),@Vol.LongVolume) ;
  Result := (Vol.LeftVolume + Vol.RightVolume) shr 9;
end;

------------------------- o -------------------------

Der var andre links her:

http://msdn2.microsoft.com/en-us/library/ms706247.aspx
http://www.pellesoft.se/communicate/tips/tips.aspx?tid=726
Avatar billede fedtoere Praktikant
30. november 2007 - 13:20 #3
Det vil jeg se nærmere på.
Håbede dog på en windows kommando som var en del af OS-systemet.
Dette er dog en god metode (specielt da jeg ikke tror at der findes et direkte OS-kald).
Avatar billede hrc Mester
30. november 2007 - 23:01 #4
Det er der nu også. Hvis du kigger i koden vil du se at den kalder en funktion i winmm.dll - som er en af XP's
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester