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