https://wiki.archlinux.org/api.php?action=feedcontributions&user=Sheykhnur&feedformat=atomArchWiki - User contributions [en]2024-03-28T07:57:42ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Localization_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=604603Localization (Русский)2020-04-07T18:23:10Z<p>Sheykhnur: Изменил CONSOLEFONT на FONT, иначе ошибка mkinitcpio</p>
<hr />
<div>[[Category:Localization (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Localization]]<br />
[[pt:Localization]]<br />
{{Unmaintained (Русский)}}<br />
Эта статья рассказывает о настройке отображения и ввода русского языка в Arch Linux.<br />
<br />
== Настройка локали ==<br />
<br />
Раскомментируйте следующую строку в файле {{ic|/etc/locale.gen}}:<br />
<br />
ru_RU.UTF-8 UTF-8<br />
<br />
Создайте выбранную локаль данной командой:<br />
<br />
/usr/sbin/locale-gen<br />
<br />
Проверьте, что все заявленные локали были созданы:<br />
<br />
locale -a<br />
<br />
== Настройка консоли ==<br />
<br />
Несколько слов о работе консоли. <br />
<br />
Любой вывод программы перенаправляется консольному драйверу в ядре. Ядро работает только в кодировке Unicode. Если программа не использует UTF-8 для вывода текста, необходима таблица ACM (Application Character Map), которая будет выполнять соответствующее преобразование из 8-битной кодировки в Unicode. Эту таблицу можно найти в директории {{ic|/usr/share/kbd/consoletrans}}, если используется пакет {{pkg|kbd}} (в Arch установлен по умолчанию). <br />
<br />
Далее ядро должно отобразить символ на экране. Таблица соответствия знаков шрифта кодам Unicode называется SFM (Screen Font Map). Она либо находится внутри шрифта (в большинстве случаев), либо подгружается дополнительно (из {{ic|/usr/share/kbd/unimaps}}). Сами шрифты располагаются в {{ic|/usr/share/kbd/consolefonts}}. <br />
<br />
Кроме этого, также необходима клавиатурная раскладка — таблица по переводу скан-кодов клавиатуры в нужный код символа (соответственно, может быть либо старая 8-битная, либо новая Unicode).<br />
<br />
Таким образом, настройка консоли разбивается на следующие пункты (рассмотрен вариант с UTF):<br />
<br />
# Поиск клавиатурной раскладки, поддерживающей Unicode и необходимые способы переключения языков, а также указание её как {{ic|1=KEYMAP="..."}} в файле {{ic|/etc/vconsole.conf}}.<br />
# Установка шрифта, имеющего встроенную таблицу SFM и необходимое начертание: {{ic|1=FONT="..."}} в файле {{ic|/etc/vconsole.conf}}.<br />
# Проверка, что необходимость в ACM пропадает ({{ic|1=CONSOLEMAP=""}} остаётся пустым) в файле {{ic|/etc/vconsole.conf}}.<br />
<br />
Вся остальная работа по настройке kbd (например, использование утилит {{ic|loadkeys}} и {{ic|setfont}}) уже сделана людьми, написавшими стартовые файлы системы.<br />
<br />
Пакет {{pkg|kbd}} поддерживает русские раскладки в UTF-8. Дополнительные раскладки клавиатуры можно получить, [[Help:Reading (Русский)#Установка пакетов|установив]] пакет {{AUR|kbd-ru-keymaps}}.<br />
<br />
[[Установите]] пакет {{pkg|terminus-font}} для получения шрифта Terminus.<br />
<br />
Отредактируйте файл {{ic|/etc/vconsole.conf}}:<br />
<br />
{{bc|1=<br />
LOCALE="ru_RU.UTF-8"<br />
KEYMAP="ru" # Или ru-mab для раскладки с переключением по Ctrl+Shift или ruwin_alt_sh-UTF-8 для переключение по Alt+Shift<br />
FONT="ter-v16n" # Можно поэкспериментировать с другими шрифтами ter-v* из /usr/share/kbd/consolefonts<br />
CONSOLEMAP=""<br />
}}<br />
<br />
Если возникают проблемы со шрифтом ter-v16n, воспользуйтесь конфигурацией файла {{ic|/etc/vconsole.conf}}, приведённой ниже:<br />
<br />
{{bc|1=<br />
LOCALE=ru_RU.UTF-8<br />
KEYMAP=ru<br />
FONT=ter-u16b<br />
CONSOLEMAP=<br />
TIMEZONE=Europe/Moscow<br />
HARDWARECLOCK=UTC<br />
USECOLOR=yes<br />
}}<br />
<br />
Обратите внимание, что поиск шрифта происходит в {{ic|/usr/share/kbd/consolefonts}}.<br />
<br />
Можно обойтись без Terminus, установив:<br />
<br />
CONSOLEFONT="cyr-sun16"<br />
<br />
{{Note (Русский)|1=Значение {{ic|1=LOCALE=}} может быть как {{ic|"ru_RU.UTF-8"}}, так и {{ic|"ru_RU.utf-8"}} или {{ic|"ru_RU.utf8"}}. Но, с целью уменьшения путаницы, все же лучше использовать вариант {{ic|1=LOCALE="ru_RU.UTF-8"}}.}}<br />
<br />
Можно обойтись без установки пакета {{AUR|kbd-ru-keymaps}}, вариант с переключением по {{ic|Ctrl+Shift}}:<br />
<br />
{{bc|<nowiki><br />
LOCALE="ru_RU.UTF-8"<br />
HARDWARECLOCK="UTC"<br />
TIMEZONE="Europe/Moscow"<br />
KEYMAP="ru"<br />
FONT="cyr-sun16"<br />
CONSOLEMAP=""<br />
USECOLOR="yes"<br />
</nowiki>}}<br />
<br />
{{Note (Русский)|Внесите в файл {{ic|/etc/locale.conf}} следующую строку:<br />
<br />
{{bc|1=<br />
LANG=ru_RU.UTF-8}}<br />
}}<br />
<br />
Также в некоторых случаях, для корректного отображения шрифтов в консоли, потребуется добавить хуки и пересоздать образ ядра. Для этого список хуков в файле {{ic|/etc/mkinitcpio.conf}} необходимо привести примерно к следующему виду:<br />
<br />
HOOKS="base consolefont keymap udev <ваши хуки>"<br />
<br />
то есть вставить два дополнительных хука '''consolefont''' и '''keymap'''.<br />
<br />
После чего пересоздать образ ядра:<br />
<br />
# mkinitcpio -p linux<br />
<br />
и перезагрузить систему.<br />
<br />
{{Note (Русский)|Если вышеперечисленные способы не помогли изменить шрифт в tty, вероятно, изменения не сохраняются после KMS. Попробуйте добавить в initrd модуль, выполняющий modesetting (nouveau/radeon/i915 и т.п.):<br />
<br />
{{bc|<nowiki>MODULES="nouveau"</nowiki>}} <br />
}}<br />
<br />
== Настройка X.org ==<br />
<br />
[[Установите]] пакеты {{Pkg|ttf-dejavu}} и {{Pkg|ttf-liberation}} для получения шрифтов DejaVu и Liberation соответственно.<br />
<br />
=== Настройки клавиатуры ===<br />
<br />
Клавиатура настраивается при помощи [[systemd (Русский)|systemd]], а точнее, [[Locale (Русский)#Установка локали|localectl]]. При настройке Xorg утилита считывает и изменяет файл {{ic|00-keyboard.conf}}:<br />
<br />
{{bc|<br />
$ cat /etc/X11/xorg.conf.d/00-keyboard.conf <br />
# Read and parsed by systemd-localed. It's probably wise not to edit this file<br />
# manually too freely.<br />
Section "InputClass"<br />
Identifier "system-keyboard"<br />
MatchIsKeyboard "on"<br />
Option "XkbLayout" "us,ru"<br />
Option "XkbModel" "pc105"<br />
Option "XkbVariant" "os_winkeys"<br />
Option "XKbOptions" "grp:menu_toggle,grp_led:scroll,ctrl:swapcaps,compose:ralt"<br />
EndSection<br />
}}<br />
<br />
Это значит, что {{ic|localectl}} нужен root, а Xorg придется перезапускать.<br />
<br />
Посмотреть возможные значения:<br />
<br />
$ localectl list-x11-keymap-models<br />
$ localectl list-x11-keymap-layouts<br />
$ localectl list-x11-keymap-variants ru<br />
$ localectl list-x11-keymap-options<br />
<br />
==== Переключение раскладок средствами X.org ====<br />
<br />
См. статью [[Конфигурация клавиатуры в Xorg]].<br />
<br />
=== Compose-последовательности ===<br />
<br />
См. раздел [[Конфигурация клавиатуры в Xorg#Настройка клавиши Compose]].<br />
<br />
== Настройка русских man-страниц ==<br />
<br />
[[Установите]] пакет {{AUR|man-pages-ru}} с русскими страницами.<br />
<br />
{{ic|man}} показывает страницы ориентируясь на локаль. Для принудительного показа русских страниц используйте следующую команду:<br />
<br />
$ man -L ru <manpage><br />
<br />
== Русификация LibreOffice ==<br />
<br />
{{Move|LibreOffice (Русский)|Данный материал необходимо перенести в основную статью о [[LibreOffice (Русский)]], где он более актуален}}<br />
<br />
Поддержка языков в LibreOffice реализуется отдельными пакетами.<br />
<br />
См. список пакетов:<br />
<br />
$ pacman -Ss libreoffice | grep \\-ru<br />
extra/libreoffice-fresh-ru 5.3.0-1<br />
extra/libreoffice-still-ru 5.2.5-1<br />
<br />
После чего установите LibreOffice необходимой версии с русской локализацией. <br />
<br />
== Перекодировка тегов MP3 ==<br />
<br />
Установите пакет {{pkg|python-mutagen}} и выполните следующую команду в каталоге с коллекцией MP3-файлов:<br />
<br />
find -iname '*.mp3' -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1<br />
<br />
Команда перекодирует старые теги из кодировки CP1251 в UTF8, запишет тег версии id3v2.4 и удалит теги первой версии.<br />
<br />
{{Note (Русский)|Не все проигрыватели из ОС Windows понимают теги формата 2.4. Поведение при этом различное: от игнорирования тега, до ошибки о повреждённом файле.}}<br />
<br />
{{Note (Русский)|В [[Music Player Daemon (Русский)|mpd]] после этого необходимо перечитать список проигрывания, например:<br />
<br />
{{bc|<br />
mpc update (дождитесь завершения, статус можно смотреть запуская mpc без параметров)<br />
mpc clear<br />
mpc listall | mpc add<br />
}}<br />
<br />
Опционально:<br />
<br />
{{bc|<br />
mpc rm all<br />
mpc save all<br />
}}<br />
}}</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=494516Systemd (Русский)2017-10-30T20:00:47Z<p>Sheykhnur: /* Журнал */ Добавлено описание классификации сообщений</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Daemons and system services (Русский)]]<br />
[[Category:Boot process (Русский)]]<br />
[[Category:Русский]]<br />
[[ar:Systemd]]<br />
[[de:Systemd]]<br />
[[el:Systemd]]<br />
[[en:Systemd]]<br />
[[es:Systemd]]<br />
[[fa:Systemd]]<br />
[[fr:Systemd]]<br />
[[it:Systemd]]<br />
[[ja:Systemd]]<br />
[[pt:Systemd]]<br />
[[zh-hans:Systemd]]<br />
[[zh-hant:Systemd]]<br />
{{Related articles start (Русский)}}<br />
{{Related|Systemd/Пользователь}}<br />
{{Related|Systemd/Tаймеры}}<br />
{{Related|systemd FAQ}}<br />
{{Related|init}}<br />
{{Related|Init Rosetta (Русский)}}<br />
{{Related|Демоны#Список демонов}}<br />
{{Related|Udev (Русский)}}<br />
{{Related|Увеличение производительности/Процесс загрузки системы}}<br />
{{Related|Разрешить пользователям выключение системы}}<br />
{{Related articles end}}<br />
{{Unmaintained (Русский)}}<br />
{{TranslationStatus (Русский)|systemd|20 сентября 2015|400997}}<br />
<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
:''systemd'' - менеджер системы и служб для Linux, совместимый со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[control groups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций.<br />
<br />
{{Note (Русский)|1=За детальным объяснением причин происходящего перехода Arch'а на ''systemd'' обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме]}}<br />
<br />
== Основы использования systemctl ==<br />
<br />
Главная команда для отслеживания и контроля состояния ''systemd'' - команда ''systemctl''. Некоторые из вариантов ее использования связаны с изучением состояния системы и управлением системой и службами. Обратитесь к странце руководства {{man|1|systemctl}} для получения более детальной информации.<br />
<br />
{{Tip (Русский)|<br />
* Вы можете использовать все приведенные ниже команды ''systemctl'' с ключом {{ic|-H ''пользователь''@''хост''}} для того, чтобы контролировать ''systemd'' на удаленной машине. В этом случае для соединения с удаленным процессом ''systemd'' будет использоваться [[Secure Shell (Русский)|SSH]]}}<br />
<br />
{{Tip (Русский)|<br />
* ''systemadm'' - официальная графическая оболочка для ''systemctl''. Она доступна в пакетах {{Pkg|systemd-ui}} и {{AUR|systemd-ui-git}}{{Broken package link (Русский)|{{aur-mirror (Русский)|systemd-ui-git}}}}}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
'''Список запущенных''' юнитов:<br />
<br />
$ systemctl<br />
<br />
или:<br />
<br />
$ systemctl list-units<br />
<br />
'''Список неудач''', - список юнитов, попытка запуска которых не удалась:<br />
<br />
$ systemctl --failed<br />
<br />
Доступные файлы юнитов можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (второй каталог имеет приоритет). Вы можете увидеть список установленных файлов юнитов командой:<br />
<br />
$ systemctl list-unit-files<br />
<br />
=== Использование юнитов ===<br />
<br />
Юнитами могут быть, например, службы (''.service''), точки монтирования (''.mount''), устройства (''.device'') или сокеты (''.socket'').<br />
<br />
При использовании ''systemctl'' обычно всегда необходимо указывать полное имя файла юнита, включая суффикс, например, {{ic|sshd.socket}}. Однако, есть несколько сокращений для указания юнита в следующих командах ''systemctl'':<br />
<br />
* Ели вы не указали суффикс, systemctl предполагает, что это ''.service''. Например, {{ic|netctl}} и {{ic|netctl.service}} будут трактоваться одинаково<br />
* Точки монтирования будут автоматически преобразованы в соответствующий юнит ''.mount''. Например, указание {{ic|/home}} равнозначно {{ic|home.mount}}<br />
* Так же, как и точки монтирования, имена устройств автоматически преобразуются в соответствующий юнит ''.device'', поэтому указание {{ic|/dev/sda2}} полностью соответствует юниту {{ic|dev-sda2.device}}<br />
<br />
Для получения дополнительной информации смотрите страницу справочного руководства {{man|5|systemd.unit}}.<br />
<br />
{{Note (Русский)|В некоторых именах юнитов содержится знак {{ic|@}} (например, {{ic|имя@''строка''.service}}). Это означает, что они являются [http://0pointer.de/blog/projects/instances.html экземплярами] юнита-''шаблона'', в имени которого нет части {{ic|''строка''}} (например, {{ic|имя@.service}}). Часть {{ic|''строка''}} называется ''идентификатором экземпляра'' и является аргументом, передаваемым юниту-шаблону при вызове команды ''systemctl'': в файле юнита он заменит указание (specifier) {{ic|%i}}.<br />
<br />
Для большей точности работы ''systemd'' будет сперва искать юнит по полному имени файла {{ic|имя@строка.суффикс}}, и ''лишь затем'' пытаться использовать экземпляр юнита-шаблона {{ic|имя@.суффикс}}, даже несмотря на то, что подобные "конфликты" довольно редки, так как большинство файлов юнитов, содержащих знак {{ic|@}}, подразумевают использование шаблонов. Также помните, что если вызвать юнит-шаблон без идентификатора экземпляра, ничего не получится, поскольку в этом случае не будет возможности передать указание {{ic|%i}}<br />
}}<br />
<br />
{{Tip (Русский)|<br />
* Большинство указанных ниже команд также работают, если указать несколько юнитов. Для получения дополнительной информации смотрите страницу справочного руководства {{man|1|systemctl}}<br />
* Начиная с версии [https://github.com/systemd/systemd/blob/master/NEWS#L323-L326 systemd 220], переключатель {{ic|--now}} может быть использован в сочетании с {{ic|enable}}, {{ic|disable}} и {{ic|mask}} чтобы соответственно запустить или остановить все юниты сразу.<br />
* Пакет может предложить юнитов для различных целей. Если вы только что установили пакет, воспользуйтесь командой {{ic|pacman -Qql ''package'' <nowiki>|</nowiki> grep -Fe .service -e .socket}} для проверки и нахождения юнитов. <br />
}}<br />
<br />
Незамедлительно '''запустить''' юнит:<br />
<br />
# systemctl start ''юнит''<br />
<br />
Незамедлительно '''остановить''' юнит:<br />
<br />
# systemctl stop ''юнит''<br />
<br />
'''Перезапустить''' юнит:<br />
<br />
# systemctl restart ''юнит''<br />
<br />
Запросить у юнита '''перезагрузку''' его настроек:<br />
<br />
# systemctl reload ''юнит''<br />
<br />
Показать '''статус''' юнита, а также запущен он или нет:<br />
<br />
$ systemctl status ''юнит''<br />
<br />
'''Проверить''', включен ли юнит в автозапуск при загрузке системы:<br />
<br />
$ systemctl is-enabled ''юнит''<br />
<br />
'''Включить''' юнит в автозапуск при загрузке системы:<br />
<br />
# systemctl enable ''юнит''<br />
<br />
'''Убрать''' юнит из автозапуска при загрузке системы:<br />
<br />
# systemctl disable ''юнит''<br />
<br />
'''Маскировать''' юнит, чтобы сделать невозможным его запуск: <br />
<br />
# systemctl mask ''юнит'' <br />
<br />
'''Снять маску''' юнита: <br />
<br />
# systemctl unmask ''юнит'' <br />
<br />
'''Показать страницу справочного руководства''', связанного с юнитом (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
$ systemctl help ''юнит''<br />
<br />
Перезагрузить ''systemd'' для поиска '''новых или измененных юнитов''':<br />
<br />
# systemctl daemon-reload<br />
<br />
=== Управление питанием ===<br />
<br />
Для управления питанием от имени непривилегированного пользователя необходим [[polkit]]. Если вы находитесь в локальной пользовательской сессии ''systemd-logind'', и нет других активных сессий, приведенные ниже команды сработают и без привилегий суперпользователя. В противном случае (например, вследствие того, что другой пользователь вошел в систему в tty), ''systemd'' автоматически запросит у вас пароль суперпользователя.<br />
<br />
Завершить работу и перезагрузить систему:<br />
<br />
$ systemctl reboot<br />
<br />
Завершить работу и выключить компьютер (с отключением питания):<br />
<br />
$ systemctl poweroff<br />
<br />
Перевести систему в ждущий режим:<br />
<br />
$ systemctl suspend<br />
<br />
Перевести систему в спящий режим:<br />
<br />
$ systemctl hibernate<br />
<br />
Перевести систему в режим гибридного сна (или suspend-to-both):<br />
<br />
$ systemctl hybrid-sleep<br />
<br />
== Написание файлов юнитов ==<br />
<br />
Синтаксис [http://www.freedesktop.org/software/systemd/man/systemd.unit.html файлов юнитов] ''systemd'' вдохновлен файлами ''.desktop'' XDG Desktop Entry Specification, а они, в свою очередь - файлами ''.ini'' Microsoft Windows. Файлы юнитов загружаются из двух мест. Вот они по приоритету от низшего к высшему:<br />
<br />
* {{ic|/usr/lib/systemd/system/}}: юниты, предоставляемые пакетами при их установке<br />
* {{ic|/etc/systemd/system/}}: юниты, устанавливаемые системным администратором<br />
<br />
{{Note (Русский)|При запуске ''systemd'' в [[systemd/Пользователь#Как это работает|пользовательском режиме]] используются совершенно другие пути загрузки}}<br />
<br />
В качестве примера, посмотрите установленные юниты вашими пакетами, а также [http://www.freedesktop.org/software/systemd/man/systemd.service.html#Examples секцию примеров] из {{man|5|systemd.service}}. <br />
<br />
{{Tip (Русский)|Как и обычно, вы можете добавлять комментарии, предваряемые символом {{ic|#}}, но только на новых строках. Не используйте комментарии в конце строки, после параметров ''systemd'', иначе юнит не будет запущен}}<br />
<br />
=== Обработка зависимостей ===<br />
<br />
В случае использования ''systemd'' зависимости могут быть указаны правильным построением файлов юнитов. Наиболее частый случай -- юниту ''A'' требуется, чтобы юнит ''B'' был запущен перед тем, как запустится сам юнит ''A''. В этом случае добавьте строки {{ic|1=Requires=''B''}} и {{ic|1=After=''B''}} в секцию {{ic|[Unit]}} файла службы ''A''. Если подобная зависимость не является обязательной, взамен указанных выше добавьте, соответственно, строки {{ic|1=Wants=''B''}} и {{ic|1=After=''B''}}. Обратите внимание, что {{ic|1=Wants=}} и {{ic|1=Requires=}} не подразумевают {{ic|1=After=}}, что означает, что если {{ic|1=After=}} не определено, два юнита будут запущены параллельно друг другу.<br />
<br />
Обычно зависимости указываются в файлах служб, а не в целевых юнитах. Например, {{ic|network.target}} потребуется любой службе, которая связана с настройкой ваших сетевых интерфейсов, поэтому в любом случае определите загрузку вашего пользовательского юнита после запуска {{ic|network.target}}.<br />
<br />
=== Типы служб ===<br />
<br />
Существует несколько различных типов запуска служб, которые надо иметь в виду при написании пользовательского файла службы. Тип определяется параметром {{ic|1=Type=}} в секции {{ic|[Service]}}:<br />
<br />
* {{ic|1=Type=simple}} (по умолчанию): ''systemd'' предполагает, что служба будет запущена незамедлительно. Процесс при этом не должен разветвляться. Не используйте этот тип, если другие службы зависят от очередности при запуске данной службы. Исключение - активация сокета<br />
* {{ic|1=Type=forking}}: ''systemd'' предполагает, что служба запускается однократно и процесс разветвляется с завершением родительского процесса. Используйте данный тип для запуска классических демонов за исключением тех случаев, когда, как вам известно, в таком поведении процесса нет необходимости. Вам следует также определить {{ic|1=PIDFile=}}, чтобы ''systemd'' могла отслеживать основной процесс<br />
* {{ic|1=Type=oneshot}}: полезен для скриптов, которые выполняют одно задание и завершаются. Вам может понадобиться также установить параметр {{ic|1=RemainAfterExit=yes}}, чтобы ''systemd'' по-прежнему считала процесс активным, даже после его завершения<br />
* {{ic|1=Type=notify}}: идентичен параметру {{ic|1=Type=simple}}, но с той оговоркой, что демон пошлет ''systemd'' сигнал о своей готовности. Эталонная реализация данного уведомления представлена в ''libsystemd-daemon.so''<br />
* {{ic|1=Type=dbus}}: сервис считается находящимся в состоянии готовности, когда определенное {{ic|BusName}} появляется в системной шине DBus<br />
* {{ic|1=Type=idle}}: ''systemd'' will delay execution of the service binary until all jobs are dispatched. Кроме того, поведение очень похоже на {{ic|1=Type=simple}}.<br />
Смотрите справочную страницу руководства [http://www.freedesktop.org/software/systemd/man/systemd.service.html#Type= systemd.service(5)] для более детального пояснения значений {{ic|Type}}.<br />
<br />
Обратитесь к руководству {{man|5|systemd.service}} для получения более детального объяснения.<br />
<br />
=== Редактирование предоставленных пакетами файлов юнитов ===<br />
<br />
Есть два способа редактирования файлов юнита, предоставленного пакетом: заменить весь блок файла на новый или создать фрагмент кода, который применяется в верхней части существующего блока файла. В обоих методах, чтобы применить изменения, нужно перезагрузить юнит. Это может быть сделано либо путем редактирования блока с помощью {{ic|systemctl edit}} (которая автоматически загружает модуль) либо при перезагрузке всех юнитов:<br />
<br />
# systemctl daemon-reload<br />
<br />
{{Tip (Русский)|<br />
* Вы можете использовать ''systemd-delta'', чтобы увидеть, какие файлы юнитов были переопределены и что конкретно было изменено. Для обслуживания системы в целом важно регулярно проверять предоставляемые файлы юнитов на полученные обновления.<br />
* Используйте {{ic|systemctl cat ''юнит''}} чтобы посмотреть содержимое файла юнита и все Drop-in snippets кода.<br />
* Подсветку синтаксиса для файлов юнитов ''systemd'' в редакторе [[Vim (Русский)|Vim]] можно включить, установив пакет {{Pkg|vim-systemd}} из [[official repositories (Русский)|официальных репозиториев]].<br />
}}<br />
<br />
==== Замена файлов юнита ====<br />
<br />
Чтобы заменить файл юнита {{ic|/usr/lib/systemd/system/''юнит''}}, создайте файл {{ic|/etc/systemd/system/''юнит''}} и перезапустите юнит для обновления символьных ссылок:<br />
<br />
# systemctl reenable ''юнит''<br />
<br />
В качестве альтернативы, можно выполнить:<br />
<br />
# systemctl edit --full ''юнит''<br />
<br />
Эта команда откроет {{ic|/etc/systemd/system/''юнит''}} в вашем текстовом редакторе (копирует установленную версию, если она еще не существует) и автоматически загружает её, когда вы закончите редактирование.<br />
<br />
{{Note (Русский)|Pacman не обновит заменённые файлы юнита, в отличие от оригинальных которые обновятся. Так что этот метод может сделать обслуживание системы более сложным. По этой причине рекомендуется следующий подход.}}<br />
<br />
==== Drop-in snippets ====<br />
<br />
Чтобы создать drop-in snippets для файла юнита {{ic|/usr/lib/systemd/system/''юнит''}}, создайте каталог {{ic|/etc/systemd/system/''юнит''.d/}} и поместите файлы ''.conf'' там, чтобы отменять или добавлять новые опции. ''systemd'' будет анализировать эти файлы ''.conf'' и применять их поверх оригинального юнита.<br />
<br />
Самый простой способ чтобы выполнить это, сделайте:<br />
<br />
# systemctl edit ''юнит''<br />
<br />
Эта команда откроет {{ic|/etc/systemd/system/''юнит''.d/override.conf}} (создаст его если это потребуется) в вашем текстовом редакторе и автоматически перезапустит юнит, когда вы закончите редактирование.<br />
<br />
==== Примеры ====<br />
<br />
Например, если вы просто хотите добавить дополнительную зависимость к юниту, можно создать следующий файл:<br />
<br />
{{hc|/etc/systemd/system/''unit''.d/customdependency.conf|2=<br />
[Unit]<br />
Requires=''new dependency''<br />
After=''new dependency''<br />
}}<br />
<br />
В качестве другого примера, для того чтобы заменить направление для юнита {{ic|ExecStart}}, что не относится к типу {{ic|oneshot}}, создайте следующий файл:<br />
<br />
{{hc|/etc/systemd/system/''unit''.d/customexec.conf|2=<br />
[Service]<br />
ExecStart=<br />
ExecStart=''новая комманда''<br />
}}<br />
<br />
Обратите внимание {{ic|ExecStart}} должна быть очищена, перед новым назначением ([https://bugzilla.redhat.com/show_bug.cgi?id=756787#c9]).<br />
<br />
Еще один пример, чтобы автоматически перезапустить службу:<br />
<br />
{{hc|/etc/systemd/system/''unit''.d/restart.conf|2=<br />
[Service]<br />
Restart=always<br />
RestartSec=30<br />
}}<br />
<br />
== Цели ==<br />
<br />
''systemd'' использует ''цели'' (англ. target), которые выполняют ту же задачу, что и уровни запуска (англ. runlevel), но действуют немного по-другому. Каждая ''цель'' поименована (т.е. имеет собственное имя, а не номер) и, как предполагается, предназначена для конкретных задач; возможно иметь в одно и то же время активными несколько таких целей. Некоторые ''цели'' реализованы так, что наследуют все службы других ''целей'', добавляя к ним свои. В ''systemd'' имеются также ''цели'', которые имитируют общие уровни запуска SystemVinit, поэтому вы можете переключаться между целевыми юнитами, используя привычную команду {{ic|telinit RUNLEVEL}}. <br />
<br />
=== Получение информации о текущих целях ===<br />
<br />
При использовании ''systemd'' для этого предназначена следующая команда (заменяющая {{ic|runlevel}}):<br />
<br />
$ systemctl list-units --type=target<br />
<br />
=== Создание пользовательской цели ===<br />
<br />
Уровни запуска, по которым расписаны конкретные задачи при установке ванильной Fedora по умолчанию - 0, 1, 3, 5 и 6 - имеют соответствие 1:1 с конкретными ''целями systemd''. К сожалению, не существует хорошего способа сделать то же самое для определяемых пользователем уровней, таких как 2 и 4. Их использование предполагает, что вы создаете новый именованный '' целевой юнит systemd'' наподобие {{ic|/etc/systemd/system/''ваша цель''}}, который берет за основу один из существующих уровней запуска (взгляните, например, на {{ic|/usr/lib/systemd/system/graphical.target}}), создаете каталог {{ic|/etc/systemd/system/''ваша цель''.wants}}, а после этого - символические ссылки на дополнительные службы из директории {{ic|/usr/lib/systemd/system/}}, которые вы хотите включить при загрузке.<br />
<br />
=== Таблица целей ===<br />
<br />
{| class="wikitable"<br />
! Уровнень запуска SysV !! Цель systemd !! Примечания<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровни запуска, определенные пользователем/специфичные для узла. По умолчанию соответствует уровню запуска 3<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят в систему при помощи множества консолей или через сеть<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех служб на уровне 3 и графического менеджера входа в систему<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка<br />
|-<br />
|}<br />
<br />
=== Изменение текущей цели ===<br />
<br />
В ''systemd'' цели доступны посредством ''целевых юнитов''. Вы можете изменить их командой:<br />
<br />
# systemctl isolate graphical.target<br />
<br />
Данная команда изменит только лишь текущую цель и не повлияет на следующую загрузку системы. Она соответствует командам Sysvinit вида {{ic|telinit 3}} и {{ic|telinit 5}}.<br />
<br />
=== Изменение цели загрузки по умолчанию ===<br />
<br />
Стандартная цель - {{ic|default.target}}, которая по умолчанию является псевдонимом {{ic|graphical.target}} (примерно соответствующего прежнему уровню запуска 5). Для изменения цели загрузки по умолчанию добавьте один из следующих [[kernel parameters|параметров ядра]] в ваш загрузчик:<br />
<br />
* {{ic|1=systemd.unit=multi-user.target}} (что примерно соответствует прежнему уровню запуска 3)<br />
* {{ic|1=systemd.unit=rescue.target}} (что примерно соответствует прежнему уровню запуска 1)<br />
<br />
Другой способ - оставить загрузчик без изменений, а изменить целевой юнит по умолчанию - ''default.target''. Это делается с использованием ''systemctl'':<br />
<br />
# systemctl set-default multi-user.target<br />
<br />
Чтобы иметь возможность перезаписать ранее установленную {{ic|default.target}}, используйте опцию force:<br />
<br />
# systemctl set-default -f multi-user.target<br />
<br />
Эффект от применения данной команды выводится через ''systemctl''. Символическая ссылка на новый целевой юнит по умолчанию создается в директории {{ic|/etc/systemd/system/default.target}}.<br />
<br />
== Временные файлы ==<br />
<br />
"''systemd-tmpfiles'' создает, удаляет и очищает непостоянные и временные файлы и каталоги". Он читает конфигурационные файлы из {{ic|/etc/tmpfiles.d/}} и {{ic|/usr/lib/tmpfiles.d/}}, чтобы понять, что ему следует делать. Конфигурационные файлы в первом каталоге имеют приоритет над теми, что расположены во втором.<br />
<br />
Конфигурационные файлы обычно предоставляются вместе с файлами служб и имеют названия вида {{ic|/usr/lib/tmpfiles.d/''программа''.conf}}. Например, демон [[Samba (Русский)|Samba]] предполагает, что существует каталог {{ic|/run/samba}} с корректными правами доступа. Поэтому пакет {{Pkg|samba}} поставляется в следующей конфигурации:<br />
<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|D /run/samba 0755 root root}}<br />
<br />
Конфигурационные файлы также могут использоваться для записи значений при старте системы. Например, если вы используете {{ic|/etc/rc.local}} для отключения пробуждения от устройств USB при помощи {{ic|echo USBE > /proc/acpi/wakeup}}, вместо этого вы можете использовать следующий tmpfile:<br />
<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|w /proc/acpi/wakeup - - - - USBE}}<br />
<br />
Для получения дополнительной информации смотрите страницы справочного руководства (man) {{ic|systemd-tmpfiles(8)}} и {{ic|tmpfiles.d(5)}}.<br />
<br />
{{Note (Русский)|Этот способ может не сработать для установки опций в {{ic|/sys}}, поскольку служба ''systemd-tmpfiles-setup'' может запускаться перед тем, как будут загружены соответствующие модули устройств. В этом случае при помощи команды {{ic|modinfo ''модуль''}} вы можете проверить, имеет ли модуль параметр для установки необходимой вам опции, и установить эту опцию в [[Kernel modules (Русский)#Настройка параметров модуля|конфигурационном файле /etc/modprobe.d]]. В противном случае для установки верных атрибутов сразу, как только устройство появляется, вам придется написать [[Udev#About_udev_rules|правило udev]]}}<br />
<br />
== Таймеры ==<br />
<br />
Таймер - это файл конфигурации юнита, имя которого заканчивается на ''.timer''. Он расшифровывает информацию о таймере, контролируемом при помощи ''systemd'', для активации в определенное время. Смотрите статью [[systemd/Tаймеры]].<br />
<br />
{{Note (Русский)|Таймеры способны в значительной степени заменить функциональность ''cron''. Смотрите раздел [[systemd/Tаймеры#В качестве замены cron|Замена cron]]}}<br />
<br />
== Монтирование ==<br />
<br />
Так как systemd полностью заменяет собой SysVinit, он отвечает за точки монтирования, описанные в файле {{ic|/etc/fstab}}. Фактически он выходит за рамки возможностей обычного {{ic|fstab}}, реализуя особые точки монтирования с префиксом {{ic|x-systemd}}, например, т.н. ''автомонтирование'' (монтирование по запросу) использует данные расширения (см. [[Fstab_(Русский)#Автоматическое монтирование с systemd|для более подробной информации как это реализовано]]). С полным описанием всех расширений и работы с ними вы можете ознакомиться на английском в [https://www.freedesktop.org/software/systemd/man/systemd.mount.html#fstab]<br />
<br />
== Журнал ==<br />
<br />
''systemd'' имеет собственную систему ведения логов, названную журналом (journal). В связи с этим больше не требуется запускать демон {{ic|syslog}}. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
В Arch Linux каталог {{ic|/var/log/journal/}} является частью пакета {{Pkg|systemd}}, и по умолчанию (когда в конфигурационном файле {{ic|/etc/systemd/journald.conf}} параметр {{ic|Storage&#61;}} имеет значение {{ic|auto}}) журнал записывается именно в {{ic|/var/log/journal/}}. Если вы или какая-то программа удалит этот каталог, ''systemd'' '''не''' пересоздаст его автоматически и вместо этого будет писать свои журналы по непостоянному пути {{ic|/run/systemd/journal}}. Однако, папка будет пересоздана, когда вы установите {{ic|1=Storage=persistent}} и выполните {{ic|systemctl restart systemd-journald}} (или перезагрузитесь).<br />
<br />
Сообщения в журнале классифицируются по приоритету и объектам. Классификация записей соответствует классическому протоколу [https://en.wikipedia.org/wiki/Syslog Syslog] ([https://tools.ietf.org/html/rfc5424 RFC 5424]).<br />
<br />
=== Фильтрация вывода ===<br />
<br />
''journalctl'' позволяет фильтровать вывод по особым полям. Помните, что, если должно быть отражено большое количество сообщений или необходима фильтрация в большом промежутке времени, вывод этой команды может быть отложен на какое-то время.<br />
<br />
{{Tip (Русский)|Поскольку журнал хранится в двоичном формате, содержимое его сообщений не меняется. Это означает, что их можно просматривать при помощи ''strings'', например, в окружении, в котором не установлен ''systemd''. Пример:<br />
<br />
{{bc|$ strings /mnt/arch/var/log/journal/af4967d77fba44c6b093d0e9862f6ddd/system.journal <nowiki>| grep -i </nowiki>''сообщение''}}<br />
<br />
}}<br />
<br />
Примеры:<br />
<br />
* Показать все сообщения с момента текущей загрузки системы: {{bc|# journalctl -b}} Однако, пользователи часто интересуются сообщениями не для текущей, а для предыдущей загрузки (например, если произошел невосстановимый сбой системы). Это возможно, если задать параметр флагу {{ic|-b}}: {{ic|journalctl -b -0}} покажет сообщения с момента текущей загрузки, {{ic|journalctl -b -1}} - предыдущей загрузки, {{ic|journalctl -b -2}} - следующей за предыдущей, и т.д. Для просмотра полного описания смотрите страницу справочного руководства {{man|1|journalctl}}: имеется гораздо более мощная семантика<br />
* Показать все сообщения, начиная с какой-либо даты (и, если хотите, времени): {{bc|1=# journalctl --since="2012-10-30 18:17:16"}}<br />
* Показать все сообщения за последние 20 минут: {{bc|1=# journalctl --since "20 min ago"}}<br />
* Показывать новые сообщения: {{bc|# journalctl -f}}<br />
* Показать все сообщения для конкретного исполняемого файла: {{bc|# journalctl /usr/lib/systemd/systemd}}<br />
* Показать все сообщения для конкретного процесса: {{bc|1=# journalctl _PID=1}}<br />
* Показать все сообщения для конкретного юнита: {{bc|# journalctl -u netcfg}}<br />
* Показать кольцевой буфер ядра: {{bc|1=# journalctl -k}}<br />
* Показать auth.log эквивалентно фильтрации syslog facility: {{bc|1=# journalctl -f -l SYSLOG_FACILITY=10}}<br />
<br />
Для получения дополнительной информации смотрите страницы справочного руководства {{man|1|journalctl}} и {{man|7|systemd.journal-fields}} или [http://0pointer.de/blog/projects/journalctl.html пост в блоге] Lennart'а.<br />
<br />
{{Tip (Русский)|1=<br />
По умолчанию ''journalctl'' отсекает части строк, которые не вписываются в экран по ширине, и, в некоторых случаях, возможно, будет лучше использовать специальную программу-обертку. Управление этой возможностью производится посредством [[Environment variables (Русский)|переменной окружения]] {{ic|SYSTEMD_LESS}}, в которой содержатся опции, передаваемые в [[Базовые утилиты#less|less]] (программа постраничного просмотра, используемая по умолчанию). По умолчанию ей присвоены опции {{ic|FRSXMK}} (для получения дополнительной информации смотрите {{man|1|less}} и {{man|1|journalctl}}).<br />
<br />
Если убрать опцию {{ic|S}}, будет достигнут требуемый результат. Например, запустите ''journalctl'', как показано здесь:<br />
<br />
$ SYSTEMD_LESS=FRXMK journalctl<br />
<br />
Если вы хотите, чтобы такое поведение использовалось по умолчанию, [[Environment variables (Русский)#На уровне пользователя|экспортируйте]] переменную из файла {{ic|~/.bashrc}} или {{ic|~/.zshrc}}<br />
}}<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, его размер по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом, например, в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
{{hc|/etc/systemd/journald.conf|2= <br />
SystemMaxUse=50M<br />
}} <br />
<br />
Для получения дополнительной информации обратитесь к странице справочного руководства {{man|5|journald.conf}}.<br />
<br />
=== Очистка файлов журнала вручную ===<br />
<br />
Файлы журнала находятся в {{ic|/var/log/journal}}, так что {{ic|rm}} будет работать.<br />
Или используйте {{ic|journalctl}},<br />
<br />
Примеры:<br />
<br />
* Remove archived journal files until the disk space they use falls below 100M: {{bc|1=# journalctl --vacuum-size=100M}}<br />
* Make all journal files contain no data older than 2 weeks. {{bc|1=# journalctl --vacuum-time=2weeks}}<br />
<br />
Для получения дополнительной информации, обратитесь к {{man|1|journalctl}}.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией non-journald aware [[Syslog-ng|syslog]] можно обеспечить, заставив ''systemd'' направлять все сообщения через сокет {{ic|/run/systemd/journal/syslog}}. Чтобы дать возможность демону syslog работать вместе с журналом ''systemd'', следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). Пакетом {{Pkg|syslog-ng}} из репозиториев автоматически предоставляется необходимая конфигурация.<br />
<br />
Начиная с версии systemd 216, по умолчанию {{ic|journald.conf}} для передачи данных в сокет был изменён на {{ic|1=ForwardToSyslog=no}}, чтобы избежать нагрузки на систему, потому что [[rsyslog]] или [[syslog-ng]] (начиная с версии 3.6) тянут сообщения из журнала [http://lists.freedesktop.org/archives/systemd-devel/2014-August/022295.html#journald самостоятельно].<br />
<br />
Смотрите [[Syslog-ng#Overview]] и [[Syslog-ng#syslog-ng and systemd journal]], или соответственно [[rsyslog]] для подробной информации о конфигурировании.<br />
<br />
Если взамен вы используете {{Pkg|rsyslog}}, нет необходимости менять эту настройку, поскольку [[rsyslog]] забирает сообщения из журнала [http://lists.freedesktop.org/archives/systemd-devel/2014-August/022295.html#journald самостоятельно].<br />
<br />
=== Перенаправить журнал на /dev/tty12 ===<br />
<br />
Создайте [[#Редактирование предоставленных пакетами файлов юнитов|drop-in каталог]] {{ic|/etc/systemd/journald.conf.d}} и создайте файл {{ic|fw-tty12.conf}} с содержимым:<br />
<br />
{{hc|1=/etc/systemd/journald.conf.d/fw-tty12.conf|2=<br />
[Journal]<br />
ForwardToConsole=yes<br />
TTYPath=/dev/tty12<br />
MaxLevelConsole=info<br />
}}<br />
<br />
Затем [[#Использование юнитов|перезапустите]] systemd-journald.<br />
<br />
=== Команда просмотра другого журнала ===<br />
Если появилась необходимость проверить логи другой системы, которая неисправна, загрузитесь с работоспособной системы, чтобы восстановить неисправную систему.<br />
Примонтируйте диск неисправной системы, например в {{ic|/mnt}} и укажите путь журнала через {{ic|-D}}/{{ic|--directory}}, например так:<br />
<br />
$ journalctl -D ''/mnt''/var/log/journal -xe<br />
<br />
== Оптимизация ==<br />
<br />
{{Merge (Русский)|Увеличение производительности/Процесс загрузки системы|Данный раздел в оригинальной английской вики перенесен в статью [[Improving performance/Boot process]]}}<br />
<br />
=== Анализ процесса загрузки ===<br />
<br />
==== Использование systemd-analyze ====<br />
<br />
Systemd предоставляет инструмент под названием {{ic|systemd-analyze}}, позволяющий проанализировать процесс загрузки вашей системы, чтобы можно было увидеть, какие файлы юнитов тормозят загрузку. Соответственно, вы можете оптимизировать вашу систему. Для использования данного инструмента вам потребуется установить пакеты {{Pkg|python2-cairo}} и {{Pkg|python2-gobject}}.<br />
<br />
Чтобы увидеть, сколько времени было потрачено на подготовку пространства ядра и пространства пользователя во время загрузки, просто выполните команду:<br />
<br />
$ systemd-analyze<br />
<br />
{{Tip|<br />
<br />
* Если вы дополните хуком {{ic|timestamp}} ваш массивr {{ic|HOOKS}} в конфигурационном файле {{ic|/etc/[[mkinitcpio]].conf}} и пересоберете ваш образ initramfs командой {{ic|mkinitcpio -p linux}}, systemd-analyze сколько времени затрачивается на initramfs.<br />
<br />
* Если вы загружаетесь при помощи [[UEFI]] и используете загрузчик, в который имплементирова [http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface Boot Loader Interface] от systemd (что в настоящий момент применено только в [[gummiboot (Русский)]] ), systemd-analyze дополнительно сможет показать, сколько времени затрачено на прошивку EFI сам загрузчик.}}<br />
<br />
Чтобы увидеть список запускаемых файлов юнитов, отсортированный по потраченному каждым из них на загрузку времени, выполните команду:<br />
<br />
$ systemd-analyze blame<br />
<br />
Вы также можете создать файл SVG, показывающий процесс загрузки в графическом виде, наподобие [[Bootchart]]:<br />
<br />
$ systemd-analyze plot > plot.svg<br />
<br />
==== Использование systemd-bootchart ====<br />
<br />
Bootchart объединен с systemd с 17 октября 2012 года и вы можете использовать его для загрузки также, как и оригинальный bootchart. Добавьте следующие команду к строке инициализации ядра:<br />
<br />
initcall_debug printk.time=y init=/usr/lib/systemd/systemd-bootchart<br />
<br />
==== Использование bootchart2 ====<br />
<br />
Вы также можете использовать версию bootchart для визуализации последовательности при загрузке системы.<br />
Из-за невозможности использовать стандартные установки bootchart (так как нельзя добавить в командную строку ядра вторую запись init), вам придется воспользоваться пакетом {{AUR|bootchart2-git}}, поставляемым с недокументированной службой ''systemd''. После установки ''bootchart2'' [[#Использование юнитов|включите]] службу ''bootchart''.<br />
<br />
За дальнейшей и детализированной информацией об использовании данной версии ''bootchart'' oбратитесь к [https://github.com/mmeeks/bootchart документации (англ.)].<br />
<br />
== Решение проблем ==<br />
<br />
=== Изучение ошибок systemd ===<br />
<br />
В качестве примера мы изучим ошибки службы {{ic|systemd-modules-load}}:<br />
<br />
'''1.''' Давайте найдем службы ''systemd'', которые не смогли запуститься:<br />
<br />
{{hc|1=$ systemctl --failed|2=<br />
systemd-modules-load.service loaded '''failed failed''' Load Kernel Modules<br />
}}<br />
<br />
'''2.''' Хорошо, мы обнаружили проблему в службе {{ic|systemd-modules-load}} и хотим узнать больше:<br />
<br />
{{hc|$ systemctl status systemd-modules-load|2=<br />
systemd-modules-load.service - Load Kernel Modules<br />
Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)<br />
Active: '''failed''' (Result: exit-code) since So 2013-08-25 11:48:13 CEST; 32s ago<br />
Docs: man:systemd-modules-load.service(8).<br />
man:modules-load.d(5)<br />
Process: '''15630''' ExecStart=/usr/lib/systemd/systemd-modules-load ('''code=exited, status=1/FAILURE''')<br />
}}<br />
<br />
Если вы не увидите в списке {{ic|Process ID}}, просто перезапустите службу при помощи команды {{ic|systemctl restart systemd-modules-load}}<br />
<br />
'''3.''' Теперь у нас есть id процесса (PID) для более детального изучения ошибки. Введите следующую команду с правильным {{ic|Process ID}} (в данном примере это 15630):<br />
<br />
{{hc|1=$ journalctl _PID=15630|2=<br />
-- Logs begin at Sa 2013-05-25 10:31:12 CEST, end at So 2013-08-25 11:51:17 CEST. --<br />
Aug 25 11:48:13 mypc systemd-modules-load[15630]: '''Failed to find module 'blacklist usblp''''<br />
Aug 25 11:48:13 mypc systemd-modules-load[15630]: '''Failed to find module 'install usblp /bin/false'''' <br />
}}<br />
<br />
'''4.''' Мы видим, что некоторые конфигурационные файлы модулей ядра имеют неверные настройки. В этом случае мы взглянем на эти настройки в каталоге {{ic|/etc/modules-load.d/}}:<br />
<br />
{{hc|$ ls -Al /etc/modules-load.d/|<br />
...<br />
-rw-r--r-- 1 root root 79 1. Dez 2012 blacklist.conf<br />
-rw-r--r-- 1 root root 1 2. Mär 14:30 encrypt.conf<br />
-rw-r--r-- 1 root root 3 5. Dez 2012 printing.conf<br />
-rw-r--r-- 1 root root 6 14. Jul 11:01 realtek.conf<br />
-rw-r--r-- 1 root root 65 2. Jun 23:01 virtualbox.conf<br />
...<br />
}}<br />
<br />
'''5.''' Сообщение об ошибке {{ic|Failed to find module 'blacklist usblp'}} должно относиться к неправильной настройке в файле {{ic|blacklist.conf}}. Давайте закомментируем настройку, вставив хэш-символ '''#''' перед каждой опцией, найденной на шаге 3:<br />
<br />
{{hc|/etc/modules-load.d/blacklist.conf|<br />
'''#''' blacklist usblp<br />
'''#''' install usblp /bin/false<br />
}}<br />
<br />
'''6.''' Теперь попробуйте запустить {{ic|systemd-modules-load}}:<br />
<br />
$ systemctl start systemd-modules-load<br />
<br />
Если все прошло успешно, ничего не отобразится. Если же вы видите какие-либо ошибки, вернитесь к шагу 3 и используйте новый PID для устранения оставшихся ошибок.<br />
<br />
Если все хорошо, вы можете удостовериться, что служба успешно запустилась, при помощи команды:<br />
<br />
{{hc|$ systemctl status systemd-modules-load|2=<br />
systemd-modules-load.service - Load Kernel Modules<br />
Loaded: '''loaded''' (/usr/lib/systemd/system/systemd-modules-load.service; static)<br />
Active: '''active (exited)''' since So 2013-08-25 12:22:31 CEST; 34s ago<br />
Docs: man:systemd-modules-load.service(8)<br />
man:modules-load.d(5)<br />
Process: 19005 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)<br />
Aug 25 12:22:31 mypc systemd[1]: '''Started Load Kernel Modules'''.<br />
}}<br />
<br />
Чаще всего подобные проблемы можно решить так, как показано выше. Для дальнейшего изучения этого вопроса взгляните на раздел [[#Диагностика проблем с загрузкой системы]].<br />
<br />
=== Диагностика проблем с загрузкой системы ===<br />
<br />
Загрузитесь с этими параметрами ядра:<br />
<br />
{{ic|<nowiki>systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M</nowiki>}}<br />
<br />
[http://freedesktop.org/wiki/Software/systemd/Debugging Дополнительная информация по отладке].<br />
<br />
=== Диагностика проблем в работе определенной службы ===<br />
<br />
{{Accuracy|This may not catch all errors such as missing libraries.|User talk:Alucryd#Plex}} <br />
<br />
Если какая-либо служба ''systemd'' ведет себя не так, как ожидается, и вы хотите получить дополнительную информацию о том, что происходит, присвойте [[Environment variables (Русский)|переменной окружения]] {{ic|SYSTEMD_LOG_LEVEL}} значение {{ic|debug}}. Например, чтобы запустить демон ''systemd-networkd'' в режиме отладки:<br />
<br />
# systemctl stop systemd-networkd<br />
# SYSTEMD_LOG_LEVEL=debug /lib/systemd/systemd-networkd<br />
<br />
В качестве альтернативы можно временно отредактировать файл службы для получения подробного вывода. Например:<br />
<br />
{{hc|/usr/lib/systemd/system/systemd-networkd.service|2=<br />
[Service]<br />
...<br />
Environment=SYSTEMD_LOG_LEVEL=debug<br />
....<br />
}}<br />
<br />
Если вы знаете, что в дальнейшем вам по-прежнему будет нужна эта отладочная информация, добавьте переменную [[#Редактирование предоставленных пакетами файлов юнитов|обычным]] способом.<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виновата служба, которая не завершает свою работу. ''systemd'' ожидает некоторое время, пока каждая служба завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) ее. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging/#shutdowncompleteseventually данной статье (англ.)].<br />
<br />
=== По-видимому, процессы с кратким сроком жизни не оставляют записей в логах ===<br />
<br />
Если команда {{ic|journalctl -u foounit}} не показывает вывода для службы с коротким сроком жизни, вместо нее обратитесь к PID. Например, если загрузка службы {{ic|systemd-modules-load.service}} завершилась неудачно и команда {{ic|systemctl status systemd-modules-load}} показывает, что она была запущена с PID 123, то вы сможете посмотреть вывод процесса в журнале под данным PID, то есть командой {{ic|journalctl -b _PID&#61;123}}. Такие поля метаданных для журнала, как {{ic|_SYSTEMD_UNIT}} и {{ic|_COMM}}, собираются асинхронно и зависят от директории {{ic|/proc}} в случае с действующими процессами. Исправление этой ситуации требует внесения исправлений в ядро для обеспечения предоставления этих данных через сокет, наподобие {{ic|SCM_CREDENTIALS}}.<br />
<br />
=== Отключение журналирования аварийных дампов памяти приложений ===<br />
<br />
Добавьте в файл {{ic|/etc/systemd/coredump.conf}} такую строку:<br />
<br />
Storage=none<br />
<br />
и выполните:<br />
<br />
# systemctl daemon-reload <br />
<br />
чтобы перезагрузить конфигурацию.<br />
<br />
=== Сообщение об ошибке при перезагрузке или выключении ===<br />
<br />
==== cgroup : option or name mismatch, new: 0x0 "", old: 0x4 "systemd" ====<br />
<br />
Для получения объяснения смотрите [https://bbs.archlinux.org/viewtopic.php?pid=1372562#p1372562 эту ветку].<br />
<br />
==== watchdog watchdog0: watchdog did not stop! ====<br />
<br />
Для получения объяснения смотрите [https://bbs.archlinux.org/viewtopic.php?pid=1372562#p1372562 эту ветку].<br />
<br />
=== Время загрузки системы увеличивается с течением времени ===<br />
<br />
После использования {{ic|systemd-analyze}} некоторое количество пользователей заметило, что их время загрузки значительно увеличилось по сравнению с тем, к чему они привыкли. После использования {{ic|systemd-analyze blame}} [[NetworkManager (Русский)|NetworkManager]] тратил необычно большое количество времени на запуск.<br />
<br />
Проблема некоторых пользователей была связана с тем, что {{ic|/var/log/journal}} становился слишком большим. При этом также может уменьшаться скорость работы других команд, например, {{ic|systemctl status}} или {{ic|journalctl}}. Для решения проблемы можно удалить все файлы из каталога журнала (в идеале - сделав где-нибудь резервные копии, хотя бы временно) и затем установить предел размера файла журнала, как описано в разделе [[#Ограничение размера журнала]].<br />
<br />
=== systemd-tmpfiles-setup.service fails to start at boot ===<br />
<br />
Начиная с версии Systemd 219, {{ic|/usr/lib/tmpfiles.d/systemd.conf}} определяет атрибуты для каталогов ACL, в {{ic|/var/log/journal}} и, следовательно, требует чтобы поддержка ACL была включена для файловой системы, где находится журнал.<br />
<br />
Смотрите инструкцию [[Access Control Lists (Русский)#Включение ACL]] для включения ACL на файловой системе в которой {{ic|/var/log/journal}}.<br />
<br />
== Смотрите также ==<br />
<br />
* [http://wiki.opennet.ru/Systemd Systemd для администраторов (Рус.)]<br />
* [http://www2.kangran.su/%7Ennz/pub/s4a/s4a_latest.pdf systemd для администраторов (PDF)] - перевод [http://0pointer.de/blog/projects цикла статей] Леннарта Поттеринга (Lennart Poettering)<br />
* [http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
* [[Wikipedia:ru:Systemd|Статья в Википедии]]<br />
* [http://0pointer.de/public/systemd-man/ Страницы справочных руководств (англ.)]<br />
* [http://freedesktop.org/wiki/Software/systemd/Optimizations Оптимизации systemd (англ.)]<br />
* [http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
* [http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Советы и трюки (англ.)]<br />
* [http://fedoraproject.org/wiki/Systemd О systemd в Fedora Project (англ.)]<br />
* [http://fedoraproject.org/wiki/How_to_debug_Systemd_problems Отладка проблем systemd (англ.)]<br />
* [http://www.h-online.com/open/features/Control-Centre-The-systemd-Linux-init-system-1565543.html часть 1] и [http://www.h-online.com/open/features/Booting-up-Tools-and-tips-for-systemd-1570630.html часть 2] вводной статьи в журнале ''The H Open'' (англ.)<br />
* [http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
* [http://0pointer.de/blog/projects/systemd-update.html Status update (англ.)]<br />
* [http://0pointer.de/blog/projects/systemd-update-2.html Status update2 (англ.)]<br />
* [http://0pointer.de/blog/projects/systemd-update-3.html Status update3 (англ.)]<br />
* [http://0pointer.de/blog/projects/why.html Самые последние изменения (англ.)]<br />
* [http://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet/ru Шпаргалка Fedora по переходу с SysVinit на systemd]<br />
* [http://wiki.gentoo.org/wiki/Systemd Статья systemd в Gentoo Wiki (англ.)]<br />
* [[Emacs#Syntax highlighting for systemd Files|Emacs Syntax highlighting for Systemd files]]</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Systemd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=494505Systemd (Русский)2017-10-30T16:36:36Z<p>Sheykhnur: Добавлено описание монтирования</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Daemons and system services (Русский)]]<br />
[[Category:Boot process (Русский)]]<br />
[[Category:Русский]]<br />
[[ar:Systemd]]<br />
[[de:Systemd]]<br />
[[el:Systemd]]<br />
[[en:Systemd]]<br />
[[es:Systemd]]<br />
[[fa:Systemd]]<br />
[[fr:Systemd]]<br />
[[it:Systemd]]<br />
[[ja:Systemd]]<br />
[[pt:Systemd]]<br />
[[zh-hans:Systemd]]<br />
[[zh-hant:Systemd]]<br />
{{Related articles start (Русский)}}<br />
{{Related|Systemd/Пользователь}}<br />
{{Related|Systemd/Tаймеры}}<br />
{{Related|systemd FAQ}}<br />
{{Related|init}}<br />
{{Related|Init Rosetta (Русский)}}<br />
{{Related|Демоны#Список демонов}}<br />
{{Related|Udev (Русский)}}<br />
{{Related|Увеличение производительности/Процесс загрузки системы}}<br />
{{Related|Разрешить пользователям выключение системы}}<br />
{{Related articles end}}<br />
{{Unmaintained (Русский)}}<br />
{{TranslationStatus (Русский)|systemd|20 сентября 2015|400997}}<br />
<br />
Цитата с [http://freedesktop.org/wiki/Software/systemd веб-страницы проекта]:<br />
<br />
:''systemd'' - менеджер системы и служб для Linux, совместимый со скриптами инициализации SysV и LSB. systemd обеспечивает возможности агрессивной параллелизации, использует сокеты и активацию [[D-Bus]] для запускаемых служб, предлагает запуск демонов по необходимости, отслеживает процессы при помощи [[control groups|контрольных групп]] Linux, поддерживает мгновенные снимки и восстановление состояния системы, монтирование и точки монтирования, а также внедряет основанную на зависимостях логику контроля процессов сложных транзакций.<br />
<br />
{{Note (Русский)|1=За детальным объяснением причин происходящего перехода Arch'а на ''systemd'' обратитесь к [https://bbs.archlinux.org/viewtopic.php?pid&#61;1149530#p1149530 сообщению на англоязычном форуме]}}<br />
<br />
== Основы использования systemctl ==<br />
<br />
Главная команда для отслеживания и контроля состояния ''systemd'' - команда ''systemctl''. Некоторые из вариантов ее использования связаны с изучением состояния системы и управлением системой и службами. Обратитесь к странце руководства {{man|1|systemctl}} для получения более детальной информации.<br />
<br />
{{Tip (Русский)|<br />
* Вы можете использовать все приведенные ниже команды ''systemctl'' с ключом {{ic|-H ''пользователь''@''хост''}} для того, чтобы контролировать ''systemd'' на удаленной машине. В этом случае для соединения с удаленным процессом ''systemd'' будет использоваться [[Secure Shell (Русский)|SSH]]}}<br />
<br />
{{Tip (Русский)|<br />
* ''systemadm'' - официальная графическая оболочка для ''systemctl''. Она доступна в пакетах {{Pkg|systemd-ui}} и {{AUR|systemd-ui-git}}{{Broken package link (Русский)|{{aur-mirror (Русский)|systemd-ui-git}}}}}}<br />
<br />
=== Анализ состояния системы ===<br />
<br />
'''Список запущенных''' юнитов:<br />
<br />
$ systemctl<br />
<br />
или:<br />
<br />
$ systemctl list-units<br />
<br />
'''Список неудач''', - список юнитов, попытка запуска которых не удалась:<br />
<br />
$ systemctl --failed<br />
<br />
Доступные файлы юнитов можно посмотреть в директориях {{ic|/usr/lib/systemd/system/}} и {{ic|/etc/systemd/system/}} (второй каталог имеет приоритет). Вы можете увидеть список установленных файлов юнитов командой:<br />
<br />
$ systemctl list-unit-files<br />
<br />
=== Использование юнитов ===<br />
<br />
Юнитами могут быть, например, службы (''.service''), точки монтирования (''.mount''), устройства (''.device'') или сокеты (''.socket'').<br />
<br />
При использовании ''systemctl'' обычно всегда необходимо указывать полное имя файла юнита, включая суффикс, например, {{ic|sshd.socket}}. Однако, есть несколько сокращений для указания юнита в следующих командах ''systemctl'':<br />
<br />
* Ели вы не указали суффикс, systemctl предполагает, что это ''.service''. Например, {{ic|netctl}} и {{ic|netctl.service}} будут трактоваться одинаково<br />
* Точки монтирования будут автоматически преобразованы в соответствующий юнит ''.mount''. Например, указание {{ic|/home}} равнозначно {{ic|home.mount}}<br />
* Так же, как и точки монтирования, имена устройств автоматически преобразуются в соответствующий юнит ''.device'', поэтому указание {{ic|/dev/sda2}} полностью соответствует юниту {{ic|dev-sda2.device}}<br />
<br />
Для получения дополнительной информации смотрите страницу справочного руководства {{man|5|systemd.unit}}.<br />
<br />
{{Note (Русский)|В некоторых именах юнитов содержится знак {{ic|@}} (например, {{ic|имя@''строка''.service}}). Это означает, что они являются [http://0pointer.de/blog/projects/instances.html экземплярами] юнита-''шаблона'', в имени которого нет части {{ic|''строка''}} (например, {{ic|имя@.service}}). Часть {{ic|''строка''}} называется ''идентификатором экземпляра'' и является аргументом, передаваемым юниту-шаблону при вызове команды ''systemctl'': в файле юнита он заменит указание (specifier) {{ic|%i}}.<br />
<br />
Для большей точности работы ''systemd'' будет сперва искать юнит по полному имени файла {{ic|имя@строка.суффикс}}, и ''лишь затем'' пытаться использовать экземпляр юнита-шаблона {{ic|имя@.суффикс}}, даже несмотря на то, что подобные "конфликты" довольно редки, так как большинство файлов юнитов, содержащих знак {{ic|@}}, подразумевают использование шаблонов. Также помните, что если вызвать юнит-шаблон без идентификатора экземпляра, ничего не получится, поскольку в этом случае не будет возможности передать указание {{ic|%i}}<br />
}}<br />
<br />
{{Tip (Русский)|<br />
* Большинство указанных ниже команд также работают, если указать несколько юнитов. Для получения дополнительной информации смотрите страницу справочного руководства {{man|1|systemctl}}<br />
* Начиная с версии [https://github.com/systemd/systemd/blob/master/NEWS#L323-L326 systemd 220], переключатель {{ic|--now}} может быть использован в сочетании с {{ic|enable}}, {{ic|disable}} и {{ic|mask}} чтобы соответственно запустить или остановить все юниты сразу.<br />
* Пакет может предложить юнитов для различных целей. Если вы только что установили пакет, воспользуйтесь командой {{ic|pacman -Qql ''package'' <nowiki>|</nowiki> grep -Fe .service -e .socket}} для проверки и нахождения юнитов. <br />
}}<br />
<br />
Незамедлительно '''запустить''' юнит:<br />
<br />
# systemctl start ''юнит''<br />
<br />
Незамедлительно '''остановить''' юнит:<br />
<br />
# systemctl stop ''юнит''<br />
<br />
'''Перезапустить''' юнит:<br />
<br />
# systemctl restart ''юнит''<br />
<br />
Запросить у юнита '''перезагрузку''' его настроек:<br />
<br />
# systemctl reload ''юнит''<br />
<br />
Показать '''статус''' юнита, а также запущен он или нет:<br />
<br />
$ systemctl status ''юнит''<br />
<br />
'''Проверить''', включен ли юнит в автозапуск при загрузке системы:<br />
<br />
$ systemctl is-enabled ''юнит''<br />
<br />
'''Включить''' юнит в автозапуск при загрузке системы:<br />
<br />
# systemctl enable ''юнит''<br />
<br />
'''Убрать''' юнит из автозапуска при загрузке системы:<br />
<br />
# systemctl disable ''юнит''<br />
<br />
'''Маскировать''' юнит, чтобы сделать невозможным его запуск: <br />
<br />
# systemctl mask ''юнит'' <br />
<br />
'''Снять маску''' юнита: <br />
<br />
# systemctl unmask ''юнит'' <br />
<br />
'''Показать страницу справочного руководства''', связанного с юнитом (необходима поддержка этой функции в указанном файле юнита):<br />
<br />
$ systemctl help ''юнит''<br />
<br />
Перезагрузить ''systemd'' для поиска '''новых или измененных юнитов''':<br />
<br />
# systemctl daemon-reload<br />
<br />
=== Управление питанием ===<br />
<br />
Для управления питанием от имени непривилегированного пользователя необходим [[polkit]]. Если вы находитесь в локальной пользовательской сессии ''systemd-logind'', и нет других активных сессий, приведенные ниже команды сработают и без привилегий суперпользователя. В противном случае (например, вследствие того, что другой пользователь вошел в систему в tty), ''systemd'' автоматически запросит у вас пароль суперпользователя.<br />
<br />
Завершить работу и перезагрузить систему:<br />
<br />
$ systemctl reboot<br />
<br />
Завершить работу и выключить компьютер (с отключением питания):<br />
<br />
$ systemctl poweroff<br />
<br />
Перевести систему в ждущий режим:<br />
<br />
$ systemctl suspend<br />
<br />
Перевести систему в спящий режим:<br />
<br />
$ systemctl hibernate<br />
<br />
Перевести систему в режим гибридного сна (или suspend-to-both):<br />
<br />
$ systemctl hybrid-sleep<br />
<br />
== Написание файлов юнитов ==<br />
<br />
Синтаксис [http://www.freedesktop.org/software/systemd/man/systemd.unit.html файлов юнитов] ''systemd'' вдохновлен файлами ''.desktop'' XDG Desktop Entry Specification, а они, в свою очередь - файлами ''.ini'' Microsoft Windows. Файлы юнитов загружаются из двух мест. Вот они по приоритету от низшего к высшему:<br />
<br />
* {{ic|/usr/lib/systemd/system/}}: юниты, предоставляемые пакетами при их установке<br />
* {{ic|/etc/systemd/system/}}: юниты, устанавливаемые системным администратором<br />
<br />
{{Note (Русский)|При запуске ''systemd'' в [[systemd/Пользователь#Как это работает|пользовательском режиме]] используются совершенно другие пути загрузки}}<br />
<br />
В качестве примера, посмотрите установленные юниты вашими пакетами, а также [http://www.freedesktop.org/software/systemd/man/systemd.service.html#Examples секцию примеров] из {{man|5|systemd.service}}. <br />
<br />
{{Tip (Русский)|Как и обычно, вы можете добавлять комментарии, предваряемые символом {{ic|#}}, но только на новых строках. Не используйте комментарии в конце строки, после параметров ''systemd'', иначе юнит не будет запущен}}<br />
<br />
=== Обработка зависимостей ===<br />
<br />
В случае использования ''systemd'' зависимости могут быть указаны правильным построением файлов юнитов. Наиболее частый случай -- юниту ''A'' требуется, чтобы юнит ''B'' был запущен перед тем, как запустится сам юнит ''A''. В этом случае добавьте строки {{ic|1=Requires=''B''}} и {{ic|1=After=''B''}} в секцию {{ic|[Unit]}} файла службы ''A''. Если подобная зависимость не является обязательной, взамен указанных выше добавьте, соответственно, строки {{ic|1=Wants=''B''}} и {{ic|1=After=''B''}}. Обратите внимание, что {{ic|1=Wants=}} и {{ic|1=Requires=}} не подразумевают {{ic|1=After=}}, что означает, что если {{ic|1=After=}} не определено, два юнита будут запущены параллельно друг другу.<br />
<br />
Обычно зависимости указываются в файлах служб, а не в целевых юнитах. Например, {{ic|network.target}} потребуется любой службе, которая связана с настройкой ваших сетевых интерфейсов, поэтому в любом случае определите загрузку вашего пользовательского юнита после запуска {{ic|network.target}}.<br />
<br />
=== Типы служб ===<br />
<br />
Существует несколько различных типов запуска служб, которые надо иметь в виду при написании пользовательского файла службы. Тип определяется параметром {{ic|1=Type=}} в секции {{ic|[Service]}}:<br />
<br />
* {{ic|1=Type=simple}} (по умолчанию): ''systemd'' предполагает, что служба будет запущена незамедлительно. Процесс при этом не должен разветвляться. Не используйте этот тип, если другие службы зависят от очередности при запуске данной службы. Исключение - активация сокета<br />
* {{ic|1=Type=forking}}: ''systemd'' предполагает, что служба запускается однократно и процесс разветвляется с завершением родительского процесса. Используйте данный тип для запуска классических демонов за исключением тех случаев, когда, как вам известно, в таком поведении процесса нет необходимости. Вам следует также определить {{ic|1=PIDFile=}}, чтобы ''systemd'' могла отслеживать основной процесс<br />
* {{ic|1=Type=oneshot}}: полезен для скриптов, которые выполняют одно задание и завершаются. Вам может понадобиться также установить параметр {{ic|1=RemainAfterExit=yes}}, чтобы ''systemd'' по-прежнему считала процесс активным, даже после его завершения<br />
* {{ic|1=Type=notify}}: идентичен параметру {{ic|1=Type=simple}}, но с той оговоркой, что демон пошлет ''systemd'' сигнал о своей готовности. Эталонная реализация данного уведомления представлена в ''libsystemd-daemon.so''<br />
* {{ic|1=Type=dbus}}: сервис считается находящимся в состоянии готовности, когда определенное {{ic|BusName}} появляется в системной шине DBus<br />
* {{ic|1=Type=idle}}: ''systemd'' will delay execution of the service binary until all jobs are dispatched. Кроме того, поведение очень похоже на {{ic|1=Type=simple}}.<br />
Смотрите справочную страницу руководства [http://www.freedesktop.org/software/systemd/man/systemd.service.html#Type= systemd.service(5)] для более детального пояснения значений {{ic|Type}}.<br />
<br />
Обратитесь к руководству {{man|5|systemd.service}} для получения более детального объяснения.<br />
<br />
=== Редактирование предоставленных пакетами файлов юнитов ===<br />
<br />
Есть два способа редактирования файлов юнита, предоставленного пакетом: заменить весь блок файла на новый или создать фрагмент кода, который применяется в верхней части существующего блока файла. В обоих методах, чтобы применить изменения, нужно перезагрузить юнит. Это может быть сделано либо путем редактирования блока с помощью {{ic|systemctl edit}} (которая автоматически загружает модуль) либо при перезагрузке всех юнитов:<br />
<br />
# systemctl daemon-reload<br />
<br />
{{Tip (Русский)|<br />
* Вы можете использовать ''systemd-delta'', чтобы увидеть, какие файлы юнитов были переопределены и что конкретно было изменено. Для обслуживания системы в целом важно регулярно проверять предоставляемые файлы юнитов на полученные обновления.<br />
* Используйте {{ic|systemctl cat ''юнит''}} чтобы посмотреть содержимое файла юнита и все Drop-in snippets кода.<br />
* Подсветку синтаксиса для файлов юнитов ''systemd'' в редакторе [[Vim (Русский)|Vim]] можно включить, установив пакет {{Pkg|vim-systemd}} из [[official repositories (Русский)|официальных репозиториев]].<br />
}}<br />
<br />
==== Замена файлов юнита ====<br />
<br />
Чтобы заменить файл юнита {{ic|/usr/lib/systemd/system/''юнит''}}, создайте файл {{ic|/etc/systemd/system/''юнит''}} и перезапустите юнит для обновления символьных ссылок:<br />
<br />
# systemctl reenable ''юнит''<br />
<br />
В качестве альтернативы, можно выполнить:<br />
<br />
# systemctl edit --full ''юнит''<br />
<br />
Эта команда откроет {{ic|/etc/systemd/system/''юнит''}} в вашем текстовом редакторе (копирует установленную версию, если она еще не существует) и автоматически загружает её, когда вы закончите редактирование.<br />
<br />
{{Note (Русский)|Pacman не обновит заменённые файлы юнита, в отличие от оригинальных которые обновятся. Так что этот метод может сделать обслуживание системы более сложным. По этой причине рекомендуется следующий подход.}}<br />
<br />
==== Drop-in snippets ====<br />
<br />
Чтобы создать drop-in snippets для файла юнита {{ic|/usr/lib/systemd/system/''юнит''}}, создайте каталог {{ic|/etc/systemd/system/''юнит''.d/}} и поместите файлы ''.conf'' там, чтобы отменять или добавлять новые опции. ''systemd'' будет анализировать эти файлы ''.conf'' и применять их поверх оригинального юнита.<br />
<br />
Самый простой способ чтобы выполнить это, сделайте:<br />
<br />
# systemctl edit ''юнит''<br />
<br />
Эта команда откроет {{ic|/etc/systemd/system/''юнит''.d/override.conf}} (создаст его если это потребуется) в вашем текстовом редакторе и автоматически перезапустит юнит, когда вы закончите редактирование.<br />
<br />
==== Примеры ====<br />
<br />
Например, если вы просто хотите добавить дополнительную зависимость к юниту, можно создать следующий файл:<br />
<br />
{{hc|/etc/systemd/system/''unit''.d/customdependency.conf|2=<br />
[Unit]<br />
Requires=''new dependency''<br />
After=''new dependency''<br />
}}<br />
<br />
В качестве другого примера, для того чтобы заменить направление для юнита {{ic|ExecStart}}, что не относится к типу {{ic|oneshot}}, создайте следующий файл:<br />
<br />
{{hc|/etc/systemd/system/''unit''.d/customexec.conf|2=<br />
[Service]<br />
ExecStart=<br />
ExecStart=''новая комманда''<br />
}}<br />
<br />
Обратите внимание {{ic|ExecStart}} должна быть очищена, перед новым назначением ([https://bugzilla.redhat.com/show_bug.cgi?id=756787#c9]).<br />
<br />
Еще один пример, чтобы автоматически перезапустить службу:<br />
<br />
{{hc|/etc/systemd/system/''unit''.d/restart.conf|2=<br />
[Service]<br />
Restart=always<br />
RestartSec=30<br />
}}<br />
<br />
== Цели ==<br />
<br />
''systemd'' использует ''цели'' (англ. target), которые выполняют ту же задачу, что и уровни запуска (англ. runlevel), но действуют немного по-другому. Каждая ''цель'' поименована (т.е. имеет собственное имя, а не номер) и, как предполагается, предназначена для конкретных задач; возможно иметь в одно и то же время активными несколько таких целей. Некоторые ''цели'' реализованы так, что наследуют все службы других ''целей'', добавляя к ним свои. В ''systemd'' имеются также ''цели'', которые имитируют общие уровни запуска SystemVinit, поэтому вы можете переключаться между целевыми юнитами, используя привычную команду {{ic|telinit RUNLEVEL}}. <br />
<br />
=== Получение информации о текущих целях ===<br />
<br />
При использовании ''systemd'' для этого предназначена следующая команда (заменяющая {{ic|runlevel}}):<br />
<br />
$ systemctl list-units --type=target<br />
<br />
=== Создание пользовательской цели ===<br />
<br />
Уровни запуска, по которым расписаны конкретные задачи при установке ванильной Fedora по умолчанию - 0, 1, 3, 5 и 6 - имеют соответствие 1:1 с конкретными ''целями systemd''. К сожалению, не существует хорошего способа сделать то же самое для определяемых пользователем уровней, таких как 2 и 4. Их использование предполагает, что вы создаете новый именованный '' целевой юнит systemd'' наподобие {{ic|/etc/systemd/system/''ваша цель''}}, который берет за основу один из существующих уровней запуска (взгляните, например, на {{ic|/usr/lib/systemd/system/graphical.target}}), создаете каталог {{ic|/etc/systemd/system/''ваша цель''.wants}}, а после этого - символические ссылки на дополнительные службы из директории {{ic|/usr/lib/systemd/system/}}, которые вы хотите включить при загрузке.<br />
<br />
=== Таблица целей ===<br />
<br />
{| class="wikitable"<br />
! Уровнень запуска SysV !! Цель systemd !! Примечания<br />
|-<br />
| 0 || runlevel0.target, poweroff.target || Выключить систему<br />
|-<br />
| 1, s, single || runlevel1.target, rescue.target || Однопользовательский уровень запуска<br />
|-<br />
| 2, 4 || runlevel2.target, runlevel4.target, multi-user.target || Уровни запуска, определенные пользователем/специфичные для узла. По умолчанию соответствует уровню запуска 3<br />
|-<br />
| 3 || runlevel3.target, multi-user.target || Многопользовательский режим без графики. Пользователи, как правило, входят в систему при помощи множества консолей или через сеть<br />
|-<br />
| 5 || runlevel5.target, graphical.target || Многопользовательский режим с графикой. Обычно эквивалентен запуску всех служб на уровне 3 и графического менеджера входа в систему<br />
|-<br />
| 6 || runlevel6.target, reboot.target || Перезагрузка<br />
|-<br />
| emergency || emergency.target || Аварийная оболочка<br />
|-<br />
|}<br />
<br />
=== Изменение текущей цели ===<br />
<br />
В ''systemd'' цели доступны посредством ''целевых юнитов''. Вы можете изменить их командой:<br />
<br />
# systemctl isolate graphical.target<br />
<br />
Данная команда изменит только лишь текущую цель и не повлияет на следующую загрузку системы. Она соответствует командам Sysvinit вида {{ic|telinit 3}} и {{ic|telinit 5}}.<br />
<br />
=== Изменение цели загрузки по умолчанию ===<br />
<br />
Стандартная цель - {{ic|default.target}}, которая по умолчанию является псевдонимом {{ic|graphical.target}} (примерно соответствующего прежнему уровню запуска 5). Для изменения цели загрузки по умолчанию добавьте один из следующих [[kernel parameters|параметров ядра]] в ваш загрузчик:<br />
<br />
* {{ic|1=systemd.unit=multi-user.target}} (что примерно соответствует прежнему уровню запуска 3)<br />
* {{ic|1=systemd.unit=rescue.target}} (что примерно соответствует прежнему уровню запуска 1)<br />
<br />
Другой способ - оставить загрузчик без изменений, а изменить целевой юнит по умолчанию - ''default.target''. Это делается с использованием ''systemctl'':<br />
<br />
# systemctl set-default multi-user.target<br />
<br />
Чтобы иметь возможность перезаписать ранее установленную {{ic|default.target}}, используйте опцию force:<br />
<br />
# systemctl set-default -f multi-user.target<br />
<br />
Эффект от применения данной команды выводится через ''systemctl''. Символическая ссылка на новый целевой юнит по умолчанию создается в директории {{ic|/etc/systemd/system/default.target}}.<br />
<br />
== Временные файлы ==<br />
<br />
"''systemd-tmpfiles'' создает, удаляет и очищает непостоянные и временные файлы и каталоги". Он читает конфигурационные файлы из {{ic|/etc/tmpfiles.d/}} и {{ic|/usr/lib/tmpfiles.d/}}, чтобы понять, что ему следует делать. Конфигурационные файлы в первом каталоге имеют приоритет над теми, что расположены во втором.<br />
<br />
Конфигурационные файлы обычно предоставляются вместе с файлами служб и имеют названия вида {{ic|/usr/lib/tmpfiles.d/''программа''.conf}}. Например, демон [[Samba (Русский)|Samba]] предполагает, что существует каталог {{ic|/run/samba}} с корректными правами доступа. Поэтому пакет {{Pkg|samba}} поставляется в следующей конфигурации:<br />
<br />
{{hc|/usr/lib/tmpfiles.d/samba.conf|D /run/samba 0755 root root}}<br />
<br />
Конфигурационные файлы также могут использоваться для записи значений при старте системы. Например, если вы используете {{ic|/etc/rc.local}} для отключения пробуждения от устройств USB при помощи {{ic|echo USBE > /proc/acpi/wakeup}}, вместо этого вы можете использовать следующий tmpfile:<br />
<br />
{{hc|/etc/tmpfiles.d/disable-usb-wake.conf|w /proc/acpi/wakeup - - - - USBE}}<br />
<br />
Для получения дополнительной информации смотрите страницы справочного руководства (man) {{ic|systemd-tmpfiles(8)}} и {{ic|tmpfiles.d(5)}}.<br />
<br />
{{Note (Русский)|Этот способ может не сработать для установки опций в {{ic|/sys}}, поскольку служба ''systemd-tmpfiles-setup'' может запускаться перед тем, как будут загружены соответствующие модули устройств. В этом случае при помощи команды {{ic|modinfo ''модуль''}} вы можете проверить, имеет ли модуль параметр для установки необходимой вам опции, и установить эту опцию в [[Kernel modules (Русский)#Настройка параметров модуля|конфигурационном файле /etc/modprobe.d]]. В противном случае для установки верных атрибутов сразу, как только устройство появляется, вам придется написать [[Udev#About_udev_rules|правило udev]]}}<br />
<br />
== Таймеры ==<br />
<br />
Таймер - это файл конфигурации юнита, имя которого заканчивается на ''.timer''. Он расшифровывает информацию о таймере, контролируемом при помощи ''systemd'', для активации в определенное время. Смотрите статью [[systemd/Tаймеры]].<br />
<br />
{{Note (Русский)|Таймеры способны в значительной степени заменить функциональность ''cron''. Смотрите раздел [[systemd/Tаймеры#В качестве замены cron|Замена cron]]}}<br />
<br />
== Монтирование ==<br />
<br />
Так как systemd полностью заменяет собой SysVinit, он отвечает за точки монтирования, описанные в файле {{ic|/etc/fstab}}. Фактически он выходит за рамки возможностей обычного {{ic|fstab}}, реализуя особые точки монтирования с префиксом {{ic|x-systemd}}, например, т.н. ''автомонтирование'' (монтирование по запросу) использует данные расширения (см. [[Fstab_(Русский)#Автоматическое монтирование с systemd|для более подробной информации как это реализовано]]). С полным описанием всех расширений и работы с ними вы можете ознакомиться на английском в [https://www.freedesktop.org/software/systemd/man/systemd.mount.html#fstab]<br />
<br />
== Журнал ==<br />
<br />
''systemd'' имеет собственную систему ведения логов, названную журналом (journal). В связи с этим больше не требуется запускать демон {{ic|syslog}}. Для чтения логов используйте команду:<br />
<br />
# journalctl<br />
<br />
В Arch Linux каталог {{ic|/var/log/journal/}} является частью пакета {{Pkg|systemd}}, и по умолчанию (когда в конфигурационном файле {{ic|/etc/systemd/journald.conf}} параметр {{ic|Storage&#61;}} имеет значение {{ic|auto}}) журнал записывается именно в {{ic|/var/log/journal/}}. Если вы или какая-то программа удалит этот каталог, ''systemd'' '''не''' пересоздаст его автоматически и вместо этого будет писать свои журналы по непостоянному пути {{ic|/run/systemd/journal}}. Однако, папка будет пересоздана, когда вы установите {{ic|1=Storage=persistent}} и выполните {{ic|systemctl restart systemd-journald}} (или перезагрузитесь).<br />
<br />
=== Фильтрация вывода ===<br />
<br />
''journalctl'' позволяет фильтровать вывод по особым полям. Помните, что, если должно быть отражено большое количество сообщений или необходима фильтрация в большом промежутке времени, вывод этой команды может быть отложен на какое-то время.<br />
<br />
{{Tip (Русский)|Поскольку журнал хранится в двоичном формате, содержимое его сообщений не меняется. Это означает, что их можно просматривать при помощи ''strings'', например, в окружении, в котором не установлен ''systemd''. Пример:<br />
<br />
{{bc|$ strings /mnt/arch/var/log/journal/af4967d77fba44c6b093d0e9862f6ddd/system.journal <nowiki>| grep -i </nowiki>''сообщение''}}<br />
<br />
}}<br />
<br />
Примеры:<br />
<br />
* Показать все сообщения с момента текущей загрузки системы: {{bc|# journalctl -b}} Однако, пользователи часто интересуются сообщениями не для текущей, а для предыдущей загрузки (например, если произошел невосстановимый сбой системы). Это возможно, если задать параметр флагу {{ic|-b}}: {{ic|journalctl -b -0}} покажет сообщения с момента текущей загрузки, {{ic|journalctl -b -1}} - предыдущей загрузки, {{ic|journalctl -b -2}} - следующей за предыдущей, и т.д. Для просмотра полного описания смотрите страницу справочного руководства {{man|1|journalctl}}: имеется гораздо более мощная семантика<br />
* Показать все сообщения, начиная с какой-либо даты (и, если хотите, времени): {{bc|1=# journalctl --since="2012-10-30 18:17:16"}}<br />
* Показать все сообщения за последние 20 минут: {{bc|1=# journalctl --since "20 min ago"}}<br />
* Показывать новые сообщения: {{bc|# journalctl -f}}<br />
* Показать все сообщения для конкретного исполняемого файла: {{bc|# journalctl /usr/lib/systemd/systemd}}<br />
* Показать все сообщения для конкретного процесса: {{bc|1=# journalctl _PID=1}}<br />
* Показать все сообщения для конкретного юнита: {{bc|# journalctl -u netcfg}}<br />
* Показать кольцевой буфер ядра: {{bc|1=# journalctl -k}}<br />
* Показать auth.log эквивалентно фильтрации syslog facility: {{bc|1=# journalctl -f -l SYSLOG_FACILITY=10}}<br />
<br />
Для получения дополнительной информации смотрите страницы справочного руководства {{man|1|journalctl}} и {{man|7|systemd.journal-fields}} или [http://0pointer.de/blog/projects/journalctl.html пост в блоге] Lennart'а.<br />
<br />
{{Tip (Русский)|1=<br />
По умолчанию ''journalctl'' отсекает части строк, которые не вписываются в экран по ширине, и, в некоторых случаях, возможно, будет лучше использовать специальную программу-обертку. Управление этой возможностью производится посредством [[Environment variables (Русский)|переменной окружения]] {{ic|SYSTEMD_LESS}}, в которой содержатся опции, передаваемые в [[Базовые утилиты#less|less]] (программа постраничного просмотра, используемая по умолчанию). По умолчанию ей присвоены опции {{ic|FRSXMK}} (для получения дополнительной информации смотрите {{man|1|less}} и {{man|1|journalctl}}).<br />
<br />
Если убрать опцию {{ic|S}}, будет достигнут требуемый результат. Например, запустите ''journalctl'', как показано здесь:<br />
<br />
$ SYSTEMD_LESS=FRXMK journalctl<br />
<br />
Если вы хотите, чтобы такое поведение использовалось по умолчанию, [[Environment variables (Русский)#На уровне пользователя|экспортируйте]] переменную из файла {{ic|~/.bashrc}} или {{ic|~/.zshrc}}<br />
}}<br />
<br />
=== Ограничение размера журнала ===<br />
<br />
Если журнал сохраняется при перезагрузке, его размер по умолчанию ограничен значением в 10% от объема соответствующей файловой системы. Например, для директории {{ic|/var/log/journal}}, расположенной на корневом разделе в 50 Гбайт, максимальный размер журналируемых данных составит 5 Гбайт. Максимальный объем постоянного журнала можно контролировать при помощи значения {{ic|SystemMaxUse}} в конфигурационном файле {{ic|/etc/systemd/journald.conf}}, поэтому для ограничения его объемом, например, в 50 Mбайт раскомментируйте и отредактируйте соответствующую строку:<br />
{{hc|/etc/systemd/journald.conf|2= <br />
SystemMaxUse=50M<br />
}} <br />
<br />
Для получения дополнительной информации обратитесь к странице справочного руководства {{man|5|journald.conf}}.<br />
<br />
=== Очистка файлов журнала вручную ===<br />
<br />
Файлы журнала находятся в {{ic|/var/log/journal}}, так что {{ic|rm}} будет работать.<br />
Или используйте {{ic|journalctl}},<br />
<br />
Примеры:<br />
<br />
* Remove archived journal files until the disk space they use falls below 100M: {{bc|1=# journalctl --vacuum-size=100M}}<br />
* Make all journal files contain no data older than 2 weeks. {{bc|1=# journalctl --vacuum-time=2weeks}}<br />
<br />
Для получения дополнительной информации, обратитесь к {{man|1|journalctl}}.<br />
<br />
=== Journald в связке с классическим демоном syslog ===<br />
<br />
Совместимость с классической реализацией non-journald aware [[Syslog-ng|syslog]] можно обеспечить, заставив ''systemd'' направлять все сообщения через сокет {{ic|/run/systemd/journal/syslog}}. Чтобы дать возможность демону syslog работать вместе с журналом ''systemd'', следует привязать данный демон к указанному сокету вместо {{ic|/dev/log}} ([http://lwn.net/Articles/474968/ официальное сообщение]). Пакетом {{Pkg|syslog-ng}} из репозиториев автоматически предоставляется необходимая конфигурация.<br />
<br />
Начиная с версии systemd 216, по умолчанию {{ic|journald.conf}} для передачи данных в сокет был изменён на {{ic|1=ForwardToSyslog=no}}, чтобы избежать нагрузки на систему, потому что [[rsyslog]] или [[syslog-ng]] (начиная с версии 3.6) тянут сообщения из журнала [http://lists.freedesktop.org/archives/systemd-devel/2014-August/022295.html#journald самостоятельно].<br />
<br />
Смотрите [[Syslog-ng#Overview]] и [[Syslog-ng#syslog-ng and systemd journal]], или соответственно [[rsyslog]] для подробной информации о конфигурировании.<br />
<br />
Если взамен вы используете {{Pkg|rsyslog}}, нет необходимости менять эту настройку, поскольку [[rsyslog]] забирает сообщения из журнала [http://lists.freedesktop.org/archives/systemd-devel/2014-August/022295.html#journald самостоятельно].<br />
<br />
=== Перенаправить журнал на /dev/tty12 ===<br />
<br />
Создайте [[#Редактирование предоставленных пакетами файлов юнитов|drop-in каталог]] {{ic|/etc/systemd/journald.conf.d}} и создайте файл {{ic|fw-tty12.conf}} с содержимым:<br />
<br />
{{hc|1=/etc/systemd/journald.conf.d/fw-tty12.conf|2=<br />
[Journal]<br />
ForwardToConsole=yes<br />
TTYPath=/dev/tty12<br />
MaxLevelConsole=info<br />
}}<br />
<br />
Затем [[#Использование юнитов|перезапустите]] systemd-journald.<br />
<br />
=== Команда просмотра другого журнала ===<br />
Если появилась необходимость проверить логи другой системы, которая неисправна, загрузитесь с работоспособной системы, чтобы восстановить неисправную систему.<br />
Примонтируйте диск неисправной системы, например в {{ic|/mnt}} и укажите путь журнала через {{ic|-D}}/{{ic|--directory}}, например так:<br />
<br />
$ journalctl -D ''/mnt''/var/log/journal -xe<br />
<br />
== Оптимизация ==<br />
<br />
{{Merge (Русский)|Увеличение производительности/Процесс загрузки системы|Данный раздел в оригинальной английской вики перенесен в статью [[Improving performance/Boot process]]}}<br />
<br />
=== Анализ процесса загрузки ===<br />
<br />
==== Использование systemd-analyze ====<br />
<br />
Systemd предоставляет инструмент под названием {{ic|systemd-analyze}}, позволяющий проанализировать процесс загрузки вашей системы, чтобы можно было увидеть, какие файлы юнитов тормозят загрузку. Соответственно, вы можете оптимизировать вашу систему. Для использования данного инструмента вам потребуется установить пакеты {{Pkg|python2-cairo}} и {{Pkg|python2-gobject}}.<br />
<br />
Чтобы увидеть, сколько времени было потрачено на подготовку пространства ядра и пространства пользователя во время загрузки, просто выполните команду:<br />
<br />
$ systemd-analyze<br />
<br />
{{Tip|<br />
<br />
* Если вы дополните хуком {{ic|timestamp}} ваш массивr {{ic|HOOKS}} в конфигурационном файле {{ic|/etc/[[mkinitcpio]].conf}} и пересоберете ваш образ initramfs командой {{ic|mkinitcpio -p linux}}, systemd-analyze сколько времени затрачивается на initramfs.<br />
<br />
* Если вы загружаетесь при помощи [[UEFI]] и используете загрузчик, в который имплементирова [http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface Boot Loader Interface] от systemd (что в настоящий момент применено только в [[gummiboot (Русский)]] ), systemd-analyze дополнительно сможет показать, сколько времени затрачено на прошивку EFI сам загрузчик.}}<br />
<br />
Чтобы увидеть список запускаемых файлов юнитов, отсортированный по потраченному каждым из них на загрузку времени, выполните команду:<br />
<br />
$ systemd-analyze blame<br />
<br />
Вы также можете создать файл SVG, показывающий процесс загрузки в графическом виде, наподобие [[Bootchart]]:<br />
<br />
$ systemd-analyze plot > plot.svg<br />
<br />
==== Использование systemd-bootchart ====<br />
<br />
Bootchart объединен с systemd с 17 октября 2012 года и вы можете использовать его для загрузки также, как и оригинальный bootchart. Добавьте следующие команду к строке инициализации ядра:<br />
<br />
initcall_debug printk.time=y init=/usr/lib/systemd/systemd-bootchart<br />
<br />
==== Использование bootchart2 ====<br />
<br />
Вы также можете использовать версию bootchart для визуализации последовательности при загрузке системы.<br />
Из-за невозможности использовать стандартные установки bootchart (так как нельзя добавить в командную строку ядра вторую запись init), вам придется воспользоваться пакетом {{AUR|bootchart2-git}}, поставляемым с недокументированной службой ''systemd''. После установки ''bootchart2'' [[#Использование юнитов|включите]] службу ''bootchart''.<br />
<br />
За дальнейшей и детализированной информацией об использовании данной версии ''bootchart'' oбратитесь к [https://github.com/mmeeks/bootchart документации (англ.)].<br />
<br />
== Решение проблем ==<br />
<br />
=== Изучение ошибок systemd ===<br />
<br />
В качестве примера мы изучим ошибки службы {{ic|systemd-modules-load}}:<br />
<br />
'''1.''' Давайте найдем службы ''systemd'', которые не смогли запуститься:<br />
<br />
{{hc|1=$ systemctl --failed|2=<br />
systemd-modules-load.service loaded '''failed failed''' Load Kernel Modules<br />
}}<br />
<br />
'''2.''' Хорошо, мы обнаружили проблему в службе {{ic|systemd-modules-load}} и хотим узнать больше:<br />
<br />
{{hc|$ systemctl status systemd-modules-load|2=<br />
systemd-modules-load.service - Load Kernel Modules<br />
Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)<br />
Active: '''failed''' (Result: exit-code) since So 2013-08-25 11:48:13 CEST; 32s ago<br />
Docs: man:systemd-modules-load.service(8).<br />
man:modules-load.d(5)<br />
Process: '''15630''' ExecStart=/usr/lib/systemd/systemd-modules-load ('''code=exited, status=1/FAILURE''')<br />
}}<br />
<br />
Если вы не увидите в списке {{ic|Process ID}}, просто перезапустите службу при помощи команды {{ic|systemctl restart systemd-modules-load}}<br />
<br />
'''3.''' Теперь у нас есть id процесса (PID) для более детального изучения ошибки. Введите следующую команду с правильным {{ic|Process ID}} (в данном примере это 15630):<br />
<br />
{{hc|1=$ journalctl _PID=15630|2=<br />
-- Logs begin at Sa 2013-05-25 10:31:12 CEST, end at So 2013-08-25 11:51:17 CEST. --<br />
Aug 25 11:48:13 mypc systemd-modules-load[15630]: '''Failed to find module 'blacklist usblp''''<br />
Aug 25 11:48:13 mypc systemd-modules-load[15630]: '''Failed to find module 'install usblp /bin/false'''' <br />
}}<br />
<br />
'''4.''' Мы видим, что некоторые конфигурационные файлы модулей ядра имеют неверные настройки. В этом случае мы взглянем на эти настройки в каталоге {{ic|/etc/modules-load.d/}}:<br />
<br />
{{hc|$ ls -Al /etc/modules-load.d/|<br />
...<br />
-rw-r--r-- 1 root root 79 1. Dez 2012 blacklist.conf<br />
-rw-r--r-- 1 root root 1 2. Mär 14:30 encrypt.conf<br />
-rw-r--r-- 1 root root 3 5. Dez 2012 printing.conf<br />
-rw-r--r-- 1 root root 6 14. Jul 11:01 realtek.conf<br />
-rw-r--r-- 1 root root 65 2. Jun 23:01 virtualbox.conf<br />
...<br />
}}<br />
<br />
'''5.''' Сообщение об ошибке {{ic|Failed to find module 'blacklist usblp'}} должно относиться к неправильной настройке в файле {{ic|blacklist.conf}}. Давайте закомментируем настройку, вставив хэш-символ '''#''' перед каждой опцией, найденной на шаге 3:<br />
<br />
{{hc|/etc/modules-load.d/blacklist.conf|<br />
'''#''' blacklist usblp<br />
'''#''' install usblp /bin/false<br />
}}<br />
<br />
'''6.''' Теперь попробуйте запустить {{ic|systemd-modules-load}}:<br />
<br />
$ systemctl start systemd-modules-load<br />
<br />
Если все прошло успешно, ничего не отобразится. Если же вы видите какие-либо ошибки, вернитесь к шагу 3 и используйте новый PID для устранения оставшихся ошибок.<br />
<br />
Если все хорошо, вы можете удостовериться, что служба успешно запустилась, при помощи команды:<br />
<br />
{{hc|$ systemctl status systemd-modules-load|2=<br />
systemd-modules-load.service - Load Kernel Modules<br />
Loaded: '''loaded''' (/usr/lib/systemd/system/systemd-modules-load.service; static)<br />
Active: '''active (exited)''' since So 2013-08-25 12:22:31 CEST; 34s ago<br />
Docs: man:systemd-modules-load.service(8)<br />
man:modules-load.d(5)<br />
Process: 19005 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)<br />
Aug 25 12:22:31 mypc systemd[1]: '''Started Load Kernel Modules'''.<br />
}}<br />
<br />
Чаще всего подобные проблемы можно решить так, как показано выше. Для дальнейшего изучения этого вопроса взгляните на раздел [[#Диагностика проблем с загрузкой системы]].<br />
<br />
=== Диагностика проблем с загрузкой системы ===<br />
<br />
Загрузитесь с этими параметрами ядра:<br />
<br />
{{ic|<nowiki>systemd.log_level=debug systemd.log_target=kmsg log_buf_len=1M</nowiki>}}<br />
<br />
[http://freedesktop.org/wiki/Software/systemd/Debugging Дополнительная информация по отладке].<br />
<br />
=== Диагностика проблем в работе определенной службы ===<br />
<br />
{{Accuracy|This may not catch all errors such as missing libraries.|User talk:Alucryd#Plex}} <br />
<br />
Если какая-либо служба ''systemd'' ведет себя не так, как ожидается, и вы хотите получить дополнительную информацию о том, что происходит, присвойте [[Environment variables (Русский)|переменной окружения]] {{ic|SYSTEMD_LOG_LEVEL}} значение {{ic|debug}}. Например, чтобы запустить демон ''systemd-networkd'' в режиме отладки:<br />
<br />
# systemctl stop systemd-networkd<br />
# SYSTEMD_LOG_LEVEL=debug /lib/systemd/systemd-networkd<br />
<br />
В качестве альтернативы можно временно отредактировать файл службы для получения подробного вывода. Например:<br />
<br />
{{hc|/usr/lib/systemd/system/systemd-networkd.service|2=<br />
[Service]<br />
...<br />
Environment=SYSTEMD_LOG_LEVEL=debug<br />
....<br />
}}<br />
<br />
Если вы знаете, что в дальнейшем вам по-прежнему будет нужна эта отладочная информация, добавьте переменную [[#Редактирование предоставленных пакетами файлов юнитов|обычным]] способом.<br />
<br />
=== Выключение/перезагрузка происходят ужасно долго ===<br />
<br />
Если процесс выключения занимает очень долгое время (или, по-видимому, зависает), то, вероятно, виновата служба, которая не завершает свою работу. ''systemd'' ожидает некоторое время, пока каждая служба завершит свою работу самостоятельно, и только потом пытается принудительно завершить (kill) ее. Если вы столкнулись с такой проблемой, обратитесь к [http://freedesktop.org/wiki/Software/systemd/Debugging/#shutdowncompleteseventually данной статье (англ.)].<br />
<br />
=== По-видимому, процессы с кратким сроком жизни не оставляют записей в логах ===<br />
<br />
Если команда {{ic|journalctl -u foounit}} не показывает вывода для службы с коротким сроком жизни, вместо нее обратитесь к PID. Например, если загрузка службы {{ic|systemd-modules-load.service}} завершилась неудачно и команда {{ic|systemctl status systemd-modules-load}} показывает, что она была запущена с PID 123, то вы сможете посмотреть вывод процесса в журнале под данным PID, то есть командой {{ic|journalctl -b _PID&#61;123}}. Такие поля метаданных для журнала, как {{ic|_SYSTEMD_UNIT}} и {{ic|_COMM}}, собираются асинхронно и зависят от директории {{ic|/proc}} в случае с действующими процессами. Исправление этой ситуации требует внесения исправлений в ядро для обеспечения предоставления этих данных через сокет, наподобие {{ic|SCM_CREDENTIALS}}.<br />
<br />
=== Отключение журналирования аварийных дампов памяти приложений ===<br />
<br />
Добавьте в файл {{ic|/etc/systemd/coredump.conf}} такую строку:<br />
<br />
Storage=none<br />
<br />
и выполните:<br />
<br />
# systemctl daemon-reload <br />
<br />
чтобы перезагрузить конфигурацию.<br />
<br />
=== Сообщение об ошибке при перезагрузке или выключении ===<br />
<br />
==== cgroup : option or name mismatch, new: 0x0 "", old: 0x4 "systemd" ====<br />
<br />
Для получения объяснения смотрите [https://bbs.archlinux.org/viewtopic.php?pid=1372562#p1372562 эту ветку].<br />
<br />
==== watchdog watchdog0: watchdog did not stop! ====<br />
<br />
Для получения объяснения смотрите [https://bbs.archlinux.org/viewtopic.php?pid=1372562#p1372562 эту ветку].<br />
<br />
=== Время загрузки системы увеличивается с течением времени ===<br />
<br />
После использования {{ic|systemd-analyze}} некоторое количество пользователей заметило, что их время загрузки значительно увеличилось по сравнению с тем, к чему они привыкли. После использования {{ic|systemd-analyze blame}} [[NetworkManager (Русский)|NetworkManager]] тратил необычно большое количество времени на запуск.<br />
<br />
Проблема некоторых пользователей была связана с тем, что {{ic|/var/log/journal}} становился слишком большим. При этом также может уменьшаться скорость работы других команд, например, {{ic|systemctl status}} или {{ic|journalctl}}. Для решения проблемы можно удалить все файлы из каталога журнала (в идеале - сделав где-нибудь резервные копии, хотя бы временно) и затем установить предел размера файла журнала, как описано в разделе [[#Ограничение размера журнала]].<br />
<br />
=== systemd-tmpfiles-setup.service fails to start at boot ===<br />
<br />
Начиная с версии Systemd 219, {{ic|/usr/lib/tmpfiles.d/systemd.conf}} определяет атрибуты для каталогов ACL, в {{ic|/var/log/journal}} и, следовательно, требует чтобы поддержка ACL была включена для файловой системы, где находится журнал.<br />
<br />
Смотрите инструкцию [[Access Control Lists (Русский)#Включение ACL]] для включения ACL на файловой системе в которой {{ic|/var/log/journal}}.<br />
<br />
== Смотрите также ==<br />
<br />
* [http://wiki.opennet.ru/Systemd Systemd для администраторов (Рус.)]<br />
* [http://www2.kangran.su/%7Ennz/pub/s4a/s4a_latest.pdf systemd для администраторов (PDF)] - перевод [http://0pointer.de/blog/projects цикла статей] Леннарта Поттеринга (Lennart Poettering)<br />
* [http://www.freedesktop.org/wiki/Software/systemd Официальный веб-сайт (англ.)]<br />
* [[Wikipedia:ru:Systemd|Статья в Википедии]]<br />
* [http://0pointer.de/public/systemd-man/ Страницы справочных руководств (англ.)]<br />
* [http://freedesktop.org/wiki/Software/systemd/Optimizations Оптимизации systemd (англ.)]<br />
* [http://www.freedesktop.org/wiki/Software/systemd/FrequentlyAskedQuestions FAQ (англ.)]<br />
* [http://www.freedesktop.org/wiki/Software/systemd/TipsAndTricks Советы и трюки (англ.)]<br />
* [http://fedoraproject.org/wiki/Systemd О systemd в Fedora Project (англ.)]<br />
* [http://fedoraproject.org/wiki/How_to_debug_Systemd_problems Отладка проблем systemd (англ.)]<br />
* [http://www.h-online.com/open/features/Control-Centre-The-systemd-Linux-init-system-1565543.html часть 1] и [http://www.h-online.com/open/features/Booting-up-Tools-and-tips-for-systemd-1570630.html часть 2] вводной статьи в журнале ''The H Open'' (англ.)<br />
* [http://0pointer.de/blog/projects/systemd.html Блог Lennart'а (англ.)]<br />
* [http://0pointer.de/blog/projects/systemd-update.html Status update (англ.)]<br />
* [http://0pointer.de/blog/projects/systemd-update-2.html Status update2 (англ.)]<br />
* [http://0pointer.de/blog/projects/systemd-update-3.html Status update3 (англ.)]<br />
* [http://0pointer.de/blog/projects/why.html Самые последние изменения (англ.)]<br />
* [http://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet/ru Шпаргалка Fedora по переходу с SysVinit на systemd]<br />
* [http://wiki.gentoo.org/wiki/Systemd Статья systemd в Gentoo Wiki (англ.)]<br />
* [[Emacs#Syntax highlighting for systemd Files|Emacs Syntax highlighting for Systemd files]]</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Polkit_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=490328Polkit (Русский)2017-09-16T01:26:35Z<p>Sheykhnur: Убрал частое повторение</p>
<hr />
<div>[[Category:Security (Русский)]]<br />
[[de:PolicyKit]]<br />
[[en:Polkit]]<br />
[[ja:Polkit]]<br />
[[zh-hans:Polkit]]<br />
{{Related articles start (Русский)}}<br />
{{Related|Устранение часто встречающихся неполадок#Разрешения сессии}}<br />
{{Related|Sudo}}<br />
{{Related|Пользователи и группы}}<br />
{{Related articles end}}<br />
{{Unmaintained (Русский)}}<br />
<br />
Выдержка из [http://www.freedesktop.org/wiki/Software/polkit/ домашней страницы polkit]:<br />
<br />
:''polkit — это средство для управления правами приложений пользовательского уровня, позволяющее непривилегированным процессам решать административные задачи: единый интерфейс предоставления прав доступа к привилегированным операциям для непривилегированных приложений при помощи набора правил (политик) и шины D-Bus.''<br />
<br />
Polkit используется для управления общесистемными привилегиями. Данный фреймворк используется для предоставления непривилегированным процессам возможность выполнения действий, требующих прав администратора. В отличие от sudo, Polkit не наделяет процесс правами суперпользователя, а позволяет точно контролировать, какие действия разрешены, а какие нет.<br />
<br />
Polkit может контролировать отдельные действия, такие как запуск GParted: при этом он проверяет имя пользователя и принадлежность оного к группе, например, является ли он членом группы wheel. Далее Polkit проверяет, какими правами наделены пользователи данной группы (есть ли вообще права на запуск?) и, если всё сходится (пользователь в нужной группе и у группы есть соответствующие права), требует ввести пароль для идентификации пользователя.<br />
<br />
== Установка ==<br />
<br />
Установите пакет {{Pkg|polkit}}.<br />
<br />
=== Агенты аутентификации ===<br />
<br />
Агент аутентификации используется для установления подлинности оператора либо как обычный пользователь (путём ввода пароля пользователя), либо как суперпользователь (путём ввода пароля рута). Пакет {{Pkg|polkit}} содержит текстовый агент аутентификации, 'pkttyagent', который используется в качестве запасного варианта.<br />
<br />
Если вы пользуетесь графической оболочкой, убедитесь, что установлен графический агент аутентификации и что он [[Autostarting_(Русский)|автоматически запускается]] при входе в систему.<br />
<br />
Такие графические оболочки как [[Cinnamon]], [[Deepin]], [[GNOME]], [[GNOME Flashback]], [[KDE]], [[LXDE]], [[LXQt]], [[MATE]], и [[Xfce]] уже имеют в своём составе агенты аутентификации.<br />
В других графических окружениях вы можете выбрать одну из реализаций:<br />
* {{Pkg|lxqt-policykit}}, который предоставляет {{ic|/usr/bin/lxqt-policykit-agent}}<br />
* {{Pkg|lxsession}}, который предоставляет {{ic|/usr/bin/lxpolkit}}<br />
* {{Pkg|mate-polkit}}, который предоставляет {{ic|/usr/lib/mate-polkit/polkit-mate-authentication-agent-1}}<br />
* {{AUR|polkit-efl-git}}, который предоставляет {{ic|/usr/bin/polkit-efl-authentication-agent-1}}<br />
* {{Pkg|polkit-gnome}}, который предоставляет {{ic|/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1}}<br />
* {{Pkg|polkit-kde-agent}}, который предоставляет {{ic|/usr/lib/polkit-kde/polkit-kde-authentication-agent-1}}<br />
* {{AUR|ts-polkitagent}}, который предоставляет {{ic|/usr/lib/ts-polkitagent}}<br />
* {{AUR|xfce-polkit-git}}, который предоставляет {{ic|/usr/lib/xfce-polkit/xfce-polkit}}<br />
<br />
== Конфигурация ==<br />
<br />
{{Warning|Do not amend the default permission files of packages, as these may be be overwritten on package upgrades.}}<br />
<br />
Polkit definitions can be divided into two kinds:<br />
* '''Actions''' are defined in XML {{ic|.policy}} files located in {{ic|/usr/share/polkit-1/actions}}. Each action has a set of default permissions attached to it (e.g. you need to identify as an administrator to use the GParted action). The defaults can be overruled but editing the actions files is NOT the correct way.<br />
*'''Authorization rules''' are defined in JavaScript {{ic|.rules}} files. They are found in two places: 3rd party packages can use {{ic|/usr/share/polkit-1/rules.d}} (though few if any do) and {{ic|/etc/polkit-1/rules.d}} is for local configuration. <br />
<br />
Polkit operates on top of the existing permissions systems in Linux – group membership, administrator status – it does not replace them. The .rules files designate a subset of users, refer to one (or more) of the actions specified in the actions files and determine with what restrictions these actions can be taken by that/those user(s). As an example, a rules file could overrule the default requirement for all users to authenticate as an admin when using GParted, determining that some specific user doesn't need to. Or isn't allowed to use GParted at all.<br />
<br />
{{Note|This does not preclude running GParted by means which do not respect polkit, such as the command line. Therefore, polkit should be used to expand access to privileged services for unprivileged users, rather than try to curtail the rights of (semi-)privileged users. For security purposes, [[Sudo|sudoers]] is still the way to go.}}<br />
<br />
=== Actions ===<br />
<br />
{{Tip|To display Policykit actions in a graphical interface, install the {{AUR|polkit-explorer}} package.}}<br />
<br />
The actions available to you via polkit will depend on the packages you have installed. Some are used in multiple desktop environments ''(org.freedesktop.*)'', some are DE-specific ''(org.gnome.*)'' and some are specific to a single program ''(org.archlinux.pkexec.gparted.policy)''. The command {{ic|pkaction}} lists all the actions defined in {{ic|/usr/share/polkit-1/actions}} for quick reference. <br />
<br />
To get an idea of what polkit can do, here are a few commonly used groups of actions:<br />
* '''[[Systemd|systemd-logind]]''' ''(org.freedesktop.login1.policy)'' actions regulated by polkit include powering off, rebooting, suspending and hibernating the system, including when other users may still be logged in.<br />
* '''[[udisks]]''' ''(org.freedesktop.udisks2.policy)'' actions regulated by polkit include mounting file systems and unlocking encrypted devices.<br />
* '''[[NetworkManager]]''' ''(org.freedesktop.NetworkManager.policy)'' actions regulated by polkit include turning on and off the network, wifi or mobile broadband.<br />
<br />
Each action is defined in an {{ic|<action>}} tag in a .policy file. The {{ic|org.archlinux.pkexec.gparted.policy}} contains a single action and looks like this:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<!DOCTYPE policyconfig PUBLIC<br />
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"<br />
<nowiki>"http://www.freedesktop.org/software/polkit/policyconfig-1.dtd"></nowiki><br />
<policyconfig><br />
<br />
<action id="org.archlinux.pkexec.gparted"><br />
<message>Authentication is required to run the GParted Partition Editor</message><br />
<icon_name>gparted</icon_name><br />
<defaults><br />
<allow_any>auth_admin</allow_any><br />
<allow_inactive>auth_admin</allow_inactive><br />
<allow_active>auth_admin</allow_active><br />
</defaults><br />
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gparted</annotate><br />
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate><br />
</action><br />
<br />
</policyconfig><br />
<br />
The attribute '''id''' is the actual command sent to [[D-Bus]], the '''message''' tag is the explanation to the user when authentication is required and the '''icon_name''' is sort of obvious. <br />
<br />
The '''defaults''' tag is where the permissions or lack thereof are located. It contains three settings: '''allow_any''', '''allow_inactive''', and '''allow_active'''. Inactive sessions are generally remote sessions (SSH, VNC, etc.) whereas active sessions are logged directly into the machine on a TTY or an X display. allow_any is the setting encompassing both scenarios. <br />
<br />
For each of these settings the following options are available:<br />
* ''no'': The user is not authorized to carry out the action. There is therefore no need for authentication.<br />
* ''yes'': The user is authorized to carry out the action without any authentication.<br />
* ''auth_self'': Authentication is required but the user need not be an administrative user.<br />
* ''auth_admin'': Authentication as an administrative user is required.<br />
* ''auth_self_keep'': The same as auth_self but, like sudo, the authorization lasts a few minutes.<br />
* ''auth_admin_keep'': The same as auth_admin but, like sudo, the authorization lasts a few minutes.<br />
These are default setting and unless overruled in later configuration will be valid for all users.<br />
<br />
As can be seen from the GParted action, users are required to authenticate as administrators in order to use GParted, regardless of whether the session is active or inactive.<br />
<br />
=== Правила авторизации ===<br />
<br />
Authorization rules that overrule the default settings are laid out in a set of directories as described above. For all purposes relating to personal configuration of a single system, only {{ic|/etc/polkit-1/rules.d}} should be used. <br />
<br />
The {{ic|addRule()}} method is used for adding a function that may be called whenever an authorization check for action and subject is performed. Functions are called in the order they have been added until one of the functions returns a value. Hence, to add an authorization rule that is processed before other rules, put it in a file in {{ic|/etc/polkit-1/rules.d}} with a name that sorts before other rules files, for example {{ic|00-early-checks.rules}}.<br />
<br />
The layout of the .rules files is fairly self-explanatory:<br />
/* Allow users in admin group to run GParted without authentication */<br />
polkit.addRule(function(action, subject) {<br />
if (action.id == "org.archlinux.pkexec.gparted" &&<br />
subject.isInGroup("admin")) {<br />
return polkit.Result.YES;<br />
}<br />
});<br />
<br />
Inside the function, we check for the specified action ID ''(org.archlinux.pkexec.gparted)'' and for the user's group ''(admin)'', then return a value "yes".<br />
<br />
=== Administrator identities ===<br />
<br />
The {{ic|addAdminRule()}} method is used for adding a function that may be called whenever administrator authentication is required. The function is used to specify what identities may be used for administrator authentication for the authorization check identified by action and subject. Functions added are called in the order they have been added until one of the functions returns a value. <br />
<br />
The default configuration for administrator identities is contained in the file {{ic|50-default.rules}} so any changes to that configuration should be made by copying the file to, say, {{ic|40-default.rules}} and editing that file.<br />
{{hc|/etc/polkit-1/rules.d/50-default.rules|<nowiki><br />
polkit.addAdminRule(function(action, subject) {<br />
return ["unix-group:wheel"];<br />
});</nowiki>}}<br />
<br />
The only part to edit (once copied) is the return array of the function: as whom should a user authenticate when asked to authenticate as an administrative user? If she herself is a member of the group designated as admins, she only need enter her own password. If some other user, e.g. root, is the only admin identity, she would need to enter in root's password. The format of the user identification is the same as the one used in designating authorities. <br />
<br />
The Arch default is to make all members of the group '''wheel''' administrators. A rule like below will have polkit ask for the root password instead of the users password for Admin authentication.<br />
<br />
{{hc|/etc/polkit-1/rules.d/49-rootpw_global.rules|<br />
/* Always authenticate Admins by prompting for the root<br />
* password, similar to the rootpw option in sudo<br />
*/<br />
polkit.addAdminRule(function(action, subject) {<br />
return ["unix-user:root"];<br />
});<br />
}}<br />
<br />
== Примеры ==<br />
<br />
=== Debugging/logging ===<br />
<br />
The following rule logs detailed information about any requested access.<br />
{{hc|/etc/polkit-1/rules.d/00-log-access.rules|<nowiki><br />
polkit.addRule(function(action, subject) {<br />
polkit.log("action=" + action);<br />
polkit.log("subject=" + subject);<br />
});</nowiki>}}<br />
<br />
=== Disable suspend and hibernate ===<br />
<br />
The following rule disables suspend and hibernate for all users.<br />
{{hc|/etc/polkit-1/rules.d/10-disable-suspend.rules|<nowiki><br />
polkit.addRule(function(action, subject) {<br />
if (action.id == "org.freedesktop.login1.suspend" ||<br />
action.id == "org.freedesktop.login1.suspend-multiple-sessions" ||<br />
action.id == "org.freedesktop.login1.hibernate" ||<br />
action.id == "org.freedesktop.login1.hibernate-multiple-sessions")<br />
{<br />
return polkit.Result.NO;<br />
}<br />
});</nowiki>}}<br />
<br />
=== Bypass password prompt ===<br />
<br />
To achieve something similar to the [[sudo]] {{ic|NOPASSWD}} option and get authorized solely based on [[Users_and_groups|user/group]] identity, you can create custom rules in {{ic|/etc/polkit-1/rules.d/}}. This allows you to override password authentication either [[#For_specific_actions|only for specific actions]] or [[#Globally|globally]]. See [https://gist.github.com/4013294/ccacedd69d54de7f2fd5881b546d5192d6a2bddb] for an example rule set.<br />
<br />
==== Globally ====<br />
<br />
Create the following file as root:<br />
{{hc|/etc/polkit-1/rules.d/49-nopasswd_global.rules|<br />
/* Allow members of the wheel group to execute any actions<br />
* without password authentication, similar to "sudo NOPASSWD:"<br />
*/<br />
polkit.addRule(function(action, subject) {<br />
if (subject.isInGroup("wheel")) {<br />
return polkit.Result.YES;<br />
}<br />
});<br />
}}<br />
<br />
Replace {{ic|wheel}} by any group of your preference.<br />
<br />
This will result in automatic authentication for '''any''' action requiring admin rights via Polkit. As such, be careful with the group you choose to give such rights to.<br />
<br />
==== For specific actions ====<br />
<br />
Create the following file as root:<br />
{{hc|/etc/polkit-1/rules.d/49-nopasswd_limited.rules|<nowiki><br />
/* Allow members of the wheel group to execute the defined actions <br />
* without password authentication, similar to "sudo NOPASSWD:"<br />
*/<br />
polkit.addRule(function(action, subject) {<br />
if ((action.id == "org.archlinux.pkexec.gparted" ||<br />
action.id == "org.libvirt.unix.manage") &&<br />
subject.isInGroup("wheel"))<br />
{<br />
return polkit.Result.YES;<br />
}<br />
});<br />
</nowiki>}}<br />
<br />
The {{ic|action.id}}s selected here are just (working) examples for GParted and [[Libvirt]], but you can replace them by any other of your liking as long as they exist (custom made or supplied by a package), and so can you define any group instead of {{ic|wheel}}.<br />
<br />
The {{ic|<nowiki>||</nowiki>}} operator is used to delimit actions (logical OR), and {{ic|&&}} means logical AND and must be kept as the last operator.<br />
<br />
==== Udisks ====<br />
<br />
[[File manager]]s may ask for a password when trying to mount a storage device, or yield a ''Not authorized'' or similar error. See [[Udisks#Configuration]] for details.<br />
<br />
=== Allow management of individual systemd units by regular users ===<br />
<br />
By checking for certain values passed to the polkit policy check, you can give specific users or groups the ability to manage specific units. As an example, you might want regular users to start and stop [[wpa_supplicant]]:<br />
<br />
{{hc|/etc/polkit-1/rules.d/10-wifimanagement.rules|<nowiki><br />
polkit.addRule(function(action, subject) {<br />
if (action.id == "org.freedesktop.systemd1.manage-units") {<br />
if (action.lookup("unit") == "wpa_supplicant.service") {<br />
var verb = action.lookup("verb");<br />
if (verb == "start" || verb == "stop" || verb == "restart") {<br />
return polkit.Result.YES;<br />
}<br />
}<br />
}<br />
});</nowiki><br />
}}<br />
<br />
== See also ==<br />
<br />
* [http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html Polkit manual page]</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Polkit_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=490327Polkit (Русский)2017-09-16T01:25:02Z<p>Sheykhnur: </p>
<hr />
<div>[[Category:Security (Русский)]]<br />
[[de:PolicyKit]]<br />
[[en:Polkit]]<br />
[[ja:Polkit]]<br />
[[zh-hans:Polkit]]<br />
{{Related articles start (Русский)}}<br />
{{Related|Устранение часто встречающихся неполадок#Разрешения сессии}}<br />
{{Related|Sudo}}<br />
{{Related|Пользователи и группы}}<br />
{{Related articles end}}<br />
{{Unmaintained (Русский)}}<br />
<br />
Выдержка из [http://www.freedesktop.org/wiki/Software/polkit/ домашней страницы polkit]:<br />
<br />
:''polkit — это средство для управления правами приложений пользовательского уровня, позволяющее непривилегированным процессам решать административные задачи: единый интерфейс предоставления прав доступа к привилегированным операциям для непривилегированных приложений при помощи набора правил (политик) и шины D-Bus.''<br />
<br />
Polkit используется для управления общесистемными привилегиями. Данный фреймворк используется для предоставления непривилегированным процессам возможность выполнения действий, требующих прав администратора. В отличие от sudo, Polkit не наделяет процесс правами суперпользователя, а позволяет точно контролировать, какие действия разрешены, а какие нет.<br />
<br />
Polkit может контролировать отдельные действия, например, запуск GParted: при этом он проверяет имя пользователя и принадлежность оного к группе, например, является ли он членом группы wheel. Далее Polkit проверяет, какими правами наделены пользователи данной группы (есть ли вообще права на запуск?) и, если всё сходится (пользователь в нужной группе и у группы есть соответствующие права), требует ввести пароль для идентификации пользователя.<br />
<br />
== Установка ==<br />
<br />
Установите пакет {{Pkg|polkit}}.<br />
<br />
=== Агенты аутентификации ===<br />
<br />
Агент аутентификации используется для установления подлинности оператора либо как обычный пользователь (путём ввода пароля пользователя), либо как суперпользователь (путём ввода пароля рута). Пакет {{Pkg|polkit}} содержит текстовый агент аутентификации, 'pkttyagent', который используется в качестве запасного варианта.<br />
<br />
Если вы пользуетесь графической оболочкой, убедитесь, что установлен графический агент аутентификации и что он [[Autostarting_(Русский)|автоматически запускается]] при входе в систему.<br />
<br />
Такие графические оболочки как [[Cinnamon]], [[Deepin]], [[GNOME]], [[GNOME Flashback]], [[KDE]], [[LXDE]], [[LXQt]], [[MATE]], и [[Xfce]] уже имеют в своём составе агенты аутентификации.<br />
В других графических окружениях вы можете выбрать одну из реализаций:<br />
* {{Pkg|lxqt-policykit}}, который предоставляет {{ic|/usr/bin/lxqt-policykit-agent}}<br />
* {{Pkg|lxsession}}, который предоставляет {{ic|/usr/bin/lxpolkit}}<br />
* {{Pkg|mate-polkit}}, который предоставляет {{ic|/usr/lib/mate-polkit/polkit-mate-authentication-agent-1}}<br />
* {{AUR|polkit-efl-git}}, который предоставляет {{ic|/usr/bin/polkit-efl-authentication-agent-1}}<br />
* {{Pkg|polkit-gnome}}, который предоставляет {{ic|/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1}}<br />
* {{Pkg|polkit-kde-agent}}, который предоставляет {{ic|/usr/lib/polkit-kde/polkit-kde-authentication-agent-1}}<br />
* {{AUR|ts-polkitagent}}, который предоставляет {{ic|/usr/lib/ts-polkitagent}}<br />
* {{AUR|xfce-polkit-git}}, который предоставляет {{ic|/usr/lib/xfce-polkit/xfce-polkit}}<br />
<br />
== Конфигурация ==<br />
<br />
{{Warning|Do not amend the default permission files of packages, as these may be be overwritten on package upgrades.}}<br />
<br />
Polkit definitions can be divided into two kinds:<br />
* '''Actions''' are defined in XML {{ic|.policy}} files located in {{ic|/usr/share/polkit-1/actions}}. Each action has a set of default permissions attached to it (e.g. you need to identify as an administrator to use the GParted action). The defaults can be overruled but editing the actions files is NOT the correct way.<br />
*'''Authorization rules''' are defined in JavaScript {{ic|.rules}} files. They are found in two places: 3rd party packages can use {{ic|/usr/share/polkit-1/rules.d}} (though few if any do) and {{ic|/etc/polkit-1/rules.d}} is for local configuration. <br />
<br />
Polkit operates on top of the existing permissions systems in Linux – group membership, administrator status – it does not replace them. The .rules files designate a subset of users, refer to one (or more) of the actions specified in the actions files and determine with what restrictions these actions can be taken by that/those user(s). As an example, a rules file could overrule the default requirement for all users to authenticate as an admin when using GParted, determining that some specific user doesn't need to. Or isn't allowed to use GParted at all.<br />
<br />
{{Note|This does not preclude running GParted by means which do not respect polkit, such as the command line. Therefore, polkit should be used to expand access to privileged services for unprivileged users, rather than try to curtail the rights of (semi-)privileged users. For security purposes, [[Sudo|sudoers]] is still the way to go.}}<br />
<br />
=== Actions ===<br />
<br />
{{Tip|To display Policykit actions in a graphical interface, install the {{AUR|polkit-explorer}} package.}}<br />
<br />
The actions available to you via polkit will depend on the packages you have installed. Some are used in multiple desktop environments ''(org.freedesktop.*)'', some are DE-specific ''(org.gnome.*)'' and some are specific to a single program ''(org.archlinux.pkexec.gparted.policy)''. The command {{ic|pkaction}} lists all the actions defined in {{ic|/usr/share/polkit-1/actions}} for quick reference. <br />
<br />
To get an idea of what polkit can do, here are a few commonly used groups of actions:<br />
* '''[[Systemd|systemd-logind]]''' ''(org.freedesktop.login1.policy)'' actions regulated by polkit include powering off, rebooting, suspending and hibernating the system, including when other users may still be logged in.<br />
* '''[[udisks]]''' ''(org.freedesktop.udisks2.policy)'' actions regulated by polkit include mounting file systems and unlocking encrypted devices.<br />
* '''[[NetworkManager]]''' ''(org.freedesktop.NetworkManager.policy)'' actions regulated by polkit include turning on and off the network, wifi or mobile broadband.<br />
<br />
Each action is defined in an {{ic|<action>}} tag in a .policy file. The {{ic|org.archlinux.pkexec.gparted.policy}} contains a single action and looks like this:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<!DOCTYPE policyconfig PUBLIC<br />
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"<br />
<nowiki>"http://www.freedesktop.org/software/polkit/policyconfig-1.dtd"></nowiki><br />
<policyconfig><br />
<br />
<action id="org.archlinux.pkexec.gparted"><br />
<message>Authentication is required to run the GParted Partition Editor</message><br />
<icon_name>gparted</icon_name><br />
<defaults><br />
<allow_any>auth_admin</allow_any><br />
<allow_inactive>auth_admin</allow_inactive><br />
<allow_active>auth_admin</allow_active><br />
</defaults><br />
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gparted</annotate><br />
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate><br />
</action><br />
<br />
</policyconfig><br />
<br />
The attribute '''id''' is the actual command sent to [[D-Bus]], the '''message''' tag is the explanation to the user when authentication is required and the '''icon_name''' is sort of obvious. <br />
<br />
The '''defaults''' tag is where the permissions or lack thereof are located. It contains three settings: '''allow_any''', '''allow_inactive''', and '''allow_active'''. Inactive sessions are generally remote sessions (SSH, VNC, etc.) whereas active sessions are logged directly into the machine on a TTY or an X display. allow_any is the setting encompassing both scenarios. <br />
<br />
For each of these settings the following options are available:<br />
* ''no'': The user is not authorized to carry out the action. There is therefore no need for authentication.<br />
* ''yes'': The user is authorized to carry out the action without any authentication.<br />
* ''auth_self'': Authentication is required but the user need not be an administrative user.<br />
* ''auth_admin'': Authentication as an administrative user is required.<br />
* ''auth_self_keep'': The same as auth_self but, like sudo, the authorization lasts a few minutes.<br />
* ''auth_admin_keep'': The same as auth_admin but, like sudo, the authorization lasts a few minutes.<br />
These are default setting and unless overruled in later configuration will be valid for all users.<br />
<br />
As can be seen from the GParted action, users are required to authenticate as administrators in order to use GParted, regardless of whether the session is active or inactive.<br />
<br />
=== Правила авторизации ===<br />
<br />
Authorization rules that overrule the default settings are laid out in a set of directories as described above. For all purposes relating to personal configuration of a single system, only {{ic|/etc/polkit-1/rules.d}} should be used. <br />
<br />
The {{ic|addRule()}} method is used for adding a function that may be called whenever an authorization check for action and subject is performed. Functions are called in the order they have been added until one of the functions returns a value. Hence, to add an authorization rule that is processed before other rules, put it in a file in {{ic|/etc/polkit-1/rules.d}} with a name that sorts before other rules files, for example {{ic|00-early-checks.rules}}.<br />
<br />
The layout of the .rules files is fairly self-explanatory:<br />
/* Allow users in admin group to run GParted without authentication */<br />
polkit.addRule(function(action, subject) {<br />
if (action.id == "org.archlinux.pkexec.gparted" &&<br />
subject.isInGroup("admin")) {<br />
return polkit.Result.YES;<br />
}<br />
});<br />
<br />
Inside the function, we check for the specified action ID ''(org.archlinux.pkexec.gparted)'' and for the user's group ''(admin)'', then return a value "yes".<br />
<br />
=== Administrator identities ===<br />
<br />
The {{ic|addAdminRule()}} method is used for adding a function that may be called whenever administrator authentication is required. The function is used to specify what identities may be used for administrator authentication for the authorization check identified by action and subject. Functions added are called in the order they have been added until one of the functions returns a value. <br />
<br />
The default configuration for administrator identities is contained in the file {{ic|50-default.rules}} so any changes to that configuration should be made by copying the file to, say, {{ic|40-default.rules}} and editing that file.<br />
{{hc|/etc/polkit-1/rules.d/50-default.rules|<nowiki><br />
polkit.addAdminRule(function(action, subject) {<br />
return ["unix-group:wheel"];<br />
});</nowiki>}}<br />
<br />
The only part to edit (once copied) is the return array of the function: as whom should a user authenticate when asked to authenticate as an administrative user? If she herself is a member of the group designated as admins, she only need enter her own password. If some other user, e.g. root, is the only admin identity, she would need to enter in root's password. The format of the user identification is the same as the one used in designating authorities. <br />
<br />
The Arch default is to make all members of the group '''wheel''' administrators. A rule like below will have polkit ask for the root password instead of the users password for Admin authentication.<br />
<br />
{{hc|/etc/polkit-1/rules.d/49-rootpw_global.rules|<br />
/* Always authenticate Admins by prompting for the root<br />
* password, similar to the rootpw option in sudo<br />
*/<br />
polkit.addAdminRule(function(action, subject) {<br />
return ["unix-user:root"];<br />
});<br />
}}<br />
<br />
== Примеры ==<br />
<br />
=== Debugging/logging ===<br />
<br />
The following rule logs detailed information about any requested access.<br />
{{hc|/etc/polkit-1/rules.d/00-log-access.rules|<nowiki><br />
polkit.addRule(function(action, subject) {<br />
polkit.log("action=" + action);<br />
polkit.log("subject=" + subject);<br />
});</nowiki>}}<br />
<br />
=== Disable suspend and hibernate ===<br />
<br />
The following rule disables suspend and hibernate for all users.<br />
{{hc|/etc/polkit-1/rules.d/10-disable-suspend.rules|<nowiki><br />
polkit.addRule(function(action, subject) {<br />
if (action.id == "org.freedesktop.login1.suspend" ||<br />
action.id == "org.freedesktop.login1.suspend-multiple-sessions" ||<br />
action.id == "org.freedesktop.login1.hibernate" ||<br />
action.id == "org.freedesktop.login1.hibernate-multiple-sessions")<br />
{<br />
return polkit.Result.NO;<br />
}<br />
});</nowiki>}}<br />
<br />
=== Bypass password prompt ===<br />
<br />
To achieve something similar to the [[sudo]] {{ic|NOPASSWD}} option and get authorized solely based on [[Users_and_groups|user/group]] identity, you can create custom rules in {{ic|/etc/polkit-1/rules.d/}}. This allows you to override password authentication either [[#For_specific_actions|only for specific actions]] or [[#Globally|globally]]. See [https://gist.github.com/4013294/ccacedd69d54de7f2fd5881b546d5192d6a2bddb] for an example rule set.<br />
<br />
==== Globally ====<br />
<br />
Create the following file as root:<br />
{{hc|/etc/polkit-1/rules.d/49-nopasswd_global.rules|<br />
/* Allow members of the wheel group to execute any actions<br />
* without password authentication, similar to "sudo NOPASSWD:"<br />
*/<br />
polkit.addRule(function(action, subject) {<br />
if (subject.isInGroup("wheel")) {<br />
return polkit.Result.YES;<br />
}<br />
});<br />
}}<br />
<br />
Replace {{ic|wheel}} by any group of your preference.<br />
<br />
This will result in automatic authentication for '''any''' action requiring admin rights via Polkit. As such, be careful with the group you choose to give such rights to.<br />
<br />
==== For specific actions ====<br />
<br />
Create the following file as root:<br />
{{hc|/etc/polkit-1/rules.d/49-nopasswd_limited.rules|<nowiki><br />
/* Allow members of the wheel group to execute the defined actions <br />
* without password authentication, similar to "sudo NOPASSWD:"<br />
*/<br />
polkit.addRule(function(action, subject) {<br />
if ((action.id == "org.archlinux.pkexec.gparted" ||<br />
action.id == "org.libvirt.unix.manage") &&<br />
subject.isInGroup("wheel"))<br />
{<br />
return polkit.Result.YES;<br />
}<br />
});<br />
</nowiki>}}<br />
<br />
The {{ic|action.id}}s selected here are just (working) examples for GParted and [[Libvirt]], but you can replace them by any other of your liking as long as they exist (custom made or supplied by a package), and so can you define any group instead of {{ic|wheel}}.<br />
<br />
The {{ic|<nowiki>||</nowiki>}} operator is used to delimit actions (logical OR), and {{ic|&&}} means logical AND and must be kept as the last operator.<br />
<br />
==== Udisks ====<br />
<br />
[[File manager]]s may ask for a password when trying to mount a storage device, or yield a ''Not authorized'' or similar error. See [[Udisks#Configuration]] for details.<br />
<br />
=== Allow management of individual systemd units by regular users ===<br />
<br />
By checking for certain values passed to the polkit policy check, you can give specific users or groups the ability to manage specific units. As an example, you might want regular users to start and stop [[wpa_supplicant]]:<br />
<br />
{{hc|/etc/polkit-1/rules.d/10-wifimanagement.rules|<nowiki><br />
polkit.addRule(function(action, subject) {<br />
if (action.id == "org.freedesktop.systemd1.manage-units") {<br />
if (action.lookup("unit") == "wpa_supplicant.service") {<br />
var verb = action.lookup("verb");<br />
if (verb == "start" || verb == "stop" || verb == "restart") {<br />
return polkit.Result.YES;<br />
}<br />
}<br />
}<br />
});</nowiki><br />
}}<br />
<br />
== See also ==<br />
<br />
* [http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html Polkit manual page]</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Polkit_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=490326Polkit (Русский)2017-09-16T01:20:42Z<p>Sheykhnur: Удолил/доработал перевод от гугла, постарался сделать более удобоваримым. To be continued...</p>
<hr />
<div>[[Category:Security (Русский)]]<br />
[[de:PolicyKit]]<br />
[[en:Polkit]]<br />
[[ja:Polkit]]<br />
[[zh-hans:Polkit]]<br />
{{Related articles start (Русский)}}<br />
{{Related|Устранение часто встречающихся неполадок#Разрешения сессии}}<br />
{{Related|Sudo}}<br />
{{Related|Пользователи и группы}}<br />
{{Related articles end}}<br />
{{Unmaintained (Русский)}}<br />
<br />
Выдержка из [http://www.freedesktop.org/wiki/Software/polkit/ домашней страницы polkit]:<br />
<br />
:''polkit — это средство для управления правами приложений пользовательского уровня, позволяющее непривилегированным процессам решать административные задачи: единый интерфейс предоставления прав доступа к привилегированным операциям для непривилегированных приложений при помощи набора правил (политик) и шины D-Bus.''<br />
<br />
Polkit используется для управления общесистемными привилегиями. Данный фреймворк используется для предоставления непривилегированным процессам возможность выполнения действий, требующих прав администратора. В отличие от sudo, Polkit не наделяет процесс правами суперпользователя, а позволяет точно контролировать, какие действия разрешены, а какие нет.<br />
<br />
Polkit может ограничивать отдельные действия, такие как запуск GParted: при этом он проверяет имя пользователя и принадлежность оного к группе, например, является ли он членом группы wheel. Далее Polkit проверяет, какими правами наделены пользователи данной группы (есть ли вообще права на запуск?) и, если всё сходится (пользователь в нужной группе и у группы есть соответствующие права), требует ввести пароль для идентификации пользователя.<br />
<br />
== Установка ==<br />
<br />
Установите пакет {{Pkg|polkit}}.<br />
<br />
=== Агенты аутентификации ===<br />
<br />
Агент аутентификации используется для установления подлинности оператора либо как обычный пользователь (путём ввода пароля пользователя), либо как суперпользователь (путём ввода пароля рута). Пакет {{Pkg|polkit}} содержит текстовый агент аутентификации, 'pkttyagent', который используется в качестве запасного варианта.<br />
<br />
Если вы пользуетесь графической оболочкой, убедитесь, что установлен графический агент аутентификации и что он [[Autostarting_(Русский)|автоматически запускается]] при входе в систему.<br />
<br />
Такие графические оболочки как [[Cinnamon]], [[Deepin]], [[GNOME]], [[GNOME Flashback]], [[KDE]], [[LXDE]], [[LXQt]], [[MATE]], и [[Xfce]] уже имеют в своём составе агенты аутентификации.<br />
В других графических окружениях вы можете выбрать одну из реализаций:<br />
* {{Pkg|lxqt-policykit}}, который предоставляет {{ic|/usr/bin/lxqt-policykit-agent}}<br />
* {{Pkg|lxsession}}, который предоставляет {{ic|/usr/bin/lxpolkit}}<br />
* {{Pkg|mate-polkit}}, который предоставляет {{ic|/usr/lib/mate-polkit/polkit-mate-authentication-agent-1}}<br />
* {{AUR|polkit-efl-git}}, который предоставляет {{ic|/usr/bin/polkit-efl-authentication-agent-1}}<br />
* {{Pkg|polkit-gnome}}, который предоставляет {{ic|/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1}}<br />
* {{Pkg|polkit-kde-agent}}, который предоставляет {{ic|/usr/lib/polkit-kde/polkit-kde-authentication-agent-1}}<br />
* {{AUR|ts-polkitagent}}, который предоставляет {{ic|/usr/lib/ts-polkitagent}}<br />
* {{AUR|xfce-polkit-git}}, который предоставляет {{ic|/usr/lib/xfce-polkit/xfce-polkit}}<br />
<br />
== Конфигурация ==<br />
<br />
{{Warning|Do not amend the default permission files of packages, as these may be be overwritten on package upgrades.}}<br />
<br />
Polkit definitions can be divided into two kinds:<br />
* '''Actions''' are defined in XML {{ic|.policy}} files located in {{ic|/usr/share/polkit-1/actions}}. Each action has a set of default permissions attached to it (e.g. you need to identify as an administrator to use the GParted action). The defaults can be overruled but editing the actions files is NOT the correct way.<br />
*'''Authorization rules''' are defined in JavaScript {{ic|.rules}} files. They are found in two places: 3rd party packages can use {{ic|/usr/share/polkit-1/rules.d}} (though few if any do) and {{ic|/etc/polkit-1/rules.d}} is for local configuration. <br />
<br />
Polkit operates on top of the existing permissions systems in Linux – group membership, administrator status – it does not replace them. The .rules files designate a subset of users, refer to one (or more) of the actions specified in the actions files and determine with what restrictions these actions can be taken by that/those user(s). As an example, a rules file could overrule the default requirement for all users to authenticate as an admin when using GParted, determining that some specific user doesn't need to. Or isn't allowed to use GParted at all.<br />
<br />
{{Note|This does not preclude running GParted by means which do not respect polkit, such as the command line. Therefore, polkit should be used to expand access to privileged services for unprivileged users, rather than try to curtail the rights of (semi-)privileged users. For security purposes, [[Sudo|sudoers]] is still the way to go.}}<br />
<br />
=== Actions ===<br />
<br />
{{Tip|To display Policykit actions in a graphical interface, install the {{AUR|polkit-explorer}} package.}}<br />
<br />
The actions available to you via polkit will depend on the packages you have installed. Some are used in multiple desktop environments ''(org.freedesktop.*)'', some are DE-specific ''(org.gnome.*)'' and some are specific to a single program ''(org.archlinux.pkexec.gparted.policy)''. The command {{ic|pkaction}} lists all the actions defined in {{ic|/usr/share/polkit-1/actions}} for quick reference. <br />
<br />
To get an idea of what polkit can do, here are a few commonly used groups of actions:<br />
* '''[[Systemd|systemd-logind]]''' ''(org.freedesktop.login1.policy)'' actions regulated by polkit include powering off, rebooting, suspending and hibernating the system, including when other users may still be logged in.<br />
* '''[[udisks]]''' ''(org.freedesktop.udisks2.policy)'' actions regulated by polkit include mounting file systems and unlocking encrypted devices.<br />
* '''[[NetworkManager]]''' ''(org.freedesktop.NetworkManager.policy)'' actions regulated by polkit include turning on and off the network, wifi or mobile broadband.<br />
<br />
Each action is defined in an {{ic|<action>}} tag in a .policy file. The {{ic|org.archlinux.pkexec.gparted.policy}} contains a single action and looks like this:<br />
<br />
<?xml version="1.0" encoding="UTF-8"?><br />
<!DOCTYPE policyconfig PUBLIC<br />
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"<br />
<nowiki>"http://www.freedesktop.org/software/polkit/policyconfig-1.dtd"></nowiki><br />
<policyconfig><br />
<br />
<action id="org.archlinux.pkexec.gparted"><br />
<message>Authentication is required to run the GParted Partition Editor</message><br />
<icon_name>gparted</icon_name><br />
<defaults><br />
<allow_any>auth_admin</allow_any><br />
<allow_inactive>auth_admin</allow_inactive><br />
<allow_active>auth_admin</allow_active><br />
</defaults><br />
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gparted</annotate><br />
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate><br />
</action><br />
<br />
</policyconfig><br />
<br />
The attribute '''id''' is the actual command sent to [[D-Bus]], the '''message''' tag is the explanation to the user when authentication is required and the '''icon_name''' is sort of obvious. <br />
<br />
The '''defaults''' tag is where the permissions or lack thereof are located. It contains three settings: '''allow_any''', '''allow_inactive''', and '''allow_active'''. Inactive sessions are generally remote sessions (SSH, VNC, etc.) whereas active sessions are logged directly into the machine on a TTY or an X display. allow_any is the setting encompassing both scenarios. <br />
<br />
For each of these settings the following options are available:<br />
* ''no'': The user is not authorized to carry out the action. There is therefore no need for authentication.<br />
* ''yes'': The user is authorized to carry out the action without any authentication.<br />
* ''auth_self'': Authentication is required but the user need not be an administrative user.<br />
* ''auth_admin'': Authentication as an administrative user is required.<br />
* ''auth_self_keep'': The same as auth_self but, like sudo, the authorization lasts a few minutes.<br />
* ''auth_admin_keep'': The same as auth_admin but, like sudo, the authorization lasts a few minutes.<br />
These are default setting and unless overruled in later configuration will be valid for all users.<br />
<br />
As can be seen from the GParted action, users are required to authenticate as administrators in order to use GParted, regardless of whether the session is active or inactive.<br />
<br />
=== Правила авторизации ===<br />
<br />
Authorization rules that overrule the default settings are laid out in a set of directories as described above. For all purposes relating to personal configuration of a single system, only {{ic|/etc/polkit-1/rules.d}} should be used. <br />
<br />
The {{ic|addRule()}} method is used for adding a function that may be called whenever an authorization check for action and subject is performed. Functions are called in the order they have been added until one of the functions returns a value. Hence, to add an authorization rule that is processed before other rules, put it in a file in {{ic|/etc/polkit-1/rules.d}} with a name that sorts before other rules files, for example {{ic|00-early-checks.rules}}.<br />
<br />
The layout of the .rules files is fairly self-explanatory:<br />
/* Allow users in admin group to run GParted without authentication */<br />
polkit.addRule(function(action, subject) {<br />
if (action.id == "org.archlinux.pkexec.gparted" &&<br />
subject.isInGroup("admin")) {<br />
return polkit.Result.YES;<br />
}<br />
});<br />
<br />
Inside the function, we check for the specified action ID ''(org.archlinux.pkexec.gparted)'' and for the user's group ''(admin)'', then return a value "yes".<br />
<br />
=== Administrator identities ===<br />
<br />
The {{ic|addAdminRule()}} method is used for adding a function that may be called whenever administrator authentication is required. The function is used to specify what identities may be used for administrator authentication for the authorization check identified by action and subject. Functions added are called in the order they have been added until one of the functions returns a value. <br />
<br />
The default configuration for administrator identities is contained in the file {{ic|50-default.rules}} so any changes to that configuration should be made by copying the file to, say, {{ic|40-default.rules}} and editing that file.<br />
{{hc|/etc/polkit-1/rules.d/50-default.rules|<nowiki><br />
polkit.addAdminRule(function(action, subject) {<br />
return ["unix-group:wheel"];<br />
});</nowiki>}}<br />
<br />
The only part to edit (once copied) is the return array of the function: as whom should a user authenticate when asked to authenticate as an administrative user? If she herself is a member of the group designated as admins, she only need enter her own password. If some other user, e.g. root, is the only admin identity, she would need to enter in root's password. The format of the user identification is the same as the one used in designating authorities. <br />
<br />
The Arch default is to make all members of the group '''wheel''' administrators. A rule like below will have polkit ask for the root password instead of the users password for Admin authentication.<br />
<br />
{{hc|/etc/polkit-1/rules.d/49-rootpw_global.rules|<br />
/* Always authenticate Admins by prompting for the root<br />
* password, similar to the rootpw option in sudo<br />
*/<br />
polkit.addAdminRule(function(action, subject) {<br />
return ["unix-user:root"];<br />
});<br />
}}<br />
<br />
== Примеры ==<br />
<br />
=== Debugging/logging ===<br />
<br />
The following rule logs detailed information about any requested access.<br />
{{hc|/etc/polkit-1/rules.d/00-log-access.rules|<nowiki><br />
polkit.addRule(function(action, subject) {<br />
polkit.log("action=" + action);<br />
polkit.log("subject=" + subject);<br />
});</nowiki>}}<br />
<br />
=== Disable suspend and hibernate ===<br />
<br />
The following rule disables suspend and hibernate for all users.<br />
{{hc|/etc/polkit-1/rules.d/10-disable-suspend.rules|<nowiki><br />
polkit.addRule(function(action, subject) {<br />
if (action.id == "org.freedesktop.login1.suspend" ||<br />
action.id == "org.freedesktop.login1.suspend-multiple-sessions" ||<br />
action.id == "org.freedesktop.login1.hibernate" ||<br />
action.id == "org.freedesktop.login1.hibernate-multiple-sessions")<br />
{<br />
return polkit.Result.NO;<br />
}<br />
});</nowiki>}}<br />
<br />
=== Bypass password prompt ===<br />
<br />
To achieve something similar to the [[sudo]] {{ic|NOPASSWD}} option and get authorized solely based on [[Users_and_groups|user/group]] identity, you can create custom rules in {{ic|/etc/polkit-1/rules.d/}}. This allows you to override password authentication either [[#For_specific_actions|only for specific actions]] or [[#Globally|globally]]. See [https://gist.github.com/4013294/ccacedd69d54de7f2fd5881b546d5192d6a2bddb] for an example rule set.<br />
<br />
==== Globally ====<br />
<br />
Create the following file as root:<br />
{{hc|/etc/polkit-1/rules.d/49-nopasswd_global.rules|<br />
/* Allow members of the wheel group to execute any actions<br />
* without password authentication, similar to "sudo NOPASSWD:"<br />
*/<br />
polkit.addRule(function(action, subject) {<br />
if (subject.isInGroup("wheel")) {<br />
return polkit.Result.YES;<br />
}<br />
});<br />
}}<br />
<br />
Replace {{ic|wheel}} by any group of your preference.<br />
<br />
This will result in automatic authentication for '''any''' action requiring admin rights via Polkit. As such, be careful with the group you choose to give such rights to.<br />
<br />
==== For specific actions ====<br />
<br />
Create the following file as root:<br />
{{hc|/etc/polkit-1/rules.d/49-nopasswd_limited.rules|<nowiki><br />
/* Allow members of the wheel group to execute the defined actions <br />
* without password authentication, similar to "sudo NOPASSWD:"<br />
*/<br />
polkit.addRule(function(action, subject) {<br />
if ((action.id == "org.archlinux.pkexec.gparted" ||<br />
action.id == "org.libvirt.unix.manage") &&<br />
subject.isInGroup("wheel"))<br />
{<br />
return polkit.Result.YES;<br />
}<br />
});<br />
</nowiki>}}<br />
<br />
The {{ic|action.id}}s selected here are just (working) examples for GParted and [[Libvirt]], but you can replace them by any other of your liking as long as they exist (custom made or supplied by a package), and so can you define any group instead of {{ic|wheel}}.<br />
<br />
The {{ic|<nowiki>||</nowiki>}} operator is used to delimit actions (logical OR), and {{ic|&&}} means logical AND and must be kept as the last operator.<br />
<br />
==== Udisks ====<br />
<br />
[[File manager]]s may ask for a password when trying to mount a storage device, or yield a ''Not authorized'' or similar error. See [[Udisks#Configuration]] for details.<br />
<br />
=== Allow management of individual systemd units by regular users ===<br />
<br />
By checking for certain values passed to the polkit policy check, you can give specific users or groups the ability to manage specific units. As an example, you might want regular users to start and stop [[wpa_supplicant]]:<br />
<br />
{{hc|/etc/polkit-1/rules.d/10-wifimanagement.rules|<nowiki><br />
polkit.addRule(function(action, subject) {<br />
if (action.id == "org.freedesktop.systemd1.manage-units") {<br />
if (action.lookup("unit") == "wpa_supplicant.service") {<br />
var verb = action.lookup("verb");<br />
if (verb == "start" || verb == "stop" || verb == "restart") {<br />
return polkit.Result.YES;<br />
}<br />
}<br />
}<br />
});</nowiki><br />
}}<br />
<br />
== See also ==<br />
<br />
* [http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html Polkit manual page]</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=CUPS&diff=490315CUPS2017-09-15T21:54:53Z<p>Sheykhnur: This rules don't working without cups-pk-helper package!</p>
<hr />
<div>[[Category:Printers]]<br />
[[cs:CUPS]]<br />
[[de:CUPS]]<br />
[[es:CUPS]]<br />
[[fr:CUPS]]<br />
[[it:CUPS]]<br />
[[ja:CUPS]]<br />
[[pl:CUPS]]<br />
[[ru:CUPS]]<br />
[[th:CUPS]]<br />
[[tr:CUPS]]<br />
[[zh-hans:CUPS]]<br />
[[zh-hant:CUPS]]<br />
{{Related articles start}}<br />
{{Related|CUPS/Printer sharing}}<br />
{{Related|CUPS/Printer-specific problems}}<br />
{{Related|CUPS/Troubleshooting}}<br />
{{Related|Samba}}<br />
{{Related|LPRng}}<br />
{{Related articles end}}<br />
<br />
[http://www.cups.org/ CUPS] is the standards-based, open source printing system developed by Apple Inc. for macOS® and other UNIX®-like operating systems.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|cups}} package.<br />
<br />
For GTK3 printing support, see [[Gtk#Printers not shown in the GTK print dialog]].<br />
<br />
If you intend to "print" into a PDF document, also install the {{pkg|cups-pdf}} package. By default, pdf files are stored in {{ic|/var/spool/cups-pdf/$USER}}. The location can be changed in {{ic|/etc/cups/cups-pdf.conf}}.<br />
<br />
[[Enable]] and [[start]] {{ic|org.cups.cupsd.service}}.<br />
<br />
== Connection Interfaces ==<br />
Additional steps for printer detection are listed below for various connection interfaces.<br />
<br />
{{Note|CUPS helper programs are run using the {{ic|lp}} group and {{ic|daemon}} user. This allows the helper programs to access printer devices '''and''' read config files in {{ic|/etc/cups/}}, which all belong to the {{ic|lp}} group. This default may conflict with non-printer parallel port device access:<br />
* Adding extra users to the {{ic|lp}} group will allow those users to read CUPS files, and<br />
* CUPS helpers may gain access to any non-printer parallel port devices.<br />
If this is a concern, consider using a [[Udev]] rule to assign a different group for any non-printer parallel port device ({{Bug|50009}}). The group and user that CUPS uses can be changed, but the permissions of some files may need to be manually fixed.}}<br />
<br />
=== USB ===<br />
To see if your USB printer is detected:<br />
{{hc|$ lsusb|<br />
(...)<br />
Bus 001 Device 007: ID 03f0:1004 Hewlett-Packard DeskJet 970c/970cse<br />
}}<br />
<br />
=== Parallel port ===<br />
To use a parallel port printer, the {{ic|lp}}, {{ic|parport}} and {{ic|parport_pc}} [[kernel modules]] are required.<br />
<br />
{{hc|$ dmesg {{!}} grep -i parport|<br />
parport0: Printer, Hewlett-Packard HP LaserJet 2100 Series<br />
lp0: using parport0 (polling)<br />
}}<br />
<br />
=== Network ===<br />
[[Avahi]] can be used to scan for printers on the local network. To use [[Avahi]] hostnames to connect to networked printers, set up [[Avahi#Hostname_resolution|.local hostname resolution]] and [[restart]] {{ic|org.cups.cupsd.service}}.<br />
<br />
If the system is connected to a networked printer using the [[Samba]] protocol, or if the system is to be a print server for Windows clients, install the {{Pkg|samba}} package.<br />
<br />
== Printer Drivers ==<br />
The drivers for a printer may come from any of the sources shown below. See [[CUPS/Printer-specific problems]] for an incomplete list of drivers that others have managed to get working.<br />
<br />
To drive a printer, CUPS needs a PPD file and, for most printers, some [https://www.cups.org/doc/man-filter.html filters].<br />
For details on how CUPS uses PPDs and filters, see [https://www.cups.org/doc/postscript-driver.html].<br />
<br />
The [http://www.openprinting.org/printers OpenPrinting Printer List] provides driver recommendations for many printers. It also supplies PPD files for each printer, but most are available through [[#Foomatic|foomatic]] or the recommended driver package.<br />
<br />
When a PPD file is provided to CUPS, the CUPS server will regenerate the PPD files and save them in {{ic|/etc/cups/ppd/}}.<br />
<br />
=== CUPS ===<br />
CUPS provides a few PPDs and filter binaries by default, which should work out of the box. CUPS also provides support for [[wikipedia:AirPrint|AirPrint]] and [http://www.pwg.org/ipp/everywhere.html IPP Everywhere] printers.<br />
<br />
=== Foomatic ===<br />
The [https://wiki.linuxfoundation.org/openprinting/database/foomatic foomatic] project provides PPDs for many printer drivers, both free and nonfree. For more information about what foomatic does, see [http://www.openprinting.org/download/kpfeifle/LinuxKongress2002/Tutorial/IV.Foomatic-Developer/IV.tutorial-handout-foomatic-development.html Foomatic from the Developer's View].<br />
<br />
To use foomatic, install {{pkg|foomatic-db-engine}}, and at least one of {{pkg|foomatic-db}}, {{pkg|foomatic-db-ppds}}, {{pkg|foomatic-db-nonfree-ppds}}, or {{pkg|foomatic-db-gutenprint-ppds}}.<br />
<br />
The foomatic PPDs may require additional filters, such as {{pkg|gutenprint}}, {{pkg|ghostscript}}, or another source (for instance {{aur|min12xxw}}).<br />
For {{pkg|ghostscript}}, {{pkg|gsfonts}} may also be required.<br />
<br />
=== Manufacturer-specific drivers ===<br />
Many printer manufacturers supply their own Linux drivers. These are often available in the official Arch repositories or in the [[AUR]].<br />
<br />
Some of those drivers are described in more detail in [[CUPS/Printer-specific problems]].<br />
<br />
== Printer URI ==<br />
<br />
Listed below are additional steps to manually generate the URI if required.<br />
<br />
=== USB ===<br />
<br />
CUPS should be able to automatically generate a URI for USB printers, for example {{ic|1=usb://HP/DESKJET%20940C?serial=CN16E6C364BH}}.<br />
<br />
If it doesn't, see [[CUPS/Troubleshooting#USB printers]] for troubleshooting steps.<br />
<br />
=== Parallel port ===<br />
<br />
The URI should be of the form {{ic|parallel:''device''}}. For instance, if the printer is connected on {{ic|/dev/lp0}}, use {{ic|parallel:/dev/lp0}}.<br />
If you are using a USB to parallel port adapter, use {{ic|parallel:/dev/usb/lp0}} as the printer URI.<br />
<br />
=== Network ===<br />
<br />
If you have set up [[Avahi]] as in [[#Network]], CUPS should detect the printer URI. You can also use {{ic|avahi-discover}} to find the name of your printer and its address (for instance, {{ic|BRN30055C6B4C7A.local/10.10.0.155:631}}).<br />
<br />
The URI can also be generated manually, without using [[Avahi]].<br />
A list of the available URI schemes for networked printers is available in the CUPS documentation [https://www.cups.org/doc/network.html#PROTOCOLS]. As exact details of the URIs differ between printers, check either the manual of the printer or [[CUPS/Printer-specific problems]].<br />
<br />
Remote CUPS print servers can be accessed through a URI of the form {{ic|ipp://''hostname'':631/printers/''queue_name''}}. See [[CUPS/Printer sharing#Between GNU/Linux systems]] for details on setting up the remote print server.<br />
<br />
See [[CUPS/Troubleshooting#Networking issues]] for additional issues and solutions.<br />
<br />
{{Warning|1=Avoid configuring both the server and the client with a printer filter - either the print queue on the client or the server should be 'raw'. This avoids sending a print job through the filters for a printer twice, which can cause problems (for instance, [https://bbs.archlinux.org/viewtopic.php?pid=1589908#p1589908]). See [[#Usage]] for an example of setting a print queue to 'raw'.}}<br />
<br />
== Usage ==<br />
<br />
CUPS can be fully controlled using the lp* and cups* CLI tools.<br />
Alternatively, the [[#Web interface]] or one of several [[#GUI applications]] can be used.<br />
<br />
* The ''queue'' name is a short but descriptive name used on the system to identify the queue. This name should not contain spaces or any special characters. For instance, a print queue corresponding to a HP LaserJet 5P could be named "hpljet5p". More than one queue can be associated with each physical printer.<br />
* The ''location'' is a description of the printer's physical location (for instance "bedroom", or "kitchen"). This is to aid in maintaining several printers.<br />
* The ''description'' is a full description of the print queue. A common use is a full printer name (like "HP LaserJet 5P").<br />
<br />
=== CLI tools ===<br />
<br />
See [http://localhost:631/help/options.html CUPS local documentation] for more tips on the command-line tools.<br />
<br />
{{Note|Command-line switches cannot be grouped}}<br />
<br />
;List the devices<br />
# lpinfo -v # <br />
$ /usr/lib/cups/backend/snmp ''ip_address'' # Use SNMP to find a URI<br />
<br />
;List the drivers<br />
$ lpinfo -m<br />
<br />
;Add a new queue<br />
# lpadmin -p ''queue_name'' -E -v ''uri'' -m ''model''<br />
<br />
The ''queue_name'' is up to you.<br />
Example:<br />
# lpadmin -p HP_DESKJET_940C -E -v "usb://HP/DESKJET%20940C?serial=CN16E6C364BH" -m drv:///HP/hp-deskjet_940c.ppd.gz<br />
# lpadmin -p AirPrint -E -v "ipp://10.0.1.25/ipp/print" -m everywhere # Driverless queue (Apple AirPrint or IPP Everywhere)<br />
# lpadmin -p SHARED_PRINTER -m raw # Raw queue; no PPD or filter<br />
<br />
;Set the default printer<br />
$ lpoptions -d ''queue_name''<br />
<br />
;Change the options<br />
$ lpoptions -p ''queue_name'' -l # List the options<br />
$ lpoptions -p ''queue_name'' -o ''option''=''value'' # Set an option<br />
<br />
Example:<br />
$ lpoptions -p HP_DESKJET_940C -o PageSize=A4<br />
<br />
;Check the status<br />
$ lpstat -s<br />
$ lpstat -p ''queue_name''<br />
<br />
;Deactivate a printer<br />
# cupsdisable ''queue_name''<br />
<br />
;Activate a printer<br />
# cupsenable ''queue_name''<br />
<br />
;Set the printer to accept jobs<br />
# cupsaccept ''queue_name''<br />
<br />
;Remove a printer<br />
First set it to reject all incoming entries:<br />
# cupsreject ''queue_name''<br />
Then disable it.<br />
# cupsdisable ''queue_name''<br />
Finally remove it.<br />
# lpadmin -x ''queue_name''<br />
<br />
;Print a file<br />
$ lpr ''file''<br />
$ lpr -# 17 ''file'' # print the file 17 times<br />
$ echo "Hello, world!" | lpr -p # print the result of a command. The -p switch adds a header.<br />
<br />
;Check the queue<br />
$ lpq<br />
$ lpq -a # on all queues<br />
<br />
;Clear the queue<br />
# lprm # remove last entry only<br />
# lprm - # remove all entries<br />
<br />
=== Web interface ===<br />
<br />
The CUPS server can be fully administered through the web interface, available on http://localhost:631/.<br />
<br />
{{Note|If an HTTPS connection to CUPS is used, it ''may'' take a very long time before the interface appears the first time it is accessed. This is because the first request triggers the generation of SSL certificates which can be a time-consuming job.}}<br />
<br />
To perform administrative tasks from the web interface authentication is required. Authenticate either as {{ic|root}} or make sure your user is member of a group with printer administration privileges, see [[#Configuration]].<br />
<br />
;Add a queue<br />
Go to the '''Administration''' page. <br />
<br />
;Modify existing queues<br />
Go to the '''Printers''' page, and select a queue to modify.<br />
<br />
;Test a queue<br />
Go to the '''Printers''' page, and select a queue.<br />
<br />
=== GUI applications ===<br />
<br />
If your user does not have sufficient privileges to administer CUPS, the applications will request the root password when they start. To give users administrative privileges without needing root access, see [[#Configuration]].<br />
<br />
* {{App|print-manager|A tool for managing print jobs and printers ([[KDE]]).|https://projects.kde.org/projects/kde/kdeutils/print-manager|{{Pkg|print-manager}}}}<br />
* {{App|system-config-printer|A CUPS printer configuration tool and status applet ([[GNOME]] and others)|http://cyberelk.net/tim/software/system-config-printer/|{{Pkg|system-config-printer}}}}<br />
* {{App|gtklp|GTK+ interface to CUPS.|http://gtklp.sirtobi.com/index.shtml|{{AUR|gtklp}}}}<br />
<br />
== Configuration ==<br />
<br />
The CUPS server configuration is located in {{ic|/etc/cups/cupsd.conf}} and {{ic|/etc/cups/cups-files.conf}}. After editing either file, [[restart]] {{ic|org.cups.cupsd.service}} to apply any changes. The default configuration is sufficient for most users.<br />
<br />
[[Groups]] with printer administration privileges are defined in {{ic|SystemGroup}} in the {{ic|/etc/cups/cups-files.conf}}. The {{ic|sys}} group is used by default.<br />
<br />
{{pkg|cups}} is built with {{pkg|libpaper}} support and libpaper defaults to the '''Letter''' paper size. To avoid having to change the paper size for each print queue you add, edit {{ic|/etc/papersize}} and set your system default paper size. See {{man|5|papersize}}.<br />
<br />
By default, all logs are sent to files in {{ic|/var/log/cups/}}. By changing the values of the {{ic|AccessLog}}, {{ic|ErrorLog}}, and {{ic|PageLog}} directives in {{ic|/etc/cups/cups-files.conf}} to {{ic|syslog}}, CUPS can be made to log to the [[systemd journal]] instead. See [https://fedoraproject.org/wiki/Changes/CupsJournalLogging the fedora wiki page] for information on the original proposed change.<br />
<br />
=== cups-browsed ===<br />
<br />
CUPS can use [[Avahi]] browsing to discover unknown shared printers in your network. This can be useful in large setups where the server is unknown. To use this feature, set up [[Avahi#Hostname_resolution|.local hostname resolution]], and start both {{ic|avahi-daemon.service}} and {{ic|cups-browsed.service}}. Jobs are sent directly to the printer without any processing so the created queues may not work, however driverless printers such as those supporting [http://www.pwg.org/ipp/everywhere.html IPP Everywhere] or [[wikipedia:AirPrint|AirPrint]] should work out of the box.<br />
{{Note|1=Searching for network printers [https://bbs.archlinux.org/viewtopic.php?pid=1720219#p1720219 may significantly increase the time it takes for your computer to boot].}}<br />
<br />
=== Print servers and remote administration ===<br />
<br />
See [[CUPS/Printer sharing]] and [[CUPS/Printer sharing#Remote administration]].<br />
<br />
=== Allowing admin authentication through PolicyKit ===<br />
<br />
[[PolicyKit]] can be configured to allow users to configure printers using a GUI without the admin password.<br />
<br />
{{Note|1=You may need to install {{Pkg|cups-pk-helper}} for working this rules.}}<br />
<br />
Here's an example that allows members of the wheel [[group]] to administer printers without a password:<br />
<br />
{{hc|/etc/polkit-1/rules.d/49-allow-passwordless-printer-admin.rules|<nowiki><br />
polkit.addRule(function(action, subject) { <br />
if (action.id == "org.opensuse.cupspkhelper.mechanism.all-edit" && <br />
subject.isInGroup("wheel")){ <br />
return polkit.Result.YES; <br />
} <br />
});</nowiki>}}<br />
<br />
=== Without a local CUPS server ===<br />
<br />
CUPS can be configured to directly connect to remote printer servers instead of running a local print server. This requires [[install]]ation of the {{Pkg|libcups}} package. Some applications will still require the {{Pkg|cups}} package for printing.<br />
<br />
{{Warning|Accessing remote printers without a local CUPS server is not recommended by the developers. [http://www.cups.org/pipermail/cups/2015-October/027229.html]}}<br />
<br />
To use a remote CUPS server, set the {{ic|CUPS_SERVER}} [[environment variable]] to {{ic|printerserver.mydomain:port}}. For instance, if you want to use a different print server for a single [[Firefox]] instance (substitute {{ic|printserver.mydomain:port}} with your print server name/port):<br />
<br />
$ CUPS_SERVER=printserver.mydomain:port firefox<br />
<br />
== Troubleshooting ==<br />
<br />
See [[CUPS/Troubleshooting]].<br />
<br />
== See also ==<br />
<br />
* [http://localhost:631/help Official CUPS documentation], ''locally installed''<br />
* [[Wikipedia:CUPS]]<br />
* [http://www.linuxfoundation.org/collaborate/workgroups/openprinting OpenPrinting homepage]<br />
* [https://en.opensuse.org/Concepts_printing OpenSuSE Concepts printing guide - explains the full printing workflow]<br />
* [https://en.opensuse.org/SDB:CUPS_in_a_Nutshell OpenSuSE CUPS in a Nutshell - a quick CUPS overview]<br />
* [https://wiki.gentoo.org/wiki/Printing Gentoo's printing guide]<br />
* [[debian:Printing|Debian's Printing portal - detailed technical guides]]</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=User_talk:Somini&diff=489229User talk:Somini2017-09-08T15:44:03Z<p>Sheykhnur: Update fix regressions.</p>
<hr />
<div>Ok but delayed hibernation isn't work yet :-/<br />
upd: Adding "Before=sleep.target" to the delayed-hibernation service isn't enough. Working after fixing regression [https://github.com/systemd/systemd/issues/6419 #6419] and return back "Requires=" instead "BindsTo=" in units hibernate.target, hybrid-sleep.target, suspend.target as [https://github.com/systemd/systemd/pull/6678 #6678]</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=User_talk:Somini&diff=489205User talk:Somini2017-09-08T10:02:00Z<p>Sheykhnur: Created page with "Ok but delayed hibernation isn't work yet :-/"</p>
<hr />
<div>Ok but delayed hibernation isn't work yet :-/</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=466689Pro Audio (Русский)2017-01-25T11:55:27Z<p>Sheykhnur: /* Контрольный список */ Приведение в более читабельный вид</p>
<hr />
<div>[[Category:Multimedia (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Professional audio]]<br />
[[ja:プロオーディオ]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Sound system}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|musescore}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|calf}}<br />
* {{Pkg|dssi}}<br />
* {{Pkg|guitarix2}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (смотрите также [[Linuxsampler]])<br />
* {{AUR|mhwaveedit}}<br />
* {{AUR|carla}}<br />
* {{AUR|rakarrack-git}}<br />
* {{AUR|XCFA}}<br />
* {{AUR|yoshimi}}<br />
* {{AUR|fsthost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
См. также [[List of applications (Русский)#Аудио|Список приложений аудио]] и [[List of applications (Русский)#Редакторы аудио|Список редакторов аудио]].<br />
<br />
=== Настройка системы ===<br />
<br />
Рассмотрим наиболее частые конфигурации:<br />
<br />
* Добавляем свою учётную запись в группу [[Пользователи и группы#Управление группами|аудио]]<br />
* Добавим строку {{ic|threadirqs}} в [[параметры ядра]]<br />
<br />
{{Warning (Русский)|Включение {{ic|threadirqs}} в сочетании с некоторыми USB устройствами может явиться причиной зависания системы, по крайней мере в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2 [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
{{Note (Русский)|Начиная с версии ядра 3.13.6 исправлено [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6]}}}}<br />
<br />
* Установим версию ядра реального времени {{AUR|linux-rt}}<br />
* Установим значение подсистемы [[CPU frequency scaling (Русский)|cpufreq]] в {{ic|performance}}<br />
* Добавим {{ic|noatime}} в [[fstab (Русский)|опции монтирования файловой системы ]] (смотрите раздел [[Увеличение производительности#Параметры монтирования]])<br />
<br />
Режим реального времени в большинстве случаев уже настроен: для настройки реалтайма больше не нужно редактировать файл {{ic|/etc/security/limits.conf}}. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{Pkg|jack}} или {{Pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Проверка настроек ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}{{Broken package link (Русский)|{{aur-mirror (Русский)|libffado-svn}}}}}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
{{Note (Русский)|Как было замечено Такаши Сакамото(Takashi Sakamoto) [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html в списке рассылки разработчиков alsa], при использовании бэкенда FireWire совместно с jackd — модуль DICE несовместим. Если вы видите строки вроде этой:<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
то вам необходимо отключить модуль "snd_dice".}}<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}}{{Broken package link (Русский)|{{aur-mirror (Русский)|realtimeconfigquickscan}}}}.<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры настройки доступны в разделе [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (длительная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}{{Broken package link (Русский)|{{aur-mirror (Русский)|linux-rt-ice}}}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{Pkg|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Несвободные приложения ==<br />
=== Steinberg'овые SDK ===<br />
<br />
Естественно, мы не можем распространять заголовки ни VST, ни ASIO в форме бинарных пакетов. Тем не менее, всякий раз, когда вы собираете программу, которая будет работать с плагинами VST в виде Windows-библиотек ''.dll'', проверьте следующие пакеты (которые не требуют использования какого-либо SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
С учётом вышесказанного, если вы собираете программу, которая будет работать с нативными ''.so'' VST плагинами, то в этом случае выхода нет. Для таких случаев Арч позволяет нам поддерживать единую локальную базу данных приложений. Мы можем «установить» общесистемную SDK — достаточно лишь скачать и поместить файл в директорию установленного пакета.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search= Получить их можно в AUR]<br />
<br />
{{Note (Русский)|''Steinberg не запрещает распространять конечные продукты и не диктует лицензию, под которой они должны распространяться. Существует много плагинов с лицензией GPL. Таким образом, распространение бинарных пакетов или программного обеспечения, собранного с данными несвободными заголовками не проблема, потому что заголовки являются лишь временными зависимостями для сборки.''}}<br />
<br />
== Проект Arch Linux Pro Audio ==<br />
<br />
Да, у нас есть и такое. Задумайтесь над "Planet CCRMA" или "Pro Audio Overlay", меньше научной коннотации: [http://archaudio.org ArchAudio].<br />
<br />
Что значит, что сие является репозиторием дополнений, т.е. вы должны поработать над разумной установкой и настройкой Archlinux.<br />
<br />
Это относительно новое течение, хотя инициатива была проявлена ещё примерно в 2006/2007г. <br />
<br />
История: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
По всем вопросам, связанными с Arch- и ArchAudio- проблемами можно обратиться в наш '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux и Arch Linux Pro Audio в новостях ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Cтроим серьёзную мультимедиа станцию с Arch] — статья на Linux.com, июль 2012 (англ.)<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale Повесть об Арче] — статья музыканта и писателя Дэйва Филлипса (Dave Phillips), октябрь 2011 (англ.)<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision От Windows к Linux: правильное решение] — интервью Geoff "songshop" Beasley, февраль 2010 (англ.)</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=466688Pro Audio (Русский)2017-01-25T11:52:10Z<p>Sheykhnur: /* Настройка системы */ Приведение в более удобоваримый формат чтения.</p>
<hr />
<div>[[Category:Multimedia (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Professional audio]]<br />
[[ja:プロオーディオ]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Sound system}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|musescore}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|calf}}<br />
* {{Pkg|dssi}}<br />
* {{Pkg|guitarix2}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (смотрите также [[Linuxsampler]])<br />
* {{AUR|mhwaveedit}}<br />
* {{AUR|carla}}<br />
* {{AUR|rakarrack-git}}<br />
* {{AUR|XCFA}}<br />
* {{AUR|yoshimi}}<br />
* {{AUR|fsthost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
См. также [[List of applications (Русский)#Аудио|Список приложений аудио]] и [[List of applications (Русский)#Редакторы аудио|Список редакторов аудио]].<br />
<br />
=== Настройка системы ===<br />
<br />
Рассмотрим наиболее частые конфигурации:<br />
<br />
* Добавляем свою учётную запись в группу [[Пользователи и группы#Управление группами|аудио]]<br />
* Добавим строку {{ic|threadirqs}} в [[параметры ядра]]<br />
<br />
{{Warning (Русский)|Включение {{ic|threadirqs}} в сочетании с некоторыми USB устройствами может явиться причиной зависания системы, по крайней мере в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2 [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
{{Note (Русский)|Начиная с версии ядра 3.13.6 исправлено [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6]}}}}<br />
<br />
* Установим версию ядра реального времени {{AUR|linux-rt}}<br />
* Установим значение подсистемы [[CPU frequency scaling (Русский)|cpufreq]] в {{ic|performance}}<br />
* Добавим {{ic|noatime}} в [[fstab (Русский)|опции монтирования файловой системы ]] (смотрите раздел [[Увеличение производительности#Параметры монтирования]])<br />
<br />
Режим реального времени в большинстве случаев уже настроен: для настройки реалтайма больше не нужно редактировать файл {{ic|/etc/security/limits.conf}}. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{Pkg|jack}} или {{Pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}{{Broken package link (Русский)|{{aur-mirror (Русский)|libffado-svn}}}}}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
{{Note (Русский)|Как было замечено Такаши Сакамото(Takashi Sakamoto) [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html в списке рассылки разработчиков alsa], при использовании бэкенда FireWire совместно с jackd — модуль DICE несовместим. Если вы видите строки вроде этой:<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
то вам необходимо отключить модуль "snd_dice".}}<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}}{{Broken package link (Русский)|{{aur-mirror (Русский)|realtimeconfigquickscan}}}}.<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры настройки доступны в разделе [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (длительная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}{{Broken package link (Русский)|{{aur-mirror (Русский)|linux-rt-ice}}}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{Pkg|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Несвободные приложения ==<br />
=== Steinberg'овые SDK ===<br />
<br />
Естественно, мы не можем распространять заголовки ни VST, ни ASIO в форме бинарных пакетов. Тем не менее, всякий раз, когда вы собираете программу, которая будет работать с плагинами VST в виде Windows-библиотек ''.dll'', проверьте следующие пакеты (которые не требуют использования какого-либо SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
С учётом вышесказанного, если вы собираете программу, которая будет работать с нативными ''.so'' VST плагинами, то в этом случае выхода нет. Для таких случаев Арч позволяет нам поддерживать единую локальную базу данных приложений. Мы можем «установить» общесистемную SDK — достаточно лишь скачать и поместить файл в директорию установленного пакета.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search= Получить их можно в AUR]<br />
<br />
{{Note (Русский)|''Steinberg не запрещает распространять конечные продукты и не диктует лицензию, под которой они должны распространяться. Существует много плагинов с лицензией GPL. Таким образом, распространение бинарных пакетов или программного обеспечения, собранного с данными несвободными заголовками не проблема, потому что заголовки являются лишь временными зависимостями для сборки.''}}<br />
<br />
== Проект Arch Linux Pro Audio ==<br />
<br />
Да, у нас есть и такое. Задумайтесь над "Planet CCRMA" или "Pro Audio Overlay", меньше научной коннотации: [http://archaudio.org ArchAudio].<br />
<br />
Что значит, что сие является репозиторием дополнений, т.е. вы должны поработать над разумной установкой и настройкой Archlinux.<br />
<br />
Это относительно новое течение, хотя инициатива была проявлена ещё примерно в 2006/2007г. <br />
<br />
История: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
По всем вопросам, связанными с Arch- и ArchAudio- проблемами можно обратиться в наш '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux и Arch Linux Pro Audio в новостях ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Cтроим серьёзную мультимедиа станцию с Arch] — статья на Linux.com, июль 2012 (англ.)<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale Повесть об Арче] — статья музыканта и писателя Дэйва Филлипса (Dave Phillips), октябрь 2011 (англ.)<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision От Windows к Linux: правильное решение] — интервью Geoff "songshop" Beasley, февраль 2010 (англ.)</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=454019Pro Audio (Русский)2016-10-15T19:22:51Z<p>Sheykhnur: Правка линков, приведение в соответствие с английской версией вики.</p>
<hr />
<div>[[Category:Multimedia (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Professional audio]]<br />
[[ja:プロオーディオ]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Sound system}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|musescore}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|calf}}<br />
* {{Pkg|dssi}}<br />
* {{Pkg|guitarix2}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (смотрите также [[Linuxsampler]])<br />
* {{AUR|mhwaveedit}}<br />
* {{AUR|carla}}<br />
* {{AUR|rakarrack-git}}<br />
* {{AUR|XCFA}}<br />
* {{AUR|yoshimi}}<br />
* {{AUR|fsthost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
См. также [[List of applications (Русский)#Аудио|Список приложений аудио]] и [[List of applications (Русский)#Редакторы аудио|Список редакторов аудио]].<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
<br />
* Добавьте свою учётную запись в группу [[Пользователи и группы#Управление группами|аудио]]<br />
* Добавьте строку {{ic|threadirqs}} в [[параметры ядра]]<br />
<br />
{{Warning (Русский)|Включение {{ic|threadirqs}} в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2 [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
{{Note (Русский)|Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6 [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6]}}}}<br />
<br />
* Установите ядро {{AUR|linux-rt}}<br />
* Установите значение подсистемы [[CPU frequency scaling (Русский)|cpufreq]] в {{ic|performance}}<br />
* Добавьте {{ic|noatime}} в [[fstab (Русский)|опции монтирования файловой системы ]] (смотрите раздел [[Увеличение производительности#Параметры монтирования]])<br />
<br />
Режим реального времени в большинстве случаев уже настроен: для настройки реалтайма больше не нужно редактировать файл {{ic|/etc/security/limits.conf}}. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{Pkg|jack}} или {{Pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}{{Broken package link (Русский)|{{aur-mirror (Русский)|libffado-svn}}}}}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
{{Note (Русский)|Как было замечено Такаши Сакамото(Takashi Sakamoto) [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html в списке рассылки разработчиков alsa], при использовании бэкенда FireWire совместно с jackd — модуль DICE несовместим. Если вы видите строки вроде этой:<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
то вам необходимо отключить модуль "snd_dice".}}<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}}{{Broken package link (Русский)|{{aur-mirror (Русский)|realtimeconfigquickscan}}}}.<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры настройки доступны в разделе [[JACK Audio Connection Kit#A shell-based example setup]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (длительная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}{{Broken package link (Русский)|{{aur-mirror (Русский)|linux-rt-ice}}}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{Pkg|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Несвободные приложения ==<br />
=== Steinberg'овые SDK ===<br />
<br />
Естественно, мы не можем распространять заголовки ни VST, ни ASIO в форме бинарных пакетов. Тем не менее, всякий раз, когда вы собираете программу, которая будет работать с плагинами VST в виде Windows-библиотек ''.dll'', проверьте следующие пакеты (которые не требуют использования какого-либо SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
С учётом вышесказанного, если вы собираете программу, которая будет работать с нативными ''.so'' VST плагинами, то в этом случае выхода нет. Для таких случаев Арч позволяет нам поддерживать единую локальную базу данных приложений. Мы можем «установить» общесистемную SDK — достаточно лишь скачать и поместить файл в директорию установленного пакета.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search= Получить их можно в AUR]<br />
<br />
{{Note (Русский)|''Steinberg не запрещает распространять конечные продукты и не диктует лицензию, под которой они должны распространяться. Существует много плагинов с лицензией GPL. Таким образом, распространение бинарных пакетов или программного обеспечения, собранного с данными несвободными заголовками не проблема, потому что заголовки являются лишь временными зависимостями для сборки.''}}<br />
<br />
== Проект Arch Linux Pro Audio ==<br />
<br />
Да, у нас есть и такое. Задумайтесь над "Planet CCRMA" или "Pro Audio Overlay", меньше научной коннотации: [http://archaudio.org ArchAudio].<br />
<br />
Что значит, что сие является репозиторием дополнений, т.е. вы должны поработать над разумной установкой и настройкой Archlinux.<br />
<br />
Это относительно новое течение, хотя инициатива была проявлена ещё примерно в 2006/2007г. <br />
<br />
История: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
По всем вопросам, связанными с Arch- и ArchAudio- проблемами можно обратиться в наш '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux и Arch Linux Pro Audio в новостях ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Cтроим серьёзную мультимедиа станцию с Arch] — статья на Linux.com, июль 2012 (англ.)<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale Повесть об Арче] — статья музыканта и писателя Дэйва Филлипса (Dave Phillips), октябрь 2011 (англ.)<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision От Windows к Linux: правильное решение] — интервью Geoff "songshop" Beasley, февраль 2010 (англ.)</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Dhcpcd_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=415073Dhcpcd (Русский)2016-01-12T22:34:37Z<p>Sheykhnur: /* Хуки */ добавлена заметка о последнем изменении dhcpcd</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Networking (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Dhcpcd]]<br />
[[ja:Dhcpcd]]<br />
{{Related articles start (Русский)}}<br />
{{Related|Настройка сети}}<br />
{{Related|Настройка беспроводной сети}}<br />
{{Related|dhcpd (Русский)}}<br />
{{Related articles end}}<br />
{{Unmaintained (Русский)}}<br />
<br />
''dhcpcd'' — свободная реализация клиента DHCP и DHCPv6. На данный момент является наиболее развитым DHCP-клиентом с открытым исходным кодом. Полный список возможностей вы можете найти на [http://roy.marples.name/projects/dhcpcd/ домашней странице проекта].<br />
<br />
{{Note (Русский)|Не путайте ''dhcpcd'' — DHCP-клиент и [[dhcpd (Русский)|dhcpd]], который является '''DHCP-сервером'''.}}<br />
<br />
== Установка ==<br />
<br />
[[pacman (Русский)#Установка определенных пакетов|Установите]] пакет {{Pkg|dhcpcd}}, доступный в [[Official repositories (Русский)|официальных репозиториях]]. Он является частью группы {{Grp|base}}, поэтому, скорее всего он уже установлен в вашей системе.<br />
<br />
Также с пакетом {{Aur|dhcpcd-ui}} (доступен в [[AUR (Русский)|AUR]]) вы можете установить графическую оболочку [[GTK+]] для демона ''dhcpcd'' (и, опционально, для [[WPA supplicant (Русский)|wpa_supplicant]]). Он предоставляет диалоговую панель для настройки и позволяет вводить данные для подключения к беспроводным сетям.<br />
<br />
== Запуск ==<br />
<br />
Вместе с ''dhcpcd'' предоставляются два юнит-файла [[systemd (Русский)|systemd]], каждый из которых может быть использован для управления демоном:<br />
<br />
* служба {{ic|dhcpcd.service}} запускает клиент для всех сетевых интерфейсов.<br />
* служба {{ic|dhcpcd@.service}} может использоваться для запуска клиента на отдельном сетевом интерфейсе, например: {{ic|dhcpcd@''eth0''.service}}.<br />
<br />
Чтобы запустить ''dhcpcd'' вручную, просто наберите:<br />
<br />
{{hc|# dhcpcd ''eth0''|<br />
dhcpcd: version 5.1.1 starting<br />
dhcpcd: ''eth0'': broadcasting for a lease<br />
...<br />
dhcpcd: ''eth0'': leased 192.168.1.70 for 86400 seconds<br />
}}<br />
<br />
{{Tip (Русский)|Если вы выбрали {{ic|dhcpcd.service}} и он не запускается, смотрите раздел [[#dhcpcd.service конфликтует с udev при старте системы]].}}<br />
<br />
== Настройка ==<br />
<br />
Основная часть настроек выполняется в файле {{ic|/etc/dhcpcd.conf}}. Некоторые наиболее используемые опции описаны далее. Подробнее о структуре файла и его содержании смотрите в {{ic|man 5 dhcpcd.conf}}.<br />
<br />
=== Статические маршруты ===<br />
<br />
Если вы хотите, чтобы при подключении добавлялись статические маршруты, создайте новый хук-скрипт в {{ic|/usr/lib/dhcpcd/dhcpcd-hooks}} и напишите в нем команды для добавления маршрутов. Например, чтобы добавить маршрут в подсети {{ic|10.11.12.0/24}} через шлюз {{ic|192.168.192.5}}:<br />
<br />
{{hc|/usr/lib/dhcpcd/dhcpcd-hooks/40-vpnroute|<br />
ip route add 10.11.12.0/24 via 192.168.192.5<br />
}}<br />
<br />
Префикс {{ic|40}} использован для того, чтобы данный скрипт отрабатывал после уже имеющихся хук-скриптов.<br />
<br />
=== Идентификатор клиента ===<br />
<br />
Сервер DHCP может однозначно идентифицировать клиента посредством различных параметров:<br />
<br />
* имя хоста (в частности то имя, которое отправляет клиент),<br />
* MAC-адрес сетевого адаптера клиента через который проходит соединение,<br />
* Identity Association ID (IAID),<br />
* DHCP Unique Identifier (DUID).<br />
<br />
Подробнее смотрите в [https://tools.ietf.org/html/rfc3315#section-4.2 RFC 3315].<br />
<br />
В зависимости от настроек DHCP-сервера, какие-то из этих параметров могут быть обязательными, а другие — опциональными.<br />
<br />
{{Note (Русский)|Стандартной конфигурации ''dhcpcd'' в большинстве случаев будет достаточно. Указанные параметры определяются автоматически и ручная настройка обычно требуется только при возникновении проблем.}}<br />
<br />
Если при использовании стандартных настроек не удается получить IP, для настройки вы можете использовать следующие опции в {{ic|dhcpcd.conf}}:<br />
<br />
* {{ic|hostname}} — отправляет имя хоста (берется из {{ic|/etc/hostname}}).<br />
* {{ic|clientid}} — отправляет MAC-адрес интерфейса в качестве идентификатора.<br />
* {{ic|iaid ''имя_интерфейса''}} — извлекает IAID для интерфейса, указанного в опции {{ic|interface ''имя_интерфейса''}}. Обе эти опции должны присутствовать одновременно, дополнительно смотрите [https://bbs.archlinux.org/viewtopic.php?pid=1388376#p1388376 это обсуждение].<br />
* {{ic|duid}} — указывает ''dhcpcd'' использовать из DUID и IAID в качестве идентификатора.<br />
<br />
Значение DUID устанавливается в {{ic|/etc/dhcpcd.duid}}. Для эффективной работы DHCP важно, чтобы это значение было уникальным для конкретной системы, и устанавливалось одинаковым на все сетевые интерфейсы. В свою очередь, IAID представляет собой уникальный идентификатор для каждого сетевого интерфейса в отдельности (смотрите подробнее в [http://tools.ietf.org/html/rfc4361#section-6.1 RFC 4361]).<br />
<br />
При использовании [[Wikipedia:Dynamic DNS|Dynamic DNS]] особенно необходимо удостовериться в уникальности этих идентификаторов. Если в сети находятся два DNS-клиента с одинаковыми DUID, они будут конфликтовать, поочередно отнимая друг у друга аренду DNS-записи. Это может произойти, например, в случае, если была сделана копия виртуальной машины с другими именем хоста и MAC-адресом адаптера, но DUID в настройках остался прежним.<br />
<br />
=== Ускорение DHCP отключением ARP-сканирования ===<br />
<br />
''dhcpcd'', следуя рекомендациям стандарта DHCP ([http://www.ietf.org/rfc/rfc2131.txt RFC2131], раздел 2.2), проверяет при помощи запросов ARP, что присвоенный IP-адрес не используется каким-нибудь другим устройством в сети. Как правило, для небольших домашних сетей в этом нет необходимости, поэтому вы можете ускорить соединение ''dhcpcd'' примерно на 5 секунд, добавив в {{ic|/etc/dhcpcd.conf}} строку:<br />
<br />
noarp<br />
<br />
Того же эффекта можно достичь, запуская ''dhcpcd'' с опцией {{ic|--noarp}}.<br />
<br />
=== Запасной статический профиль ===<br />
<br />
Вы можете настроить статические параметры IP в ''dhcpcd'', которые будут использоваться в качестве резервных, если не удалось получить аренду от сервера. Это полезно для автономных устройств, к которым обычно есть доступ только по сети (например, [[Raspberry Pi]]) для того, чтобы не потерять возможность с ними соединиться.<br />
<br />
В следующем примере создается профиль {{ic|static_eth0}} с IP {{ic|192.168.1.1}} и адресом шлюза и DNS {{ic|192.168.1.23}}, который устанавливается как запасной для {{ic|eth0}}:<br />
<br />
{{hc|/etc/dhcpcd.conf|<nowiki><br />
# define static profile<br />
profile static_eth0<br />
static ip_address=192.168.1.1<br />
static routers=192.168.1.23<br />
static domain_name_servers=192.168.1.23<br />
<br />
# fallback to static profile on eth0<br />
interface eth0<br />
fallback static_eth0<br />
</nowiki>}}<br />
<br />
Возможны также более сложные варианты настройки, например, совмещение с опцией {{ic|arping}}. Подробнее смотрите в {{ic|dhcpcd.conf(5)}}.<br />
<br />
== Хуки ==<br />
<br />
''dhcpcd'' запускает все скрипты в каталоге {{ic|/usr/lib/dhcpcd/dhcpcd-hooks/}} в последовательности, определенной стандартным порядком сортировки. Более подробно смотрите в {{ic|dhcpcd(5)}} и {{ic|dhcpcd-run-hooks(8)}}.<br />
<br />
{{Note (Русский)|<br />
* Каждый скрипт можно отключить при помощи опции {{ic|nohook}} в {{ic|dhcpcd.conf}}.<br />
* Опция {{ic|env}} позволяет установить переменные окружения для '''всех''' хуков. Например, вы можете заставить хук {{ic|30-hostname}} всегда устанавливать имя хоста, указав {{ic|1=env force_hostname=YES}}.}}<br />
<br />
{{Expansion (Русский)|Необходимо добавить описание стандартных хуков.}}<br />
<br />
=== 10-wpa_supplicant ===<br />
<br />
{{Note (Русский)|1=Начиная с версии dhcpcd-6.10.0-1 поведение демона по умолчанию изменено: теперь хук 10-wpa_supplicant не запускается по умолчанию! Подробнее: [https://bbs.archlinux.org/viewtopic.php?id=207416], [https://gentoo.org/support/news-items/2016-01-08-some-dhcpcd-hooks-are-now-examples.html]}}<br />
<br />
Хук {{ic|10-wpa_supplicant}} автоматически запускает [[WPA supplicant]] для беспроводных интерфейсов. Это происходит только если:<br />
<br />
* процесс ''wpa_supplicant'' еще не запущен на данном интерфейсе<br />
* существует файл настроек ''wpa_supplicant''. ''dhcpcd'' проверяет следующие пути:<br />
<br />
/etc/wpa_supplicant/wpa_supplicant-"$interface".conf<br />
/etc/wpa_supplicant/wpa_supplicant.conf<br />
/etc/wpa_supplicant-"$interface".conf<br />
/etc/wpa_supplicant.conf<br />
<br />
в указанном порядке. Вы можете указать свой список путей, используя опцию {{ic|1=env wpa_supplicant_conf=''путь''}} в {{ic|/etc/dhcpcd.conf}}.<br />
<br />
{{Note (Русский)|Хук использует первый файл настроек, который ему удастся найти, и не будет принимать во внимание остальные. Имейте это в виду, если у вас несколько файлов настроек ''wpa_supplicant''.}}<br />
<br />
Если вы самостоятельно подключаетесь к беспроводным сетям с помощью ''wpa_supplicant'', этот хук может приводить к нежелательным попыткам подключения. Например, если вы остановили ''wpa_supplicant'', он может вновь включить сетевой интерфейс. Также, если вы используете [[Netctl (Русский)#Автоматическое переключение профилей|netctl-auto]], ''wpa_supplicant'' будет запускаться автоматически с использованием файла настроек {{ic|/run/network/wpa_supplicant_"$interface".conf}}, поэтому запуск из хука будет излишним и приведет лишь к появлению ошибок в логе при чтении стандартного файла {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}, который содержит лишь примеры и может не являться корректным с точки зрения программы.<br />
<br />
Чтобы выключить хук, добавьте {{ic|nohook wpa_supplicant}} в {{ic|dhcpcd.conf}}.<br />
<br />
== Советы и рекомендации ==<br />
<br />
=== Освобождение арендованного IP-адреса ===<br />
<br />
Файл аренды {{ic|/var/lib/dhcpcd/dhcpcd-''имя_интерфейса''.lease}} (где {{ic|''имя_интерфейса''}} — имя сетевого интерфейса, для которого имеется назначенный в аренду IP-адрес) содержит последний ответ на запрос аренды, полученный от DHCP-сервера. Он используется для того, чтобы сохранить адрес и срок аренды (атрибут {{ic|mtime}}). По истечении срока IP-адрес из файла запрашивается снова у DHCP-сервера, и, если адрес свободен, он снова присваивается сетевому интерфейсу клиента. Если вы не хотите, чтобы использовался тот же IP-адрес, просто удалите этот файл и перезапустите ''dhcpcd''.<br />
<br />
== Решение проблем ==<br />
<br />
=== Client ID ===<br />
<br />
Если у вас сеть с DHCPv4, которая фильтрует Client ID, основанные на MAC-адресах, вам скорее всего нужно изменить строку<br />
<br />
{{hc|/etc/dhcpcd.conf|<br />
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 Client ID as per RFC4361.<br />
duid<br />
}}<br />
<br />
на<br />
<br />
{{hc|/etc/dhcpcd.conf|<br />
# Use the hardware address of the interface for the Client ID (DHCPv4).<br />
clientid<br />
}}<br />
<br />
иначе вы не сможете получать аренду от DHCP, если он не может правильно прочесть ваш Client ID [http://en.wikipedia.org/wiki/DHCPv6 DHCPv6]. Подробнее смотрите в [http://tools.ietf.org/html/rfc4361 RFC 4361].<br />
<br />
=== Освобождение аренды IP-адреса ===<br />
<br />
Иногда происходит нежелательное присвоение IP-адреса. Например, когда два маршрутизатора соединены вместе через VPN-канал, и второй маршрутизатор через этот канал присваивает IP клиенту. Чтобы это исправить, освободите IP-адрес, выполнив:<br />
<br />
# dhcpcd -k<br />
<br />
Теперь попробуйте снова:<br />
<br />
# dhcpcd<br />
<br />
Вероятно, желаемого результата не удастся добиться с первого раза.<br />
<br />
=== Не удается подключиться к маршрутизатору ===<br />
<br />
С некоторыми маршрутизаторами может возникать проблема, когда к ним не удается подключиться при помощи ''dhcpcd''. Для того, чтобы это исправить, закомментируйте или удалите строку<br />
<br />
require dhcp_server_identifier<br />
<br />
в файле настроек {{ic|/etc/dhcpcd.conf}}. Обратите внимание, что это может вызвать новые проблемы, если в вашей сети находятся несколько DHCP-серверов; смотрите [http://technet.microsoft.com/en-us/library/cc977442.aspx эту страницу] для получения дополнительной информации.<br />
<br />
=== dhcpcd.service конфликтует с udev при старте системы ===<br />
<br />
{{ic|dhcpcd.service}} может быть [[Systemd (Русский)#включен]] без указания сетевого интерфейса. Однако, это может создать т. н. ''состояние гонки'' (конфликт) с ''systemd-udevd'' в момент загрузки системы, когда ''systemd-udevd'' пытается назначить интерфейсу постоянное имя:<br />
<br />
error changing net interface name wlan0 to wlp4s0: Device or resource busy<br />
<br />
Чтобы избежать этого, запускайте ''dhcpcd'' для каждого конкретного сетевого интерфейса отдельно, как описано в разделе [[#Запуск]].<br />
<br />
=== Время ожидания ===<br />
<br />
Если ''dhcpcd'' работает на одном сетевом интерфейсе и ему не удается получить аренду в течение 30 секунд (например, если сервер еще не готов), процесс просто выведет сообщение об ошибке и завершится. Чтобы заставить ''dhcpcd'' ожидать бесконечно, добавьте опцию {{ic|timeout}} со значением {{ic|0}}:<br />
<br />
{{hc|/etc/systemd/system/dhcpcd@.service.d/timeout.conf|2=<br />
[Service]<br />
ExecStart=<br />
ExecStart=/usr/bin/dhcpcd -w -q '''-t 0''' %I<br />
}}<br />
<br />
Не забудьте [[systemd (Русский)#Редактирование предоставленных пакетами файлов юнитов|перезагрузить конфигурацию systemd]].<br />
<br />
== Смотрите также ==<br />
<br />
* [http://roy.marples.name/man/html8/dhcpcd.html dhcpcd(8)]<br />
* [http://roy.marples.name/man/html5/dhcpcd.conf.html dhcpcd.conf(5)]</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Wpa_supplicant_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=415072Wpa supplicant (Русский)2016-01-12T22:34:34Z<p>Sheykhnur: /* Хуки */ добавлена заметка о последнем изменении dhcpcd</p>
<hr />
<div>[[Category:Wireless networking (Русский)]]<br />
[[Category:Русский]]<br />
[[en:WPA supplicant]]<br />
[[es:WPA supplicant]]<br />
[[it:WPA supplicant]]<br />
[[ja:WPA supplicant]]<br />
[[zh-cn:WPA supplicant]]<br />
{{Related articles start (Русский)}}<br />
{{Related|Network configuration (Русский)}}<br />
{{Related|Wireless network configuration (Русский)}}<br />
{{Related articles end}}<br />
{{Unmaintained (Русский)}}<br />
<br />
[http://hostap.epitest.fi/wpa_supplicant/ wpa_supplicant] — кроссплатформенный [[Wikipedia:Supplicant (computer)|суппликант]] с поддержкой WEP, WPA и WPA2 ([[wikipedia:IEEE_802.11i|IEEE 802.11i]] / RSN (''Robust Secure Network'', надежная защищенная сеть)). Он подходит для настольных компьютеров, ноутбуков и встраиваемых систем.<br />
<br />
''wpa_supplicant'' является реализацией компонента IEEE 802.1X/WPA Supplicant, который используется на клиентских машинах. Он реализует согласование ключей шифрования с аутентификатором WPA (WPA Authenticator), аутентификацию EAP с сервером аутентификации (Authentication Server), а также управляет роумингом и выполняет сопряжение адаптера с беспроводной сетью.<br />
<br />
== Установка ==<br />
<br />
[[pacman (Русский)#Установка определенных пакетов|Установите]] пакет {{Pkg|wpa_supplicant}}, доступный в [[Official repositories (Русский)|официальных репозиториях]].<br />
<br />
Также вы можете установить {{Pkg|wpa_supplicant_gui}}, который предоставляет ''wpa_gui'' – графическую оболочку для ''wpa_supplicant''.<br />
<br />
== Обзор ==<br />
<br />
При установке соединения с зашифрованной беспроводной сетью ''wpa_supplicant'' проходит аутентификацию у аутентификатора WPA. Для успешного завершения этого процесса ''wpa_supplicant'' должен быть настроен так, чтобы иметь возможность передать правильный закрытый ключ сети аутентификатору.<br />
<br />
После успешного завершения процесса аутентификации необходимо установить IP-адрес сетевого интерфейса вручную с помощью утилит [[Базовые утилиты#ip|iproute2]], либо автоматически, например с [[systemd-networkd (Русский)|systemd-networkd]] или [[dhcpcd (Русский)]] для настройки автоматического получения IP через DHCP. Как только будет сетевому интерфейсу будет присвоен IP-адрес, станет возможо получить доступ к сети через беспроводное соединение.<br />
<br />
Методы и примеры вы также сможете найти на страницах по [[Wireless network configuration (Русский)#Systemd с wpa_supplicant и статическим IP|беспроводной]] и [[Network configuration (Русский)#Настройка IP-адреса|проводной]] настройке сети.<br />
<br />
== Подключение при помощи wpa_cli ==<br />
<br />
Этот метод позволяет выполнить сканирование для поиска окружающих сетей, используя ''wpa_cli'' – утилиту командной строки, которая может быть использована для интерактивной настройки запущенного ''wpa_supplicant''. Смотрите [http://linux.die.net/man/8/wpa_cli wpa_cli(8)] для получения дополнительной информации.<br />
<br />
Чтобы использовать ''wpa_cli'', для ''wpa_supplicant'' должен быть указан контрольный интерфейс (файл сокета), и ему должны быть даны права на обновление файла настроек. Сделать это можно создав минимальный файл настроек:<br />
<br />
{{hc|/etc/wpa_supplicant/example.conf|2=<br />
ctrl_interface=/run/wpa_supplicant<br />
update_config=1<br />
}}<br />
<br />
Теперь запустите ''wpa_supplicant'' командой:<br />
<br />
# wpa_supplicant -B -i ''имя_интерфейса'' -c /etc/wpa_supplicant/example.conf<br />
<br />
где ''имя_интерфейса'' – имя вашего беспроводного сетевого интерфейса.<br />
<br />
{{Tip (Русский)|Чтобы определить имя беспроводного сетевого интерфейса, используйте команду {{ic|ip link}}.}}<br />
<br />
Теперь запустите ''wpa_cli'':<br />
<br />
# wpa_cli<br />
<br />
Будет отображено приглашение для ввода команд ({{ic|>}}), где вы можете использовать автодополнение по {{ic|Tab}} и получать описание для дополняемых команд.<br />
<br />
{{Tip (Русский)|Расположение сокета может быть указано вручную с помощью опции {{ic|-p}}; с помощью {{ic|-i}} можно также указать имя сетевого интерфейса. Если имя не указано явно, будет использоваться первый найденный беспроводной интерфейс, управляемый ''wpa_supplicant''.}}<br />
<br />
Используйте команды {{ic|scan}} и {{ic|scan_results}} для сканирования доступных беспроводных сетей:<br />
<br />
> scan<br />
OK<br />
<3>CTRL-EVENT-SCAN-RESULTS<br />
> scan_results<br />
bssid / frequency / signal level / flags / ssid<br />
00:00:00:00:00:00 2462 -49 [WPA2-PSK-CCMP][ESS] MYSSID<br />
11:11:11:11:11:11 2437 -64 [WPA2-PSK-CCMP][ESS] ANOTHERSSID<br />
<br />
Чтобы подключиться к сети {{ic|MYSSID}}, добавьте новую сеть ({{ic|add_network}}), укажите ее идентификатор (''ssid'') и пароль для доступа к сети ({{ic|set_network}}), затем включите ее ({{ic|enable_network}}):<br />
<br />
> add_network<br />
0<br />
> set_network 0 ssid "MYSSID"<br />
> set_network 0 psk "passphrase"<br />
> enable_network 0<br />
<2>CTRL-EVENT-CONNECTED – Connection to 00:00:00:00:00:00 completed (reauth) [id=0 id_str=]<br />
<br />
{{Note (Русский)|<br />
* Каждая сеть нумеруется с нуля, поэтому первая сеть имеет индекс 0.<br />
* [[Wikipedia:Pre-shared key|Закрытый ключ (PSK)]] сети вычисляется на основе парольной фразы, заключенной в кавычки, что вы также можете заметить, прочитав раздел [[#Подключение при помощи wpa_passphrase|wpa_passphrase]]. Тем не менее, вы можете ввести закрытый ключ напрямую, введя его в команде {{ic|set_network ''id'' psk}} ''без'' кавычек.}}<br />
<br />
Теперь сохраните внесенные изменения в файл настроек:<br />
<br />
> save_config<br />
OK<br />
<br />
Как только сопряжение с сетью будет выполнено, все, что останется сделать – получить IP адрес, как было указано в разделе [[#Обзор]], например:<br />
<br />
# dhcpcd ''имя_интерфейса''<br />
<br />
=== Подключение при помощи wpa_passphrase ===<br />
<br />
Этот метод позволяет быстро соединиться с сетью, SSID которой известен, используя ''wpa_passphrase'' – утилиту командной строки, которая генерирует текст минимальной необходимой конфигурации для ''wpa_supplicant''. Пример:<br />
<br />
{{hc|$ wpa_passphrase MYSSID passphrase|2=<br />
network={<br />
ssid="MYSSID"<br />
#psk="passphrase"<br />
psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d<br />
}<br />
}}<br />
<br />
Так как текст попадает в стандартный вывод, вы можете сразу вызвать ''wpa_supplicant'', передавая ему настройки:<br />
<br />
# wpa_supplicant -B -i ''имя_интерфейса'' -c <(wpa_passphrase MYSSID passphrase)<br />
<br />
{{Note|Из-за подстановки процесса, вы '''не можете''' запускать эту команду из [[sudo]]: вам нужен постоянный сеанс суперпользователя. Смотрите также [[Help:Reading#Regular user or root]].}}<br />
<br />
{{Tip (Русский)|<br />
* Используйте кавычки, если строка содержит пробелы, например: {{ic|"secret passphrase"}}.<br />
* Чтобы определить имя беспроводного сетевого интерфейса, используйте команду {{ic|ip link}}.<br />
* Парольные фразы с некоторыми нестандартными символами могут потребовать ввода из файла: {{ic|wpa_passphrase MYSSID < passphrase.txt}}.}}<br />
<br />
Как только сопряжение с сетью будет выполнено, вам останется получить IP адрес, как было указано в разделе [[#Обзор]], например:<br />
<br />
# dhcpcd ''имя_интерфейса''<br />
<br />
== Расширенное использование ==<br />
<br />
Для более сложных сетей, например, широко практикующих использование [[Wikipedia:Extensible_Authentication_Protocol|EAP]], будет необходимо вручную настроить ''wpa_supplicant''. На странице [http://linux.die.net/man/5/wpa_supplicant.conf wpa_supplicant.conf(5)] вы можете найти описание структуры и содержимого файла настроек и примеры файлов; более детальное описание всех опций вы можете найти в файле {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}.<br />
<br />
=== Настройка ===<br />
<br />
Как уже было сказано в разделе [[#Сопряжение при помощи wpa_passphrase]], минимальная конфигурация может быть создана при помощи команды:<br />
<br />
# wpa_passphrase ''SSID_сети'' ''парольная_фраза'' > /etc/wpa_supplicant/example.conf<br />
<br />
Команда создает только блок опций {{ic|network}}. Файл настроек с наиболее общими опциями может выглядеть примерно так:<br />
<br />
{{hc|/etc/wpa_supplicant/example.conf|2=<nowiki><br />
ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel<br />
update_config=1<br />
fast_reauth=1<br />
ap_scan=1<br />
network={<br />
ssid="''SSID_сети''"<br />
#psk="''парольная_фраза''"<br />
psk=59e0d07fa4c7741797a4e394f38a5c321e3bed51d54ad5fcbd3f84bc7415d73d<br />
}</nowiki><br />
}}<br />
<br />
В дальнейшем блоки {{ic|network}} могут быть добавлены вручную либо с использованием ''wpa_cli'', как показано в разделе [[#Подключение при помощи wpa_cli]]. Чтобы использовать ''wpa_cli'', должен быть указан контрольный интерфейс при помощи опции {{ic|ctrl_interface}}. Установка {{ic|1=GROUP=wheel}} позволяет пользователям этой группы использовать ''wpa_cli''. Также добавьте {{ic|1=update_config=1}}, чтобы изменения, сделанные в ''wpa_cli'' могли сохраняться в файл.<br />
<br />
Опции {{ic|1=fast_reauth=1}} и {{ic|1=ap_scan=1}} установлены глобально. Нужны они вам или нет зависит от того, к какому типу сети вы хотите подключиться. Если вам нужны прочие глобальные опции, просто скопируйте их из {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}}.<br />
<br />
Также вы можете использовать команду {{ic|wpa_cli set}} для отображения текущего состояния опций и установки их значений. Несколько блоков {{ic|network}} можно добавить в файл настроек: ''wpa_supplicant'' сможет работать с каждой из них. По умолчанию, производится подключение к сети с наиболее сильным сигналом; если это поведение нежелательно, вы можете использовать опцию {{ic|priority}} для установки числового значения приоритета.<br />
<br />
Преимущество размещения настроек в {{ic|/etc/wpa_supplicant/wpa_supplicant.conf}} в том, что этот файл по умолчанию использует [[dhcpcd]]. Обратите внимание, что, кроме подробного описания опций в комментариях, некоторые опции добавлены в файл незакомментированными, в том числе и набор блоков {{ic|network}}, приведенный там в качестве примера, которые однажды могут привести к незапланированному подключению к чужой сети с совпавшим SSID. Возможно, вы захотите сохранить резервную копию этого файла для примера, и создать новый файл для своих настроек на этом месте. В любом случае, при наличии изменений в новых версиях стандартного файла конфигурации должно произойти безопасное [[Pacnew and Pacsave files|слияние]].<br />
<br />
{{Note (Русский)|1=Начиная с версии dhcpcd-6.10.0-1 поведение демона по умолчанию изменено: теперь хук 10-wpa_supplicant не запускается по умолчанию! Подробнее: [https://bbs.archlinux.org/viewtopic.php?id=207416], [https://gentoo.org/support/news-items/2016-01-08-some-dhcpcd-hooks-are-now-examples.html]}}<br />
<br />
{{Tip (Русский)|Чтобы настроить блок {{ic|network}} для соединения с беспроводной сетью со скрытым SSID, добавьте в него опцию {{ic|1=scan_ssid=1}}.}}<br />
<br />
=== Установка соединения ===<br />
<br />
==== Вручную ====<br />
<br />
Запустите ''wpa_supplicant''. Наиболее распространенные опции команды:<br />
<br />
* {{ic|-B}} – запуск в фоновом режиме.<br />
* {{ic|-c ''filename''}} – путь до файла настроек.<br />
* {{ic|-i ''interface''}} – сетевой интерфейс.<br />
* {{ic|-D ''driver''}} – опционально позволяет указать драйвер адаптера. Для получения списка поддерживаемых драйверов наберите {{ic|wpa_supplicant -h}}.<br />
** {{ic|nl80211}} в данный момент является стандартным, но не все модули беспроводных контроллеров поддерживают его.<br />
** {{ic|wext}} устарел, однако, все еще широко поддерживается.<br />
<br />
Полный список поддерживаемых опций ищите в руководстве [http://linux.die.net/man/8/wpa_supplicant wpa_supplicant(8)].<br />
<br />
Пример вызова ''wpa_supplicant'':<br />
<br />
# wpa_supplicant -B -i ''имя_интерфейса'' -c /etc/wpa_supplicant/example.conf<br />
<br />
Когда будет произведено успешное сопряжение с беспроводной сетью, вы сможете получить IP-адрес, как было указано в разделе [[#Обзор]], например:<br />
<br />
# systemctl enable dhcpcd@''interface''<br />
<br />
{{Tip (Русский)|''dhcpcd'' имеет хук, который может неявно запускать ''wpa_supplicant'', подробнее смотрите на странице [[dhcpcd (Русский)#10-wpa_supplicant]].}}<br />
<br />
==== При загрузке (systemd) ====<br />
<br />
Пакет ''wpa_supplicant'' предоставляет множество файлов служб [[systemd (Русский)|systemd]]:<br />
<br />
* {{ic|wpa_supplicant.service}} – использует [[D-Bus]], рекомендуется для пользователей [[NetworkManager]].<br />
* {{ic|wpa_supplicant@.service}} – принимает имя интерфейса в качестве аргумента и запускает на нем демон ''wpa_supplicant'', который прочитывает настройки из файла {{ic|/etc/wpa_supplicant/wpa_supplicant-''имя_интерфейса''.conf}}.<br />
* {{ic|wpa_supplicant-nl80211@.service}} – также позволяет указать интерфейс, кроме того указывает ''wpa_supplicant'' использовать драйвер {{ic|nl80211}}. Используется файл настроек {{ic|/etc/wpa_supplicant/wpa_supplicant-nl80211-''имя_интерфейса''.conf}}.<br />
* {{ic|wpa_supplicant-wired@.service}} – также позволяет указать интерфейс, кроме того указывает ''wpa_supplicant'' использовать драйвер {{ic|wired}}. Используется файл настроек {{ic|/etc/wpa_supplicant/wpa_supplicant-wired-''имя_интерфейса''.conf}}.<br />
<br />
Чтобы соединение автоматически выполнялось при старте системы, включите одну из предоставленных служб, например:<br />
<br />
# systemctl enable wpa_supplicant@''имя_интерфейса''<br />
<br />
Когда будет произведено успешное сопряжение с беспроводной сетью, вы сможете получить IP-адрес, как было указано в разделе [[#Обзор]], например:<br />
<br />
# systemctl enable dhcpcd@''interface''<br />
<br />
{{Tip (Русский)|''dhcpcd'' имеет хук, который может неявно запускать ''wpa_supplicant'', подробнее смотрите на странице [[dhcpcd (Русский)#10-wpa_supplicant]].}}<br />
<br />
=== Скрипт обработки событий на основе wpa_cli ===<br />
<br />
''wpa_cli'' может выполняться как демон и запускать указанный скрипт для событий, генерируемых ''wpa_supplicant''. Поддерживаются два события: {{ic|CONNECTED}} и {{ic|DISCONNECTED}}. Некоторые [[Environment variables (Русский)|переменные окружения]] доступны для использовании в скрипте, смотрите [http://linux.die.net/man/8/wpa_cli wpa_cli(8)] для получения подробной информации.<br />
<br />
Следующий пример использует [[Desktop notifications|уведомления рабочего стола]] для уведомления пользователя о событиях:<br />
<br />
#!/bin/bash<br />
<br />
case "$2" in<br />
CONNECTED)<br />
notify-send "WPA supplicant: connection established";<br />
;;<br />
DISCONNECTED)<br />
notify-send "WPA supplicant: connection lost";<br />
;;<br />
esac<br />
<br />
Не забудьте сделать файл скрипта исполняемым, затем укажите его при запуске ''wpa_cli'' с помощью опции {{ic|-a}}:<br />
<br />
$ wpa_cli -a ''/путь/до/скрипта''<br />
<br />
== Смотрите также ==<br />
<br />
* [http://hostap.epitest.fi/wpa_supplicant/ домашняя страница WPA Supplicant]<br />
* [https://gist.github.com/buhman/7162560 примеры использования wpa_cli]<br />
* [http://linux.die.net/man/8/wpa_supplicant wpa_supplicant(8)]<br />
* [http://linux.die.net/man/5/wpa_supplicant.conf wpa_supplicant.conf(5)]<br />
* [http://linux.die.net/man/8/wpa_cli wpa_cli(8)]<br />
* [http://wireless.kernel.org/en/users/Documentation/wpa_supplicant документация wpa_supplicant на Kernel.org]</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=410614Pro Audio (Русский)2015-11-29T20:58:34Z<p>Sheykhnur: улучшение перевода</p>
<hr />
<div>[[Category:Multimedia (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:プロオーディオ]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (смотрите также [[Linuxsampler]])<br />
* {{AUR|fsthost}}{{Broken package link (Русский)|{{aur-mirror (Русский)|fsthost}}}}<br />
* {{AUR|jost}}{{Broken package link (Русский)|{{aur-mirror (Русский)|jost}}}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[group|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}{{Broken package link (Русский)|{{aur-mirror (Русский)|libffado-svn}}}}}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
{{Note (Русский)|Как было замечено Такаши Сакамото(Takashi Sakamoto) [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html в списке рассылки разработчиков alsa], при использовании бэкенда FireWire совместно с jackd — модуль DICE несовместим. Если вы видите строки вроде этой:<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
то вам необходимо отключить модуль "snd_dice".}}<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}}{{Broken package link (Русский)|{{aur-mirror (Русский)|realtimeconfigquickscan}}}}.<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры настройки доступны в разделе [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (длительная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}{{Broken package link (Русский)|{{aur-mirror (Русский)|linux-rt-ice}}}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{Pkg|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Несвободные приложения ==<br />
=== Steinberg'овые SDK ===<br />
<br />
Естественно, мы не можем распространять заголовки ни VST, ни ASIO в форме бинарных пакетов. Тем не менее, всякий раз, когда вы собираете программу, которая будет работать с плагинами VST в виде Windows-библиотек ''.dll'', проверьте следующие пакеты (которые не требуют использования какого-либо SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
С учётом вышесказанного, если вы собираете программу, которая будет работать с нативными ''.so'' VST плагинами, то в этом случае выхода нет. Для таких случаев Арч позволяет нам поддерживать единую локальную базу данных приложений. Мы можем «установить» общесистемную SDK — достаточно лишь скачать и поместить файл в директорию установленного пакета.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search= Получить их можно в AUR]<br />
<br />
{{Note (Русский)|''Steinberg не запрещает распространять конечные продукты и не диктует лицензию, под которой они должны распространяться. Существует много плагинов с лицензией GPL. Таким образом, распространение бинарных пакетов или программного обеспечения, собранного с данными несвободными заголовками не проблема, потому что заголовки являются лишь временными зависимостями для сборки.''}}<br />
<br />
== Проект Arch Linux Pro Audio ==<br />
<br />
Да, у нас есть и такое. Задумайтесь над "Planet CCRMA" или "Pro Audio Overlay", меньше научной коннотации: [http://archaudio.org ArchAudio].<br />
<br />
Что значит, что сие является репозиторием дополнений, т.е. вы должны поработать над разумной установкой и настройкой Archlinux.<br />
<br />
Это относительно новое течение, хотя инициатива была проявлена ещё примерно в 2006/2007г. <br />
<br />
История: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
По всем вопросам, связанными с Arch- и ArchAudio- проблемами можно обратиться в наш '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux и Arch Linux Pro Audio в новостях ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Cтроим серьёзную мультимедиа станцию с Arch] — статья на Linux.com, июль 2012 (англ.)<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale Повесть об Арче] — статья музыканта и писателя Дэйва Филлипса (Dave Phillips), октябрь 2011 (англ.)<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision От Windows к Linux: правильное решение] — интервью Geoff "songshop" Beasley, февраль 2010 (англ.)</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=410611Pro Audio (Русский)2015-11-29T20:40:10Z<p>Sheykhnur: добавлена заметка про модуль snd_dice (added notice against snd_dice)</p>
<hr />
<div>[[Category:Multimedia (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:プロオーディオ]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (смотрите также [[Linuxsampler]])<br />
* {{AUR|fsthost}}{{Broken package link (Русский)|{{aur-mirror (Русский)|fsthost}}}}<br />
* {{AUR|jost}}{{Broken package link (Русский)|{{aur-mirror (Русский)|jost}}}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[group|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}{{Broken package link (Русский)|{{aur-mirror (Русский)|libffado-svn}}}}}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
{{Note (Русский)|Как было замечено Такаши Сакамото(Takashi Sakamoto) [http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081731.html в списке рассылки разработчиков alsa], при использовании бэкенда FireWire совместно с jackd — модуль DICE несовместим. Если вы видите строки вроде этой:<br />
Warning (dice_eap.cpp)[1811] read: No routes found. Base 0x7, offset 0x4000<br />
то вам необходимо отключить модуль "snd_dice".}}<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}}{{Broken package link (Русский)|{{aur-mirror (Русский)|realtimeconfigquickscan}}}}.<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры настройки доступны в разделе [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}{{Broken package link (Русский)|{{aur-mirror (Русский)|linux-rt-ice}}}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{Pkg|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Несвободные приложения ==<br />
=== Steinberg'овые SDK ===<br />
<br />
Естественно, мы не можем распространять заголовки ни VST, ни ASIO в форме бинарных пакетов. Тем не менее, всякий раз, когда вы собираете программу, которая будет работать с плагинами VST в виде Windows-библиотек ''.dll'', проверьте следующие пакеты (которые не требуют использования какого-либо SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
С учётом вышесказанного, если вы собираете программу, которая будет работать с нативными ''.so'' VST плагинами, то в этом случае выхода нет. Для таких случаев Арч позволяет нам поддерживать единую локальную базу данных приложений. Мы можем «установить» общесистемную SDK — достаточно лишь скачать и поместить файл в директорию установленного пакета.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search= Получить их можно в AUR]<br />
<br />
{{Note (Русский)|''Steinberg не запрещает распространять конечные продукты и не диктует лицензию, под которой они должны распространяться. Существует много плагинов с лицензией GPL. Таким образом, распространение бинарных пакетов или программного обеспечения, собранного с данными несвободными заголовками не проблема, потому что заголовки являются лишь временными зависимостями для сборки.''}}<br />
<br />
== Проект Arch Linux Pro Audio ==<br />
<br />
Да, у нас есть и такое. Задумайтесь над "Planet CCRMA" или "Pro Audio Overlay", меньше научной коннотации: [http://archaudio.org ArchAudio].<br />
<br />
Что значит, что сие является репозиторием дополнений, т.е. вы должны поработать над разумной установкой и настройкой Archlinux.<br />
<br />
Это относительно новое течение, хотя инициатива была проявлена ещё примерно в 2006/2007г. <br />
<br />
История: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
По всем вопросам, связанными с Arch- и ArchAudio- проблемами можно обратиться в наш '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux и Arch Linux Pro Audio в новостях ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Cтроим серьёзную мультимедиа станцию с Arch] — статья на Linux.com, июль 2012 (англ.)<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale Повесть об Арче] — статья музыканта и писателя Дэйва Филлипса (Dave Phillips), октябрь 2011 (англ.)<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision От Windows к Linux: правильное решение] — интервью Geoff "songshop" Beasley, февраль 2010 (англ.)</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=410609Pro Audio (Русский)2015-11-29T20:12:50Z<p>Sheykhnur: Simplification and beautification of wikilinks, fixing whitespace, capitalization and section fragments. (by Lahwaacz.bot)</p>
<hr />
<div>[[Category:Multimedia (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:プロオーディオ]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (смотрите также [[Linuxsampler]])<br />
* {{AUR|fsthost}}{{Broken package link (Русский)|{{aur-mirror (Русский)|fsthost}}}}<br />
* {{AUR|jost}}{{Broken package link (Русский)|{{aur-mirror (Русский)|jost}}}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[group|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}{{Broken package link (Русский)|{{aur-mirror (Русский)|libffado-svn}}}}}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}}{{Broken package link (Русский)|{{aur-mirror (Русский)|realtimeconfigquickscan}}}}.<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры настройки доступны в разделе [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}{{Broken package link (Русский)|{{aur-mirror (Русский)|linux-rt-ice}}}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{Pkg|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Несвободные приложения ==<br />
=== Steinberg'овые SDK ===<br />
<br />
Естественно, мы не можем распространять заголовки ни VST, ни ASIO в форме бинарных пакетов. Тем не менее, всякий раз, когда вы собираете программу, которая будет работать с плагинами VST в виде Windows-библиотек ''.dll'', проверьте следующие пакеты (которые не требуют использования какого-либо SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
С учётом вышесказанного, если вы собираете программу, которая будет работать с нативными ''.so'' VST плагинами, то в этом случае выхода нет. Для таких случаев Арч позволяет нам поддерживать единую локальную базу данных приложений. Мы можем «установить» общесистемную SDK — достаточно лишь скачать и поместить файл в директорию установленного пакета.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search= Получить их можно в AUR]<br />
<br />
{{Note (Русский)|''Steinberg не запрещает распространять конечные продукты и не диктует лицензию, под которой они должны распространяться. Существует много плагинов с лицензией GPL. Таким образом, распространение бинарных пакетов или программного обеспечения, собранного с данными несвободными заголовками не проблема, потому что заголовки являются лишь временными зависимостями для сборки.''}}<br />
<br />
== Проект Arch Linux Pro Audio ==<br />
<br />
Да, у нас есть и такое. Задумайтесь над "Planet CCRMA" или "Pro Audio Overlay", меньше научной коннотации: [http://archaudio.org ArchAudio].<br />
<br />
Что значит, что сие является репозиторием дополнений, т.е. вы должны поработать над разумной установкой и настройкой Archlinux.<br />
<br />
Это относительно новое течение, хотя инициатива была проявлена ещё примерно в 2006/2007г. <br />
<br />
История: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
По всем вопросам, связанными с Arch- и ArchAudio- проблемами можно обратиться в наш '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux и Arch Linux Pro Audio в новостях ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Cтроим серьёзную мультимедиа станцию с Arch] — статья на Linux.com, июль 2012 (англ.)<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale Повесть об Арче] — статья музыканта и писателя Дэйва Филлипса (Dave Phillips), октябрь 2011 (англ.)<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision От Windows к Linux: правильное решение] — интервью Geoff "songshop" Beasley, февраль 2010 (англ.)</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Music_Player_Daemon_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=379612Music Player Daemon (Русский)2015-06-21T17:40:12Z<p>Sheykhnur: added related articles (добавлены ссылки на доп. статьи)</p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Player (Русский)]]<br />
[[de:Music Player Daemon]]<br />
[[en:Music Player Daemon]]<br />
[[es:Music Player Daemon]]<br />
[[fr:MPD]]<br />
[[it:Music Player Daemon]]<br />
[[ja:Music Player Daemon]]<br />
[[nl:Music Player Daemon]]<br />
[[pl:Music Player Daemon]]<br />
[[sr:Music Player Daemon]]<br />
[[tr:Music_Player_Daemon]]<br />
[[zh-CN:Music Player Daemon]]<br />
{{Unmaintained (Русский)}}<br />
{{Translateme (Русский)}}<br />
{{Related articles start (Русский)}}<br />
{{Related|MPD/Tips and Tricks}}<br />
{{Related|MPD/Troubleshooting}}<br />
{{Related articles end}}<br />
'''[http://www.musicpd.org/ MPD]''' ('''m'''usic '''p'''layer '''d'''aemon) - это музыкальный проигрыватель, имеющий клиент-серверную архитектуру. MPD управляет плейлистами и медиатекой, используя очень мало ресурсов. Для взаимодействия с ним вам нужен отдельный [[#Клиенты|клиент]].<br />
<br />
== Установка ==<br />
<br />
Последняя стабильная версия {{pkg|mpd}} доступна в [[Official repositories (Русский)|официальном репозитории]].<br />
<br />
Если вы хотите установить тестовую версию, [[AUR (Русский)|AUR]] предлагает вам несколько вариантов, например {{AUR|mpd-git}}<br />
<br />
{{Note (Русский)|Существует отдельный проект, реализованный на основе mpd с плагинами, называющийся [http://www.mopidy.com Mopidy]. Пакет имеется в репозитории — {{Pkg|mopidy}} и AUR — {{AUR|mopidy-git}}. Будьте внимательны, т.к. данный проект не является [http://docs.mopidy.com/en/latest/ext/mpd/#limitations полноценной заменой] MPD.}}<br />
<br />
== Настройка MPD ==<br />
<br />
MPD можно запускать локально (используя конфигурацию пользователя), глобально (настройки применяются для всех пользователей), а также в нескольких экземплярах. Способ запуска (и настройки) зависит от того, как вы хотите использовать MPD (например, для использования на домашней системе более полезен запуск локально).<br />
<br />
Чтобы MPD мог воспроизводить аудио, необходимо настроить вывод звука через [[Advanced Linux Sound Architecture (Русский)|ALSA]] или [[OSS]] (возможно использование [[PulseAudio (Русский)|PulseAudio]]).<br />
<br />
Настройка MPD осуществляется редактированием {{ic|mpd.conf}}. Расположение этого файла зависит от того, каким образом вы запускали MPD. Далее перечислены наиболее используемые параметры:<br />
* {{ic|pid_file}} - Файл, в котором MPD хранит свой pid<br />
* {{ic|db_file}} - База данных медиатеки<br />
* {{ic|state_file}} - Хранит текущее состояние MPD<br />
* {{ic|playlist_directory}} - Директория, в которую сохраняются плейлисты<br />
* {{ic|music_directory}} - Директория, сканируемая MPD, при поиске музыки<br />
* {{ic|sticker_file}} - Файл с метаданными аудиотреков (sticker database)<br />
<br />
{{Note (Русский)|Файлы должны существовать (пути, указанные при настройке) с правильными правами, иначе MPD не запустится.}}<br />
<br />
=== Глобальные настройки ===<br />
<br />
{{Warning (Русский)|Пользователи PulseAudio с глобальными настройками mpd должны использовать [[Music Player Daemon/Tips and tricks#Local (with separate mpd user)|обходной путь]] для запуска демона!}}<br />
<br />
По умолчанию {{ic|/etc/mpd.conf}} использует {{ic|/var/lib/mpd}} и запускается от пользователя ''mpd''. Но, т.к. {{ic|/var/lib/mpd}} по умолчанию принадлежит пользователю ''root'', вы должны изменить владельца папки, иначе ''mpd'' не сможет писать в нее:<br />
# chown -R mpd /var/lib/mpd<br />
<br />
Измените {{ic|/etc/mpd.conf}} и добавьте в строку {{ic|music_directory}} путь к вашей папке с музыкой:<br />
music_directory /путь/к/музыке<br />
<br />
==== Директория с музыкой ====<br />
<br />
MPD должен иметь разрешение на выполнение ({{ic|+x}}) для ''всех'' директорий музыкальной коллекции, а также доступ на чтение во все директории, содержащие музыкальные файлы. Как правило, это противоречит со стандартной конфигурацией, в которой пользователи хранят свою музыку в своём домашнем каталоге.<br />
<br />
Для решения данной проблемы существует несколько способов, которые могут помочь: <br />
* [[#Local configuration .28per user.29|запуск MPD от имени текущего пользователя]]<br />
* добавить пользователя mpd в текущую пользовательскую группу и предоставить разрешения группе к вашему пользовательскому каталогу:<br />
# gpasswd -a mpd <ваша пользовательская группа><br />
$ chmod 710 /home/<ваш пользовательский каталог><br />
* поместить свою музыкальную коллекцию в другой каталог путём<br />
<br />
а) полного её перемещения в каталог, доступный mpd;<br />
<br />
б) монтированием папки с привязкой к каталогу, в который у mpd есть доступ, например:<br />
# mkdir /var/lib/mpd/music<br />
# echo "/путь/к/пользовательской/музыке /var/lib/mpd/music none bind" >> /etc/fstab<br />
# mount -a<br />
<br />
в) в случае с фс Btrfs — [[Btrfs#Sub-volumes|подразделом Btrfs]] (необходимо сделать данные изменения постоянными, путём редактирования файла {{ic|/etc/fstab}});<br />
<br />
г) созданием символической ссылки на папку с музыкой в {{ic|/var/lib/mpd/music}}:<br />
# mkdir /var/lib/mpd/music<br />
# ln -s /путь/к/пользовательской/музыке /var/lib/mpd/music/<br />
<br />
В конфигурационном файле mpd может быть указана только одна директория с музыкой. Если музыкальная коллекция содержится в различных директориях, создайте символические ссылки в главную директорию ({{ic|/var/lib/mpd}}). Не забудьте установить правильные права на эти директории.<br />
<br />
==== Запуск MPD ====<br />
<br />
MPD можно контролировать через {{ic|mpd.service}} [[systemd (Русский)#Использование юнитов|используя systemd]]. Первый запуск может занять некоторое время, пока MPD будет сканировать вашу папку с музыкой.<br />
<br />
Проверьте все, запустив клиентское приложение ({{Pkg|ncmpc}} легкий и простой в использовании клиент) и проиграв какие-нибудь треки.<br />
<br />
===== Сокет активация =====<br />
<br />
Если {{ic|mpd.socket}} включен в то время как {{ic|mpd.service}} (предоставляемый {{Pkg|mpd}}) выключен, systemd не станет запускать mpd, но он будет слушать обращения к сокету. Когда mpd клиент попытается обратиться к сокету, systemd запустит {{ic|mpd.service}} и передаст управление соответствующим портом процессу mpd.<br />
<br />
If you prefer to listen on different UNIX sockets or network ports (even multiple sockets of each type), or if you prefer not to listen on network ports at all, you should add/edit/remove the appropriate {{ic|1="ListenStream="}} lines in the {{ic|[Socket]}} section of {{ic|mpd.socket}} '''and''' modify the appropriate lines {{ic|/etc/mpd.conf}} (see {{ic|man 5 mpd.conf}} for details).<br />
<br />
If you use different (even multiple) network or local sockets, or prefer not to use network sockets at all, simply add, change, or remove lines beginning with {{ic|1="ListenStream="}} in the {{ic|[Socket]}} section.<br />
<br />
{{hc|/etc/systemd/system/mpd.socket|<nowiki><br />
[Unit]<br />
Description=Music Player Daemon Sockets<br />
<br />
[Socket]<br />
ListenStream=/var/run/mpd/socket<br />
ListenStream=6600<br />
<br />
[Install]<br />
WantedBy=sockets.target<br />
</nowiki>}}<br />
<br />
==== Configure audio ====<br />
<br />
To change the volume for mpd independent from other programs, uncomment or add this switch in mpd.conf:<br />
{{hc|/etc/mpd.conf|<br />
mixer_type "software"<br />
}}<br />
<br />
Users of [[ALSA]] will want to have the following device definition, which allows software volume control in the MPD client to control the volume separately from other applications.<br />
{{hc|/etc/mpd.conf|2=<br />
audio_output {<br />
type "alsa"<br />
name "My Sound Card"<br />
mixer_type "software" # optional<br />
}<br />
}}<br />
<br />
Users of [[PulseAudio]] will need to make the following modification:<br />
{{hc|/etc/mpd.conf|2=<br />
audio_output {<br />
type "pulse"<br />
name "pulse audio"<br />
}<br />
}}<br />
<br />
PulseAudio supports multiple advanced operations, e.g. transferring the audio to a different machine. For advanced configuration with MPD see [http://mpd.wikia.com/wiki/PulseAudio Music Player Daemon Community Wiki].<br />
<br />
==== Changing user ====<br />
<br />
Changing the group that MPD runs as may result in errors like {{ic|output: Failed to open "My ALSA Device"}}, {{ic|[alsa]: Failed to open ALSA device "default": No such file or directory}} or {{ic|player_thread: problems opening audio device while playing "Song Name.mp3"}}.<br />
<br />
This is because the MPD users need to be part of the ''audio'' group to access sound devices under {{Ic|/dev/snd/}}. To fix it add user make the MPD user part of the ''audio'' group:<br />
# gpasswd -a '''mpd''' audio<br />
<br />
==== Timeline of MPD startup ====<br />
<br />
To depict when MPD drops its superuser privileges and assumes those of the user set in the configuration, the timeline of a normal MPD startup is listed here:<br />
<br />
# Since MPD is started as root by systemd, it first reads the {{ic|/etc/mpd.conf}} file.<br />
# MPD reads the user variable in the {{ic|/etc/mpd.conf}} file, and changes from root to this user.<br />
# MPD then reads the contents of the {{ic|/etc/mpd.conf}} file and configures itself accordingly.<br />
<br />
Notice that MPD changes the running user from root to the one named in the {{ic|/etc/mpd.conf}} file. <br />
This way, uses of {{ic|~}} in the configuration file point correctly to the home user's directory, and not root's directory. <br />
It may be worthwhile to change all uses of {{ic|~}} to {{ic|/home/username}} to avoid any confusion over this aspect of MPD's behavior.<br />
<br />
=== Local configuration (per user) ===<br />
<br />
MPD can be configured per user (rather than the typical method of configuring MPD globally). Running MPD as a normal user has the benefits of:<br />
<br />
* A single directory {{ic|~/.config/mpd/}} (or any other directory under {{ic|$HOME}}) that will contain all the MPD configuration files.<br />
* Easier to avoid unforeseen read/write permission errors.<br />
<br />
Good practice is to create a single directory for the required files and playlists. It can be any directory for which you have read and write access, e.g. {{ic|~/.config/mpd/}} or {{ic|~/.mpd/}}. This section assumes it is {{ic|~/.config/mpd/}}, which corresponds to the default value of {{ic|$XDG_CONFIG_HOME}} (part of [http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html XDG Base Directory Specification]).<br />
<br />
MPD searches for a config file in {{ic|$XDG_CONFIG_HOME/mpd/mpd.conf}} and then {{ic|~/.mpdconf}}. It is also possible to pass other path as command line argument.<br />
<br />
Copy the example configuration file to desired location, for example:<br />
<br />
$ cp /usr/share/doc/mpd/mpdconf.example ~/.config/mpd/mpd.conf<br />
<br />
Edit {{ic|~/.config/mpd/mpd.conf}} and specify the required files:<br />
<br />
{{hc|~/.config/mpd/mpd.conf|<br />
# Required files<br />
db_file "~/.config/mpd/database"<br />
log_file "~/.config/mpd/log"<br />
<br />
# Optional<br />
music_directory "~/Music"<br />
playlist_directory "~/.config/mpd/playlists"<br />
pid_file "~/.config/mpd/pid"<br />
state_file "~/.config/mpd/state"<br />
sticker_file "~/.config/mpd/sticker.sql"<br />
}}<br />
<br />
Create all the files and directories as configured above:<br />
<br />
$ mkdir ~/.config/mpd/playlists<br />
$ touch ~/.config/mpd/{database,log,pid,state,sticker.sql}<br />
<br />
When the paths of required files are configured, MPD can be started. To specify custom location of the configuration file:<br />
<br />
$ mpd ''config_file''<br />
<br />
==== Autostart on tty login ====<br />
<br />
To start MPD on login add the following to {{ic|~/.profile}} (or another [[Autostarting#Shells|autostart file]]):<br />
<br />
# MPD daemon start (if no other user instance exists)<br />
[ ! -s ~/.config/mpd/pid ] && mpd<br />
<br />
==== Autostart in X ====<br />
<br />
If you use a [[Desktop environment|desktop environment]], place the following file in {{ic|~/.config/autostart/}}:<br />
{{hc|~/.config/autostart/mpd.desktop|<nowiki><br />
[Desktop Entry]<br />
Encoding=UTF-8<br />
Type=Application<br />
Name=Music Player Daemon<br />
Comment=Server for playing audio files<br />
Exec=mpd<br />
StartupNotify=false<br />
Terminal=false<br />
Hidden=false<br />
X-GNOME-Autostart-enabled=false<br />
</nowiki>}}<br />
<br />
If you do not use a DE, place the line from [[#Autostart on tty login]] in your [[Autostarting#Graphical|autostart file]].<br />
<br />
==== Autostart with systemd ====<br />
<br />
{{Note|It is assumed that you already have systemd user-session manager running. See the [[systemd/User]] page for details.}}<br />
<br />
The package {{Pkg|mpd}} provides user service file in {{ic|/usr/lib/systemd/user/mpd.service}}. The configuration file is expected to exist either in {{ic|~/.mpdconf}} or {{ic|~/.config/mpd/mpd.conf}}, see [[systemd#Editing provided unit files]] if you would like to use different path. The process is not started as root, so you should not use the {{ic|user}} and {{ic|group}} variables in the MPD configuration file, the process already has user permissions and therefore it is not necessary to change them further.<br />
<br />
All you have to do is enable and start the {{ic|mpd}} [[systemd/User#User Services|user service]].<br />
<br />
{{Note|<br />
* {{Pkg|mpd}} provides also system service file in {{ic|/usr/lib/systemd/system/mpd.service}}, but as the process is started as root, it does not read the user configuration file and falls back to {{ic|/etc/mpd.conf}}. [[#Global configuration|Global configuration]] is described in other section.<br />
* Make sure to disable every other method of starting mpd you used before.<br />
}}<br />
<br />
==== Scripted configuration ====<br />
<br />
Rasi has written a script that will create the proper directory structure, configuration files and prompt for the location of the user's Music directory; it can be downloaded [http://dl.53280.de/mpdsetup.sh here].<br />
<br />
=== Multi-mpd setup ===<br />
<br />
'''Useful if running an icecast server.'''<br />
<br />
For a second MPD (e.g., with icecast output to share music over the network) using the same music and playlist as the one above, simply copy the above configuration file and make a new file (e.g., {{ic|/home/username/.mpd/config-icecast}}), and only change the log_file, error_file, pid_file, and state_file parameters (e.g., {{ic|mpd-icecast.log}}, {{ic|mpd-icecast.error}}, and so on); using the same directory paths for the music and playlist directories would ensure that this second mpd would use the same music collection as the first one e.g., creating and editing a playlist under the first daemon would affect the second daemon as well. Users do not have to create the same playlists all over again for the second daemon. Call this second daemon the same way from {{ic|~/.xinitrc}} above. (Just be sure to have a different port number, so as to not conflict with the first mpd daemon).<br />
<br />
== Клиенты ==<br />
<br />
Для использования mpd необходим отдельный клиент. Список клиентов можно просмотреть по ссылке [http://mpd.wikia.com/wiki/Clients mpd wiki]. Основные приведены здесь:<br />
<br />
=== Консольные ===<br />
<br />
*{{App|mpc|Клиент, использующий интерпретатор командной строки для управления mpd сервером|http://www.musicpd.org/clients/mpc/|{{Pkg|mpc}}}}<br />
*{{App|ncmpc|Ncurses клиент для mpd|http://www.musicpd.org/clients/ncmpc/|{{Pkg|ncmpc}}}}<br />
*{{App|[[ncmpcpp]]|Копия ncmpc с новыми возможностями, раелизованная на C++ (редактор тегов, поисковый движок)|http://ncmpcpp.rybczak.net/|{{Pkg|ncmpcpp}}}}<br />
*{{App|pms|Гибкий и доступный ncurses клиент|http://pms.sourceforge.net/|{{AUR|pmus}}}}<br />
*{{App|vimpc|Ncurses MPD клиент с vi-подобным управлением|http://sourceforge.net/projects/vimpc/|{{AUR|vimpc}}}}<br />
<br />
=== Графические ===<br />
<br />
*{{App|Ario|Многофункциональный GTK2 GUI клиент для mpd, вдохновленный Rhythmbox|http://ario-player.sourceforge.net/|{{Pkg|ario}}}}<br />
*{{App|QmpdClient|GUI написанный под Qt 4.x|http://bitcheese.net/wiki/QMPDClient|{{Pkg|qmpdclient}}}}<br />
*{{App|Sonata|Элегантный Python GTK+ клиент|http://sonata.berlios.de/|{{Pkg|sonata}}}}<br />
*{{App|gmpc|GTK2 интерфейс для Music Player Daemon. Разрабатывался как легковесный клиент, реализующий все возможности, предоставляемые MPD. Предоставляет несколько различных методов обозревания медиатеки. Расширяется плагинами.|http://gmpc.wikia.com/wiki/Gnome_Music_Player_Client|{{Pkg|gmpc}}}}<br />
*{{App|Cantata|Многофункциональный Qt4, Qt5 или KDE4 клиент для MPD, позволяющий гибко настроить интерфейс|https://code.google.com/p/cantata/|{{Pkg|cantata}}}}<br />
<br />
=== Web ===<br />
<br />
*{{App|Patchfork|Веб клиент для MPD, написанный на PHP и Ajax|http://mpd.wikia.com/wiki/Client:Pitchfork|{{AUR|patchfork-git}}}}.<br />
<br />
== Смотрите так же ==<br />
<br />
* [http://forum.musicpd.org/ MPD Forum]<br />
* [http://www.musicpd.org/doc/user/ MPD User Manual]<br />
* [[Wikipedia:Music Player Daemon|Wikipedia article]]</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Music_Player_Daemon_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=379611Music Player Daemon (Русский)2015-06-21T17:18:06Z<p>Sheykhnur: </p>
<hr />
<div>[[Category:Русский]]<br />
[[Category:Player (Русский)]]<br />
[[de:Music Player Daemon]]<br />
[[en:Music Player Daemon]]<br />
[[es:Music Player Daemon]]<br />
[[fr:MPD]]<br />
[[it:Music Player Daemon]]<br />
[[ja:Music Player Daemon]]<br />
[[nl:Music Player Daemon]]<br />
[[pl:Music Player Daemon]]<br />
[[sr:Music Player Daemon]]<br />
[[tr:Music_Player_Daemon]]<br />
[[zh-CN:Music Player Daemon]]<br />
{{Unmaintained (Русский)}}<br />
{{Translateme (Русский)}}<br />
'''[http://www.musicpd.org/ MPD]''' ('''m'''usic '''p'''layer '''d'''aemon) - это музыкальный проигрыватель, имеющий клиент-серверную архитектуру. MPD управляет плейлистами и медиатекой, используя очень мало ресурсов. Для взаимодействия с ним вам нужен отдельный [[#Клиенты|клиент]].<br />
<br />
== Установка ==<br />
<br />
Последняя стабильная версия {{pkg|mpd}} доступна в [[Official repositories (Русский)|официальном репозитории]].<br />
<br />
Если вы хотите установить тестовую версию, [[AUR (Русский)|AUR]] предлагает вам несколько вариантов, например {{AUR|mpd-git}}<br />
<br />
{{Note (Русский)|Существует отдельный проект, реализованный на основе mpd с плагинами, называющийся [http://www.mopidy.com Mopidy]. Пакет имеется в репозитории — {{Pkg|mopidy}} и AUR — {{AUR|mopidy-git}}. Будьте внимательны, т.к. данный проект не является [http://docs.mopidy.com/en/latest/ext/mpd/#limitations полноценной заменой] MPD.}}<br />
<br />
== Настройка MPD ==<br />
<br />
MPD можно запускать локально (используя конфигурацию пользователя), глобально (настройки применяются для всех пользователей), а также в нескольких экземплярах. Способ запуска (и настройки) зависит от того, как вы хотите использовать MPD (например, для использования на домашней системе более полезен запуск локально).<br />
<br />
Чтобы MPD мог воспроизводить аудио, необходимо настроить вывод звука через [[Advanced Linux Sound Architecture (Русский)|ALSA]] или [[OSS]] (возможно использование [[PulseAudio (Русский)|PulseAudio]]).<br />
<br />
Настройка MPD осуществляется редактированием {{ic|mpd.conf}}. Расположение этого файла зависит от того, каким образом вы запускали MPD. Далее перечислены наиболее используемые параметры:<br />
* {{ic|pid_file}} - Файл, в котором MPD хранит свой pid<br />
* {{ic|db_file}} - База данных медиатеки<br />
* {{ic|state_file}} - Хранит текущее состояние MPD<br />
* {{ic|playlist_directory}} - Директория, в которую сохраняются плейлисты<br />
* {{ic|music_directory}} - Директория, сканируемая MPD, при поиске музыки<br />
* {{ic|sticker_file}} - Файл с метаданными аудиотреков (sticker database)<br />
<br />
{{Note (Русский)|Файлы должны существовать (пути, указанные при настройке) с правильными правами, иначе MPD не запустится.}}<br />
<br />
=== Глобальные настройки ===<br />
<br />
{{Warning (Русский)|Пользователи PulseAudio с глобальными настройками mpd должны использовать [[Music Player Daemon/Tips and tricks#Local (with separate mpd user)|обходной путь]] для запуска демона!}}<br />
<br />
По умолчанию {{ic|/etc/mpd.conf}} использует {{ic|/var/lib/mpd}} и запускается от пользователя ''mpd''. Но, т.к. {{ic|/var/lib/mpd}} по умолчанию принадлежит пользователю ''root'', вы должны изменить владельца папки, иначе ''mpd'' не сможет писать в нее:<br />
# chown -R mpd /var/lib/mpd<br />
<br />
Измените {{ic|/etc/mpd.conf}} и добавьте в строку {{ic|music_directory}} путь к вашей папке с музыкой:<br />
music_directory /путь/к/музыке<br />
<br />
==== Директория с музыкой ====<br />
<br />
MPD должен иметь разрешение на выполнение ({{ic|+x}}) для ''всех'' директорий музыкальной коллекции, а также доступ на чтение во все директории, содержащие музыкальные файлы. Как правило, это противоречит со стандартной конфигурацией, в которой пользователи хранят свою музыку в своём домашнем каталоге.<br />
<br />
Для решения данной проблемы существует несколько способов, которые могут помочь: <br />
* [[#Local configuration .28per user.29|запуск MPD от имени текущего пользователя]]<br />
* добавить пользователя mpd в текущую пользовательскую группу и предоставить разрешения группе к вашему пользовательскому каталогу:<br />
# gpasswd -a mpd <ваша пользовательская группа><br />
$ chmod 710 /home/<ваш пользовательский каталог><br />
* поместить свою музыкальную коллекцию в другой каталог путём<br />
<br />
а) полного её перемещения в каталог, доступный mpd;<br />
<br />
б) монтированием папки с привязкой к каталогу, в который у mpd есть доступ, например:<br />
# mkdir /var/lib/mpd/music<br />
# echo "/путь/к/пользовательской/музыке /var/lib/mpd/music none bind" >> /etc/fstab<br />
# mount -a<br />
<br />
в) в случае с фс Btrfs — [[Btrfs#Sub-volumes|подразделом Btrfs]] (необходимо сделать данные изменения постоянными, путём редактирования файла {{ic|/etc/fstab}});<br />
<br />
г) созданием символической ссылки на папку с музыкой в {{ic|/var/lib/mpd/music}}:<br />
# mkdir /var/lib/mpd/music<br />
# ln -s /путь/к/пользовательской/музыке /var/lib/mpd/music/<br />
<br />
В конфигурационном файле mpd может быть указана только одна директория с музыкой. Если музыкальная коллекция содержится в различных директориях, создайте символические ссылки в главную директорию ({{ic|/var/lib/mpd}}). Не забудьте установить правильные права на эти директории.<br />
<br />
==== Запуск MPD ====<br />
<br />
MPD можно контролировать через {{ic|mpd.service}} [[systemd (Русский)#Использование юнитов|используя systemd]]. Первый запуск может занять некоторое время, пока MPD будет сканировать вашу папку с музыкой.<br />
<br />
Проверьте все, запустив клиентское приложение ({{Pkg|ncmpc}} легкий и простой в использовании клиент) и проиграв какие-нибудь треки.<br />
<br />
===== Сокет активация =====<br />
<br />
Если {{ic|mpd.socket}} включен в то время как {{ic|mpd.service}} (предоставляемый {{Pkg|mpd}}) выключен, systemd не станет запускать mpd, но он будет слушать обращения к сокету. Когда mpd клиент попытается обратиться к сокету, systemd запустит {{ic|mpd.service}} и передаст управление соответствующим портом процессу mpd.<br />
<br />
If you prefer to listen on different UNIX sockets or network ports (even multiple sockets of each type), or if you prefer not to listen on network ports at all, you should add/edit/remove the appropriate {{ic|1="ListenStream="}} lines in the {{ic|[Socket]}} section of {{ic|mpd.socket}} '''and''' modify the appropriate lines {{ic|/etc/mpd.conf}} (see {{ic|man 5 mpd.conf}} for details).<br />
<br />
If you use different (even multiple) network or local sockets, or prefer not to use network sockets at all, simply add, change, or remove lines beginning with {{ic|1="ListenStream="}} in the {{ic|[Socket]}} section.<br />
<br />
{{hc|/etc/systemd/system/mpd.socket|<nowiki><br />
[Unit]<br />
Description=Music Player Daemon Sockets<br />
<br />
[Socket]<br />
ListenStream=/var/run/mpd/socket<br />
ListenStream=6600<br />
<br />
[Install]<br />
WantedBy=sockets.target<br />
</nowiki>}}<br />
<br />
==== Configure audio ====<br />
<br />
To change the volume for mpd independent from other programs, uncomment or add this switch in mpd.conf:<br />
{{hc|/etc/mpd.conf|<br />
mixer_type "software"<br />
}}<br />
<br />
Users of [[ALSA]] will want to have the following device definition, which allows software volume control in the MPD client to control the volume separately from other applications.<br />
{{hc|/etc/mpd.conf|2=<br />
audio_output {<br />
type "alsa"<br />
name "My Sound Card"<br />
mixer_type "software" # optional<br />
}<br />
}}<br />
<br />
Users of [[PulseAudio]] will need to make the following modification:<br />
{{hc|/etc/mpd.conf|2=<br />
audio_output {<br />
type "pulse"<br />
name "pulse audio"<br />
}<br />
}}<br />
<br />
PulseAudio supports multiple advanced operations, e.g. transferring the audio to a different machine. For advanced configuration with MPD see [http://mpd.wikia.com/wiki/PulseAudio Music Player Daemon Community Wiki].<br />
<br />
==== Changing user ====<br />
<br />
Changing the group that MPD runs as may result in errors like {{ic|output: Failed to open "My ALSA Device"}}, {{ic|[alsa]: Failed to open ALSA device "default": No such file or directory}} or {{ic|player_thread: problems opening audio device while playing "Song Name.mp3"}}.<br />
<br />
This is because the MPD users need to be part of the ''audio'' group to access sound devices under {{Ic|/dev/snd/}}. To fix it add user make the MPD user part of the ''audio'' group:<br />
# gpasswd -a '''mpd''' audio<br />
<br />
==== Timeline of MPD startup ====<br />
<br />
To depict when MPD drops its superuser privileges and assumes those of the user set in the configuration, the timeline of a normal MPD startup is listed here:<br />
<br />
# Since MPD is started as root by systemd, it first reads the {{ic|/etc/mpd.conf}} file.<br />
# MPD reads the user variable in the {{ic|/etc/mpd.conf}} file, and changes from root to this user.<br />
# MPD then reads the contents of the {{ic|/etc/mpd.conf}} file and configures itself accordingly.<br />
<br />
Notice that MPD changes the running user from root to the one named in the {{ic|/etc/mpd.conf}} file. <br />
This way, uses of {{ic|~}} in the configuration file point correctly to the home user's directory, and not root's directory. <br />
It may be worthwhile to change all uses of {{ic|~}} to {{ic|/home/username}} to avoid any confusion over this aspect of MPD's behavior.<br />
<br />
=== Local configuration (per user) ===<br />
<br />
MPD can be configured per user (rather than the typical method of configuring MPD globally). Running MPD as a normal user has the benefits of:<br />
<br />
* A single directory {{ic|~/.config/mpd/}} (or any other directory under {{ic|$HOME}}) that will contain all the MPD configuration files.<br />
* Easier to avoid unforeseen read/write permission errors.<br />
<br />
Good practice is to create a single directory for the required files and playlists. It can be any directory for which you have read and write access, e.g. {{ic|~/.config/mpd/}} or {{ic|~/.mpd/}}. This section assumes it is {{ic|~/.config/mpd/}}, which corresponds to the default value of {{ic|$XDG_CONFIG_HOME}} (part of [http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html XDG Base Directory Specification]).<br />
<br />
MPD searches for a config file in {{ic|$XDG_CONFIG_HOME/mpd/mpd.conf}} and then {{ic|~/.mpdconf}}. It is also possible to pass other path as command line argument.<br />
<br />
Copy the example configuration file to desired location, for example:<br />
<br />
$ cp /usr/share/doc/mpd/mpdconf.example ~/.config/mpd/mpd.conf<br />
<br />
Edit {{ic|~/.config/mpd/mpd.conf}} and specify the required files:<br />
<br />
{{hc|~/.config/mpd/mpd.conf|<br />
# Required files<br />
db_file "~/.config/mpd/database"<br />
log_file "~/.config/mpd/log"<br />
<br />
# Optional<br />
music_directory "~/Music"<br />
playlist_directory "~/.config/mpd/playlists"<br />
pid_file "~/.config/mpd/pid"<br />
state_file "~/.config/mpd/state"<br />
sticker_file "~/.config/mpd/sticker.sql"<br />
}}<br />
<br />
Create all the files and directories as configured above:<br />
<br />
$ mkdir ~/.config/mpd/playlists<br />
$ touch ~/.config/mpd/{database,log,pid,state,sticker.sql}<br />
<br />
When the paths of required files are configured, MPD can be started. To specify custom location of the configuration file:<br />
<br />
$ mpd ''config_file''<br />
<br />
==== Autostart on tty login ====<br />
<br />
To start MPD on login add the following to {{ic|~/.profile}} (or another [[Autostarting#Shells|autostart file]]):<br />
<br />
# MPD daemon start (if no other user instance exists)<br />
[ ! -s ~/.config/mpd/pid ] && mpd<br />
<br />
==== Autostart in X ====<br />
<br />
If you use a [[Desktop environment|desktop environment]], place the following file in {{ic|~/.config/autostart/}}:<br />
{{hc|~/.config/autostart/mpd.desktop|<nowiki><br />
[Desktop Entry]<br />
Encoding=UTF-8<br />
Type=Application<br />
Name=Music Player Daemon<br />
Comment=Server for playing audio files<br />
Exec=mpd<br />
StartupNotify=false<br />
Terminal=false<br />
Hidden=false<br />
X-GNOME-Autostart-enabled=false<br />
</nowiki>}}<br />
<br />
If you do not use a DE, place the line from [[#Autostart on tty login]] in your [[Autostarting#Graphical|autostart file]].<br />
<br />
==== Autostart with systemd ====<br />
<br />
{{Note|It is assumed that you already have systemd user-session manager running. See the [[systemd/User]] page for details.}}<br />
<br />
The package {{Pkg|mpd}} provides user service file in {{ic|/usr/lib/systemd/user/mpd.service}}. The configuration file is expected to exist either in {{ic|~/.mpdconf}} or {{ic|~/.config/mpd/mpd.conf}}, see [[systemd#Editing provided unit files]] if you would like to use different path. The process is not started as root, so you should not use the {{ic|user}} and {{ic|group}} variables in the MPD configuration file, the process already has user permissions and therefore it is not necessary to change them further.<br />
<br />
All you have to do is enable and start the {{ic|mpd}} [[systemd/User#User Services|user service]].<br />
<br />
{{Note|<br />
* {{Pkg|mpd}} provides also system service file in {{ic|/usr/lib/systemd/system/mpd.service}}, but as the process is started as root, it does not read the user configuration file and falls back to {{ic|/etc/mpd.conf}}. [[#Global configuration|Global configuration]] is described in other section.<br />
* Make sure to disable every other method of starting mpd you used before.<br />
}}<br />
<br />
==== Scripted configuration ====<br />
<br />
Rasi has written a script that will create the proper directory structure, configuration files and prompt for the location of the user's Music directory; it can be downloaded [http://dl.53280.de/mpdsetup.sh here].<br />
<br />
=== Multi-mpd setup ===<br />
<br />
'''Useful if running an icecast server.'''<br />
<br />
For a second MPD (e.g., with icecast output to share music over the network) using the same music and playlist as the one above, simply copy the above configuration file and make a new file (e.g., {{ic|/home/username/.mpd/config-icecast}}), and only change the log_file, error_file, pid_file, and state_file parameters (e.g., {{ic|mpd-icecast.log}}, {{ic|mpd-icecast.error}}, and so on); using the same directory paths for the music and playlist directories would ensure that this second mpd would use the same music collection as the first one e.g., creating and editing a playlist under the first daemon would affect the second daemon as well. Users do not have to create the same playlists all over again for the second daemon. Call this second daemon the same way from {{ic|~/.xinitrc}} above. (Just be sure to have a different port number, so as to not conflict with the first mpd daemon).<br />
<br />
== Клиенты ==<br />
<br />
Для использования mpd необходим отдельный клиент. Список клиентов можно просмотреть по ссылке [http://mpd.wikia.com/wiki/Clients mpd wiki]. Основные приведены здесь:<br />
<br />
=== Консольные ===<br />
<br />
*{{App|mpc|Клиент, использующий интерпретатор командной строки для управления mpd сервером|http://www.musicpd.org/clients/mpc/|{{Pkg|mpc}}}}<br />
*{{App|ncmpc|Ncurses клиент для mpd|http://www.musicpd.org/clients/ncmpc/|{{Pkg|ncmpc}}}}<br />
*{{App|[[ncmpcpp]]|Копия ncmpc с новыми возможностями, раелизованная на C++ (редактор тегов, поисковый движок)|http://ncmpcpp.rybczak.net/|{{Pkg|ncmpcpp}}}}<br />
*{{App|pms|Гибкий и доступный ncurses клиент|http://pms.sourceforge.net/|{{AUR|pmus}}}}<br />
*{{App|vimpc|Ncurses MPD клиент с vi-подобным управлением|http://sourceforge.net/projects/vimpc/|{{AUR|vimpc}}}}<br />
<br />
=== Графические ===<br />
<br />
*{{App|Ario|Многофункциональный GTK2 GUI клиент для mpd, вдохновленный Rhythmbox|http://ario-player.sourceforge.net/|{{Pkg|ario}}}}<br />
*{{App|QmpdClient|GUI написанный под Qt 4.x|http://bitcheese.net/wiki/QMPDClient|{{Pkg|qmpdclient}}}}<br />
*{{App|Sonata|Элегантный Python GTK+ клиент|http://sonata.berlios.de/|{{Pkg|sonata}}}}<br />
*{{App|gmpc|GTK2 интерфейс для Music Player Daemon. Разрабатывался как легковесный клиент, реализующий все возможности, предоставляемые MPD. Предоставляет несколько различных методов обозревания медиатеки. Расширяется плагинами.|http://gmpc.wikia.com/wiki/Gnome_Music_Player_Client|{{Pkg|gmpc}}}}<br />
*{{App|Cantata|Многофункциональный Qt4, Qt5 или KDE4 клиент для MPD, позволяющий гибко настроить интерфейс|https://code.google.com/p/cantata/|{{Pkg|cantata}}}}<br />
<br />
=== Web ===<br />
<br />
*{{App|Patchfork|Веб клиент для MPD, написанный на PHP и Ajax|http://mpd.wikia.com/wiki/Client:Pitchfork|{{AUR|patchfork-git}}}}.<br />
<br />
== Смотрите так же ==<br />
<br />
* [http://forum.musicpd.org/ MPD Forum]<br />
* [http://www.musicpd.org/doc/user/ MPD User Manual]<br />
* [[Wikipedia:Music Player Daemon|Wikipedia article]]</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=353978Pro Audio (Русский)2014-12-28T22:03:31Z<p>Sheykhnur: </p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{Pkg|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Несвободные приложения ==<br />
=== Steinberg'овые SDK ===<br />
<br />
Естественно, мы не можем распространять заголовки ни VST, ни ASIO в форме бинарных пакетов. Тем не менее, всякий раз, когда вы собираете программу, которая будет работать с плагинами VST в виде Windows-библиотек ''.dll'', проверьте следующие пакеты (которые не требуют использования какого-либо SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
С учётом вышесказанного, если вы собираете программу, которая будет работать с нативными ''.so'' VST плагинами, то в этом случае выхода нет. Для таких случаев Арч позволяет нам поддерживать единую локальную базу данных приложений. Мы можем «установить» общесистемную SDK — достаточно лишь скачать и поместить файл в директорию установленного пакета.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search= Получить их можно в AUR]<br />
<br />
{{Note (Русский)|''Steinberg не запрещает распространять конечные продукты и не диктует лицензию, под которой они должны распространяться. Существует много плагинов с лицензией GPL. Таким образом, распространение бинарных пакетов или программного обеспечения, собранного с данными несвободными заголовками не проблема, потому что заголовки являются лишь временными зависимостями для сборки.''}}<br />
<br />
== Проект Arch Linux Pro Audio ==<br />
<br />
Да, у нас есть и такое. Задумайтесь над "Planet CCRMA" или "Pro Audio Overlay", меньше научной коннотации: [http://archaudio.org ArchAudio].<br />
<br />
Что значит, что сие является репозиторием дополнений, т.е. вы должны поработать над разумной установкой и настройкой Archlinux.<br />
<br />
Это относительно новое течение, хотя инициатива была проявлена ещё примерно в 2006/2007г. <br />
<br />
История: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
По всем вопросам, связанными с Arch- и ArchAudio- проблемами можно обратиться в наш '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux и Arch Linux Pro Audio в новостях ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Cтроим серьёзную мультимедиа станцию с Arch] — статья на Linux.com, июль 2012 (англ.)<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale Повесть об Арче] — статья музыканта и писателя Дэйва Филлипса (Dave Phillips), октябрь 2011 (англ.)<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision От Windows к Linux: правильное решение] — интервью Geoff "songshop" Beasley, февраль 2010 (англ.)</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=353977Pro Audio (Русский)2014-12-28T22:02:16Z<p>Sheykhnur: /* Linux and Arch Linux Pro Audio in the News */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{Pkg|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Несвободные приложения ==<br />
=== Steinberg'овые SDK ===<br />
<br />
Естественно, мы не можем распространять заголовки ни VST, ни ASIO в форме бинарных пакетов. Тем не менее, всякий раз, когда вы собираете программу, которая будет работать с плагинами VST в виде Windows-библиотек ''.dll'', проверьте следующие пакеты (которые не требуют использования какого-либо SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
С учётом вышесказанного, если вы собираете программу, которая будет работать с нативными ''.so'' VST плагинами, то в этом случае выхода нет. Для таких случаев Арч позволяет нам поддерживать единую локальную базу данных приложений. Мы можем «установить» общесистемную SDK — достаточно лишь скачать и поместить файл в директорию установленного пакета.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search= Получить их можно в AUR]<br />
<br />
{{Note (Русский)|''Steinberg не запрещает распространять конечные продукты и не диктует лицензию, под которой они должны распространяться. Существует много плагинов с лицензией GPL. Таким образом, распространение бинарных пакетов или программного обеспечения, собранного с данными несвободными заголовками не проблема, потому что заголовки являются лишь временными зависимостями для сборки.''}}<br />
<br />
== Проект Arch Linux Pro Audio ==<br />
<br />
Да, у нас есть и такое. Задумайтесь над "Planet CCRMA" или "Pro Audio Overlay", меньше научной коннотации: [http://archaudio.org ArchAudio].<br />
<br />
Что значит, что сие является репозиторием дополнений, т.е. вы должны поработать над разумной установкой и настройкой Archlinux.<br />
<br />
Это относительно новое течение, хотя инициатива была проявлена ещё примерно в 2006/2007г. <br />
<br />
История: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
По всем вопросам, связанными с Arch- и ArchAudio- проблемами можно обратиться в наш '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux и Arch Linux Pro Audio в новостях ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Cтроим серьёзную мультимедиа станцию с Arch] — статья на Linux.com, июль 2012 (англ.)<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale Повесть об Арче] — статья музыканта и писателя Дэйва Филлипса (Dave Phillips), октябрь 2011 (англ.)<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision От Windows к Linux: правильное решение] — интервью Geoff "songshop" Beasley, февраль 2010 (англ.)</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=353975Pro Audio (Русский)2014-12-28T21:53:47Z<p>Sheykhnur: /* Arch Linux Pro Audio Project */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{Pkg|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Несвободные приложения ==<br />
=== Steinberg'овые SDK ===<br />
<br />
Естественно, мы не можем распространять заголовки ни VST, ни ASIO в форме бинарных пакетов. Тем не менее, всякий раз, когда вы собираете программу, которая будет работать с плагинами VST в виде Windows-библиотек ''.dll'', проверьте следующие пакеты (которые не требуют использования какого-либо SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
С учётом вышесказанного, если вы собираете программу, которая будет работать с нативными ''.so'' VST плагинами, то в этом случае выхода нет. Для таких случаев Арч позволяет нам поддерживать единую локальную базу данных приложений. Мы можем «установить» общесистемную SDK — достаточно лишь скачать и поместить файл в директорию установленного пакета.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search= Получить их можно в AUR]<br />
<br />
{{Note (Русский)|''Steinberg не запрещает распространять конечные продукты и не диктует лицензию, под которой они должны распространяться. Существует много плагинов с лицензией GPL. Таким образом, распространение бинарных пакетов или программного обеспечения, собранного с данными несвободными заголовками не проблема, потому что заголовки являются лишь временными зависимостями для сборки.''}}<br />
<br />
== Проект Arch Linux Pro Audio ==<br />
<br />
Да, у нас есть и такое. Задумайтесь над "Planet CCRMA" или "Pro Audio Overlay", меньше научной коннотации: [http://archaudio.org ArchAudio].<br />
<br />
Что значит, что сие является репозиторием дополнений, т.е. вы должны поработать над разумной установкой и настройкой Archlinux.<br />
<br />
Это относительно новое течение, хотя инициатива была проявлена ещё примерно в 2006/2007г. <br />
<br />
История: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
По всем вопросам, связанными с Arch- и ArchAudio- проблемами можно обратиться в наш '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=353973Pro Audio (Русский)2014-12-28T21:33:21Z<p>Sheykhnur: /* Restricted Software */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{Pkg|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Несвободные приложения ==<br />
=== Steinberg'овые SDK ===<br />
<br />
Естественно, мы не можем распространять заголовки ни VST, ни ASIO в форме бинарных пакетов. Тем не менее, всякий раз, когда вы собираете программу, которая будет работать с плагинами VST в виде Windows-библиотек ''.dll'', проверьте следующие пакеты (которые не требуют использования какого-либо SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
С учётом вышесказанного, если вы собираете программу, которая будет работать с нативными ''.so'' VST плагинами, то в этом случае выхода нет. Для таких случаев Арч позволяет нам поддерживать единую локальную базу данных приложений. Мы можем «установить» общесистемную SDK — достаточно лишь скачать и поместить файл в директорию установленного пакета.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search= Получить их можно в AUR]<br />
<br />
{{Note (Русский)|''Steinberg не запрещает распространять конечные продукты и не диктует лицензию, под которой они должны распространяться. Существует много плагинов с лицензией GPL. Таким образом, распространение бинарных пакетов или программного обеспечения, собранного с данными несвободными заголовками не проблема, потому что заголовки являются лишь временными зависимостями для сборки.''}}<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=346029Pro Audio (Русский)2014-11-23T17:27:30Z<p>Sheykhnur: /* PreSonus AudioBox USB */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{AUR|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=346028Pro Audio (Русский)2014-11-23T17:23:23Z<p>Sheykhnur: /* Hardware */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{AUR|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Оборудование ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
Карты серии M-Audio Delta построены на базе аудиочипсета VIA Ice1712.<br />
Карты, использующие данный чипсет требуют установки пакета alsa-tools, потому что пакет содержит программу [[envy24control]]. Envy24control — это микшер/контро́ллер аппаратного уровня. Вы, конечно, ''можете'' использовать alsa-mixer, но вы спасёте себя от некоторых хлопот; не стоит пробовать это. Обратите внимание, что данный раздел никак не описывает настройку и использование MIDI. <br />
<br />
Запустите приложение микшера:<br />
$ envy24control<br />
<br />
Данное приложение может быть чуть более чем немного запутанным; см. руководство к использованию в [[envy24control]]. Там описана лёгкая настройка программы для многоканальной работы в Ardour.<br />
<br />
# На вкладках "Monitor Inputs" и "Monitor PCMs", установите все входы монитора и монитор ИКМ'ов ([https://ru.wikipedia.org/wiki/%D0%98%D0%BC%D0%BF%D1%83%D0%BB%D1%8C%D1%81%D0%BD%D0%BE-%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F Импульсно-кодовая модуляция] англ. Pulse Code Modulation, PCM) в значение около 20.<br />
# На вкладке "Patchbay / Router", установите всё на выход PCM.<br />
# На вкладке "Hardware Settings", убедитесь, что значение Master Clock соответствует тому что установлено в Qjackctl. Если они не совпадают, то xruns у вас выйдет из-под контроля!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
M-Audio Fast Track Pro является профессиональной звуковой картой с интерфейсом USB v1.1 и 4x4 аудио входами, работающая с частотой дискретизации 24 бит/96 кГц при использовании только двух входов или двух выходов. В силу ограничений, накладываемых USB v1.1, это устройство требует дополнительной настройки для получения доступа ко всем его возможностям. Устройство работает в одном из двух конфигураций:<br />
<br />
* 1-я конфигурация, или "Режим соответствия классу" — с урезанной функциональностью, только 16 бит, 48 кГц, аналоговым входом (2 канала) и цифровым/аналоговым выходом (4 канала);<br />
* 2-я конфигурация — с доступом ко всем функциям интерфейса.<br />
<br />
В настоящее время с основным ядром она работает во 2-ой конфигурации, но, если вы всё же хотите убедиться, в каком режиме карта работает в данный момент, — вы можете проверить журнал ядра на записи:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
Интерфейс также нуждается в дополнительном этапе настройки для переключения режимов. Это делается с помощью опции {{ic|device_setup}} во время загрузки модуля. Рекомендуемый способ настройки интерфейса с использованием файла в {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
где {{ic|vid}} и {{ic|pid}} — идентификационный код производителя и изделия ([https://ru.wikipedia.org/wiki/PCI_configuration_space Vendor ID, Product ID]) для M-Audio Fast Track Pro, {{ic|index}} — желаемый номер устройства и {{ic|device_setup}} — желаемая настройка устройства. Возможные значения для {{ic|device_setup}} следующие:<br />
{| class="wikitable"<br />
|+ режимы устройства<br />
! значение device_setup !! разрядность бит !! частота !! аналоговый выход !! цифровой выход !! аналоговый вход !! цифровой вход !! режим ввода-вывода<br />
|-<br />
| 0x0 || 16 бит || 48 кГц || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 бит || 48 кГц || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 бит || 48 кГц || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 бит || 96 кГц || * || * || * || * || 2x0 или 0x2<br />
|}<br />
<br />
Режим 24 бит/96 кГц особенный: он предоставляет все вводы/выводы, но вы можете использовать только один из четырёх интерфейсов одновременно. Если вы, например, открыли выходной интерфейс и затем попытаетесь одновременно открыть второй входной или выходной интерфейс, вы получите ошибку в журнале ядра:<br />
{{bc|<br />
cannot submit datapipe for usb 0, error -28: not enough bandwidth<br />
(перев.: невозможно предоставить канал данных для usb 0, ошибка -28: нехватка пропускной способности) <br />
}}<br />
что является нормальным, ибо карта — USB v1.1 — и данный режим интерфейса неспособен обеспечить достаточную пропускную способность для поддержки более чем одного (2-х каналов) назначения/источника ([https://ru.wikipedia.org/wiki/%D0%94%D1%83%D0%BF%D0%BB%D0%B5%D0%BA%D1%81_(%D1%82%D0%B5%D0%BB%D0%B5%D0%BA%D0%BE%D0%BC%D0%BC%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8) полнодуплексный режим]) с приемлемым качеством одновременно.<br />
<br />
В зависимости от значения {{ic|index}} будет установлено два устройства: {{ic|hwYYY:0}} и {{ic|hwYYY:1}}, которые будут содержать доступные входы и выходы. Первое устройство, скорее всего, будет содержать в себе аналоговый выход и цифровой вход, в то время как второй — аналоговый вход и цифровой выход. Чтобы узнать, где и как устройства соединены, — если они настроены правильно, — вы можете проверить {{ic|/proc/asound/cardYYY/stream{0,1} }}. Ниже приведён список наиболее важных конечных точек (endpoints), которые помогут правильно определить соединения карты (легко перепутать аналоговые и цифровые входные или выходные соединения, прежде чем привыкаешь к устройству):<br />
<br />
{{bc|<nowiki><br />
EP 3 (аналоговый выход (analogue output) = разъём TRS задней панели зеркально отображается на выходах RCA 1 и 2 задней панели)<br />
EP 4 (цифровой выход (digital output) = выход S/PDIF задней панели зеркально отображается на выходах RCA 3 и 4 задней панели)<br />
EP 5 (аналоговый вход (analogue input) = балансный разъём TRS или XLR микрофона, небалансная линия TS на передней панели)<br />
EP 6 (цифровой вход (digital input) = вход S/PDIF задней панели)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Запуск: либо из командной строки, либо Qjackctl; драйвер называется firewire.<br />
#Характеристики: карта содержит 8/8 XLR предусилителей плюс стереопара, итого получается 10 каналов.<br />
#Сопряжение: карты могут соединяться вместе без каких-либо проблем.<br />
#Настройка оборудования: ничего особенного; меняйте настройки в Qjackctl по своему усмотрению.<br />
<br />
Уровни громкости аппаратные, а маршрутизация может быть выполнена в Qjackctl, даже если между собой сопряжено множество карт, — это не проблема. Ffadomixer пока ещё не работает с данной картой; надеемся, в будущем мы сможем контролировать больше аспектов карты через программный интерфейс как этот.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Запуск: ALSA даёт ему название "USB". <br />
#Характеристики: два входных разъёма моно TRS+XLR, два выхода моно TRS, входной и выходной разъёмы MIDI, плюс отдельный разъём для стереонаушников. Ручки управления для обоих входов, для главного выхода и для наушников — всего четыре.<br />
#Оборудование: Работает очень хорошо, аудио и MIDI тоже. Программного управления микшером нет вообще.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=345958Pro Audio (Русский)2014-11-23T11:10:36Z<p>Sheykhnur: /* Tips and Tricks */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{AUR|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Советы и рекомендации ==<br />
<br />
* Возможен конфликт IRQ, вследствие чего могут возникать проблемы. Например, графическое оборудование резервирует системную шину, в результате чего появляются излишние ненужные прерывания в системных путях ввода-вывода. См. обсуждение: [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. Если у вас имеется режим реального времени либо установлено ядро последней версии, вы можете использовать пакет {{AUR|rtirq}} для регулировки приоритетов IRQ обработки потоков.<br />
<br />
* Не используйте службу '''irqbalance''', либо делайте это с осторожностью; подробнее:[http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Некоторые службы/процессы могут неожиданно порождать '''xruns'''. Если эти службы вам не нужны — завершайте их. Без вопросов.<br />
<br />
$ ls /var/run/daemons<br />
$ top # или htop, ps aux, что ещё вам удобнее<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* Если вы сталкиваетесь с множеством ''xruns'', особенно с {{Pkg|nvidia}}, отключите управление производительностью GPU. Это может быть сделано через апплет управления видеокарты и для nvidia это т.н. "режим максимальной производительности" (благодаря сообщению в LAU Фрэнка Кобера (Frank Kober)).<br />
<br />
* Также, за дополнительной информацией по ALSA, вы можете обратиться по адресу: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=342964Pro Audio (Русский)2014-11-02T13:41:15Z<p>Sheykhnur: /* Environment Variables */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{AUR|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Переменные окружения ==<br />
<br />
Если вы устанавливаете что-либо в нестандартные директории, часто бывает необходимо задать переменную окружения пути, чтобы приложения могли найти требуемые объекты (например, плагины и сторонние библиотеки). Это, как правило, относится к плагинам VST, т.к. пользователи могут работать через Wine или работать с внешними окружениями Windows.<br />
<br />
В Linux обычно нет плагинов, располагающихся вне стандартных путей (LADSPA, LV2, DSSI, LXVST), поэтому нет необходимости экспортировать их. Но, если вы всё же делаете это, не забудьте включить эти стандартные пути, поскольку Arch ничего не знает о ''dssi'' или ''ladspa'', и некоторые приложения, такие как ''dssi-vst'' не будут видны из других приложений даже если они находятся в стандартных расположениях.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/некоторая/нестандартная/директория<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/некоторая/нестандартная/директория<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/некоторая/нестандартная/директория<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/некоторая/нестандартная/директория<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/некоторая/нестандартная/директория<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341943Pro Audio (Русский)2014-10-26T10:30:23Z<p>Sheykhnur: /* MIDI */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
Для работы с MIDI настоятельно рекомендуется установить пакет a2j ({{AUR|a2jmidid}}), являющийся мостом между alsa midi и jack midi. Он позволяет подключаться друг к другу приложениям, работающим исключительно с alsa midi к приложениям, которые работают только через jack midi. Laditray способен также запускать/останавливать a2j.<br />
:''См.: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341775Pro Audio (Русский)2014-10-25T19:41:46Z<p>Sheykhnur: </p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion (Русский)|описа́ть irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341774Pro Audio (Русский)2014-10-25T19:29:55Z<p>Sheykhnur: </p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start (Русский)}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341772Pro Audio (Русский)2014-10-25T19:27:13Z<p>Sheykhnur: /* Распространённые примеры */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup (англ.)]].<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341770Pro Audio (Русский)2014-10-25T19:25:52Z<p>Sheykhnur: /* Режим реального времени ядра */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup]](англ.).<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке: [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341768Pro Audio (Русский)2014-10-25T19:22:04Z<p>Sheykhnur: /* Режим реального времени ядра */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup]](англ.).<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html (англ.)].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki (англ.)]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341767Pro Audio (Русский)2014-10-25T19:19:49Z<p>Sheykhnur: /* Распространённые примеры */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup]](англ.).<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341765Pro Audio (Русский)2014-10-25T19:19:07Z<p>Sheykhnur: /* Режим реального времени ядра */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup]](англ).<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=341764Professional audio2014-10-25T19:17:04Z<p>Sheykhnur: /* Realtime Kernel */ : Updated link http://jackaudio.org/faq/realtime_vs_realtime_kernel.html</p>
<hr />
<div>[[Category:Audio/Video]]<br />
[[ja:Pro Audio]]<br />
[[ru:Pro Audio]]<br />
{{Expansion|describe irqbalance}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting Started ==<br />
<br />
Some of the major pro audio applications are already available from the official and community Arch Linux repositories. For anything which is not, you can either add a binary repository (see further down below) or if you prefer to compile, search the AUR. Nothing stops you from building directly off of upstream releases, but then you might as well run LFS.<br />
<br />
Start by installing [[JACK]].<br />
<br />
The following packages are a good start to build a full-featured pro audio system:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Other packages you may need that are available from the [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (also see [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== System Configuration ===<br />
You may want to consider the following often seen system optimizations:<br />
* Add yourself to the ''audio'' [[Groups#Group management|group]].<br />
* Add the {{ic|threadirqs}} [[kernel parameters|kernel parameter]].<br />
{{Warning|Enabling threadirqs seems to be causing system lockups in conjunction with usb devices in at least some kernel versions starting with 3.13 and including at least 3.14-rc2. See for example https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081 and http://www.spinics.net/lists/linux-usb/msg102504.html also linked from there.<br/><br />
EDIT: The changelog seems to indicate that this has been fixed in the 3.13.6 vanilla kernel. (Search for threadirqs in https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6)}}<br />
* Install {{AUR|linux-rt}} kernel.<br />
* Set the [[cpufreq]] governor to ''performance''.<br />
* Add ''noatime'' to the [[fstab|filesystem mount options]] (see [[Maximizing performance#Mount options|Maximizing Performance]]).<br />
<br />
Realtime configuration has mostly been automated. There is no longer any need to edit files like {{ic|/etc/security/limits.conf}} for realtime access. However, if you must change the settings, see {{ic|/etc/security/limits.d/99-audio.conf}} and {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (these files are provided by {{pkg|jack}} or {{pkg|jack2}}). Additionaly, you may want to increase the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
By default, swap frequency defined by "swappiness" is set to 60. By reducing this number to 10, the system will wait much longer before trying to write to disk.<br />
Then, there is ''inotify'' which watches for changes to files and reports them to applications requesting this information. When working with lots of audio data, a lot of watches will need to be kept track of, so they will need to be increased.<br />
These two settings can be adjusted in {{ic|/etc/sysctl.d/99-sysctl.conf}}.<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Am I in the audio group? See [[ALSA]] or [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-audio.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} and {{pkg|patchage}} are two GUI front-ends. For jack2 qjackctl is not nessesary, a lightweight alternative with less features can be sufficient, since applications like ardour or patchage already take care of client connections and smoothly adjusting the buffer size.<br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}. Most often than not, your device will work with the {{AUR|libffado-svn}} development version of the driver.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to install {{AUR|libflashsupport-jack}} from the [[AUR]].<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by installing {{Pkg|alsa-plugins}} from the [[official repositories]]. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan Jack script ====<br />
<br />
Most people will probably want to run jack in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have jack work properly in real time mode is to run the Quickscan script. <br />
<br />
https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl<br />
<br />
(or just install {{AUR|realtimeconfigquickscan}} from the [[AUR]])<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
=== A General Example ===<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/faq/realtime_vs_realtime_kernel.html http://jackaudio.org/faq/realtime_vs_realtime_kernel.html].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341762Pro Audio (Русский)2014-10-25T19:10:46Z<p>Sheykhnur: /* Режим реального времени ядра */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup]](англ).<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note (Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке [http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341761Pro Audio (Русский)2014-10-25T19:07:04Z<p>Sheykhnur: /* Режим реального времени ядра */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup]](англ).<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующим получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note(Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке [http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341760Pro Audio (Русский)2014-10-25T19:05:28Z<p>Sheykhnur: /* Realtime Kernel */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup]](англ).<br />
<br />
== Режим реального времени ядра ==<br />
<br />
С недавнего времени основное ядро Linux предоставляет хорошие возможности для использования его в режиме реального времени. Основное ядро (с параметром {{Ic|CONFIG_PREEMPT&#61;y}}, используемое в Арч по умолчанию) в худшем случае может работать с задержкой [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F до 10мс] (время между моментом аппаратного прерывания и моментом, соответствующее получению прерывания выполняющимся потоком), хотя, конечно же, некоторые драйверы устройств могут внести задержки намного бо́льшие, чем системные. В зависимости от вашего аппаратного обеспечения и драйверов (и требований), вы, возможно, захотите ядро с возможностями жёсткого режима реального времени.<br />
<br />
Патч [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] от Инго Молнара (Ingo Molnar) и Томаса Глейкснера (Thomas Gleixner) является интересным вариантом для жёстких задержек и приложений режима реального времени, достигаемых в профессиональном аудио промышленного масштаба. <br />
Большинство аудио специфичных дистрибутивов Linux поставляются с применением данного патча. Режим вытесняющей многозадачности реального времени ядра также позволяет настроить приоритеты прерываний (IRQ) обработки потоков и помогает обеспечить плавный звук почти независимо от нагрузки.<br />
<br />
Если вы собираетесь компилировать собственное ядро, помните, что удаление модулей/опций не следует приравнивать к «лёгкости и простоте» ядра. Образ ядра, конечно же, уменьшится, но в современных системах это не такая проблема, какая она была в 1995-м. <br />
<br />
В любом случае, вы должны обеспечить следующие параметры:<br />
* '''Timer Frequency''' установить в значение '''1000Hz''' (CONFIG_HZ_1000=y; если вы не задаёте ''MIDI'', вы можете это игнорировать)<br />
* '''APM''' в значение '''DISABLED''' (CONFIG_APM=n; Могут быть трудности с некоторым оборудованием - по умолчанию в x86_64)<br />
<br />
Если вы хотите действительно лёгкую систему, мы предлагаем вам пойти своим путём и развернуть систему один раз с статической аппаратной поддержкой. Однако, вам понадобится выбрать архитектуру процессора. Выбор «Core 2 Duo» с подбором соответствующего аппаратного обеспечения может послужить хорошим подспорьем для оптимизации; но тем меньше будет выигрыш, чем ниже архитектура.<br />
<br />
Основные проблемы с режимом реального времени ядра:<br />
<br />
* Гиперпоточность (hyperthreading) (если имеются подозрения, отключите в BIOS)<br />
<br />
Также имеются готовые скомпилированные с патчами ядра, доступные в ABS и AUR.<br />
<br />
{{note(Русский)|Прежде чем вы решите использовать патченное ядро, загляните по ссылке [http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
Вы можете использовать [[ABS]] для перекомпиляции {{Pkg|linux}} с патчами. Тем не менее, это не самый лучший способ, т.к. обновление перезапишет ваше ядро (по крайней мере, вам нужно добавить параметр {{Ic|1=IgnorePkg=linux}} в файл {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
Из [[AUR]] вы можете выбрать следующее:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Долгосрочная поддержка, стабильный релиз)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
Первые два являются стандартным ядром с включённым патчем CONFIG_PREEMPT_RT, в то время как -ice включают в себя патчи, которые некоторым могут не понравиться, но другим будут по вкусу.<br />
:''См.: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=341753Pro Audio (Русский)2014-10-25T17:00:44Z<p>Sheykhnur: /* A General Example */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== Распространённые примеры ===<br />
<br />
Общие примеры конфигураций доступны на странице [[JACK Audio Connection Kit#A Shell-Based Example Setup]](англ).<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/realtime_vs_realtime_kernel http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=339615Pro Audio (Русский)2014-10-10T20:25:29Z<p>Sheykhnur: /* JACK */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Основные используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== A General Example ===<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/realtime_vs_realtime_kernel http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=339614Pro Audio (Русский)2014-10-10T20:18:09Z<p>Sheykhnur: /* JACK */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь — это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Общие используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени — '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== A General Example ===<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/realtime_vs_realtime_kernel http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=339613Pro Audio (Русский)2014-10-10T20:13:24Z<p>Sheykhnur: /* Скрипт быстрой проверки Jack (Quickscan) : обновлена ссылка на скрипт, т.к. проект переехал на GitHub*/</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь - это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Общие используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени - '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек. Отличный способ проверить системную конфигурацию после настройки JACK'а — это запустить скрипт Quickscan. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу. Скачать его можно [https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]].<br />
<br />
=== A General Example ===<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/realtime_vs_realtime_kernel http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=339612Professional audio2014-10-10T20:08:04Z<p>Sheykhnur: /* Quickscan Jack script: updated link to the script, as this project has moved to GitHub */</p>
<hr />
<div>[[Category:Audio/Video]]<br />
[[ja:Pro Audio]]<br />
[[ru:Pro Audio]]<br />
{{Expansion|describe irqbalance}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting Started ==<br />
<br />
Some of the major pro audio applications are already available from the official and community Arch Linux repositories. For anything which is not, you can either add a binary repository (see further down below) or if you prefer to compile, search the AUR. Nothing stops you from building directly off of upstream releases, but then you might as well run LFS.<br />
<br />
Start by installing [[JACK]].<br />
<br />
The following packages are a good start to build a full-featured pro audio system:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Other packages you may need that are available from the [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (also see [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== System Configuration ===<br />
You may want to consider the following often seen system optimizations:<br />
* Add yourself to the ''audio'' [[Groups#Group management|group]].<br />
* Add the {{ic|threadirqs}} [[kernel parameters|kernel parameter]].<br />
{{Warning|Enabling threadirqs seems to be causing system lockups in conjunction with usb devices in at least some kernel versions starting with 3.13 and including at least 3.14-rc2. See for example https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081 and http://www.spinics.net/lists/linux-usb/msg102504.html also linked from there.<br/><br />
EDIT: The changelog seems to indicate that this has been fixed in the 3.13.6 vanilla kernel. (Search for threadirqs in https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6)}}<br />
* Install {{AUR|linux-rt}} kernel.<br />
* Set the [[cpufreq]] governor to ''performance''.<br />
* Add ''noatime'' to the [[fstab|filesystem mount options]] (see [[Maximizing performance#Mount options|Maximizing Performance]]).<br />
<br />
Realtime configuration has mostly been automated. There is no longer any need to edit files like {{ic|/etc/security/limits.conf}} for realtime access. However, if you must change the settings, see {{ic|/etc/security/limits.d/99-audio.conf}} and {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (these files are provided by {{pkg|jack}} or {{pkg|jack2}}). Additionaly, you may want to increase the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
By default, swap frequency defined by "swappiness" is set to 60. By reducing this number to 10, the system will wait much longer before trying to write to disk.<br />
Then, there is ''inotify'' which watches for changes to files and reports them to applications requesting this information. When working with lots of audio data, a lot of watches will need to be kept track of, so they will need to be increased.<br />
These two settings can be adjusted in {{ic|/etc/sysctl.d/99-sysctl.conf}}.<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Am I in the audio group? See [[ALSA]] or [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-audio.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} and {{pkg|patchage}} are two GUI front-ends. For jack2 qjackctl is not nessesary, a lightweight alternative with less features can be sufficient, since applications like ardour or patchage already take care of client connections and smoothly adjusting the buffer size.<br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}. Most often than not, your device will work with the {{AUR|libffado-svn}} development version of the driver.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to install {{AUR|libflashsupport-jack}} from the [[AUR]].<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by installing {{Pkg|alsa-plugins}} from the [[official repositories]]. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan Jack script ====<br />
<br />
Most people will probably want to run jack in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have jack work properly in real time mode is to run the Quickscan script. <br />
<br />
https://github.com/raboof/realtimeconfigquickscan/blob/master/realTimeConfigQuickScan.pl<br />
<br />
(or just install {{AUR|realtimeconfigquickscan}} from the [[AUR]])<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
=== A General Example ===<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/realtime_vs_realtime_kernel http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=339611Professional audio2014-10-10T20:06:36Z<p>Sheykhnur: Undo revision 339610 by Sheykhnur (talk)</p>
<hr />
<div>[[Category:Audio/Video]]<br />
[[ja:Pro Audio]]<br />
[[ru:Pro Audio]]<br />
{{Expansion|describe irqbalance}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting Started ==<br />
<br />
Some of the major pro audio applications are already available from the official and community Arch Linux repositories. For anything which is not, you can either add a binary repository (see further down below) or if you prefer to compile, search the AUR. Nothing stops you from building directly off of upstream releases, but then you might as well run LFS.<br />
<br />
Start by installing [[JACK]].<br />
<br />
The following packages are a good start to build a full-featured pro audio system:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Other packages you may need that are available from the [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (also see [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== System Configuration ===<br />
You may want to consider the following often seen system optimizations:<br />
* Add yourself to the ''audio'' [[Groups#Group management|group]].<br />
* Add the {{ic|threadirqs}} [[kernel parameters|kernel parameter]].<br />
{{Warning|Enabling threadirqs seems to be causing system lockups in conjunction with usb devices in at least some kernel versions starting with 3.13 and including at least 3.14-rc2. See for example https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081 and http://www.spinics.net/lists/linux-usb/msg102504.html also linked from there.<br/><br />
EDIT: The changelog seems to indicate that this has been fixed in the 3.13.6 vanilla kernel. (Search for threadirqs in https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6)}}<br />
* Install {{AUR|linux-rt}} kernel.<br />
* Set the [[cpufreq]] governor to ''performance''.<br />
* Add ''noatime'' to the [[fstab|filesystem mount options]] (see [[Maximizing performance#Mount options|Maximizing Performance]]).<br />
<br />
Realtime configuration has mostly been automated. There is no longer any need to edit files like {{ic|/etc/security/limits.conf}} for realtime access. However, if you must change the settings, see {{ic|/etc/security/limits.d/99-audio.conf}} and {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (these files are provided by {{pkg|jack}} or {{pkg|jack2}}). Additionaly, you may want to increase the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
By default, swap frequency defined by "swappiness" is set to 60. By reducing this number to 10, the system will wait much longer before trying to write to disk.<br />
Then, there is ''inotify'' which watches for changes to files and reports them to applications requesting this information. When working with lots of audio data, a lot of watches will need to be kept track of, so they will need to be increased.<br />
These two settings can be adjusted in {{ic|/etc/sysctl.d/99-sysctl.conf}}.<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Am I in the audio group? See [[ALSA]] or [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-audio.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} and {{pkg|patchage}} are two GUI front-ends. For jack2 qjackctl is not nessesary, a lightweight alternative with less features can be sufficient, since applications like ardour or patchage already take care of client connections and smoothly adjusting the buffer size.<br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}. Most often than not, your device will work with the {{AUR|libffado-svn}} development version of the driver.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to install {{AUR|libflashsupport-jack}} from the [[AUR]].<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by installing {{Pkg|alsa-plugins}} from the [[official repositories]]. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan Jack script ====<br />
<br />
Most people will probably want to run jack in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have jack work properly in real time mode is to run the Quickscan script. <br />
<br />
http://realtimeconfigquickscan.googlecode.com/hg/realTimeConfigQuickScan.pl<br />
<br />
(or just install {{AUR|realtimeconfigquickscan}} from the [[AUR]])<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
=== A General Example ===<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/realtime_vs_realtime_kernel http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Professional_audio&diff=339610Professional audio2014-10-10T20:04:06Z<p>Sheykhnur: /* Quickscan Jack script: updated link to the script, as this project has moved to GitHub */</p>
<hr />
<div>[[Category:Audio/Video]]<br />
[[ja:Pro Audio]]<br />
[[ru:Pro Audio]]<br />
{{Expansion|describe irqbalance}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Modern Linux systems are more than capable of supporting your (semi-)professional audio needs. Latencies of 5ms down to even as low as 1ms can be achieved with good hardware and proper configuration.<br />
<br />
== Getting Started ==<br />
<br />
Some of the major pro audio applications are already available from the official and community Arch Linux repositories. For anything which is not, you can either add a binary repository (see further down below) or if you prefer to compile, search the AUR. Nothing stops you from building directly off of upstream releases, but then you might as well run LFS.<br />
<br />
Start by installing [[JACK]].<br />
<br />
The following packages are a good start to build a full-featured pro audio system:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Other packages you may need that are available from the [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (also see [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== System Configuration ===<br />
You may want to consider the following often seen system optimizations:<br />
* Add yourself to the ''audio'' [[Groups#Group management|group]].<br />
* Add the {{ic|threadirqs}} [[kernel parameters|kernel parameter]].<br />
{{Warning|Enabling threadirqs seems to be causing system lockups in conjunction with usb devices in at least some kernel versions starting with 3.13 and including at least 3.14-rc2. See for example https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081 and http://www.spinics.net/lists/linux-usb/msg102504.html also linked from there.<br/><br />
EDIT: The changelog seems to indicate that this has been fixed in the 3.13.6 vanilla kernel. (Search for threadirqs in https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6)}}<br />
* Install {{AUR|linux-rt}} kernel.<br />
* Set the [[cpufreq]] governor to ''performance''.<br />
* Add ''noatime'' to the [[fstab|filesystem mount options]] (see [[Maximizing performance#Mount options|Maximizing Performance]]).<br />
<br />
Realtime configuration has mostly been automated. There is no longer any need to edit files like {{ic|/etc/security/limits.conf}} for realtime access. However, if you must change the settings, see {{ic|/etc/security/limits.d/99-audio.conf}} and {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (these files are provided by {{pkg|jack}} or {{pkg|jack2}}). Additionaly, you may want to increase the highest requested RTC interrupt frequency (default is 64 Hz) by [[systemd FAQ#How can I make a script start during the boot process?|running the following at boot]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
By default, swap frequency defined by "swappiness" is set to 60. By reducing this number to 10, the system will wait much longer before trying to write to disk.<br />
Then, there is ''inotify'' which watches for changes to files and reports them to applications requesting this information. When working with lots of audio data, a lot of watches will need to be kept track of, so they will need to be increased.<br />
These two settings can be adjusted in {{ic|/etc/sysctl.d/99-sysctl.conf}}.<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
You may also want to maximize the PCI latency timer of the PCI sound card and raise the latency timer of all other PCI peripherals (default is 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # eg. SOUND_CARD_PCI_ID&#61;03:00.0 (see below)<br />
The SOUND_CARD_PCI_ID can be obtained like so:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Checklist ====<br />
The steps below are mostly to double-check that you have a working multimedia system:<br />
* Have I set up sound properly? See [[ALSA]] or [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Am I in the audio group? See [[ALSA]] or [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Is PulseAudio, OSS or something else grabbing my device?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
-OR-<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Is PAM-security and realtime working OK?<br />
<br />
See: [[Realtime for Users#PAM-enabled login]] (Pay special attention especially if you do not run KDM, GDM or Slim.)<br />
<br />
* Have I rebooted after having done all that?<br />
<br />
=== JACK ===<br />
<br />
The aim here is to find the best possible combination of buffer size and periods, given the hardware you have. '''Frames/Period = 256''' is a sane starter. For onboard and USB devices, try '''Periods/Buffer = 3'''. Commonly used values are: 256/3, 256/2, 128/3.<br />
<br />
Also, the sample rate must match the hardware sample rate. To check what sample and bit rates your device supports:<br />
$ cat /proc/asound/card0/codec#0<br />
Replace ''card0'' and ''codec#0'' depending on what you have. You will be looking for '''rates''' or ''VRA'' in '''Extended ID'''. A common sample rate across many of today's devices is '''48000 Hz'''. Others common rates include 44100 Hz and 96000 Hz.<br />
<br />
Almost always, when recording or sequencing with external gear is concerned, '''realtime''' is a must. Also, you may like to set maximum priority (at least 10 lower than system limits defined in {{ic|/etc/security/limits.d/99-audio.conf}}); the highest is for the device itself).<br />
<br />
Start jack with the options you just found out:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} and {{pkg|patchage}} are two GUI front-ends. For jack2 qjackctl is not nessesary, a lightweight alternative with less features can be sufficient, since applications like ardour or patchage already take care of client connections and smoothly adjusting the buffer size.<br />
<br />
{{Note|Once you set up JACK, try different audio applications to test your configuration results. I spent days trying to troubleshoot JACK xrun issues with LMMS which in the end turned out to be the problem with the latter.}}<br />
<br />
''Further reading: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note|Nothing much is needed to be done as most things have been automated, especially with the introduction of the [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html new FireWire stack], deprecation of HAL and more focus on [[udev]]. You should not need to edit device permissions, but if you suspect that your device may not be working due to such issues, see {{ic|/lib/udev/rules.d/60-ffado.rules}} and if needed, create and put your changes into {{ic|/etc/udev/rules.d/60-ffado.rules}}. Most often than not, your device will work with the {{AUR|libffado-svn}} development version of the driver.}}<br />
<br />
JACK(2) is built against FFADO, you only need to install it with the {{Pkg|libffado}} package.<br />
<br />
To test whether you have any chances of getting FireWire devices to work:<br />
<br />
* Ensure the proper kernel modules are loaded:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Is my chipset sane enough to initiate a device?<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Is my chipset sane enough to make a device work to its capacity?<br />
<br />
We cannot say for sure, particularly for those based on Ricoh (cross-platform issue). Most of the time, your device will run fine, but on occasion you will be faced with funny quirks. For unlucky ones, you will be facing hell.<br />
<br />
==== Jack Flash ====<br />
<br />
If after getting jack setup you will find that Flash has no audio.<br />
<br />
In order to get flash to work with jack you will need to install {{AUR|libflashsupport-jack}} from the [[AUR]].<br />
<br />
You can also use more flexible method to allow Alsa programs (including Flash) play sound while jack is running:<br />
<br />
First you must install the jack plugin for Alsa by installing {{Pkg|alsa-plugins}} from the [[official repositories]]. Enable it by editing (or creating) {{Ic|/etc/asound.conf}} (system wide settings) to have these lines:<br />
<br />
{{Bc|<br />
# convert alsa API over jack API<br />
# use it with<br />
# % aplay foo.wav<br />
<br />
# use this as default<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# pcm type jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
You do not need to restart your computer or anything. Just edit the alsa config files, start up jack.<br />
<br />
==== Quickscan Jack script ====<br />
<br />
Most people will probably want to run jack in realtime mode, there are however a lot of knobs and buttons to press in order for that to happen.<br />
<br />
A great way to quickly diagnose your system and find out what it is missing in order to have jack work properly in real time mode is to run the Quickscan script. <br />
<br />
https://github.com/raboof/realtimeconfigquickscan/realTimeConfigQuickScan.pl<br />
<br />
(or just install {{AUR|realtimeconfigquickscan}} from the [[AUR]])<br />
<br />
The output should tell you where your system is lacking and will point you to places to find more information.<br />
<br />
=== A General Example ===<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/realtime_vs_realtime_kernel http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=339609Pro Audio (Русский)2014-10-10T19:47:25Z<p>Sheykhnur: /* Скрипт быстрой проверки Jack (Quickscan) */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь - это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Общие используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени - '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек.<br />
<br />
Отличный способ проверить системную конфигурацию и железо на возможность работы с JACK'ом в режиме реального времени перед тем как начать настраивать — это запустить скрипт Quickscan. Скачать его можно [http://realtimeconfigquickscan.googlecode.com/hg/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]]. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу.<br />
<br />
=== A General Example ===<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/realtime_vs_realtime_kernel http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=339608Pro Audio (Русский)2014-10-10T19:43:55Z<p>Sheykhnur: /* Jack Flash */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь - это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Общие используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени - '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm: jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек.<br />
<br />
Отличный способ проверить системную конфигурацию и железо на возможность работы с JACK'ом в режиме реального времени — это запустить скрипт Quickscan. Скачать его можно [http://realtimeconfigquickscan.googlecode.com/hg/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]]. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу.<br />
<br />
=== A General Example ===<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/realtime_vs_realtime_kernel http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=339607Pro Audio (Русский)2014-10-10T19:40:47Z<p>Sheykhnur: /* FireWire */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь - это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Общие используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени - '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы (особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire]) ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm — jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек.<br />
<br />
Отличный способ проверить системную конфигурацию и железо на возможность работы с JACK'ом в режиме реального времени — это запустить скрипт Quickscan. Скачать его можно [http://realtimeconfigquickscan.googlecode.com/hg/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]]. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу.<br />
<br />
=== A General Example ===<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/realtime_vs_realtime_kernel http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnurhttps://wiki.archlinux.org/index.php?title=Pro_Audio_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)&diff=339606Pro Audio (Русский)2014-10-10T19:36:45Z<p>Sheykhnur: /* Jack Flash */</p>
<hr />
<div>[[Category:Audio/Video (Русский)]]<br />
[[Category:Русский]]<br />
[[en:Pro Audio]]<br />
[[ja:Pro Audio]]<br />
[[ru:Профессиональное аудио]]<br />
{{Unmaintained (Русский)}}<br />
{{Expansion|describe irqbalance}}<br />
{{Translateme (Русский)|Постепенный перевод.}}<br />
{{Related articles start}}<br />
{{Related|Unofficial user repositories}}<br />
{{Related|envy24control}}<br />
{{Related articles end}}<br />
<br />
Современные версии Linux имеют очень хорошую поддержку (полу-)профессионального аудио. Задержки в 5 мс и даже ниже, например, в 1 мс могут быть достигнуты при хорошей аппаратной поддержке и должной настройке.<br />
<br />
== Начало работы ==<br />
<br />
Начните с установки [[JACK]].<br />
<br />
Следующие пакеты являются хорошим началом для построения полнофункциональной профессиональной аудиосистемы:<br />
* {{Pkg|qjackctl}}<br />
* {{Pkg|patchage}}<br />
* {{Pkg|ardour}}<br />
* {{Pkg|qtractor}}<br />
* {{Pkg|hydrogen}}<br />
* {{Pkg|rosegarden}}<br />
* {{Pkg|qsynth}}<br />
* {{Pkg|jsampler}}<br />
* {{Pkg|lmms}}<br />
* {{Pkg|dssi}}<br />
<br />
Остальные пакеты, которые вам могут понадобиться доступны в [[AUR]]:<br />
* {{AUR|traverso}}<br />
* {{AUR|qsampler}} (см. также [[Linuxsampler]])<br />
* {{AUR|fsthost}}<br />
* {{AUR|jost}}<br />
* {{AUR|wineasio}}<br />
* [https://github.com/abique/vst-bridge vst-bridge]<br />
<br />
=== Настройка системы ===<br />
<br />
Вы можете рассмотреть наиболее частые оптимизации:<br />
* Добавьте свою учётную запись в группу [[Groups#Group management|аудио]].<br />
* Добавьте строку ''threadirqs'' в [[kernel parameters|параметры ядра]].<br />
{{Warning (Русский)|Включение ''threadirqs'' в сочетании с некоторыми USB устройствами может являться причиной зависания системы, по крайней мере, в некоторых версиях ядра, начиная с 3.13 и, в том числе, 3.14-RC2. Для более подробной информации см. [https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1279081] и [http://www.spinics.net/lists/linux-usb/msg102504.html]<br><br />
ПРИМЕЧАНИЕ: Последний список изменений показывает, что это было исправлено в последних ванильных версиях ядра 3.13.6. (Подробнее: [https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.13.6])}}<br />
* Установите ядро {{AUR|linux-rt}}.<br />
* Установите значение подсистемы [[cpufreq]] в ''performance''.<br />
* Добавьте ''noatime'' в [[fstab|опции монтирования файловой системы ]] (см. [[Maximizing performance#Mount options|Увеличение производительности]]).<br />
<br />
Режим реального времени в большинстве случаев уже сконфигурирован. Больше не нужно редактировать файл {{ic|/etc/security/limits.conf}} для настройки реалтайма. Однако, если вам необходимо изменить настройки, вы всегда можете это сделать в файлах {{ic|/etc/security/limits.d/99-audio.conf}} и {{ic|/usr/lib/udev/rules.d/40-hpet-permissions.rules}} (эти файлы предоставляются пакетами {{pkg|jack}} или {{pkg|jack2}}). Кроме того, вы можете повысить частоту прерывания RTC (по умолчанию она равна 64 Гц) через [[systemd FAQ#How can I make a script start during the boot process?|автозагрузку следующих значений]]:<br />
echo 2048 > /sys/class/rtc/rtc0/max_user_freq<br />
echo 2048 > /proc/sys/dev/hpet/max-user-freq<br />
<br />
По умолчанию, частота подкачки, определяемая параметром ''swappiness'' имеет значение 60. Уменьшив это число до 10, система будет использовать дисковый кэш намного позже: пока свободной памяти в ОЗУ будет оставаться больше 10% — система будет использовать ОЗУ. Кроме того, есть '' inotify '', который отслеживает изменения в файлах и сообщает о них приложениям, запрашивающих эту информацию. При работе с большим количеством аудиофайлов много времени уходит на отслеживание изменений в них, поэтому это время можно увеличить. Эти два параметра настраиваются в файле {{ic|/etc/sysctl.d/99-sysctl.conf}} (при отсутствии его необходимо создать):<br />
vm.swappiness &#61; 10<br />
fs.inotify.max_user_watches &#61; 524288<br />
<br />
Вы также можете увеличить до максимума таймер времени ожидания шины PCI (PCI latency timer, задающий время, которое может занимать карта на шине, если к шине обращаются другие карты) для вашего устройства и, соответственно, немного увеличить его для других устройств PCI (по умолчанию 64).<br />
$ setpci -v -d *:* latency_timer&#61;'''b0'''<br />
$ setpci -v -s ''$SOUND_CARD_PCI_ID'' latency_timer&#61;'''ff''' # например SOUND_CARD_PCI_ID&#61;03:00.0 (см. ниже)<br />
Значение переменной SOUND_CARD_PCI_ID можно получить так:<br />
{{hc|$ lspci &#166; grep -i audio|<br />
'''03:00.0''' Multimedia audio controller: Creative Labs SB Audigy (rev 03)<br />
'''03:01.0''' Multimedia audio controller: VIA Technologies Inc. VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (rev 01)}}<br />
<br />
==== Контрольный список ====<br />
Следующие действия, в основном, необходимы, чтобы ещё раз проверить, что у вас правильно настроена звуковая подсистема:<br />
* Как проверить работоспособность звука? См. [[ALSA]] или [[OSS]].<br />
<br />
$ speaker-test<br />
<br />
* Находится ли учётная запись в группе ''audio''? См. [[ALSA]] или [[OSS]].<br />
<br />
$ groups | grep audio<br />
<br />
* Какая программа или звуковой сервер (Pulseaudio, OSS) захватили звуковое устройство?<br />
<br />
$ lsof +c 0 /dev/snd/pcm* /dev/dsp*<br />
<br />
или:<br />
<br />
$ fuser -fv /dev/snd/pcm* /dev/dsp* <br />
<br />
* Работает ли режим реального времени (realtime) и механизм [http://www.freebsd.org/doc/ru/articles/pam/article.html PAM-security] правильно?<br />
<br />
См.: [[Realtime for Users#PAM-enabled login]] (Настоятельно рекомендуется к прочтению, особенно, если вы не используете менеджеры входа, такие как KDM, GDM или Slim.)<br />
<br />
* Перезагрузили ли вы компьютер после всех сделанных изменений?<br />
<br />
=== JACK ===<br />
<br />
Основная цель здесь - это найти самую оптимальную комбинацию отношения размера буфера к величине периодов, предоставленные имеющимся у вас оборудованием. Отношение '''Frames/Period = 256''' является разумным началом. Для встроенных и USB устройств попробуйте значение '''Periods/Buffer = 3'''. Общие используемые значения: 256/3, 256/2, 128/3.<br />
<br />
Кроме того, частота дискретизации должна соответствовать аппаратной частоте дискретизации. Для проверки поддерживаемой частоты дискретизации и битности:<br />
$ cat /proc/asound/card0/codec#0<br />
Замените ''card0'' и ''codec#0'' своими значениями. Вы увидите значение частоты '''rates''' или ''VRA'' в поле '''Extended ID'''. Общее значение частоты дискретизации во многих современных устройствах - '''48000 Hz'''. Другие общие значения - это ''44100 Hz'' и ''96000 Hz''.<br />
<br />
Практически всегда, когда вы записываете или секвенируете с задействованием внешних механизмов, вам потребуется режим реального времени - '''realtime'''. Кроме того, вы можете установить максимальный приоритет (по-крайней мере, ниже 10, который ограничивается системой и определяется в файле {{ic|/etc/security/limits.d/99-audio.conf}}); самый высокий для самого устройства.<br />
<br />
Запустите ''jack'' с опциями, которые вы только что выяснили:<br />
$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3<br />
<br />
{{pkg|qjackctl}} и {{pkg|patchage}} - два GUI фронтенда для ''jack'''а. Для ''jack2 qjackctl'' необязателен; лёгкой альтернативы с меньшими возможостями будет вполне достаточно, т.к. программы, такие как ''ardour'' или ''patchage'' уже автоматически настраивают клиентские соединения и плавно подстраивают размер буфера.<br />
<br />
{{Note (Русский)|Как только вы настроите JACK, попробуйте позапускать различные аудиоприложения для проверки результатов настройки. Я потратил несколько дней, пытаясь решить проблему запуска JACK xrun вместе с LMMS, которая, как оказалось в итоге, была в последней.}}<br />
<br />
''Рекомендуемая литература: http://w3.linux-magazine.com/issue/67/JACK_Audio_Server.pdf''<br />
<br />
==== FireWire ====<br />
{{Note (Русский)|Ничего особенного здесь настраивать не нужно, т.к. большинство настроек уже автоматизированы, особенно [https://ieee1394.wiki.kernel.org/articles/j/u/j/Juju_Migration_e8a6.html в новом стеке FireWire] ввиду устаревания подсистемы HAL и сосредоточения внимания на [[udev]]. Вам не нужно редактировать права на устройства, но, если вы подозреваете, что ваше устройство испытывает проблемы именно из-за этого, проверьте файл правила udev {{ic|/lib/udev/rules.d/60-ffado.rules}}, и, если потребуется, создайте новый файл правил {{ic|/etc/udev/rules.d/60-ffado.rules}} и сохраняйте в него свои изменения. Наиболее вероятно, что ваше устройство заработает с разрабатываемой версией драйвера {{AUR|libffado-svn}}.}}<br />
<br />
JACK(2) собран с FFADO, вам понадобится только установить пакет {{Pkg|libffado}}.<br />
<br />
Для проверки того, что ваши устройства FireWire настроены и работают как полагается:<br />
<br />
* Убедитесь, что необходимые модули ядра у вас загружены:<br />
<br />
# modprobe firewire-core firewire-ohci<br />
<br />
* Поддерживает ли ваш чипсет работу с данным устройством;<br />
<br />
http://www.ffado.org/?q=node/622<br />
<br />
* Хватает ли мощности вашего чипсета для работы с данным устройством в полном объёме.<br />
<br />
Мы не можем гарантировать работу устройств наверняка, в частности, основанных на чипах Ricoh (проблемы с кроссплатформенной совместимостью). В большинстве случаев, ваше устройство заработает сразу, но, порой, вы можете столкнуться с различными забавными ситуациями. В случае же неудачи, — вас ждёт сущий ад.<br />
<br />
==== Jack Flash ====<br />
<br />
После установки JACK, вы можете обнаружить, что во флешплеере у вас отсутствует звук. В таком случае, чтобы заставить работать флешплеер с JACK'ом, вам может понадобиться установить пакет {{AUR|libflashsupport-jack}} из [[AUR]].<br />
Вы также можете воспользоваться более гибким методом, позволяющий программам, работающим через Alsa (содержащие флеш) проигрывать звук во время работы JACK, установив JACK плагин для Alsa — {{Pkg|alsa-plugins}}. Включается плагин через редактирование (или создание) файла {{Ic|/etc/asound.conf}} (глобальные настройки) со следующим содержанием:<br />
<br />
{{Bc|<br />
# конвертируем API alsa в API JACK<br />
# для проверки используйте<br />
# % aplay foo.wav<br />
<br />
# используйте это в качестве настройки по умолчанию<br />
pcm.!default {<br />
type plug<br />
slave { pcm "jack" }<br />
}<br />
<br />
ctl.mixer0 {<br />
type hw<br />
card 1<br />
}<br />
<br />
# тип pcm — jack<br />
pcm.jack {<br />
type jack<br />
playback_ports {<br />
0 system:playback_1<br />
1 system:playback_2<br />
}<br />
capture_ports {<br />
0 system:capture_1<br />
1 system:capture_2<br />
}<br />
}<br />
}}<br />
<br />
Вам не понадобится перезагружать компьютер или что-либо ещё. Просто отредактируйте файл настройки Alsa и запустите JACK.<br />
<br />
==== Скрипт быстрой проверки Jack (Quickscan) ====<br />
<br />
Вероятно, большинство людей захотят работать с JACK в режиме реального времени; однако, для этого требуется крутить слишком много ручек и настроек.<br />
<br />
Отличный способ проверить системную конфигурацию и железо на возможность работы с JACK'ом в режиме реального времени — это запустить скрипт Quickscan. Скачать его можно [http://realtimeconfigquickscan.googlecode.com/hg/realTimeConfigQuickScan.pl отсюда], либо установить пакет {{AUR|realtimeconfigquickscan}} из [[AUR]]. Вывод данного скрипта покажет вам узкие места(бутылочное горло) в системе и/или железе, и укажет места, где можно найти более подробную информацию по этому поводу.<br />
<br />
=== A General Example ===<br />
<br />
A general configuration example is [[JACK Audio Connection Kit#A Shell-Based Example Setup]].<br />
<br />
== Realtime Kernel ==<br />
<br />
Since a while ago, the stock Linux kernel has proven to be adequate for realtime uses. The stock kernel (with {{Ic|CONFIG_PREEMPT&#61;y}}, default in Arch) can operate with a worst case latency of [https://rt.wiki.kernel.org/index.php/Frequently_Asked_Questions#What_are_real-time_capabilities_of_the_stock_2.6_linux_kernel.3F upto 10ms] (time between the moment an interrupt occurs in hardware, and the moment the corresponding interrupt-thread gets running), although some device drivers can introduce latency much worse than that. So depending on your hardware and driver (and requirement), you might want a kernel with hard realtime capabilities.<br />
<br />
The [https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO RT_PREEPMT] patch by Ingo Molnar and Thomas Gleixner is an interesting option for hard and firm realtime applications, reaching from professional audio to industrial control. <br />
Most audio-specific distro Linux ships with this patch applied. A realtime-preemptible kernel will also make it possible to tweak priorities of IRQ handling threads and help ensure smooth audio almost regardless of the load.<br />
<br />
If you are going to compile your own kernel, remember that removing modules/options does not equate to a "leaner and meaner" kernel. It is true that the size of the kernel image is reduced, but in today's systems it is not as much of an issue as it was back in '''1995'''. <br />
<br />
In any way, you should also ensure that:<br />
* '''Timer Frequency''' is set to '''1000Hz''' (CONFIG_HZ_1000=y; if you do not do ''MIDI'' you can ignore this)<br />
* '''APM''' is '''DISABLED''' (CONFIG_APM=n; Troublesome with some hardware - default in x86_64)<br />
<br />
If you truly want a slim system, we suggest you go your own way and deploy one with ''static /devs''. You should, however, set your CPU architecture. Selecting "Core 2 Duo" for appropriate hardware will allow for a good deal of optimisation, but not so much as you go down the scale.<br />
<br />
General issue(s) with (realtime) kernels:<br />
<br />
* Hyperthreading (if you suspect, disable in BIOS)<br />
<br />
There are ready-to-run/compile patched kernels available in the ABS and AUR.<br />
<br />
{{note|Before you decide to use a patched kernel, see [http://jackaudio.org/realtime_vs_realtime_kernel http://jackaudio.org/realtime_vs_realtime_kernel].}}<br />
<br />
=== ABS ===<br />
<br />
You can use [[ABS]] to recompile {{Pkg|linux}} with the patch. However, this is not the most useful of methods since updates will overwrite your custom kernel (at least you should add {{Ic|1=IgnorePkg=linux}} to {{Ic|/etc/pacman.conf}}).<br />
<br />
=== AUR ===<br />
<br />
From the [[AUR]] itself, you have the following options:<br />
<br />
* {{AUR|linux-rt}}<br />
* {{AUR|linux-rt-lts}} (Long Term Support, stable release)<br />
* {{AUR|linux-rt-ice}}<br />
<br />
The first two are standard kernels with the CONFIG_PREEMPT_RT patch, while -ice includes patches some may consider to be nasty, while to others are a blessing.<br />
:''See: [https://rt.wiki.kernel.org/ Real-Time Linux Wiki]''<br />
<br />
== MIDI ==<br />
<br />
To work with MIDI you can it is highly recommended that you install a2j ({{AUR|a2jmidid}}), a bridge between alsa midi and jack midi. It allows you to connect applications that only communicate with alsa midi to applications that only use jack midi. Laditray can also start/stop a2j.<br />
:''See: [[JACK#MIDI]]''<br />
<br />
== Environment Variables ==<br />
<br />
If you install things to non-standard directories, it is often necessary to set environment path variables so that applications know where to look (for plug-ins and other libraries). This usually affects only VST since users might have a Wine or external Windows location.<br />
<br />
We would usually not have Linux plug-ins (LADSPA, LV2, DSSI, LXVST) beyond standard paths, so it is not necessary to export them. But if you do, be sure to include those standard paths as well since Arch does not do anything for ''dssi'' or ''ladspa'', and some applications like ''dssi-vst'' will not look anywhere else if it finds predefined paths.<br />
<br />
{{hc|~/.bashrc|2=<br />
...<br />
export VST_PATH=/usr/lib/vst:/usr/local/lib/vst:~/.vst:/someother/custom/dir<br />
export LXVST_PATH=/usr/lib/lxvst:/usr/local/lib/lxvst:~/.lxvst:/someother/custom/dir<br />
export LADSPA_PATH=/usr/lib/ladspa:/usr/local/lib/ladspa:~/.ladspa:/someother/custom/dir<br />
export LV2_PATH=/usr/lib/lv2:/usr/local/lib/lv2:~/.lv2:/someother/custom/dir<br />
export DSSI_PATH=/usr/lib/dssi:/usr/local/lib/dssi:~/.dssi:/someother/custom/dir<br />
}}<br />
<br />
== Tips and Tricks ==<br />
<br />
* IRQ issues can occur and cause problems. An example is video hardware reserving the bus, causing needless interrupts in the system I/O path. See discussion at [http://subversion.ffado.org/wiki/IrqPriorities FFADO IRQ Priorities How-To]. If you have a realtime or a recent kernel, you can use {{AUR|rtirq}} to adjust priorities of IRQ handling threads.<br />
<br />
* Do not use the '''irqbalance''' daemon, or do so carefully [http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.3/html/Realtime_Tuning_Guide/sect-Realtime_Tuning_Guide-General_System_Tuning-Interrupt_and_Process_Binding.html].<br />
<br />
* Some daemons/processes can unexpectedly cause '''xruns'''. If you do not need it - kill it. No questions asked.<br />
<br />
$ ls /var/run/daemons<br />
$ top # or htop, ps aux, whatever you are comfortable with<br />
$ killall -9 $processname<br />
# systemctl stop $daemonname<br />
<br />
* If you are facing a lot of ''xruns'' especially with {{Pkg|nvidia}}, disable your GPU throttling. This can be done via the card's control applet and for nvidia it is "prefer maximum performance" (thanks to a mail in LAU by Frank Kober).<br />
<br />
* You may like to read more on ALSA: http://www.volkerschatz.com/noise/alsa.html<br />
<br />
== Hardware ==<br />
=== M-Audio Delta 1010 ===<br />
<br />
The M-Audio Delta series cards are based on the VIA Ice1712 audio chipset.<br />
Cards using this chip require that you install the alsa-tools package, because <br />
it contains the [[envy24control]] program. [[Envy24control]] is a hardware level<br />
mixer/controller. You ''can'' use alsa-mixer but you will save yourself some<br />
hassle not to try it. Note that this section has no information on MIDI setup or<br />
usage. <br />
<br />
Open the mixer application:<br />
$ envy24control<br />
<br />
This application can be more than a bit confusing; see [[envy24control]] for guidance<br />
on its use. That said, here is a very simple working setup for multitracking with Ardour.<br />
<br />
# On the "Monitor Inputs" and "Monitor PCMs" tabs, set all monitor inputs and monitor PCM's to around 20.<br />
# On the "Patchbay / Router" tab, set all to PCM out.<br />
# On the "Hardware Settings" tab, verify that the Master Clock setting matches what is set in Qjackctl. If these do not match you will have xruns out of control!<br />
<br />
=== M-Audio Fast Track Pro ===<br />
<br />
The M-Audio Fast Track Pro is an USB 4x4 audio interface, working at 24bit/96kHz. Due to limitation of USB 1, this device requires additional setup to get access to all its features. Device works in one of two configuration:<br />
<br />
* Configuration 1, or "Class compliant mode" - with reduced functionality, only 16bit, 48kHz, analogue input (2 channels) and digital/analogue output (4 channels).<br />
* Configuration 2 - with access to all features of interface.<br />
<br />
Currently with stock kernel it runs in configuration 2, but if you want to make sure in what mode you are, you can check kernel log for entries:<br />
<br />
{{bc|<br />
usb-audio: Fast Track Pro switching to config #2<br />
usb-audio: Fast Track Pro config OK<br />
}}<br />
<br />
The interface also needs extra step of cofiguration to switch modes. It is done using option {{ic|device_setup}} during module loading. The recommended way to setup the interface is using file in {{ic|modprobe.d}}:<br />
{{hc|/etc/modprobe.d/ftp.conf|<nowiki><br />
options snd_usb_audio vid=0x763 pid=0x2012 device_setup=XXX index=YYY enable=1<br />
</nowiki>}}<br />
where {{ic|vid}} and {{ic|pid}} are vendor and product id for M-Audio Fast Track Pro, {{ic|index}} is desired device number and {{ic|device_setup}} is desired device setup. Possible values for {{ic|device_setup}} are:<br />
{| class="wikitable"<br />
|+ device modes<br />
! device_setup value !! bit depth !! frequency !! analog output !! digital output !! analog input !! digital input !! IO mode<br />
|-<br />
| 0x0 || 16 bit || 48kHz || + || + || + || + || 4x4<br />
|-<br />
| 0x9 || 24 bit || 48kHz || + || + || + || - || 2x4<br />
|-<br />
| 0x13 || 24 bit || 48kHz || + || + || - || + || 2x4<br />
|-<br />
| 0x5 || 24 bit || 96kHz || * || * || * || * || 2x0 or 0x2<br />
|}<br />
<br />
The 24 bit/96kHz mode is special: it provides all input/output, but you can open only one of 4 interfaces at a time. If you for example open output interface and then try to open second output or input interface, you will see error in kernel log:<br />
{{bc|<br />
cannot submit datapipe for urb 0, error -28: not enough bandwidth<br />
}}<br />
which is perfectly normal, because this is USB 1 device and cannot provide enough bandwidth to support more than single (2 channel) destination/source of that quality at a time.<br />
<br />
Depending on the value of {{ic|index}} it will setup two devices: {{ic|hwYYY:0}} and {{ic|hwYYY:1}}, which will contain available inputs and outputs. First device is most likely to contain analog output and digital input, while second one will contain analog input and digital output. To find out which devices are linked where and if they are setup correctly, you can check {{ic|/proc/asound/cardYYY/stream{0,1} }}. Below is list of important endpoints that will help in correctly identifying card connections (it easy to mistake analog and digital input or output connections before you get used to the device):<br />
<br />
{{bc|<nowiki><br />
EP 3 (analgoue output = TRS on back, mirrored on RCA outputs 1 and 2 on back)<br />
EP 4 (digital output = S/PDIF output on back, mirrored on RCA outputs 3 and 4 on back)<br />
EP 5 (analogue input = balanced TRS or XLR microphone, unbalanced TS line on front)<br />
EP 6 (digital input = S/PDIF input on back)<br />
</nowiki>}}<br />
<br />
=== PreSonus Firepod ===<br />
<br />
#Startup: Either from command line or QjackCtl, the driver is called firewire.<br />
#Specs: The card contains 8/8 preamp'ed XLR plus a stereo pair, in total 10 channels.<br />
#Linking: Cards can be linked together without any problems.<br />
#Hardware Settings: Nothing particular, tweak the settings in QjackCtl to your likings.<br />
<br />
Volume levels are hardware and routing can be done through QjackCtl, even with more cards linked together, this is not a problem.<br />
The ffadomixer does not work with this card yet, hopefully in the future we can control more aspects of the card through a software interface like that.<br />
<br />
=== PreSonus AudioBox USB ===<br />
<br />
#Startup: It is called "USB" by ALSA. <br />
#Specs: Two mono TRS+XLR in, two mono TRS out, MIDI in and out, plus separate stereo headphone jack. Knob controls for both inputs, for main out, and for headphone, four in all.<br />
#Hardware: Works very well, audio and MIDI too. No software mixer controls at all.<br />
<br />
== Restricted Software ==<br />
=== Steinberg's SDKs ===<br />
<br />
It is very clear - we can distribute neither the VST nor the ASIO headers in '''binary package form'''. However, whenever you are building a program which would host Windows ''.dll'' VST plug-ins, check for the following hints (that do not require use of any SDK):<br />
<br />
* dssi-vst<br />
* fst<br />
* vestige<br />
<br />
With that said, if you are building a program which would host native ''.so'' VST plug-ins, then there is no escape. For such cases, Arch yet again allows us to maintain a uniform local software database. We can "install" the SDK ''system-wide'' - you simply have to download it yourself and place it in the packaging directory.<br />
<br />
[https://aur.archlinux.org/packages.php?O=0&K=steinberg-&do_Search=Go Get them from AUR]<br />
<br />
''Note: Steinberg does not forbid redistribution of resulting products, nor dictate what license they can be under. There are many GPL-licensed VST plug-ins. As such, distributing binary packages of software built with these restricted headers is '''not''' a problem, because the headers are simply '''buildtime dependencies'''.''<br />
<br />
== Arch Linux Pro Audio Project ==<br />
<br />
Yes, we have one. Think of "Planet CCRMA" or "Pro Audio Overlay", less the academic connotations of the former: [http://archaudio.org ArchAudio].<br />
<br />
What this means is that the repositories are add-ons, i.e you need to have a running, sane Arch Linux installation.<br />
<br />
It is a relatively new effort although the initiative has been around since<br />
2006/2007. <br />
<br />
History: https://bbs.archlinux.org/viewtopic.php?id=30547<br />
<br />
For all your Arch- and ArchAudio-related audio issues hop on to '''IRC''': #archaudio @ Freenode<br />
<br />
== Linux and Arch Linux Pro Audio in the News ==<br />
* [https://www.linux.com/learn/tutorials/607117-build-a-serious-multimedia-production-workstation-with-arch-linux Build a Serious Multimedia Production Workstation with Arch] - Linux.com article, July 2012<br />
<br />
* [http://www.linuxjournal.com/content/arch-tale An Arch Tale] - Article by fellow musician and writer Dave Phillips, October 2011<br />
<br />
* [http://www.itwire.com/opinion-and-analysis/open-sauce/36698-from-windows-to-linux-a-sound-decision From Windows to Linux: a sound decision] - Interview with Geoff "songshop" Beasley, February 2010</div>Sheykhnur