![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с установкой громкости [D5, WinXP]
Deus © (2002-09-16 23:32:00)Всем привет.
Для регулировки громкости использую компоненту TAudioMixer.
Код могу привести, но он довольно громоздок.
Проблема такова:
Если баланс установлен не по центру, то при регулировке громкости баланс начинает изменяться, пока не станет по центру.
Это происходит из-за того, что при разной величине громкости, но одинаковом балансе разница между значениями громкости каналов разная. Т.е. когда громкость L=10585, R=19923, разница=-9338. А когда L=32768, R=65535, разница=-32767.
При этом значение баланса одинаковое!
Как это побороть? Можно конечно вывести формулу зависимости, но как то это криво....
Deus (2002-09-18 15:30:00) [1]Ура! Решил проблему.
Если кому интересно:
ПЕРЕД изменением громкости получаю значение громкости каждого канала. Если один больше другого => баланс не по центру. Высчитываю процентное соотношение между каналами; Изменяю громкость канала, у которого значение было больше; В соответствии с процентым соотношением высчитываю громкость другого канала. Всё.
Deus (2002-09-18 13:35:00) [2]Это понятно. Проблема в том, что нужно иметь возможность регулировать все возможные каналы, а не только wave/cd/midi.
Это делается через mixerSetControlDetails. Всё регулируется ОК, проблема только с балансом.
Кстати, стандартный виндовый регулятор громкости юзает именно mixerSetControlDetails. И у него тажа проблема: если при неровном балансе и установке громкости в 0 регулятор закрыть, а потом открыть, то баланс станет ровным!
Но при простой регулировке громкости он правильно корректирует громкость каналов. Вопрос - как?
AlexT1000 (2002-09-18 12:20:00) [3]может тебе использовать.
waveOutSetVolume(0,$FFFF);
функция Windows API.
$FF - правый канал от 0 до 255
FF - левый канал от 0 до 255
OldVolume : dword;
waveOutGetVolume(0,@OldVolume);
получить громкость