Настройка звуковой системы Linux. Эквалайзер для Ubuntu 22.04 LTS Jammy Jellyfish - EasyEffects, PulseEffects, PulseAudio Equalizer. Скрипт управления звуком fsesound.
С приходом Ubuntu 22.04 LTS Jammy Jellyfish у нас появился новый эквалайзер для Ubuntu EasyEffects (ранее известный как PulseEffects, всё так же доступный к установке). Pulse Effects использовал звуковой сервер PulseAudio, Easy Effects работает со звуковом сервером PipeWire (после переноса в 2021 году и использует контейнеризацию flatpak).
Ubuntu в скором времени переходит на использование PipeWire, все приложения написанные под PulseAudio работают через прослойку pipewire-pulse.
PulseAudio Equalizer - старая песня о главном, пакет ставится, но не запускается! Поковырялся, дошёл до запуска qpaeq, интерфейса и настроек PulseAudio Equalizer нет, все разъяснения и установку на старые версии убрал в конец страницы.
Как установить эквалайзер Easy Effects
После установки запустите приложение, слева сверху предустановки эквалайзера, поиграйтесь, какой больше подходит к оборудованию, всё очень индивидуально, то что хорошо звучит у меня, может сильно отличаться. А справа будет кнопка вызывающая выпадалку в которой следует включить автозагрузку, setup.sh уже всё сделал, либо используйте скрипт fsesound.
При закрытии эквалайзер выключается, но после перезагрузки всё наладится, программа запустится в фоновом режиме.
# есть в setup.sh # Весит в районе 1Гб. sudo apt install -y unzip flatpak flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak install -y flathub com.github.wwmm.easyeffects # Запускаем для генерации конфигурации flatpak run com.github.wwmm.easyeffects # Завершаем flatpak kill com.github.wwmm.easyeffects # Добавляем предустановленные схемы эквализации # На всякий случай проверяем структуру каталогов mkdir -p ~/.var/app/com.github.wwmm.easyeffects/config/easyeffects/ wget -qP /tmp --show-progress https://fsen.ru/inc/doc/linux/soft/eepresets.zip unzip -uq /tmp/eepresets.zip -d ~/.var/app/com.github.wwmm.easyeffects/config/easyeffects/ rm -f /tmp/eepresets.zip # Добавим в автозагрузку с фоновым запуском mkdir -p ~/.config/autostart/ echo -e '[Desktop Entry]\nType=Application\nName=com.github.wwmm.easyeffects\nExec=/usr/bin/flatpak run --command=easyeffects com.github.wwmm.easyeffects --gapplication-service\nX-Flatpak=com.github.wwmm.easyeffects\nIcon=com.github.wwmm.easyeffects\nStartupNotify=false\nTerminal=false' > ~/.config/autostart/com.github.wwmm.easyeffects.desktop && chmod +x ~/.config/autostart/com.github.wwmm.easyeffects.desktop # K/Ubuntu-22.04 по умолчанию использует PulseAudio. Посмотреть что работает можно так: pactl info | grep '^Server Name' # Server Name: pulseaudio Включаем PipeWire! sudo add-apt-repository -y ppa:pipewire-debian/pipewire-upstream sudo apt update sudo apt upgrade -y sudo apt install -y pipewire sudo apt install -y gstreamer1.0-pipewire sudo apt install -y libspa-0.2-bluetooth sudo apt install -y libspa-0.2-jack # Disabling PulseAudio systemctl --user --now disable pulseaudio.{socket,service} systemctl --user mask pulseaudio # Created symlink /home/ac/.config/systemd/user/pulseaudio.service → /dev/null # Enabling PipeWire sudo cp -vRa /usr/share/pipewire /etc/ systemctl --user --now enable pipewire{,-pulse}.{socket,service} filter-chain.service # pactl info | grep '^Server Name' == Server Name: PulseAudio (on PipeWire 1.0.3) # Перезагружаем компьютер sudo reboot # Удалить flatpak uninstall -y --delete-data com.github.wwmm.easyeffects
→ Переходим к настройке программ
fsesound - консольный скрипт для регулировки уровня громкости, переключения звуковых схем 5.1 итд
Поскольку "яжпрограммист", написал свой консольный скрипт управления звуком в системе. Скрипт будет выполняться на стадии запуска системы, выставляя начальную громкость (предварительно убавляя громкость, дабы избежать "удара по ушам" в случае подключения звука сразу же, плюс это было сильно актуально во времена PulseAudio Equalizer, его приходилось включать и наблюдались артефакты в этот момент). Дополнительно борет проблему с отключением сабвуфера..
29.06.2023 скрипт дополнен и переписан с учётом скорой замены PulseAudio на PipeWire в Ubuntu. Разделён на два файла для большей производительности, в первом быстрые функции управления звуком, во втором редко вызываемые.
# есть в setup.sh # Установка u=https://fsen.ru/inc/doc/linux/;l=/usr/bin/;n=fsesound;sudo rm -f $l$n*;sudo wget -qP $l $u$n $u$n'f';sudo chmod +x $l$n* # Добавить в автозагрузку, задавать громкость 90% при загрузке ОС fsesound icon start 90 # Изменить громкость при загрузке ОС можно так же или sed -i 's/start.*/start 110/g' ~/.config/autostart/fsesound.desktopСкрипт принимает параметры:
- Что сделать
- Громкость или звуковая схема
- Карта или звуковая схема2
- Карта (all=применить ко всем)
- Опционально
Если не указана карта - берётся текущая по умолчанию Default. Можно указывать как по индексам: Card number = 0, 1, n; Serial id = 40, 43, nn. Так и по имени Creative, NVidia, HD-Audio (без учёта регистра HD-Audio = hd-audio).
# Показать звуковые карты в системе fsesound showcardsВозможные действия:
- showcards - Показать аудиокарты в системе, там же можно подсмотреть названия.
- up - Увеличить громкость.
- down - Уменьшить громкость.
- vol - Задать громкость.
- set - Задать звуковую схему.
- toggle - Переключить звуковую схему, первый или второй профиль.
- setpreset - Добавить автовключение и включить звуковую схему эквализации в Easy Effects.
- icon - Добавлять/удалять значки(иконки) в меню запуска приложений и в автозапуск.
- upmix - Перемешивать каналы для 5.1 схем. Включение решает проблему с нерабочим сабвуфером при 5.1 и прочих схемах на PulseAudio.
- start - Действия при запуске системы.
Сокращения звуковой схемы (профилей аудио)
s = Аналоговый стерео выход
ss = Аналоговый стерео дуплекс (Аналоговый стерео выход + Аналоговый стерео вход)
51s = Аналоговый объёмный 5.1 выход + Аналоговый стерео вход
Цифровые схемы HDMI: d|схема|номер устройства:
d = ds = Цифровой стерео/Digital Stereo (HDMI) выход
d2 = ds2 = Digital Stereo (HDMI 2) выход
d512 = Digital Front 5.1 (HDMI 2) выход
У HDMI номер порта всегда на 1 больше чем указано в схеме!
d2 = HDMI 2 = output:hdmi-stereo-extra1
Цифровые схемы IEC958
958 = Цифровой стерео (IEC958) выход
958m = Цифровой стерео (IEC958) выход + Аналоговый моно вход
958s = Цифровой стерео (IEC958) выход + Аналоговый стерео вход
Скрипт работает как конструктор, можете писать любые схемы, например:
91s - output:analog-surround-91+input:analog-stereo
Список аналоговых и цифровых схем
p # pro-audio # Pro Audio - режим PipeWire, в котором предоставляется прямой доступ к узлам ALSA, что позволяет определять такие свойства, как задержка и многое другое, с учетом профессионального использования, где низкая задержка чрезвычайно важна, студийных записей или других форм мониторинга аудио.
im # input:analog-mono # Аналоговый моно вход
is # input:analog-stereo # Аналоговый стерео вход
m # output:analog-mono # Аналоговый моно выход
mm # output:analog-mono+input:analog-mono # Аналоговый моно дуплекс
ms # output:analog-mono+input:analog-stereo # Аналоговый моно выход + Аналоговый стерео вход
s # output:analog-stereo # Аналоговый стерео выход
sm # output:analog-stereo+input:analog-mono # Аналоговый стерео выход + Аналоговый моно вход
ss # output:analog-stereo+input:analog-stereo # Аналоговый стерео дуплекс
21 # output:analog-surround-21 # Аналоговый объёмный 2.1 выход
21m # output:analog-surround-21+input:analog-mono # Аналоговый объёмный 2.1 выход + Аналоговый моно вход
21s # output:analog-surround-21+input:analog-stereo # Аналоговый объёмный 2.1 выход + Аналоговый стерео вход
40 # output:analog-surround-40 # Аналоговый объёмный 4.0 выход
40m # output:analog-surround-40+input:analog-mono # Аналоговый объёмный 4.0 выход + Аналоговый моно вход
40s # output:analog-surround-40+input:analog-stereo # Аналоговый объёмный 4.0 выход + Аналоговый стерео вход
41 # output:analog-surround-41 # Аналоговый объёмный 4.1 выход
41m # output:analog-surround-41+input:analog-mono # Аналоговый объёмный 4.1 выход + Аналоговый моно вход
41s # output:analog-surround-41+input:analog-stereo # Аналоговый объёмный 4.1 выход + Аналоговый стерео вход
50 # output:analog-surround-50 # Аналоговый объёмный 5.0 выход
50m # output:analog-surround-50+input:analog-mono # Аналоговый объёмный 5.0 выход + Аналоговый моно вход
50s # output:analog-surround-50+input:analog-stereo # Аналоговый объёмный 5.0 выход + Аналоговый стерео вход
51 # output:analog-surround-51 # Аналоговый объёмный 5.1 выход
51m # output:analog-surround-51+input:analog-mono # Аналоговый объёмный 5.1 выход + Аналоговый моно вход
51s # output:analog-surround-51+input:analog-stereo # Аналоговый объёмный 5.1 выход + Аналоговый стерео вход
71 # output:analog-surround-71 # Analog Surround 7.1 выход
71m # output:analog-surround-71+input:analog-mono # Analog Surround 7.1 выход + Аналоговый моно вход
71s # output:analog-surround-71+input:analog-stereo # Analog Surround 7.1 выход + Аналоговый стерео вход
958 # output:iec958-stereo # Цифровой стерео (IEC958) выход
958m # output:iec958-stereo+input:analog-mono # Цифровой стерео (IEC958) выход + Аналоговый моно вход
958s # output:iec958-stereo+input:analog-stereo # Цифровой стерео (IEC958) выход + Аналоговый стерео вход
d # output:hdmi-stereo # Digital Stereo (HDMI) Output
d4 # output:hdmi-stereo-extra3 # Digital Stereo (HDMI 4) Output
ds # = d оставлено для совместимости с прошлой версией
ds4 # = d4
d51 # output:hdmi-surround # Digital Surround 5.1 (HDMI) Output
d517 # output:hdmi-surround-extra6 # Digital Surround 5.1 (HDMI 7) Output
d71 # output:hdmi-surround71 # Digital Surround 7.1 (HDMI) Output
d715 # output:hdmi-surround71-extra4 # Digital Surround 7.1 (HDMI 5) Output
Громкость принимает значение в процентах (и тут всё просто 0 - 100%) или значение 0 - 65535 (100%) [78642 - 120% — усиление]. т.е. если задать 1200 это будет 1200/65535*100=1,98.. ~2%
Примеры использования:
# Показать звуковые карты в системе fsesound showcards
# Увеличить громкость fsesound up 2% # берёт карту по умолчанию # /usr/bin/fsesound up 2% fsesound up 2% 1 # 0,1,2.. номер звуковой карты fsesound up 2% all fsesound up 2% creative fsesound up 2% "HD-Audio" # Аналогично: # down - понизить громкость # vol - задать уровень громкости, знак с какой стороны - без разницы fsesound vol 2% fsesound vol 2%+ fsesound vol +2%
# Задать звуковую схему fsesound set 51s fsesound set s 1 fsesound set s all fsesound set ss HD-Audio # Можно задавать 2 схемы "или или", для разных устройств fsesound set "ss ds2" all
# Переключить звуковую схему (по кругу, или или) fsesound toggle ss 51s fsesound toggle ss 51s 1 fsesound toggle ss 51s all fsesound toggle d2 p "HDA NVidia" fsesound toggle "ss d2" "51s p" all
# Включить звуковую схему эквализации Easy Effects 1) Preset: название предустановкои персета, смотрите в Easy Effects. 2) Card: 1 or 'byname' or all. Если не указана карта или all, применяется ко всем найденным профилям звуковых карт. 3) Profile: analog-stereo, analog-surround-21, analog-surround-40, analog-surround-41, analog-surround-50, analog-surround-51, analog-surround-71, iec958-stereo (958), hdmi-stereo, hdmi-surround (это 51), hdmi-surround71 (смотрите Profiles: в fsesound showcards). Если не указан, применяется ко всем найденным профилям звуковой карты. 4) Port output: analog-output-lineout, analog-output-headphones, hdmi-output-1 (смотрите Outputs: в fsesound showcards). Если не указан, применяется ко всем найденным выходам звуковой карты. fsesound setpreset 'fsen.ru Sony MDR-EX15LP' 'HD-Audio' 'analog-stereo' 'analog-output-lineout' fsesound setpreset 'fsen.ru Sennheiser HD 280 PRO' 'HD-Audio' 'analog-stereo' 'analog-output-lineout' fsesound setpreset 'fsen.ru Axelvox HD272' 'HD-Audio' 'analog-stereo' 'analog-output-lineout' # Можно сокращать fsesound setpreset 'fsen.ru Sony MDR-EX15LP' 'all' 'stereo' 'line' # Так же можно использовать сокращения звуковой схемы (профилей аудио) fsesound setpreset 'fsen.ru Sony MDR-EX15LP' 'all' 's' # Применить схему для всех звуковых карт и их профилей и выходов fsesound setpreset 'fsen.ru Sony MDR-EX15LP'
# Создать иконку(ярлык) в меню запуска приложений (Пуск) в раздел Мультимедиа # fsesound icon filename Name command # Включение схем эквализации Easy Effects fsesound icon soundsony 'Sound Sony MDR-EX15LP' "setpreset 'fsen.ru Sony MDR-EX15LP' 'HD-Audio' 'analog-stereo' 'analog-output-lineout'" fsesound icon soundsennheiser 'Sound Sennheiser HD 280 PRO' "setpreset 'fsen.ru Sennheiser HD 280 PRO' 'HD-Audio' 'analog-stereo' 'analog-output-lineout'" fsesound icon soundaxelvox 'Sound Axelvox HD272' "setpreset 'fsen.ru Axelvox HD272' 'HD-Audio' 'analog-stereo' 'analog-output-lineout'" # Переключения с 5.1 на стерео fsesound icon soundtoggle 'Sound Toggle: Stereo - Surround 5.1' 'toggle ss 51s "HD Audio"' # Удалить иконки fsesound icon soundsony fsesound icon soundsennheiser fsesound icon soundaxelvox fsesound icon soundtoggle # Не стал делать перезапуск оболочки KDE для применения значков, либо на перезагрузку, либо выждите - обновление пройдёт в системе, либо скрипт отдельно запустите: rm -f /tmp/kdeup.sh; wget -qP /tmp https://fsen.ru/inc/doc/linux/kdeup.sh; chmod +x /tmp/kdeup.sh; /tmp/kdeup.sh
# Добавить в автозагрузку, задавать громкость 90% fsesound icon start 90 # Изменить громкость при загрузке ОС можно так же или sed -i 's/start.*/start 110/g' ~/.config/autostart/fsesound.desktop # Удалить из автозагрузки fsesound icon start
# Добавить Easy Effects в автозагрузку fsesound icon starteasyeffects 1 # Удалить Easy Effects из автозагрузки fsesound icon starteasyeffects
# Перемешивать каналы для 5.1 схем (в PulseAudo и сабвуфер так же, иначе не работает. PipeWire в режиме стерео подмешивает на все колонки и сабвуфер работает, даже схему переключать не нужно для прослушивания музыки). fsesound upmix 1 = fsesound upmix on fsesound upmix 0 = fsesound upmix off = fsesound upmix # Перезагружаем компьютер sudo reboot
Включить линейный вход звуковой карты Linux
Захотел услышать линейный вход (микрофонный так же), но по какой-то причине GNOME ALSA Mixer не включает Loopback Mixing.
Решение: запустить (отдельную, не в Dolphin) консоль написать alsamixer нажать F3 выбрать канал (стрелками влево вправо) и включить его (вверх вниз), заранее уберите уровни Line и Line Boost в 0 чтоб не оглохнуть.. Далее уже можно будет управлять из графического режима.
Если не работает сабвуфер
Дело в том, что в настройках pulse какие-то мутки с этим - канал lfe по умолчанию выключен. Подробнее гуглите man pulse-daemon. Смысл в подмешивании канала в другие, когда стерео положительно на звук влияет.
# есть в setup.sh # enable-lfe-remixing = yes # Deprecated option echo -e 'remixing-produce-lfe = yes\nremixing-consume-lfe = yes' | sudo tee -a /etc/pulse/daemon.conf
Ещё бывает сабвуфер залипает и не включается при переключении на 5.1, просто погоняйте бегунки канала в микшере, у меня при изменении любого рабочего канала Front, Surround итп отлагивается, но Front будет на каждой схеме.. (fsesound всё это делает за нас на автомате.)
Отключаем всплывающее окно при изменении громкости (Plasma volume OSD)
В следующей версии KDE в настройках plasma-volume-control (значок динамика в трее) будет галочка отключающая OSD окно при изменении громкости, а пока решим этот вопрос изменив скрипт..
Параметры системы → Поведение рабочей среды → Основные параметры → Показывать уведомления при регулировке устройств
# есть в setup.sh kwriteconfig5 --file plasmaparc --group General --key VolumeOsd --type bool false # До Ubuntu 22.04 это делалось так kwriteconfig5 --file plasmarc --group OSD --key Enabled --type bool false
Уже не актуально... Ещё есть kmix - замена этого плагина (plasma-volume-control). Скажем так - это старая разработка, но не хуже, может даже лучше местами.. Стоит заметить: при переключении на схему 5.1 plasma-volume-control теряется, показывает неточные данные о громкости.. Мне это не мешает, но посмотрим, может kmix поставлю..
Что делать если в Linux пропал звук
Такое случалось при обновлении системы, иногда начинались проблемы завала в хрип. Лечиться традиционно удалением конфигов, остальные методы могут высадить много времени, но не решить проблему.. Сделайте поправочку (удалите) на отсутствие PulseAudio Equalizer.. Таких проблем не встречал последние несколько лет. (Контроллер громкости плазмы plasma-pa.)
sudo apt update sudo apt upgrade -y pulseaudio -k sudo apt purge -y pulseaudio pulseaudio-equalizer-ladspa swh-plugins rm -rf ~/.config/pulse sudo rm -rf /etc/pulse /usr/share/pulseaudio /usr/share/pulseaudio-equalizer sudo apt install -y pulseaudio plasma-pa pulseaudio-equalizer-ladspa swh-plugins # enable-lfe-remixing = yes # Deprecated option echo -e 'remixing-produce-lfe = yes\nremixing-consume-lfe = yes' | sudo tee -a /etc/pulse/daemon.conf mkdir -p ~/.config/pulse/presets/ echo -e 'mbeq_1197\nmbeq\nMultiband EQ\n1.0\nLaptop\n1\n0\n-30\n30\n15\n-1.0\n-1.0\n-1.0\n-1.0\n-5.0\n-10.0\n-18.0\n-15.0\n-10.0\n-5.0\n-5.0\n-5.0\n-5.0\n0.0\n0.0\n50\n100\n156\n220\n311\n440\n622\n880\n1250\n1750\n2500\n3500\n5000\n10000\n20000' > ~/.config/pulse/equalizerrc echo '' > ~/.config/pulse/presets/*.preset sudo sed -i 's/osd.show(percent)/\/\/osd.show(percent)/g' /usr/share/plasma/plasmoids/org.kde.plasma.volume/contents/ui/main.qml pulseaudio --start pulseaudio-equalizer enable
Уходим на перезагрузку и не забываем эквалайзер поднять: Параметры системы → Мультимедиа → Звук и видео (подробнее см. выше)
Подразумеваю, что данный код можно уложить в bash repulse.sh скрипт и запустите (внутри не нужен echo -e просто echo) (первая строка #!/bin/bash и не забудьте сделать выполняемым)..
Если щелчки, булькает или хрипит звук Linux
Хочется отметить, что разработчики материнских плат не очень качественно подходят к фильтрации питания, что может проявляться как периодические щелчки, бульканья или хрип в звуке Linux или даже постоянным небольшим шипением реагирующим на перепады скажем на видеокарте.
Скорее всего это функции энергосбережения процессора, происходят постоянные скачки мощности, что и вызывает помехи. Это легко побороть в БИОСе компьютера (во время загрузки щёлкайте клавишу del), затем ищите где настройки процессора и отключайте C6 state, C1 state итп. Они примерно так называются в зависимости от производителя процессора.. Так же я словил проблему с тем, что зачем-то обновил BIOS, в нём исчез волшебный пункт C6 state и стало по новому, а обратно утилита не даёт откатить BIOS - гады подумал я, и вот методы решения:
0) Загрузитесь из под установочной флешки/диска, выполните проверку дисков на ошибки (в диспетчере разделов).
1) Переустанавливаем полностью pulse вместе с конфигами см. выше.
2) Обновите ядро системы, поскольку присутсвует взаимосвязь и ядро может некорректно функционировать по какой-то причине с железом, можно воспользоваться Ukuu (Ubuntu Kernel Upgrade Utility). И повторяем пункт 1, а может и нет.
sudo apt-add-repository -y ppa:teejee2008/ppa sudo apt install ukuu # Проверить используемое ядро uname -r
3) Возможно проблема с режимом звуковой карты, выполним и уйдём на перезагрузку.
sudo sed -i 's/defaults.pcm.dmix.rate 48000/defaults.pcm.dmix.rate 44100/g' /usr/share/alsa/alsa.conf sudo sed -i 's/; resample-method = speex-float-1/resample-method = copy/g' /etc/pulse/daemon.conf sudo sed -i 's/; default-sample-format = s16le/default-sample-format = s32le/g' /etc/pulse/daemon.conf sudo sed -i 's/; default-sample-rate = 44100/default-sample-rate = 44100/g' /etc/pulse/daemon.conf sudo sed -i 's/; alternate-sample-rate = 48000/alternate-sample-rate = 44100/g' /etc/pulse/daemon.conf
4) Всё ещё проблемы? Вот это уже не хорошо.. Попробовать под Windows, если артефактов нет, виновато ядро, по каким-то причинам некорректно работающее с железом. Если через время от включения компьютера артефакты пропадают, то скорее всего где-то железная проблема, конденсаторы могут так себя вести, здесь уже более радикальное решение может быть вплоть до замены/ремонта материнской платы, видеокарты итп., лучше начать исключать периферию первой, по возможности.
5) Написать производителю материнской платы и подробно описать всё: какие артефакты, какая система, что делали. Возможно ждать нового ядра Linux, новой прошивки BIOS, поиграться с настройками в БИОС, раз на раз может повезти и больше не заходить туда..
В моём случае после обновления БИОС появилась какая-то обратная связь (помехи проходить стали) материнской платы с PCI слотом в котором старая карточкой Creative X-Fi Elite Pro. Виновником проброса щелчков оказалась сама звуковая карта - давала в систему и на встроенную звуковую карточку проходило. Конденсаторы на старой все менял, так что там уже что-то другое, видимо время пришло. Переключился на встроенный Realtek ALC892, на материнской плате стоят модные конденсаторы в тракте и в целом обещали крутой звук и знаете, действительно, встроенный звук шагнул далеко вперёд, не думаю что буду ещё покупать внешние звуковые. Заметил что слышу дополнительные звуки не воспроизводимые старой звуковой. А вот запаса по громкости не хватает - слабее раза в 2-3, полностью раскачать студийные наушники не может, буду паять усилитель для наушников. В любом случае молодцы!