Delphi 7 регулировка громкости

Delphi 7 регулировка громкости

Если что меня интересует общая громкость в Вин7, но и поддержка ХР приветствуется.

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,mmsystem, StdCtrls, ComCtrls, ExtCtrls;

type
TForm1 = class(TForm)
VolTrackBar: TTrackBar;
MixerComboBox: TComboBox;
procedure FormCreate(Sender: TObject);
procedure MixerComboBoxSelect(Sender: TObject);
procedure VolTrackBarChange(Sender: TObject);

var
Form1 :TForm1;
hmx :HMIXER;
mxcaps :tmixercaps;
mxline :mixerline;
mxlineControls :mixerlinecontrols;
SPKLineID :DWORD;
SPKVolumeControlID :DWORD;
SPKChannels :Cardinal;
c :array of mixercontrol;
mxcdetail :TMIXERCONTROLDETAILS;
volume :array[0..7] of integer;
implementation

procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
if mixergetnumdevs>0 then
begin
for i:=0 to mixergetnumdevs-1 do
begin
mixerGetDevCaps(i,@mxcaps,sizeof(tmixercaps));
Mixercombobox.Items.Add(mxcaps.szPname);
end;
Mixercombobox.itemindex:=0;
MixerComboBoxSelect(self);
end;
end;

procedure TForm1.MixerComboBoxSelect(Sender: TObject);
var i,j,err:integer; DevIndex:integer;

begin
voltrackbar.Enabled:=false;
DevIndex:=Mixercombobox.itemindex;
mixerGetDevCaps(DevIndex,@mxcaps,sizeof(tmixercaps));

if mxcaps.cDestinations>0
then
for i:=0 to mxcaps.cDestinations-1 do
begin
mxline.cbStruct:=sizeof(tmixerline);
mxline.dwSource:=0;
mixerGetLineInfo(DevIndex,@mxline,
MIXER_GETLINEINFOF_DESTINATION or MIXER_OBJECTF_MIXER);
if mxline.dwComponentType= MIXERLINE_COMPONENTTYPE_DST_SPEAKERS
then
if mxline.cControls>0
then
begin
MxLineControls.cbStruct:=sizeof(mixerlinecontrols);
SPKLineID:=mxline.dwLineID;
SPKChannels:=mxline.cChannels;

MxLineControls.dwLineID:=mxline.dwLineID;
MxLineControls.cControls:=mxline.cControls;
MxLineControls.cbmxctrl:=sizeof(mixercontrol);
setlength(c,MxLineControls.cControls);
MxLineControls.pamxctrl:=@c[0];
mixerGetLineControls(DevIndex,
@MxLineControls,MIXER_GETLINECONTROLSF_ALL or MIXER_OBJECTF_MIXER);
for j:=0 to length©-1 do
if c[j].dwControlType=MIXERCONTROL_CONTROLTYPE_VOLUME
then
begin
voltrackbar.Min:= c[j].Bounds.lMinimum;
voltrackbar.Max:= c[j].Bounds.lMaximum;
SPKVolumeControlID:=c[j].dwControlID;
voltrackbar.Enabled:=true;
end;
end;
end;
end;

procedure TForm1.VolTrackBarChange(Sender: TObject);
var i:integer;
begin
mxcdetail.cbStruct:=sizeof(TMIXERCONTROLDETAILS);
mxcdetail.dwControlID:=SPKVolumeControlID;
mxcdetail.cChannels:=SPKChannels;
mxcdetail.hwndOwner:=0;
mxcdetail.cMultipleItems:=0;
mxcdetail.cbDetails:=sizeof(MIXERCONTROLDETAILS_UNSIGNED)*SPKChannels;
for i:=o to SPKChannels-1 do volume[i]:=voltrackbar.Position;
mxcdetail.paDetails:=@volume;
mixerSetControlDetails(Mixercombobox.itemindex,@mxcdetail,
MIXER_OBJECTF_MIXER or MIXER_SETCONTROLDETAILSF_VALUE);
end;

Для регулировки уровня сигнала с линии микшера «выход»/»waveout» можно воспльзоваться функцией waveoutsetvolume. Это проще, чем добираться к нужному контролу микшера «вручную». Но к master_volume(общая громкость/громкость динамиков) доступ возможен только через функции микшера, т.е., так, как в примере. В ХР.

Источник

Delphi 7 регулировка громкости

я знаю что можно через wavOutvolume но у меня на максимуме trackbar’a
звук выключается вообще вот код :

Читайте также:  Регулировка карбюратора на мопеде атлант 49 куб

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, MPlayer, StdCtrls, Gauges, XPMan,MMSYSTEM,
Menus,ExtCtrls, Buttons;

type
TForm1 = class(TForm)
MediaPlayer1: TMediaPlayer;
Label1: TLabel;
Button2: TButton;
Gauge1: TGauge;
OpenDialog1: TOpenDialog;
TrackBar1: TTrackBar;
Label4: TLabel;
XPManifest1: TXPManifest;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Timer1: TTimer;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Panel1: TPanel;
Panel2: TPanel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
< Private declarations >
public
< Public declarations >
end;

