Examples Delphi

// Using Audio Volume Control API
//
unit WaveUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, MMSystem, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
NumDevs : Integer;
waveCaps : TWaveOutCaps;
Volume : DWORD;
Left, Right : Word;
Version : Word;
begin
// We should have at least one device
NumDevs := waveOutGetNumDevs;
Edit1.Text := Format('Number of devices is %d', [NumDevs]);
// for the 1st device (hard-coded)
// Get Device Caps
waveOutGetDevCaps(0, @waveCaps, SizeOf(waveCaps));
// Show device caps
Memo1.Lines.Add('Iàçâàíèå: '+waveCaps.szPName);
Version := waveCaps.vDriverVersion;
Memo1.Lines.Add(Format('Aådñèÿ ädàéâådà: %d.%d', [Hi(Version), Lo(Version)]));
Case waveCaps.wChannels of
1 : Memo1.Lines.Add('Iîíî');
2 : Memo1.Lines.Add('Ñòådåî');
End;
// Standard formats
If waveCaps.dwFormats AND WAVE_FORMAT_1M08 <> 0 Then
Memo1.Lines.Add('11.025 kHz, mono, 8-bit');
If waveCaps.dwFormats AND WAVE_FORMAT_1M16 <> 0 Then
Memo1.Lines.Add('11.025 kHz, mono, 16-bit');
{
WAVE_FORMAT_1S08 11.025 kHz, stereo, 8-bit
WAVE_FORMAT_1S16 11.025 kHz, stereo, 16-bit
WAVE_FORMAT_2M08 22.05 kHz, mono, 8-bit
WAVE_FORMAT_2M16 22.05 kHz, mono, 16-bit
WAVE_FORMAT_2S08 22.05 kHz, stereo, 8-bit
WAVE_FORMAT_2S16 22.05 kHz, stereo, 16-bit
WAVE_FORMAT_4M08 44.1 kHz, mono, 8-bit
WAVE_FORMAT_4M16 44.1 kHz, mono, 16-bit
WAVE_FORMAT_4S08 44.1 kHz, stereo, 8-bit
WAVE_FORMAT_4S16 44.1 kHz, stereo, 16-bit
}
// If Volume Control Supported
If waveCaps.dwSupport AND WAVECAPS_VOLUME <> 0 Then
Begin
waveOutGetVolume(0, @Volume);
Left := LoWord(Volume);
Right := HiWord(Volume);
// Show values of WAVE Device on volume control panel
Edit2.Text := Format('Left : %d, Right : %d', [Left, Right]);
waveOutSetVolume(0, $40008000);
End;
end;
end.