по сути это некий черновик для всех, кто заинтересован в использовании Open Source софта. может будет кому интересно. на нет и суда нет. буду добрасывать содержание по мере сил и возможностей. если есть желание - помогайте ссылками и советами.
для кого эта статья?- если у Вас всё нормально получается под "виндой" - не для Вас!
- если у Вас Mac OS X - то только в качестве некоего референса. у Вас в принципе уже есть под рукой все описываемые здесь утилиты и каких-то проблем с записью в принципе у Вас быть не должно.
- если Вас задолбало использовать нелицензионный/(ворованный) софт и есть желание попробовать как-то обойтись без него - прочтите, может и не стоит оно того, резко так платформу менять. и на "винде" можно пользовать бесплатные программы с переменным успехом.
- если Вас не устраивают "задержки" (Latency Delay), даже при использовании
ASIO4ALL. или если Вас в принципе не устраивает работа Вашего железа под "виндой" - читать обязательно.
- если у Вас ноут и неохота таскать всюду с собой дополнительные причиндалы в виде USB-звуковых карт (мой случай...)
- если Вы в повседневной жизни отказались от "винды" - дополняйте по специфике Вашего дистрибутива. может кому и пригодится.
Часть 1.
Настройка системы.
основные преимущества использования *NIX подобных систем для обработки потокового аудио1 - работа в
realtime режиме для всех процессов (полная поддержка ядром/(kernel) с возможностью выбора планировщика задач на уровне ядра)
2 -
jack . есть версия и для "винды", но эта тема требует отдельной статейки.
с чего начать?найти свободную флешку, закатать туда Linux, загрузиться с неё и попробовать как-то освоиться. лучше всего осваивать то, с чем Вам помогут разобраться друзья или знакомые. по азам информации море, это - не тема для обсуждения её тут.
какие задачи надо решить в первую очередь?- обеспечение realtime режима работы
- установка необходимого софта
по порядку и начнём.
обеспечение realtime режима работыв дистрибутивах с версией ядра 2.6.* как правило на выбор всегда предлагается несколько "ядер" в зависимости от типовой конфигурации машины. нам необходимо RT-ядро (realtime). в более новых дистрибутивах Linux с ядром 3.2.* и выше можно обойтись стандартными ядрами при условии выбора "честного" планировщика. для этого в параметрах загрузки ядру надо передать параметр:
> elevator=cfqобычно это можно прописать в конфигурационном файле загрузчика (например в /etc/sysconfig/bootloader) строкой
DEFAULT_APPEND="elevator=cfq"загрузились. командой
`> id` проверили, что нормальный юзер в группе "audio". если нет - добавим его туда системными утилитами (они у всех дистров разные) или отрихтовав "напрямую" файл "
/etc/group" . изменения, которые мы тут вносим будут эффективны при следующем логине юзера в систему. перезагружаться не надо. log out -> log in. теперь смотрим на рамки ресурсов, выделяемых системой пользователю. пример, как может выглядеть то, что нас устроит:
> ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 11833
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 99
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 11833
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
опять же, как правило, это настраивается в файле "
/etc/security/limits.conf", НО! в зависимости от используемой системы аутентификации настройки могут быть "раскиданы" по нескольким файлам, обеспечивающим работу сервиса ("
pam" например). смотреть в сторону содержания директории "
/etc/security/*" . что нам потребуется прописать (последние 6 линий файла):
> tail -n 6 /etc/security/limits.conf
sda hard rtprio 99
@audio hard rtprio 99
@audio hard memlock unlimited
@audio hard nice -20
# End of file
как нетрудно догадаться для загадочного юзверя "
sda" установлен максимальный "жёсткий" порог realtime процесса в 99 единиц. для группы "
audio" так же "жёстко" убраны ограничения на использование памяти процессом и выставлены максимальные значения для приоритетов работы каждого процесса. так как означенный юзверь уже входит в группу "audio", то настройки чуток избыточны - не страшно.
log out -> log in.
проверяем, используя команду "
>ulimit -a" . если всё норм - то вывод уже дан выше. что может быть ещё нам полезно? освоение пары дополнительных команд не помешает:
> chrt
> nice
> sysctl -a | grep -i sched
> sysctl --help
генеральная проверка - запуск сервера
jack от юзера (ПРИМЕР!):
> jackd -ndefault -p 128 -R -P 60 -d alsa -n 2 -r 44100 -p 64 -d hw:0,0
разберём параметры запуска сервера:
-ndefault создаёт на локальной машине сервер jack с именем "default"
-p 128 выставляет лимит открытых портов в 128 единиц
-R запускает сервер с realtime приоритетом (чего и хотелось)
-P 60 выставляет значение приоритета в 60 единиц (лимит/макс = 99)
-d alsa указывает на использование архитектуры alsa для вывода звука
далее уже идут параметры конфигурации собсно "альсы". для каждого backend-а (а их может быть несколько) набор параметров различен. читайте справку (> jackd -d НАИМЕНОВАНИЕ --help). тут имеем
-n 2 задержка в воспроизведении установлена в 2 условных периода (значение по-умолчанию)
-r 44100 частота сэмплирования (зависит от железа)
-p 64 устанавливает значение "фреймов" за один условный период
-d hw:0,0 указывает, к какой "железяке" привязать сервер (звуковух-то может быть несколько)
борьба идёт за "фреймы", что очевидно. для сравнения можно взять мою абсолютно никакую встроенную звуковую, с которой ASIO4ALL кое-как работает на величинах задержки от 520ms и сказать, что при настройках данных выше, величины задержек стремятся к нулю. что-то безусловно есть, но как объективно измерить величину - не знаю. ухо этого не слышит.
установка необходимого софтана первый взгляд вопрос простой. накидаю по памяти наименований - разберётся любой:
hydrogen, audacity, rosegarden, ardour, energyXt, jamin, qjackctl, lmms и т.д. и т.п.
вариантов масса. проблема только в одном (на мой взгляд):
- организация VST-хоста под *nix-ами с привязкой к jack-у.
VST плагины для *nix имеют совершенно другой формат, нежели для "винды". есть множество плагинов постобработки для LADSPA (некоторые очень и очень неплохи, только вот "копать" их надо долго и вдумчиво). могу предложить вариант, который сам и пользую:
FSTавтору надо памятник ставить рядом со стат
'уей Свободы. для удачной работы может потребоваться установка кое-чего вручную с
http://drobilla.net/software/ . там размещены библиотеки дополнительной поддержки для LV2 (lv2, lilv, serd, sord, sratom). будет просто здорово, если Вы найдёте это в репозитариях Вашего дистрибутива. а если нет - то установка проста (описана в файлах INSTALL). есть один нюанс - файловая система, на которой расположены используемые VST плагины (сами dll-ки), должна быть примонтирована/(и доступна юзеру) с параметром "
exec" . это важно, иначе некоторые плагины отказываются работать.
для тех, кому нужны старые версии fst -
берите родной SDK плагинов по этой ссылке (всё доступно и с сайта стейнберга, но регистрироваться ради одного файла...).
для тех, кто не понял, как это всё работает -
а вот так! (по ссылке - скриншот в 1Мб весом!)
Часть 2.
Софт.
тут можно строчить горы бесполезного. всё меняется слишком быстро. проще сказать, чего нет. вернее, чего автор пока не нашёл или считает найденное непригодным к использованию.
☠ ☞ нет "родных" хороших гитарных ампсимов. те, что есть, хорошими назвать язык не поворачивается.
коротко о том, что есть и чем можно пользоваться.
☛
Звук в Linux - старый пост 2007-го года. чем-то может пригодиться.
☛ организация VST-хоста для работы со standalone "виндовыми" dll-ками
FSTdssi-vstопыт показывает, что в системе нужны обе приблуды. на всякий случай.
☛ IR Loader (Convolution plugin) - работа с "импульсами"
rakarrack - там есть модуль "Convolotron". работает с "*.wav" файлами импульсов, есть регулировки микса (dry/wet), панорамы (pan), уровня выхлопа, фильтр по нч, feedback и lengh (Measured in milliseconds. This tells Convolotron where to truncate the IR. Set this to the maximum value your CPU can afford without Xruns. A longer Length will result in a more true model of the system being convolved). грубо говоря, "Lengh" как бы "усекает" рабочую длину импульса. чем больше - тем выше нагрузка на процессор и лучше качество. можно попробовать эту приблуду наряду с "виндовыми" аналогами того же
"LeCab".
☛ быстренько попробовать тот или иной "родной" плагин (Linux native) обработки
jack-rack - "вытаскивает" всё, что найдёт в системе (LADSPA и прочие плагины). есть вырианты ОТНОСИТЕЛЬНО неплохой обработки, если у Вас прямые руки. красной кнопки с надписью "сделать ... гхм... очень хорошо ... гхм ..." тут нет.
☛ ритм-секция
hydrogen - тыц-тыц, тыц-тыц, тыц-тыц, тыц-бум, .... очень сложно оторваться, да....
☛ запись/редактирование материала - вагон вариантов. наиболее известны
AudacityArdourсам часто пользую "arecord+mplayer/mencoder". "тупые" консольные утилиты, не дающие возможностей напортачить.
по поводу "нормальной DAW" и прочих высказываний в духе "нету проги, чтобы делала мне всё очень хорошо и сразу". по моему скромному мнению, *nix системы предлагают (и это является одной из фундаментальных концепций) множество мелких утилит, заточенных каждая строго под свою определённую задачу. и если они что и делают - то делают это великолепно. большего тут не требуется.
автор до сих пор хранит оригинальный диск Steinberg WaveLab-4.0 и никогда не испытывал ни желания ни потребности использовать в "винде" что-то другое. в *nix "скатился" до "arecord+mencoder/mplayer" и иногда "audacity/ardour". все эти программы очень хорошо работают и нареканий не вызывали ни разу.
*nix предлагает любому пользователю
полноценную realtime обработку . "винда" realtime не может "by design". больше говорить не о чем.
offtopic -> flame очень распространённым заблуждением является мнение о том, что считать хорошим Linux дистрибутивом. не вдаваясь в подробности и без указывания пальцем на конкретные примеры можно заметить лишь то, что суть и основа Linux - это ядро, kernel. наибольший вклад в разработку ядра (читай Linux-а) оказывают Novell (SuSE, SLES, SLED, openSuSE) и Red Hat (Red Hat, Fedora). точка. абзац.
Часть 3.
Если что-то не работает...
"Нам нужен секс, как китайцам - рис!
Чтоб член радиомачтой топорщился!
В обе дырки гляди, не поймай сифилис!
А то будешь перед врачами корчиться..."
(
В.В.Маяковский)
если в двух словах, то чем больше Ваш опыт работы в *nix подобных системах - тем меньше хлопот они Вам доставляют. по большому счёту всё упирается в поддержку Вашего оборудования. если оно "взлетело" - то всё остальное, как правило, решается множеством способов.
☭ наиболее часто встречаются на форумах и в рассылках сообщения о том, что "...куда-то пропали интерфейсы захвата звука...". т.е. Вы поёте в микрофон, лабаете что-то в Line-In, слышите вывод звука в колонках/наушниках, но не можете это дело записать ни в jack, ни в alsa. причина этого свинства - pulseaudio. к Огромному сожалению эту поделку из системы удалять НЕЛЬЗЯ! потому, что alsa в современных дистрибутивах собрана с поддержкой pulse и безболезненно выкинуть этот компонент хоть и очень хочется - но...
в основном нам в системе нужны два установленных пакета:
alsa-plugins-pulse | Pulseaudio Plug-In for the ALSA Library
pavucontrol | PulseAudio Volume Control
кроме этого обязательно стоит иметь alsamixer (если нет отдельным пакетом - то должно быть что-то типа):
alsa-utils | Advanced Linux Sound Architecture Utilities
в "pavucontrol" на вкладке "Input Devices" выставить "Line In", в консольном "alsamixer" последовательно нажать "F6" (выбрать нужную звуковую карточку) и "F5" (выбрать регулировку всего), после чего отрегулировать уровни сигнала для "Capture Interfaces".
☭ отдельно стоит упомянуть особенность alsa (регулировки доступны в "alsamixer"-е) для всех "Capture" источников поддерживать возможность усиления сигнала (некий аналог "бустера" или тупого предусилителя) при помощи одноимённого канала (так и называется - "Capture"). при этом очень легко получить искажения (distortion, перегруз) для любого входящего сигнала. "чистый" сигнал Вы получите только прикрутив "Capture" в ноль и установив уровень входящего сигнала для интерфейсов (Line-In, Mic, Aux) в "[dB gain: 0.00, 0.00]". опция позволяет получить максимум "Capture [dB gain: 22.50, 22.50]" и наряду с пределами регулировок интерфейсов от "[dB gain: -34.50, -34.50]" до "[dB gain: 12.00, 12.00]" мы имеем хороший пред.
☭запретить pulseaudio стартовать демона можно отредактировав либо глобальный файл конфигурации
> tail -n 1 /etc/pulse/client.conf
autospawn = no
либо рихтанув "хомяка"
> tail -n 1 ~/.pulse/client.conf
autospawn=off
если у Вас есть какие-то вопросы - пните автора в комментариях или/лучше ЛС (чтоб уведомление наверняка приехало). потихоньку постараюсь эту статейку дополнить.