Announcement

Collapse
No announcement yet.

Mixer-Lautstärke lesen/setzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mixer-Lautstärke lesen/setzen

    Hallo!

    Wie ist es möglich, die Lautstärke des Soundkarten-Mixers zu setzen/lesen?

    Herzlichen Dank für jeden Tipp!

    AScomp

    P.S. Wenn möglich, sollte keine externe Datei hierfür verwendet werden (DLL etc.)

  • #2
    Ist leider nicht komplett auf meinem Mist gewachsen,aber funzt!<br>
    Habe leider noch Probleme mit der Formatierung(Tschuldigung),<br>
    ein wenig einrücken musst Du noch.

    unit Unit1;<br>

    interface<br>

    uses<br>
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,<br> Dialogs, MMSystem, Grids;

    const<br>
    Header : byte = 1;<br>

    type<br>
    TForm1 = class(TForm)<br>
    StringGrid1: TStringGrid;<br>
    procedure FormShow(Sender: TObject);<br>
    procedure GetDevInfos;<br>
    procedure GetVolume(DeviceID : integer;var VolL,VolR : word);<br>
    procedure SetVolume(DeviceID : integer;VolL,VolR : byte);<br>
    private<br>
    { Private-Deklarationen }<br>
    public<br>
    { Public-Deklarationen }<br>
    NumDevs : byte;<br>
    end;<br>

    var<br>
    Form1: TForm1;<br>

    implementation<br>

    {$R *.DFM}<br>

    procedure TForm1.FormShow(Sender: TObject);<br>
    begin<br>
    NumDevs:=AuxGetNumDevs;<br>
    StringGrid1.RowCount:=NumDevs + Header;<br>
    StringGrid1.Cells[0,0]:='ID';<br>
    StringGrid1.Cells[1,0]:='Version';<br>
    StringGrid1.Cells[2,0]:='Name';<br>
    StringGrid1.Cells[3,0]:='Typ';<br>
    StringGrid1.Cells[4,0]:='Pegel L';<br>
    StringGrid1.Cells[5,0]:='Pegel R';<br>
    GetDevInfos;<br>
    end;<br>

    procedure TForm1.GetDevInfos;<br>
    var AuxCaps : TAuxCaps;<br>
    VHi,VLo : word;<br>
    L,R : word;<br>
    i : byte;<br>
    begin<br>
    for i := 0 to NumDevs-1 do begin<br>

    //Infos aus Treiber holen<br>
    AuxGetDevCaps(i, @AuxCaps, SizeOf(AuxCaps));<br>

    //Device ID eintragen<br>
    StringGrid1.Cells[0,i + Header] := IntToStr(i);<br>
    StringGrid1.ColWidths[0] := 20;<br>

    //Treiber Version holen<br>
    VLo:=AuxCaps.vDriverVersion mod $100;<br>
    VHi:=AuxCaps.vDriverVersion div $100;<br>
    StringGrid1.Cells[1,i + Header] := IntToStr(VHi) + '.' + IntToStr(VLo);<br>
    StringGrid1.ColWidths[1] := 50;<br>

    //Namen der Devices eintagen<br>
    StringGrid1.Cells[2,i + Header] := String(AuxCaps.szPName);<br>
    StringGrid1.ColWidths[2] := Length(String(AuxCaps.szPName)) * 7;<br>

    //Art des Divices holen<br>
    if (AuxCaps.wTechnology and AUXCAPS_CDAUDIO)<>0 then begin<br>
    StringGrid1.Cells[3,i + Header] := 'CD-Audio';<br>
    StringGrid1.ColWidths[3] := 60 end<br>
    else begin<br>
    StringGrid1.Cells[3,i + Header] := 'Extern';<br>
    StringGrid1.ColWidths[3] := 60;<br>
    end;<br>
    //Lautstärke holen<br>
    GetVolume(i,L,R);<br>
    StringGrid1.Cells[4,i + Header] := IntToStr(L)+' %';<br>
    StringGrid1.ColWidths[4] := 60;<br>
    StringGrid1.Cells[5,i + Header] := IntToStr(R)+' %';<br>
    StringGrid1.ColWidths[5] := 60;<br>
    end;<br>
    end;<br>

    procedure TForm1.GetVolume(DeviceID : integer;var VolL,VolR : word);<br>
    var Vol : longint;<br>
    begin<br>
    AuxGetVolume(DeviceID,@Vol);<br>
    VolL:=Vol mod $10000;<br>
    VolR:=Vol shr 16;<br>
    end;<br>

    procedure TForm1.SetVolume(DeviceID : integer;VolL,VolR : byte);<br>
    var Vol : longint;<br>
    Temp : real;<br>
    begin<br>
    Temp:=VolR/255;<br>
    Vol:=round($FFFF*Temp) shl 16;<br>
    Temp:=VolL/255;<br>
    Vol:=Vol+round($FFFF*Temp);<br>
    AuxSetVolume(DeviceID,Vol);<br>
    end;<br>

    end.<br>

    Viel Spaß damit <br>
    MFG Olive

    Comment

    Working...
    X