Звукостудия Linux (alsa+pulse+jack)

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

Подключив карту Roland UA33 (USB Audio), через малое время я обнаружил, что проблемы не кончились. Причина - сервер Jack. Мне он нужен для звукозаписи, для редактора Ardour, в частности. Опыта настройки его у меня почти не было. В Debian, при той же конфигурации - две карты, alsa, pulseaudio, jack - всё работало и jack я почти не заметил. При переключении с карты на карту jack переключался автоматически. Когда у меня стояла Slackware-12.2, jack был и я его даже настраивал, но не было второй, внешней карты и, соответственно, pulseaudio. А в AgiliaLinux потребовалась настройка.

Как выяснилось позже, после малоуспешного гугления и шаманства, всё очень просто настраивается. Кроме одного: после переключения на другую карту в микшере "пульса", jack на неё надо тоже переключать вручную. Но с этим я пока смирился, поскольку не часто придётся это делать. А так... я включаю Ardour (аудио), SMPlayer (видео) и, вдобавок, AudioPreview и, ещё вдобавок, видео из интернета - и всё звучит через jack или без него, эдакая многоголосая песенная каша grin. Итак! Перейду от лирики к делу.

Моя конфигурация

  1. Ноутбук Acer E525
  2. Система AgiliaLinux, gnome
  3. Встроенный звук HDA-Intel
  4. Внешняя USB-карта Roland Tri Capture (UA33)

ALSA

В папку /usr/share/alsa/alsa.conf.d я скопировал файлы:

Это и вся настройка ALSA.

PulseAudio

Установил:

При этом в файле /etc/asound.conf следующий текст:

# Use PulseAudio by default
pcm.!default {
  type pulse
  fallback "sysdefault"
  hint {
    show on
    description "Default ALSA Output (currently PulseAudio Sound Server)"
  }
}
ctl.!default {
  type pulse
  fallback "sysdefault"
}
# vim:set ft=alsaconf:

Замечание: редактировать asound.conf вручную не рекомендуется. Можно только нажить лишние проблемы.

В папке /etc/pulse файлы:

/etc/pulse/default.pa оставил без изменений,

/etc/pulse/system.pa оставил без изменений.

Редактирование файла /etc/pulse/daemon.conf, раскомментированные строки отмечены синим:

; daemonize = no
; fail = yes
allow-module-loading = yes
allow-exit = yes
use-pid-file = yes
system-instance = no
local-server-type = user

; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
lock-memory = no
cpu-limit = no
high-priority = yes

; nice-level = -11
realtime-scheduling = yes
; realtime-priority = 5
exit-idle-time = 20
scache-idle-time = 20

; dl-search-path = (depends on architecture)
load-default-script-file = yes
default-script-file = /etc/pulse/default.pa

; log-target = auto
; log-level = notice
; log-meta = no
; log-time = no
; log-backtrace = 0
resample-method=speex-float-0
; resample-method = speex-float-3
; enable-remixing = yes
; enable-lfe-remixing = no
; flat-volumes = yes
; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
rlimit-rtprio = 9
; rlimit-rttime = 100000
; default-sample-format = s16le
; default-sample-rate = 44100
; default-sample-channels = 2
; default-channel-map = front-left,front-right
; default-fragments = 4
; default-fragment-size-msec = 25
; enable-deferred-volume = yes
; deferred-volume-safety-margin-usec = 8000
; deferred-volume-extra-delay-usec = 0

Редактирование файла /etc/pulse/client.conf, раскомментированные строки отмечены синим:

; default-sink =
; default-source =
; default-server =
; default-dbus-server =
autospawn = yes
daemon-binary = /usr/bin/pulseaudio

; extra-arguments = --log-target=syslog
cookie-file = /home/username/.pulse-cookie
; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; auto-connect-localhost = no
; auto-connect-display = no

Чтобы не лить воду, я не буду описывать значения строк, это можно прочесть в man'ах.

Важное замечание: необходимо точно указать адрес файла .pulse-cookie. Это единственная строка, которую я отредактировал.

Как описано здесь, alsa-plugins во вновь установленной системе не поддерживает pulseaudio.

В /usr/lib/alsa-lib должны быть следующие файлы,

для pulseaudio:

/usr/lib/alsa-lib/libasound_module_conf_pulse.so
/usr/lib/alsa-lib/libasound_module_ctl_pulse.so
/usr/lib/alsa-lib/libasound_module_pcm_pulse.so

для jack:

/usr/lib/alsa-lib/libasound_module_pcm_jack.so

Надо это проверить. Не все файлы будут на месте. Чтобы исправить положение, необходимо перекомпилировать alsa-plugins теперь - именно теперь, когда конфигурационные файлы pulseaudio отредактированы - не раньше.

Для этого

Установить, если не установлены, пакеты

jack1
qjackctl

В терминале от юзера ввести команду

$ mkpkg -bb 2 -bt api:alsa-plugins

дальше - по плану.

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

В редакторе конфигурации

