🎙 Beamforming микрофона на Linux — работает!
Продолжаю заводить фичи из Windows, на ASUS UX3405MA есть кнопка «угол микрофона» — нажимаешь и переключается направление захвата звука. В Linux ну вы поняли :)
Техничка: В UX3405MA стоит массив из двух цифровых микрофонов (DMIC) сверху крышки, где вебка (алелуя, догадались не слушать кулера!). Обрабатываются они через Intel SOF (Sound Open Firmware) — DSP. SOF содержит компонент TDFB (Time-Domain Fixed Beamformer) — он математически комбинирует сигналы обоих микрофонов и виртуально фокусирует захват в нужном направлении. Всего 13 углов от -90° до +90° с шагом 15°, но нам нужен просто 0° то есть прямо перед ним.
Понять, есть ли фича у меня получилось так:amixer -D hw:sofhdadsp controls | grep -i tdfb
Если видите Dmic0 Capture TDFB beam switch и Dmic0 Capture TDFB angle set enum — всё есть.
Включить/выключить формирование луча:
amixer -D hw:sofhdadsp sset "Dmic0 Capture TDFB beam switch" on ИЛИ off
amixer -D hw:sofhdadsp sset "Dmic0 Capture TDFB angle set enum" "0"Эффект виден сразу на визуализаторе звука (видео :)
Ещё нашёл встроенный компрессор микрофона там же!amixer -D hw:sofhdadsp sset "Dmic0 Capture DRC switch" on ИЛИ off
Что ещё и "поднимает" звук со дна
Ну и для завершённости - лампочка на кнопка beamforming шлёт XF86Launch5 (это для Niri), а так в Gnome горячих кастом сделал. А вот LED нашёл банальным перебором в /sys/kernel/debug/asus-nb-wmi/ по dev_id пока лампочка не моргнула. Оказался 262171.
Итог — скрипт-тоглер: включает TDFB + DRC компрессию и лампочку по нажатию кнопки:
👉 Gist со скриптом
@toxblh_linux