У меня есть хобби — написание музыки. Поэтому после установки свежей версии Ubuntu на свой ноутбук мне понадобилось настроить звук чуть более тонко, чем обычным пользователям. К моему сожалению, сделать это у меня не вышло. Тем не менее, я хочу рассказать о шагах, которые немного приблизили меня к результату. Я надеюсь, что кому-то это сэкономит время. А может, с помощью читателей я смогу пройти дальше. Если вы пользуетесь Linux и можете произнести слова sidechain и компрессия в одном осмысленном предложении — Добро пожаловать!



Кратко


Для начала более подробно о сути задачи: есть ноутбук Asus N55 с Kubuntu 17.10 на борту. Нужно добиться той же конфигурации, которую можно получить на Windows:


Конфигурация
  • Без подключения сабвуфера драйвер работает в режиме 2.0
  • При подключении сабвуфера драйвер переключается в режим 2.1. При этом переключении к каналам применяются частотные фильтры — НЧ для сабвуфера и ВЧ для колонок
  • При подключении наушников, вывод звука переключается на них, вывод на колонки/сабвуфер приостанавливается
  • При необходимости низких задержек можно с помощью выбора другого драйвера перейти в режим, обеспечивающий монопольный захват звуковой карты

Сразу после установки получаем нерабочий сабвуфер и нерабочие наушники.
В результате моих опытов мне удалось добиться следующего состояния системы:


  • Драйвер работает в режиме 2.1
  • При подключении сабвуфера ничего не изменяется
  • При подключении наушников, вывод звука переключается на них, вывод на колонки/сабвуфер приостанавливается, но фильтры продолжают работать и в наушники идут только ВЧ
  • При необходимости низких задержек можно адресоваться к карте через ALSA, но в этом режиме не работает сабвуфер, фильтры. Но работает переключение на наушники

Для знакомства с LMMS(с которой как оказалось нормально работать нельзя, но это отдельная тема) этого в общем-то хватает.
Если вы тоже добрались до этого состояния, то ничего нового этой статьей я вам не расскажу.


Обзор


Вы когда-нибудь задумывались о том, как устроена звуковая система Linux? Вот и я нет — обычно звук либо был не нужен, либо как-то работал, колонки играли — ни о каких фокусах подключения сабвуфера или наушников речи не было.
Похоже, теперь самое время узнать об этом немного больше. Гугление показало следующую картину:



  • ALSA — это компонент, обеспечивающий взаимодействие звуковых железок с ядром. Обеспечивает самый прямой доступ к устройству из разумных вариантов, но при этом доступ этот монопольный — включить песню в VLC и открыть видео в браузере, увы, не получится.
  • Для этих целей как раз и нужен PulseAudio — это sound-сервер, занимающийся маршрутизацией звуковых потоков. Именно он будет отвечать за микширование потоков звука из разных приложений при одновременном использовании. Ценой за такое удобство является дополнительная задержка звукового потока.
  • Существует еще JACK — аналог PulseAudio, позиционирующийся как "профессиональный" sound-сервер. Обещает крутые возможности по маршрутизации и минимальную задержку при диспетчеризации потоков.

Мысль первая: удаляем PulseAudio — ставим JACK


Мало кто говорит, что PulseAudio де-факто является стандартом для интеграции звука, по крайней мере в Ubuntu. Практически любой софт, который издает звуки, будет с большой долей вероятности пользоваться PulseAudio API. FF, например, для поддержки JACK надо отдельно собирать.
Поэтому удалять PulseAudio не стоит, если вы не уверены, что все чем вы будете пользоваться, умеет работать с JACK. Видимо, поэтому существует еще вариант интеграции Jack-PulseAudio. Но от этого варианта я отказался, т.к. для работы в том софте, где требуются низкие задержки, меня устраивает монопольный доступ через ALSA(под Windows это работает так же — там, где нужна низкая задержка, запрашивается монопольный доступ). Возможно, когда дело дойдет до установки какого-нибудь Ardour, мне придется вернуться к этому варианту.


Мысль вторая: ALSA и PulseAudio надо настраивать


Так, ну хорошо, JACK не нужен. Выходит, чтобы все заработало, мне надо настроить ALSA-компонент для своей карточки и интеграцию его с PulseAudio


PulseAudio


Тут нам из коробки предлагают вот такую UI консоль



Мне кажется, к такому инструменту пояснения излишни. После применения настроек вы сразу сможете слышать изменения, так что пробуйте.
Еще amarao советует обратить внимание на pactl /pacmd. Если я доберусь — напишу, что там к чему с этими утилитами


Диагностика ALSA


Первым делом понадобятся хоть какие-то инструменты для диагностики — это пакет alsa-utils
sudo apt install alsa-utils
Теперь посмотрим, как видит наше оборудование система
aplay -l



Кроме того, настройки надо проверять. Для этих целей обнаружилась утилита speaker-test



вызов speaker-test --help покажет, что умеет утилита, но мне особенно интересна конфигурация
speaker-test -Dplughw:1,0 -c4


  • -D — id устройства. 1,0 — это индексы устройства и подустройства, их мы видели выше в выводе aplay
    а вот структура текстовой части описана тут
  • -c — количество каналов на которые будет выведен тест
    В моем случае первые 2 канала работают хорошо, а вот дальше интересно — 3й канал LFO не звучит, но зато звучит 4й канал. Такое ощущение, что LFO настроен как… стерео?.. Мне кажется, это часть моей проблемы.


Настройка ALSA


Тут и тут советуют поизучать dmix — это модуль микшера каналов в ALSA — буду смотреть


alsamixer


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



Но настройка в микшере результата не дала.


hdajacksensetest


Следующая полезная утилита — hdajacksensetest. Показывает какие разъемы детектируют подключение внешних устройств.



Ок, я вижу, что мой внешний сабвуфер подключен на порт 0x1a.
Давайте попробуем найти как можно объяснить карте, куда выводить LFO.


hdajackretask


Большинство советов по настройке маппинга указывают на утилиту hdajackretask:



Тут вроде бы все понятно — есть порты, есть маппинг. К сожалению, никакие манипуляции с портом 0x1a к успеху не привели.
Может, после настройки надо явно перезагружать сервисы?
sudo alsa force-reload
Нет, смотрим дальше.


HDAAnalyzer


Для настройки маппинга есть еще одна утилита:
скачать ее можно в виде python-скрипта(!!!) вот тут.



Выглядит эта штука как прокачанный вариант hdajackretask — она даже умеет строить схему маршрутизации портов графически. Но эксперименты с этой штукой тоже не привели ни к чему, кроме полной потери звука.
Никакого гайда по настройке я не нашел, поэтому пробовал методом проб и ошибок.


Правка конфигов


Других утилит, способных помочь в настройке звука я не обнаружил. Остается попробовать только одно — искать и править конфиги. С помощью гугла и find, мне удалось обнаружить несколько локаций.


PulseAudio


/usr/share/pulseaudio
в папке alsa-mixer тут лежат конфиги. Т.к. Pulseaudio более-менее работает тут я ничего трогать не стал.
/etc/pulse/daemon.conf
Как я понял, это настройки службы pulseaudio — один из немногих конфигов, изменения в котором на что-то влияют. именно тут настройками:
enable-lfe-remixing = yes
lfe-crossover-freq = 200
я заставил звучать свой сабвуфер из Pulseaudio так, как он должен. Для lfe-crossover-freq 200 — это очевидно частота среза в герцах.
Но тут же становится очевидно, что настроить нечто более сложное(при подключении наушников прекращать отправлять бас на сабвуфер) в этом конфиге возможности нет.


ALSA