system/gstreamer/0.10/default должно быть по умолчанию:

audiosink -- alsasink

audiorc -- alsarc

system/pulseaudio/modules:

модуль combine надо отключить, если включён;

остальные модули (remote-access, zeroconf-discover и т.д.) настраиваются через paprefs.

Может так случиться (как у меня), что paprefs установится в нерабочем состоянии. Тогда его надо перекомпилировать и переустановить тем же способом, что и alsa-plugins.

Paprefs

Я поставил только одну галочку:

Network Access => Make discoverable PulseAudio network sound devices available locally - больше мне там ничего не нужно.

Можно попробовать теперь, как всё работает.

В меню Система=>Параметры=>Выбор мультимедийной системы выбрать карту по умолчанию.

В меню Приложения=>Аудио и видео=>Регулятор громкости PulseAudio отключить другие карты. Проверить и настроить устройства ввода/вывода. Затем запустить одно или несколько приложений и посмотреть, что во вкладках Регулятора громкости PulseAudio (см. слайдшоу). Запустите какой-нибудь медиафайл из интернета. Всё должно звучать одновременно.

Настройка сервера Jack

Этот красавчик надобен только во время записи и обработки звука. Естественно, при запуске системы он запускаться не должен. В "Система => Параметры => Запускаемые приложения" он должен быть отключён.

При настройке ни одно из аудио-приложений не должно работать.

Запускаем qjackctl и открываем окно

"Параметры => Общие"

Профиль "как обычно" (default). Не нужно создавать новых профилей - это лишняя морока. Здесь, в этом окне, мы только выбираем карту в пункте "Интерфейс". Драйвер (alsa) и всё остальное у нас "как обычно". Сохраняем.

Теперь открываем следующее окно, здесь поинтересней.

Параметры=>Сценарии и журнал

PulseAudio должен запуститься после jack'а, а поскольку он уже запущен, то надо его "убить" при запуске, после запуска включить с нужными модулями, при выходе их отключить, после выключения опять "убить" и тут же "воскресить".

Итак, пишем.

Выполнять сценарий при запуске:

pulseaudio -k

Выполнять сценарий после запуска:

pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source channels=2; pacmd set-default-sink jack_out

Выполнять сценарий при выходе:

pactl unload-module `pactl list|grep -A 3 jack-source|tail -1|awk '{ print $NF }'`; pactl unload-module `pactl list|grep -A 3 jack-sink|tail -1|awk '{ print $NF }'`

Выполнять сценарий после выключения:

pulseaudio -k    pulseaudio --start

Больше ничего здесь не меняем. Жмём OK.

Сценарии "после запуска" и "при выходе" я взял здесь, сам бы ни эа что не додумался.

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

Параметры => Разное

Чтобы мне не писать много лишних буков, посмотрите лучше картинку.

...Теперь jack готов к запуску. Обязательное условие при запуске jack: ни одно аудио-приложение не работает.

Приложения

Здесь несколько слов только о тех приложениях, которые я установил, об их взаимодействии с ALSA, PulseAudio и Jack.

Ardour

Работает напрямую с jack, pulseaudio не использует. И воспроизводит, и записывает. Недостаток: слишком скуден список эффектов LADSPA. Необходимо увеличить их количество.

Totem

Очень удобен, "всеяден" в отношении форматов. Недостаток: не работает с Jack.

SMPlayer

В настройках SMPlayer'а есть возможность выбора видео и аудио драйверов, в том числе alsa и jack. С jack работает напрямую, pulseaudio не использует. Естественно, при отключённом jack'е нужно выбрать драйвер alsa (вручную)

OpenShot

Звук в этом видеоредакторе есть при любой конфигурации аудио-системы - будь то один-разъединственный ALSA, или ALSA+PulseAudio, или ALSA+PulseAudio+Jack. С Jack OpenShot соединяется не напрямую, а через PulseAudio.

DeadBeef

Очень хороший аудио-плеер. Множество настроек, разбираться в которых досконально - долгая песня. Так же, как OpenShot, работает при любой конфигурации аудио-системы. С Jack'ом - через PulseAudio.

Rosegarden

Миди-аудио-секвенсор. Работает с jack. Если нет pulseaudio, то - напрямую,

а в данной конфигурации - через pulseaudio.

GNU Solfege

Программа для упражнения в сольфеджио. Использует внешний проигрыватель timiditi. Работает с pulseaudio и с jack через pulseaudio.

Я далёк от мысли, что это действительно полноценная звукозаписывающая домашняя студия. Я далёк от мысли, что настройки alsa+pulse+jack идеальны. Но в доказательство того, что оно у меня всё работает, я предлагаю иллюстрации в виде галереи скриншотов.


ПОЕХАЛИ!
GO!

Звукостудия Linux (alsa+pulse+jack). Иллюстрации


11 марта 2013 г. Автор: lefro


0 0 голосование
закрыто
спасибо
за ваш голос
Если есть желание что-нибудь написать, ЖМИ: Отзывы