var
Form1: TForm1;
volume:longword;
implementation
uses Unit2, Unit3;

procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if opendialog1.execute then
mediaplayer1.filename:=opendialog1. filename ;
mediaplayer1.Open;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
volume:longword;
begin
label1.Caption:=’00:00′;
TrackBar1.Position :=1;
volume := (TrackBar1.max-TrackBar1.Position)*65535;
volume := volume + (volume shl 16);
waveOutSetVolume(WAVE_MAPPER,volume ) ;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if speedbutton1.Down then
begin
speedbutton1.allowallup:=true;
form2.Show;
end
else begin
speedbutton1.AllowAllUp:=false;
form2.Close;
end;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if speedbutton2.Down then
begin
speedbutton2.allowallup:=true;
form3.Show;
end
else begin
speedbutton2.AllowAllUp:=false;
form3.Close;
end;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
volume:=(TrackBar1.Position-TrackBar1.Max)*6500;
volume := volume + (volume shl 16);
waveOutSetVolume(WAVE_MAPPER,volume );
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
panel2.Caption:=’Дата: ‘+datetostr(now);
panel1.Caption:=’Время: ‘+timetostr(now);
with MediaPlayer1 do
if FileName<>» then
Gauge1.Progress:=Round(100*Position/Length);

Источник

Мультимедиа-возможности Delphi: воспроизведение, запись звука

Воспроизведение звука

Звуковые фрагменты находятся в файлах с расширением WAV.

Например, вкаталоге C:\Winnt\Media можно найти файлы со стандартными звуками Windows.

Следующая программа (вид ее диалогового окна приведен на рис. 11.6, а текст — в листинге 11.2) демонстрирует использование компонента MediaPlayer для воспроизведения звуковых фрагментов, находящихся в WAV-файлах.

Помимо компонента MediaPlayer на форме находится компонент ListBox и два компонента Label, первый из которых используется для вывода информационного сообщения, второй — для отображения имени WAV-файла, выбранного пользователем из списка.

Читайте также:  Как самому сделать линейку для регулировки схождения колес

Работает программа следующим образом. После появления диалогового окна воспроизводится «Звук Microsoft», затем пользователь может из списка выбрать любой из находящихся в каталоге C:\Windows\Media звуковых файлов и после щелчка на кнопке Воспроизведение услышать, что находится в этом файле.

Рис. 11.6. Форма программы Звуки Microsoft Windows

Значения измененных свойств компонента MediaPIayerl приведены в табл. Н.6, значения остальных свойств оставлены без изменения.

Таблица 11.6. Значения свойств компонента MediaPIayer1

Листинг 11.2 Программа Звуки Microsoft Windows

Воспроизведение звука сразу после запуска профаммы активизирует процедура обработки события onFormActivate путем применением метода Play к компоненту MediaPiayer1 (действие этого метода аналогично щелчку на кнопке Воспроизведение). Эта же процедура формирует список WAV-файлов, находящихся в каталоге C:\Winnt\Media.

Для формирования списка используются функции FindFirst и FindNext, которые, соответственно, выполняют поиск первого и следующего (по отношению к последнему, найденному функцией FindFirst или FindNext) файла, удовлетворяющего указанному при вызове функций критерию. Обеим функциям в качестве параметров передаются маска WAV-файла (критерий поиска) и переменная структура searchRec, поле Name которой в случае успешного поиска будет содержать имя файла, удовлетворяющего критерию поиска.

Щелчок на элементе списка обрабатывается процедурой TForml.ListBoxlciick, которая выводит в поле метки Label2 имя файла, выбранного пользователем (во время работы программы свойство itemindex содержит номер элемента списка на котором выполнен щелчок).

В результате щелчка на одной из кнопок компонента MediaPiayeri активизируется процедура TForm1.MeciiaPlayerlclick, которая проверяет, какая из кнопок компонента была нажата. Если нажата кнопка Воспроизведение (btPlay), то в свойство FileNameкомпонента MediaPiayeri записывается имя выбранного пользователем файла, затем метод Open загружает этот файл и активизирует процесс его воспроизведения.

Наличие у компонента MediaPlayer свойства visible позволяет скрыть компонент от пользователя и при этом применять его для воспроизведения звука без участия пользователя. Например, следующая программа пересчитывает вес из фунтов в килограммы и сопровождает выдачу результата звуковым сигналом. В случае, если пользователь забудет ввести исходные данные или введет их неверно, программа выведет сообщение об ошибке, также сопровождаемое звуковым сигналом. Вид диалогового окна программы во время ее разработки приведен на рис. 11.7, значения свойств компонента MediaPiaer в табл. 11.7. Текст модуля программы приведен в листинге 11.3.

Читайте также:  Сцепление не поддается регулировке

Рис. 11.7. Диалоговое окно программы Фунты-килограммы

Таблица 11.7. Значения свойств компонента MediaPlayer1

Листинг 11.3. Использование компонента MadiaPlayer для вывода звука

Источник

Оцените статью
( Пока оценок нет )
Поделиться с друзьями
Настройки и регулировки