PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > Разработка программ

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2024, 00:40   #1
Lexx09
Старший Пользователь
 
Регистрация: 18.04.2009
Город: Краснодар
Регион: 23, 93
Машина: Приора хэтчбек
Сообщений: 979
Lexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud ofLexx09 has much to be proud of
По умолчанию AutomaticVolumeControl (автоматическая регулировка громкости приложений)

Давно пытаюсь разобраться с автоматической регулировкой громкости приложений...

Первая хотелка была такой – Снижение громкости iCarDS при появлении звука в BlueStacks. Восстановление громкости при пропадании звука.

Пытался решить всякими CheVolume, IndieVolume, VBCABLE и т.п., но получались какие-то сложные глючные костыли.

Потом наткнулся на AutomaticVolumeMixer. Первую хотелку она решала, но есть пара нюансов:
  1. В режиме, когда iCarDS запускается вместо оболочки (explorer), она не работает.
  2. Если едешь один, и накручиваешь громкость побольше, то навигатор и/или Mapcam тоже начинают громко пищать/орать. Снижение громкости BlueStacks в микшере приводит к тому, что ничего не слышно на небольшой громкости устройства вывода.
Поэтому появилась вторая хотелка – Фиксированная громкость BlueStacks при изменении громкости устройства вывода.

Поначалу я ковырялся в исходном коде AutomaticVolumeMixer, переделывал iCarDS на регулировку громкости самого DSPlayer, а не устройства вывода, и т.д. и т.п.

Но потом решил изобрести свой велосипед, который, недолго думая, обозвал AutomaticVolumeControl (скачать). Для работы требуется .NET Framework 4.8 + RUS Language Pack. Проверял на Win7, Win10.

Возможности приложения – это реализация мои хотелок.

Программа запускается свернутая в трей. Запуск программы настраивается самостоятельно. Настройки разворачиваются при двойном клике по иконке в трее, или при выборе соответствующего пункта меню иконки.

Настройки программы выглядят так:


Рис. 1. Настройки программы.

"Отслеживаемые процессы" – это процессы, за наличием звука в которых следит программа. При появлении звука в каком-либо из этих процессов запускается процедура снижения громкости всех процессов из таблицы "Процессы с изменяемой громкостью" в соответствии с параметрами "Коэффициент/громкость" и "Тип".

Типы:
  • RelativelyDevice – новая громкость задается относительно громкости устройства вывода, "Коэффициент/громкость" – это коэффициент, на который умножается громкость устройства вывода;
  • RelativelySelf – новая громкость задается относительно громкости самого себя, "Коэффициент/громкость" – это коэффициент, на который умножается текущая громкость самого процесса;
  • RelativelyFixed – новая громкость задается относительно минимальной громкости из таблицы "Процессы с фиксированной громкостью", "Коэффициент/громкость" – это коэффициент, на который умножается минимальная громкость из таблицы "Процессы с фиксированной громкостью";
  • Absolutely – абсолютная громкость, аналогична фиксированной, т.е. не зависящая от громкости устройства вывода, "Коэффициент/громкость" – это уровень абсолютной громкости при громкости устройства вывода более этого значения.

"Процессы с фиксированной громкостью" – это процессы, громкость которых не изменяется при превышении громкости устройства вывода заданного уровня. Если громкость устройства вывода меньше заданного уровня (фиксированной громкости), то громкость этого процесса равна громкости устройства. Если громкость устройства вывода больше заданного уровня (фиксированной громкости) – то громкость процесса не изменяется, т.е. остается зафиксированной.

Под таблицами расположены кнопки добавления/удаления процессов.

Другие параметры:
  • Пауза (мс) – длительность отсутствия звука в отслеживаемых процессах в мс, после которой начнется восстановление громкости процессов с изменяемой громкостью;
  • Кол-во шагов снижения громкости (по 100 мс) – кол-во 100-миллисекундных шагов снижения громкости при появлении звука;
  • Кол-во шагов восстановления громкости (по 100 мс) – кол-во 100-миллисекундных шагов восстановления громкости при отсутствии звука;
  • Коэффициент – о нём ниже.
В первом варианте программы все заработало, как надо, но столкнулся с тем, что при одинаковом уровне громкости приложения, но разном уровне громкости устройства вывода реальная громкость, ощущаемая ушами, почему-то значительно различается. Ранее я был уверен, что эта физическая громкость зависит только от громкости процесса.

Решил выяснить, насколько различается. Установил программу-шумомер на телефоне. Телефон расположил вблизи переднего динамика. В BlueStacks установил аудиоплеер и скопировал туда немного музыки.

В микшере Windows установил громкость устройства вывода и громкость BlueStacks одинаковой – 10%. Это мой комфортный уровень громкости BlueStacks, у каждого он будет другой. Включил музыку в BlueStacks. Шумомер показал среднее значение 68 дБ.


Рис. 2. Громкости устройства и BlueStacks – 10%. Физическая громкость – 68 дБ.

Далее установил громкость устройства вывода 100%, а громкость BlueStacks оставил той же – 10%. Шумомер показал среднее значение 81 дБ.


Рис. 3. Громкость устройства – 100%, BlueStacks – 10%. Физическая громкость – 81 дБ.

Разница громкости – 81-68=13 дБ. В переводе на понятный язык громкость увеличилась в 13/10*2=2,6 раз (т.к. увеличение на 10 дБ – это увеличение в 2 раза). Т.е. при уровне громкости устройства вывода 100% громкость BlueStacks должна быть 10/2,6=3,8%, чтобы на слух громкость была на том же уровне, когда громкость устройства 10%.

Т.о., помимо удержания/фиксирования громкости BlueStacks на одном уровне (10%) необходимо еще и дополнительно корректировать его громкость – при увеличении громкости устройства с 10% до 100% громкость BlueStacks должна пропорционально изменяться с 10% до 3,8%.

Для этой коррекции в настройки программы необходимо ввести коэффициент, рассчитываемый следующим образом:
Коэффициент = (УвеличениеГромкостиРаз-1)/(1-ГромкостьFixed) = (2,6-1)/(1-0,1) = 1,6/0,9 = 1,7778
, где:
  • УвеличениеГромкостиРаз – (81-68)/10*2 = 2,6;
  • ГромкостьFixed – фиксированная громкость BlueStacks. В моем случае это 10%, т.е. 0,1.
После такой дополнительной коррекции громкость BlueStacks фиксируется, но по ощущениям все равно становится совсем немного выше при максимальной громкости устройства вывода. Предполагаю, что на самом деле зависимость между физической громкостью и уровнем в микшере не линейная, а какая-нибудь логарифмическая, но решил пока с этим не заморачиваться.
__________________
Приора хэтчбек
Win7 x64 Pro, Intel Core i3-3240 Ivy Bridge 2x3.4GHz HT, DDR3 2x4Gb, SSD SiliconPower Ace A55 128GB SATAIII, ASRock B75M-ITX, M2-ITX rev.2F, GPS Beitian BN-808, Logitech Wireless Touch Keyboard K400r, ИК-пульт Prology RCD-350, круиз-контроль...

Последний раз редактировалось Lexx09; 05.03.2024 в 00:08.
Lexx09 вне форума   Ответить с цитированием
Ответ

Метки
bluestacks, icards, громкость, микшер


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 22:07.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot