Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Громкость и её изменение


Opera ©   (2003-04-09 09:08:00) 

Помогите с кодом пожалуйста.
Что нужно написать на TrackBar чтобы при передвижении изменялась громкость? (Вся)???


Dimon111111   (2003-04-30 21:05:00) [1]

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Track1: TTrackBar;
Track2: TTrackBar;
Track3: TTrackBar;
procedure Track1Change(Sender: TObject);
procedure Track3Change(Sender: TObject);
procedure Track2Change(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
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
begin
WaveOutGetVolume(WAVE_MAPPER,@Volume);
Result := Volume;
end;
end;

procedure SetWaveVolume(const AVolume: DWord);
var
Woc : TWAVEOUTCAPS;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) =MMSYSERR_NOERROR then
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
WaveOutSetVolume(WAVE_MAPPER, AVolume);
end;


procedure TForm1.Track2Change(Sender: TObject);
var
LeftVolume: Word;
RightVolume: Word;
begin
if Track2.Position>Track1.position then
Track3.Position:=Track2.position;
LeftVolume :=Track1.Position*655;RightVolume := Track2.Position*655;
SetWaveVolume(MakeLong(LeftVolume, RightVolume));
end;


procedure TForm1.Track1Change(Sender: TObject);
var
LeftVolume: Word;
RightVolume: Word;
begin
if Track1.Position>Track2.position then
( MakeLong(LeftVolume, RightVolume)

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Track1: TTrackBar;
Track2: TTrackBar;
Track3: TTrackBar;
procedure Track1Change(Sender: TObject);
procedure Track3Change(Sender: TObject);
procedure Track2Change(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
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
begin
WaveOutGetVolume(WAVE_MAPPER,@Volume);
Result := Volume;
end;
end;

procedure SetWaveVolume(const AVolume: DWord);
var
Woc : TWAVEOUTCAPS;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) =MMSYSERR_NOERROR then
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
WaveOutSetVolume(WAVE_MAPPER, AVolume);
end;


procedure TForm1.Track2Change(Sender: TObject);
var
LeftVolume: Word;
RightVolume: Word;
begin
if Track2.Position>Track1.position then
Track3.Position:=Track2.position;
LeftVolume :=Track1.Position*655;RightVolume := Track2.Position*655;
SetWaveVolume(MakeLong(LeftVolume, RightVolume));
end;


procedure TForm1.Track1Change(Sender: TObject);
var
LeftVolume: Word;
RightVolume: Word;
begin
if Track1.Position>Track2.position then
Track3.Position:=Track1.position;
LeftVolume :=Track1.Position*655;
RightVolume := Track2.Position*655;
SetWaveVolume(MakeLong(LeftVolume, RightVolume));
end;
procedure TForm1.Track3Change(Sender: TObject);
var
LeftVolume: Word;
RightVolume: Word;
begin
Track1.Position:=Track3.position;
Track2.Position:=Track3.position;
LeftVolume :=Track1.Position*655;
RightVolume := Track2.Position*655;
SetWaveVolume(MakeLong(LeftVolume, RightVolume));
end;

end.



тут с балансом и все такое........


titnn   (2003-04-15 07:30:00) [2]

тоже столкнулся с проблемой mmSystem не возможно поменять MasterVolume , поставил компоненту ssVolumeController , меняет все что хошь ...


Blacked   (2003-04-14 17:28:00) [3]

Вот пример, тут всё работает:
var
NumDevs: Integer;
waveCaps: TWaveOutCaps;
Volume: DWORD;

procedure TForm1.VolumeTBar1Change(Sender: TObject);
begin
Volume:=VolumeTBar1.Position*65537;
NumDevs:=waveOutGetNumDevs;
waveOutGetDevCaps(0, @waveCaps, SizeOf(waveCaps));
if waveCaps.dwSupport and WAVECAPS_VOLUME <> 0 then
( 0, Volume)

Вот пример, тут всё работает:
var
NumDevs: Integer;
waveCaps: TWaveOutCaps;
Volume: DWORD;

procedure TForm1.VolumeTBar1Change(Sender: TObject);
begin
Volume:=VolumeTBar1.Position*65537;
NumDevs:=waveOutGetNumDevs;
waveOutGetDevCaps(0, @waveCaps, SizeOf(waveCaps));
if waveCaps.dwSupport and WAVECAPS_VOLUME <> 0 then
waveOutSetVolume(0, Volume);
end;


max1981   (2003-04-12 13:21:00) [4]


>Lister
У MPlayer нет такого свойства как громкость. Можно изменять громкость входных данных - т.е. просто делить/умножать их на какую-нибудь константу.


Lister   (2003-04-10 16:07:00) [5]

Кто бы еще подсказал можно ли менять громкость у каждого MPlayer а, если их используется в программе несколько?


max1981   (2003-04-10 10:01:00) [6]

WaveOutSetVolume и MidiOutSetVolume - действительно замечательно работают, но есть же еще куча настроек громкости, которые тоже хотелось бы менять...
Кстати прошел слух что в WinXP вообще не работает mmSystem...
Правда что ли? Или ето просто слух?


max1981   (2003-04-10 09:49:00) [7]

Интересный вопрос. Какую-то громкость и баланс можно менять с помощью mmSystem (Master или Wave - точно не помню). Возможно там есть возможность и с другой громкостью работать...
Если найдешь - пиши - самому интересно. :)


Думкин   (2003-04-10 09:40:00) [8]

WaveOutSetVolume - например.
MidiOutSetVolume.
В этом направлении. А еще
IDirectSoundBuffer
function SetVolume(lVolume: integer) : HResult; stdcall;
Тебе чего надо?


Opera   (2003-04-09 18:33:00) [9]

Правда никто не знает? А если кто может еще и регулировку баланса не подскажите???


Наверх

Титульная страница Поиск, карта сайта Написать письмо