![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как изменить звук [D7, Win95/98]
Fantom © (2004-08-06 03:52:00)Я пишу audio-player и сталкнулся стакой проблемои мне нужно зделать так чтоюы в программе можно было измянять громкость
antonn (2004-08-12 05:24:00) [1]Now-функция возвращает текущее время-дату.
Fantom (2004-08-12 02:42:00) [2]Александр1
спасибо за код он работает
но у меня снова проблема как можно узнать время и сколько уже прошло
Mihey_temporary (2004-08-10 13:12:00) [3]2 Александр1:
Я тоже писал плеер, но не как отдельный, а в составе игры. Очень нужная вещь.
Александр1 (2004-08-10 06:03:00) [4]Fantom - Ну ты хоть напеши работает громкость звука?
Александр1 (2004-08-08 18:56:00) [5]Ну тоже мне программист. Собрался писать свой audio-player и не знает как его наделить функцией второй по значимости после собственно проигрывания музыки. audio-player-ов написано выше крыши. Зачем писать свой, если ты всё равно не сможешь переплюнуть Microsoft и других.
Знаешь я когда-то тоже пытался написать свой audio-player, но потом понял, что этим плером в принципе никто пользоваться даже не будит, т.к. он будет хуже других.
Я считаю, что велосипед изобретать второй раз не следует. Нужно писать те программы которые ещё не написаны и которых нет на дисках.
К стати а как ты создать эквалайзеры? Я помню в своё время так их не смог описать.
Ну ладно ты не обижайся чё писать это дело каждого. Если тебя не затруднит как напишешь скинь на почту свой audio-player. Я в долгу не останусь, помогу чем смогу.
А громкость меняется так:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses MMSystem;
function GetWaveVolume: DWord;
var Woc : TWaveOutCaps;
Volume : DWord;
begin
result:=0;
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) =
MMSYSERR_NOERROR then begin
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then begin
WaveOutGetVolume(WAVE_MAPPER, @Volume);
Result := Volume;
end;
end;
end;
procedure SetWaveVolume(const AVolume: DWord);
var Woc : TWaveOutCaps;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) =
MMSYSERR_NOERROR then begin
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
WaveOutSetVolume(WAVE_MAPPER, AVolume);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Beep;
end;
procedure TForm1.Button2Click(Sender: TObject);
var LeftVolume: Word;
RightVolume: Word;
begin
LeftVolume := StrToInt(Edit1.Text);
RightVolume := StrToInt(Edit2.Text);
SetWaveVolume(MakeLong(LeftVolume, RightVolume));
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Caption := IntToStr(GetWaveVolume);
end;
end.
Если хочешь могу прислать исходный код, только укажи мыло.
Константинов (2004-08-08 02:38:00) [6]из FAQ взятого на сайте АП
Да всё пpосто. Даже, я бы сказал, тyпо. :-)
INT GetMasterVolumeControlID()
{
// get dwLineID
MIXERLINE mxl;
mxl.cbStruct = sizeof(MIXERLINE);
mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
if (::mixerGetLineInfo((HMIXEROBJ)ghmx, &mxl,
MIXER_OBJECTF_HMIXER | MIXER_GETLINEINFOF_COMPONENTTYPE)
!= MMSYSERR_NOERROR)
return 34;
// get dwControlID
MIXERCONTROL mxc;
MIXERLINECONTROLS mxlc;
mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
mxlc.pamxctrl = &mxc;
if (::mixerGetLineControls((HMIXEROBJ)ghmx, &mxlc,
MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
!= MMSYSERR_NOERROR)
return 34;
return mxc.dwControlID;
}
BOOL SetMasterVolume(DWORD dwVolume)
{
MIXERCONTROLDETAILS mxcd;
MIXERCONTROLDETAILS_UNSIGNED mxcd_u;
mxcd.cbStruct = sizeof(mxcd);
mxcd.dwControlID = MasterVolumeControlID;
mxcd.cChannels = 1;
mxcd.cMultipleItems = 0;
mxcd.cbDetails = 4;
mxcd.paDetails = &mxcd_u;
mmr = mixerGetControlDetails((HMIXEROBJ)ghmx, &mxcd, 0L);
if (MMSYSERR_NOERROR != mmr) return FALSE;
mxcd_u.dwValue = dwVolume;
mmr = mixerSetControlDetails((HMIXEROBJ)ghmx, &mxcd, 0L);
if (MMSYSERR_NOERROR != mmr) return FALSE;
return TRUE;
}
Переписывать на Delphi, думаю, ни к чему. Надо лишь не забыть добавить uses MMSystem; Громкость отдельных каналов очень просто устанавливается через auxSetVolume и аналогичные.
Fantom (2004-08-08 02:09:00) [7]Александр1
Да знаю
Александр1 (2004-08-07 18:54:00) [8]А звук ты знаешь как проигрывать?