/usr/share/alsa/*
Тут лежит несколько shell-скриптов, в т.ч. alsa-info.sh, который может быть полезен при подготовке дефекта в трекере и т.д.
а в папке pcm какие-то конфиги, разобраться в которых мне не удалось:


Пример конфига: center_lfe.conf
pcm.!center_lfe {
        @args [ CARD DEV ]
        @args.CARD {
                type string
                default {
                        @func getenv
                        vars [
                                ALSA_CENTER_LFE_CARD
                                ALSA_PCM_CARD
                                ALSA_CARD
                        ]
                        default {
                                @func refer
                                name defaults.pcm.center_lfe.card
                        }
                }
        }
        @args.DEV {
                type integer
                default {
                        @func igetenv
                        vars [
                                ALSA_CENTER_LFE_DEVICE
                        ]
                        default {
                                @func refer
                                name defaults.pcm.center_lfe.device
                        }
                }
        }
        type empty
        slave.pcm {
                @func refer
                name {
                        @func concat
                        strings [
                                "cards."
                                {
                                        @func card_driver
                                        card $CARD
                                }
                                ".pcm.center_lfe." $DEV ":CARD=" $CARD
                        ]
                }
        }
        hint {
                show {
                        @func refer
                        name defaults.namehint.basic
                }
                description "Center and Subwoofer speakers"
                device $DEV
        }
}

Трогать их я пока не решился.
/etc/modprobe.d/alsa-base.conf — второй доказанно полезный конфиг. Вот эта строчка, дописанная в низ конфига, реально заставила работать наушники под ALSA:
options snd-hda-intel model=auto,auto probe_mask=1
Про настройку этого конфига написано довольно много. Одна из его целей, как я понял — сопоставить устройствам кодеки(model). Кодеки это… какой-то пресет маппингов… Есть табличка (копия есть тут). Думаю, в большинстве случаев для стандартных конфигураций этого действительно достаточно.
Там описаны модели для разных контроллеров. Но если для вас они не срабатывают, то вам рекомендуют добавить свою конфигурацию.
Звучит классно, но тут я должен сделать 2 ремарки:


  • гайда как сделать свою конфигурацию — что конфигурить, куда сохранять, коммитить и т.д. я не нашел.
  • После изменения настроек в alsa-base.conf нужно перезагружать ОС. Без перезагрузки никакие sudo alsa force-reload и даже хардкорный echo 1 | sudo tee /sys/class/sound/hwC1D0/reconfig не заставляют ALSA перечитать кодек устройства.

Кстати, в /sys/class/sound/hwC1D0/ — лежат файлы уже непосредственно устройства, т.е. как я понял hdajackretask работает именно с этими файлами. Тут тоже, наверное, можно сделать что-то полезное, если знать куда что писать.


Выводы


На этом у меня все. После правок в daemon.conf и alsa-base.conf, я получил результат, описанный в начале. Это все, чем я мог помочь вам в деле настройки звука под Ubuntu.
Большинство приведенной тут информации я получил здесь и документации ALSA на Arch Linux.
Как я и говорил, после проделанной работы появляется больше вопросов, чем ответов:


  • как так pulseaudio нормально работает с сабвуфером, а ALSA нет???
  • какие все-таки конфиги надо править для правки маппинга портов??
  • как оформить вот свою модель HD-Audio???
  • насколько ALSA эффективна по сравнению с аналогами в других ОС? подходит ли она вообще для работы со звуком?

Общий вывод, который я могу сделать по результатам проделанной работы: в целом видно, что если GUI, например, сообщество более-менее занимается, то звуковая подсистема явно остается за бортом.
На сегодняшний день возможности использования этой подсистемы не выдерживают никакой конкуренции с аналогами в других популярных ОС.
Такие досадные проблемы, как неработающий сабвуфер или наушники, или отсутствие НЧ-фильтра для сабвуфера, заставляют еще раз подумать, прежде чем отказываться от предустановленного софта. Ведь никому не хочется получать от своей железки меньше отдачи из-за кривостей ОС.


з.ы. Если есть еще какие-то инструменты, мануалы, про которые полезно знать при настройке звука — пишите, я добавлю их в статью
з.з.ы. По поводу своей конкретной проблемы я завел тикет, владельцы Asus N55 — велкам:
https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1733029

Комментарии (44)


  1. VioletGiraffe
    02.12.2017 20:10

    А как вы добились описанного в начале статьи поведения на Windows? Мне даже не нужно переключать конфигурацию каналов. Просто поканальный вывод с фильтрами я смог сделать только очень замороченным способом, у которого есть нежелательные побочные эффекты.


    1. Jorixxx Автор
      02.12.2017 22:59

      В Windows никаких специальных плясок делать не приходилось — работало из коробки. Для сабвувера используется специальный разъем. Т.е. это не джек. Видимо, сделано так было для того, чтобы можно рассчитывать, что ничего кроме сабвуфера к этому разъему подключаться не будет и захардкодить в драйвере нужное поведение


      1. VioletGiraffe
        03.12.2017 00:04

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


  1. Lotgyero
    02.12.2017 20:23

    тут много странной неописанной магии

    www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Modules

    и «вдогонку»
    askubuntu.com/questions/43950/how-can-i-apply-a-ladspa-plugin-to-a-pulseaudio-stream

    к сожалению хороших гайдов еще не выгуглил, но доки намекают на немалые возможности… а ещё если все это «запитонить на гуях...»


    1. Jorixxx Автор
      02.12.2017 23:00

      Посмотрю, спасибо


  1. kovserg
    02.12.2017 21:03

    Поздравляю вы столкнулись с intel hda. У меня была такая проблема поначалу. Но параметр options snd-hda-intel model всё поправил. В последних версиях вроде само работает из коробки.

    Но есть другие чудеса в ubuntu. (У меня 14.04 LTS)
    1. Например хочется записать звук который воспроизводится на колонки. Оказывается это делается весьма замысловато.

    loop-device
    /etc/modprobe.d/sound.conf
    options snd_hda_intel index=0
    options snd_aloop index=1

    /etc/modules-load.d/alsa-loop-device.conf
    snd_aloop

    /etc/asound.conf
    pcm.xxx {
    type plug
    slave.pcm {
    type multi
    slaves {
    a { channels 2 pcm "hw:0,0" } # the real device
    b { channels 2 pcm "hw:1,0" } # the loopback driver
    }
    bindings {
    0 { slave a channel 0 }
    1 { slave a channel 1 }
    2 { slave b channel 0 }
    3 { slave b channel 1 }
    }
    }
    ttable [
    [ 1 0 1 0 ] # left -> a.left, b.left
    [ 0 1 0 1 ] # right -> a.right, b.right
    ]
    }

    /etc/modules-load.d/alsa-loop-device.conf
    asnd_loop

    /etc/modprobe.d/sound.conf
    options snd_hda_intel index=0
    options snd_aloop index=1


  1. amarao
    02.12.2017 21:14

    Почему-то в списке того, что трогалось, ни слова про pactl /pacmd. У последнего есть даже интерактивный шелл с двумя экранами команд.


    1. Jorixxx Автор
      02.12.2017 23:02

      Pulseaudio особо трогать пока не пришлось. Добавлю, спасибо


  1. xtron
    02.12.2017 21:41

    Опечатка у вас в третьем предложении `менять`


    1. Jorixxx Автор
      02.12.2017 23:02

      поправил спасибо


  1. mihmig
    02.12.2017 22:30

    Получается, если звук на компьютере не задействуется по прямому назначению — можно добавить «входной» канал:

    При замыкании разъёмов аудиовыхода/микрофона соответствующим сопротивлением можно инициировать запуск shell-скрипта?


    1. Lotgyero
      02.12.2017 22:51

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


    1. Jorixxx Автор
      02.12.2017 23:03

      Не могу утверждать наверняка, но скорее всего это так — должна же быть какая-то триггерная модель, чтобы обслуживать подключение нового устройства к звуковой карте


    1. kafeman
      03.12.2017 03:08

      Кнопки на гарнитуре именно так и работают.


      1. mihmig
        03.12.2017 11:43

        Ага, значит можно ещё отслеживать величину сопротивления подключенного устройства?
        Это наверное зависит от чипа. А на стареньком неттопе 3Q интересно — есть такой функционал?


  1. devrow
    02.12.2017 23:03

    Многие, кто пилит alsa, pulseaudio и далее по списку — для них это такое же хобби.
    Возможно, имеет смысл напрямую связаться и спросить как и что.


    1. Jorixxx Автор
      02.12.2017 23:11

      Да. Думаю, дойдет до этого) Именно это подтверждает мои слова о том, что никто особо в звук не вкладывает. Странно, что до сих пор не нашлось аналога Canonical или RedHat, зарабатывающего на Linux в сообществе звукорежиссеров etc. Публика весьма платежеспособная и платит сейчас немалые деньги за софт, которым пользуется. Хотя, это, конечно субъективный взгляд. Возможно объем разработки и маркетинга, чтобы довести в Linux это до ума переманить этих людей с маков — это неподъемная величина


      1. Lotgyero
        02.12.2017 23:45

        supercollider.github.io/tutorials

        вот еще интересный, наверное, проект

        там еще был какой-то проект по графическому проектированию звука, но наиболее зрелые что-то не очень-то и развиваются(ИМХО) ну и внезапные падение порой… случаются


      1. sotnikdv
        03.12.2017 01:30

        Странно, что до сих пор не нашлось аналога Canonical или RedHat, зарабатывающего на Linux в сообществе звукорежиссеров etc.


        Ничего странного.

        Софт там специфичный и под линь его нет. Это во-первых.

        Производители софта плотно играют в игры, которыми, формально, должен бы заинтересоваться антимонопольный, но всем пофиг. Это мы еще не говорим о стоимости портирования. Это во-вторых.

        Лейблы накопили просто феерическое количество форматов и сорцов, которые они пока не знают ни как монетизировать, ни как конвертить и вообще что с ним делать. Там сильная привязка к старым системам. Это в третьих.

        Звукорежиссеры не определяют тренды, а следуют им. Что и как будет использоваться, определяют лейблы, которые сидят на контенте. И для независимых, кстати, тоже, т.к. это выбор софта и инфраструктуры. Можно легко и непринужденно, например, прибить ремиксеров всего мира к конкретному софту и платформе. Это в четвертых.

        Поэтому звукорежиссеры переедут на линь последними, когда он станет мейнстримом и лейблы скажут ну ок, мигрируем.

        Все, все что мог помимо NDA сказать — сказал.


      1. Jef239
        03.12.2017 10:23

        Поскольку у меня есть брат-близнец друг-звукорежиссер, то добавлю к предыдущему посту.

        Оплата работы — идет за время. Уменьшил скорость из-за освоения нового софта — все равно, что поднял расценки.

        Звукорежиссеру очень важна программа, с которой идет работа. Тот самый автоматизм на уровне пальцев. Смена программы — это примерно год-два на освоение на уровне автоматизма. Даже смена версии происходит со скрипом из-за мелких отличий в интерфейсе.

        Кроме программы используется набор плагинов, тем или иным способом, обрабатывающих звук. Часть из них купленная, часть — вылеченная «таблеткой от жадности», но в целом этот набор — подороже программы. И опять-таки, переучиться на другой набор — можно, но долго. А для плагинов из имеющегося набора, звукорежиссер просто знает, что при каких положениях ручек, этот набор выдаст.

        Железо — очень специфично. Например звуковая карта за $5000 — это всего лишь АЦП, без ЦАП (для ЦАП — вторая звуковуха). Подключается оно по FireWire и предназначено для монтажа в стойку. Поток данных — больше характерен для видео, чем для аудио — 192кГц на 48 бит на 8 каналов.

        Сама операционка и комп — не важны. Когда Logic Pro перестал выходить под windows, то проще было сменить железо и устроить hackintosh, чем переходить на другую программу.

        Водяное охлаждение… ну или оно, или вытаскивать экран, клавиатуру и мониторы в другую комнату. Водяное — было сделать проще, чем IP-KVM.

        Задачки там чудные. Что стоит устройство внутреннего телевидения ради передачи кивка от аккомпаниатора к солисту.

        Такого уровня студий — 5-10 в Питере, наверное до 1000 в России. Это же не высший пилотаж, а почти любительская студия.


  1. avost
    03.12.2017 02:20

    но при этом доступ этот монопольный — включить песню в VLC и открыть видео в браузере, увы, не получится

    Тут вас кто-то обманул. Я, прочтя это, сильно удивился, пошёл запустил видео в vlc, открыл youtube ролик в хроме и включил песню в амароке. Все три источника заиграли одновременно и беспроблемно. Голая alsa.
    Ну, то есть kde поверх неё ещё ;)


    1. dreamerchant
      03.12.2017 05:10

      Насколько я знаю, в kde есть для этого phonon.


      1. Lirein
        03.12.2017 10:25

        Вы забываете про наличие аппаратного dmix на некоторых картах, и программный alsa_dmix модуль, который решает проблему микширования потоков. Пользовался ещё пока пульса была чем то вроде Пшшш-пфффф-пшшшшпффф…


        1. firk
          03.12.2017 11:04

          У меня тоже всё работает безо всяких дурацких надстроек (типа pulseaudio). Единственное назначение pulseaudio — удовлетворить зависимости того плохо написанного софта, который не знает про alsa но знает про pulseaudio (например ms после покупки скайпа быстро его привели к данному состоянию).


          1. g4xd
            03.12.2017 12:49

            Поддерживая gentoo, alsa only. Все работает шикарно на ноуте 12 года


            1. 0xd34df00d
              04.12.2017 09:25

              Аналогично на ноуте 12-го года, ноуте 16-го года и десктопе 13-го года.


          1. Kirill80
            03.12.2017 13:36

            Э, тут, по-моему, вы несколько недопонимаете зачем нужен общесистемный микшер, каковым и является PulseAudio. Его задача свести множество разных по своим характеристикам (частота дискретизации, битность, уровени) потоков в один с одинаковыми параметрами и отправить на исполнительное устройство. Или, если есть несколько исполнительных устройств попытаться маршрутизировать потоки на каждое из них. ALSA же нужна для работы с драйвером устройства, т. е. она, к примеру, не сможет обеспечить вам вывод одновременно звука с просматриваемого вами ётюба и музыки с какого-нибудь плейера.


            1. avost
              04.12.2017 02:25

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

              Слушайте, но смешно же. Попробуйте уже сами, всё прекрасно выводится, я же написал, что хотя и был уверен, но удивился и специально пошёл проверять — включил vlc, YouTube и amarok.
              Зы пришлось отказаться от файрфокса, который не осилил в алса, это менее болезненно, чем лезть в этот кошмар с пульсой.


    1. quarckster
      03.12.2017 12:50

      В альсе есть микшер, это модуль dmix, его просто надо настроить. Так что, автору явно ещё матчасть нужно подучить.


      1. Jorixxx Автор
        03.12.2017 12:53

        Посмотрю, что это такое


      1. rkfg
        03.12.2017 14:56

        Сколько помню, он всегда из коробки работал. Другое дело, что у альсы обычно фиксированная задержка (latency), на встроенном звуке порядка 20-25 мс, а у пульсы она динамическая, вплоть до 0.5 мс. Но там хватает своих проблем, например, если ядро не PREEMPT, даже со всеми реалтаймовыми и высокоприоритетными хаками пульса порой скипает, т.е. буфер опустошается, и слышен щелчок. При этом пульса начинает адаптироваться и увеличивать внутренние вотермарки и минимальную задержку. Если проц был сильно нагружен, то задержка может прыгнуть очень высоко, вплоть до 100-160 мс, и что интересно, механизмов автоматического её снижения, а также задания отличного от 0.5 мс минимума в коде нет, я смотрел (можно задать фиксированную задержку, как в альсе, но динамическая всегда начинается от 0.5). Задержка сбросится только после перезапуска демона.


        Я чисто из-за этих трюков собираю собственное ядро с CONFIG_PREEMPT и таймером 1000 Гц, потому что в дебиане 100 Гц без преемптивности. Раньше долго сидел на альсе, но пульса в итоге пролезла везде и победила, да и стримить с ней куда проще, чем городить лупбэки.


        1. 0xd34df00d
          04.12.2017 09:26

          Сколько помню, он всегда из коробки работал.

          Лет 15 назад нужно было ручками .asoundrc править.


          1. Lirein
            04.12.2017 16:26

            Даже не 15 а 10 или даже 9. Я последний раз правил в 2008 году.
            Сейчас у меня Pulseaudio+FluidSynth. Переполз на него в связи с мультисит окружением, гибкостью и стабильностью пульсы.


  1. GH2OOST
    03.12.2017 12:50

    А вы уверены что что на Windows применяется фильтр НЧ и ВЧ? Просто у меня ноут N550JK и там, ну саб понятно всегда звучит низко, а фронтальные как с сабом, так и без саба звучат абсолютно одинаково. У меня версия драйвера 6.0.1.7250


    1. Jorixxx Автор
      03.12.2017 12:52

      Я тоже раньше думал, что это сам саб звучит низко, а канал на нем без фильтров. Но когда реально услышал, как саб звучит без бильтров — понял, что НЧ-фильтр точно там есть


  1. tekk
    03.12.2017 12:53

    Попробуйте всё-таки Jack.
    Правда я не думаю что получится сделать с ним такую конфигурацию, как описана в начале поста (хотя qjackctl поддерживает разные скрипты, которые можно запускать при старте/остановке сервера), но вполне вероятно что проблем именно с написанием музыки будет чуть меньше.
    По крайней мере, у меня так. Я где-то семь лет уже занимаюсь тем же хобби и 4 года из них с Jack. Не могу сказать что работает он безупречно (его тоже надо настраивать и разные версии могут работать по разному), однако с задачей обрабатывать звук в реальном времени он справляется. А так работаю в Ardour, выходы на аппаратуру переключаю из него же.
    Плюс удобная маршрутизация через какую-нибудь Catia есть (в qjackctl тоже можно, но там несколько топорно это сделано, на мой взгляд).
    Кроме того, пользуюсь ещё и модулем jack-pulseaudio. Можно создать «мост» через который звук pulseaudio будет поступать в jack (решит задачу «записать звук с колонок», о которой писали в комментариях, правда несколько иным путем, поскольку он не с колонок будет записываться а с приложения, которое будет передавать звук на колонки), и наоборот. В Cadence есть поддержка «мостов» alsa-jack, pulseaudio-jack, alsa-midi и т.д.
    Посмотрите этот софт, возможно, он поможет.

    Cadence и qjackctl — софт для запуска и конфигурации Jack. Не могу сейчас точно написать (далеко от компьютера), но вроде бы скрипты для запуска и прочего есть только в qjackctl. Но я не уверен.

    И ещё, последнее — Jack может здорово забивать свой собственный лог, который, как правило, находится в домашней папке (если вы запускаете его от обычного пользователя, разумеется). Поэтому убедитесь заранее в том, что на диске есть место, и периодически проверяйте размер лога Jack. Я не имею ввиду что так случается постоянно, но у меня раз в 3-4 месяца точно бывает, при том что я работаю с ним по выходным. В моем случае система установлена на ssd (домашний раздел, конечно, тоже), где не очень много места, поэтому лог Jack размером в пару десятков гигабайт иногда приходится удалять.
    Возможно, я его просто плохо настроил. Возможно, это его баг. Не задавался этим вопросом, но предупредить, мне кажется, стоит.


    1. Jorixxx Автор
      03.12.2017 13:11

      Очень не хочется иметь Pulseaudio и JACK одновременно. Особенно если первый нужен, так, как описано здесь) habrahabr.ru/post/343718/#comment_10549216


  1. Kirill80
    03.12.2017 14:17

    А попробуйте, для начала, настроить mpd на вывод в alsa. В bit-perfect-режиме. Мне, в своё время, это помогло осознать общую картинку как работает подсистема работы со звуком (в частности). Хотя, оборудование у вас, конечно, как бы это сказать помягче, не ахти.


    1. Jorixxx Автор
      03.12.2017 15:14

      Когда я начну подключать рабочий аппарат, то знаний у меня, конечно, поприбавится — может, даже на продолжение накапает) Я пока(и похоже правильно) решил начать с самого простого — заставить работать ноут.
      з.ы. главная проблема тут не в том, как в этом разобраться. Можно и спеку HDA раскурить, и из комментов информацию собрать, на худой конец можно сорцы почитать. Главная проблема — что в этом вообще нужно разбираться.
      Может, задокументируй разработчики ALSA, как по их мнению надо настраивать звук по шагам с описанием архитектуры, структуры конфигов, как что и для чего крутить, API, то и проблемы бы никакой не было. А я пока вижу, что клочки информации непроверенной разбросаны повсюду, а мой тикет за 3 недели даже отфутболить никто не берется.
      Может, задокументируй вы вот эту процедуру настройки мпдшки, многие люди прошли бы с ее помощью на шаг дальше.
      А время, которое я потрачу на разбор, я бы с удовольствием потратил на другие вещи — на разбор того же муз. софта доступного, плагинов и т.д.


  1. MisterN
    03.12.2017 18:23

    Монуалов по настройке звука на линуксе нехватает. По мне смотреть ролики в ютубе и общаться по скайпу через пульсу норм, но вот своих любимых альбомов не узнал, они лишились некоторой интонации. А если настроить плеер через alsa, то все ок.
    Стал гуглить про настройку звука — там в основном описывается два состояния: звука нет и звук есть. И как перейти от первого ко второму. А о том, что звук может быть, но что-то не очень не заикаются. Более интересная инфа, про тот же существование того же dmix, на LORе, но там все тонет в субъективных и категоричных постах типа «у меня все из коробки нормально пашет, если у тебя не так, значит ты криворук» или «ты че, такой дохера аудиофил? Пульса лучше чистой альсы, не выеживайся». Субъективности очень много, много рецептов плясок с бубном и т.д. Я пытался править некоторые конфиги, типа resample-method, чтобы как-то улучшить ситуёвину, слушаю до сих пор через alsa.
    Но я не о том хотел сказать. Все-таки жутко раздражает вся эта субъективность в настройках звука. После того, как я начитался инфы по форумам, я например сам себе не доверяю. Очень нехватает какого-то объективного способа оценить корректность работы со звуковой картой типа RightMark Audio Analyzer, или манула по каким-то объективным замерам на основании которых можно судить о том, хорошо настроено или плохо. Были бы средства диагностики проблем — легче было бы подобрать способ лечения. На хабре есть статья про анализ звука в линуксе через Audiolab M-DAC. Но это дорогая хреновина. И потом, режим BitPrefect говорит о наличии\отсутствии проблем в принципе, а не указывает, где именно кривит.
    В общем, если кто знает о том, как производить объективный замер корректности работы звуковухи на линуксе, просьба просветить.


  1. Thx201
    03.12.2017 18:23

    В написании музыки — 0, думаю изучать LMMS или Ardour, поэтому интересно почему по мнению автора с LMMS сложно работать?


    1. Jorixxx Автор
      03.12.2017 18:36

      Не сложно. В плане сложности как раз все хорошо.
      Но там явно есть косяки. Одним из первых приемов, который я проверяю в DAW, является sidechain. И вот LMMS на тесте показал, что sidechain работает плохо — клик присутствует даже на 12мс атаке. На эту тему заведен баг, но пока не починено. А без этого дальше испытывать тулзу вообще смысла не имеет.


  1. fogone
    04.12.2017 09:22

    Забавно, на днях как раз пытался подключить блютуз-наушники к своему асус-н на убунте. После длительного шаманства музыка все же заиграла, но стабильность примерно никакая. Чтобы отключиться и подключиться опять приходится ресетить девайс целиком. Не знаю можно ли с такими артефактами жить в профессиональной области.


  1. feruxmax
    04.12.2017 11:06

    какие все-таки конфиги надо править для правки маппинга портов??

    Настраиваю маппинг портов для получения конфигурации 5.1 с трёх портов, которые по-умолчанию сконфигурированы как mic, speaker, line_in.
    Конфигурацию hda размещаю по пути:
    /lib/firmware/snd-hda-intel.fw
    Чтобы она грузилась при старте системы добавляем файл:
    /etc/modprobe.d/hda-intel.conf
    со следующим содержимым
    options snd-hda-intel patch=snd-hda-intel.fw


    Изменять настройки без перезагрузки системы возможно через hda-verb (информация о ней есть по вашей же ссылке.


    Содержимое snd-hda-intel.fw и что писать с помощью hda-verb можно понять, разобравшись с упомянутым вами HDAAnalyzer-ом.
    Я в универе пытался написать прогу, чтобы маппинг можно было через GUI делать, но так и не выложил тогда её никуда (для каждой модели кодека выявляются свои особенности в графе, которые не было просто общим алгоритмом разрулить). Выложил исходники, может запустите на своём кодеке.