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

Опубликовано
Комментарии 0

Если Вы не планируете заниматься звукозаписью, не устанавливайте 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 я скопировал файлы:

  • /usr/share/alsa/pcm/default.conf
  • /usr/share/alsa/cards/HDA-Intel.conf
  • /usr/share/alsa/cards/USB-Audio.conf
  • /usr/share/alsa/pcm/modem.conf

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

PulseAudio

Установил:

  • pavucontrol
  • pulseaudio
  • pulseaudio-alsa
  • paprefs

При этом в файле /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»
}
  1. 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 идеальны. Но в доказательство того, что оно у меня всё работает, я предлагаю иллюстрации в виде галереи скриншотов.

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


Часть 2-я




Автор

Комментарии

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

Комментарии

Поля обозначенные как * требуются обязательно. Перед постингом всегда делайте просмотр своего комментария.






RSS / Atom