![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как управлять балансом звука из моей программы [D5, WinXP]
AlexLine © (2004-11-09 16:58:00)Уважаемые знатоки. Как управлять балансом звука из программы?
Заранее благодарю
Александр
programania (2004-11-09 21:01:00) [1]
Vol:record
case Integer of
0: (LongVolume: Longint);
1: (LeftVolume,
RightVolume : Word);
end;
PROCEDURE volIni;
var
WaveOutCaps : TWaveOutCaps;
I : Integer;
begin
FDevice:= -1;
for I := 0 to waveOutGetNumDevs - 1 do begin
waveOutGetDevCaps(I, @WaveOutCaps, SizeOf(WaveOutCaps));
if (WaveOutCaps.dwSupport and WAVECAPS_VOLUME) <> 0 then begin
FDevice := I; break;
end;
end;
end;
PROCEDURE setVolume(Volume,balans:integer);
//balans=-100..+100 0=одинаково
//volume=0..255;
begin
if FDevice>=0 then begin
Vol.LeftVolume := Volume shl 8* (100+balans) div 100;
Vol.RightVolume :=Volume shl 8* (100-balans) div 100;
waveOutSetVolume(FDevice, Vol.LongVolume);
end;
end;
FUNCTION getVolume: Byte;
begin
if FDevice>=0 then begin
waveOutGetVolume(FDevice, @Vol.LongVolume);
result := (Vol.LeftVolume + Vol.RightVolume) shr 9;
end
else result:=0;
end;
Хотя я управляю через BASS:
BASS_ChannelSetAttributes(chan,-1,-100,pan);