Проблема
Я слушаю музыку в наушниках. Иногда звук становится паршивым. Я долго пытался понять, в чем дело. Потом разобрался: если наушники установлены как микрофон в macos, то звук становится плохим. Даже если сходить и переключить звук «входа» на нормальный микрофон, иногда он слетает обратно.

Решение
Чтобы звук снова стал нормальным, надо выбрать другой микрофон — «микрофон Macbook» или «внешний микрофон», если у вас он подключён.
Проблема в том, что макбук сам решает, когда их переключать. Вы не узнаете, когда он это сделает. Вручную ходить переключать — это дурной тон.
Автоматизация решения
Поражаюсь, что в маленькой инди-компании не додумались сделать кнопку: «Микрофон по-умолчнанию». Это бы всё решило.
Этой кнопки нет, придётся решать иначе. Будем делать это через программу Hammerspoon.
1. Скачиваем программу HammerSpoon. Скачается архив, его распаковываем и устанавливаем программу. Вам нужно будет дать ей разрешения, запускать при включении компьютера. Если вы пользователь Macos, должны знать как это делается.
2. Вставляем в терминал команду. Она создаст и откроет файл init.lua
для программы.
mkdir -p ~/.hammerspoon && touch ~/.hammerspoon/init.lua && open ~/.hammerspoon/init.lua
3. Откроется программа-редактор с пустым содержанием. Туда надо вставить код ниже. В самом начале файла есть указание микрофона. Измените название с «Микрофон MacBook Pro» на другой. Или добавьте свой.
-- Список разрешённых микрофонов
local preferredMics = {
["Микрофон MacBook Pro"] = true
}
-- Функция, переключающая вход
local function fixInput()
local currentInput = hs.audiodevice.defaultInputDevice():name()
print("Текущий микрофон: " .. currentInput)
if not preferredMics[currentInput] then
for _, device in ipairs(hs.audiodevice.allInputDevices()) do
if preferredMics[device:name()] then
device:setDefaultInputDevice()
print("Переключено на: " .. device:name())
return
end
end
print("❌ Нет подходящего микрофона среди доступных.")
else
print("✅ Микрофон уже правильный.")
end
end
-- Создаём watcher и запускаем
local watcher = hs.audiodevice.watcher
watcher.setCallback(function()
hs.timer.doAfter(1, fixInput)
end)
watcher.start()
print("🎙️ Hammerspoon следит за микрофоном!")
4. Сохраните файл и нажмите в Hammerspoon в верхнем меню Reload config

Готово. Теперь если макбук переключит микрофон на наушники и у вас изменится качество звука, программа это заметит и переключит микрофон на нужный.
Если будут вопросы — пишите. Помогу, чем смогу.