![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
вообщем возникла такая проблема, моя прога воспроизводит звуки в формате wav в одном MediaPlayer, в другом у меня в это время играет фоновая музыка, и мне нужно, чтобы я смог регулировать громкость звуков и громкость музыки отдельно, при этом не затрагивая системную громкость.
даже лучше не регулировать, мне нужно чтобы звуки были громче, чем фоновая музыка раза так в 3. (зы везде советуют в какой нить муз.проге убавить изначальную громкость музыки - сразу говорю - такой вариант не катит) |
|
#2
|
||||
|
||||
|
Такой функции в стандартном MediaPlayer нету. Я бы задумался об использовании bass.dll...
|
|
#3
|
|||
|
|||
|
А в конфигурации динамиков линейный вход присутствует?
|
|
#4
|
|||
|
|||
|
Если в конфигурации динамиков есть линейный вход, то можно сделать это через него? Или все -таки надо использовать программу?
|
|
#5
|
|||
|
|||
|
Есть специальный аддон для этого.
|
|
#6
|
||||
|
||||
|
Я такую фишку уже делал. Там регуляция громкости привязана непосредственно к источнику звука, к проге-плееру. Код я нашёл в DelphiWorld. Только надо искать внимательно, там ещё описаны три-четыре способа, которые нам не подходят.
|
|
#7
|
||||
|
||||
|
Вот, нашёл код процедур, у меня работает безукоризненно.
Код:
uses MMSystem;
const
MCI_SETAUDIO = $0873;
MCI_DGV_SETAUDIO_VOLUME = $4002;
MCI_DGV_SETAUDIO_ITEM = $00800000;
MCI_DGV_SETAUDIO_VALUE = $01000000;
MCI_DGV_STATUS_VOLUME = $4019;
type
MCI_DGV_SETAUDIO_PARMS = record
dwCallback: DWORD;
dwItem: DWORD;
dwValue: DWORD;
dwOver: DWORD;
lpstrAlgorithm: PChar;
lpstrQuality: PChar;
end;
type
MCI_STATUS_PARMS = record
dwCallback: DWORD;
dwReturn: DWORD;
dwItem: DWORD;
dwTrack: DWORD;
end;
procedure SetMPVolume(MP: TMediaPlayer; Volume: Integer);
{ Volume: 0 - 1000 }
var
p: MCI_DGV_SETAUDIO_PARMS;
begin
{ Volume: 0 - 1000 }
p.dwCallback := 0;
p.dwItem := MCI_DGV_SETAUDIO_VOLUME;
p.dwValue := Volume;
p.dwOver := 0;
p.lpstrAlgorithm := nil;
p.lpstrQuality := nil;
mciSendCommand(MP.DeviceID, MCI_SETAUDIO,
MCI_DGV_SETAUDIO_VALUE or MCI_DGV_SETAUDIO_ITEM, Cardinal(@p));
end;
function GetMPVolume(MP: TMediaPlayer): Integer;
var p: MCI_STATUS_PARMS;
begin
p.dwCallback := 0;
p.dwItem := MCI_DGV_STATUS_VOLUME;
mciSendCommand(MP.DeviceID, MCI_STATUS, MCI_STATUS_ITEM, Cardinal(@p));
Result := p.dwReturn;
{ Volume: 0 - 1000 }
end; |