Автор Тема: Linux (*NIX) - общие принципы звуковой обработки  (Прочитано 2456 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sda00 Автор темы

  • Эксперт
  • *****
  • Сообщений: 2605
  • Репутация: +1438/-142
  • смотрю на стриптиз, омаров жуя! не трачу время на форуме я!
по сути это некий черновик для всех, кто заинтересован в использовании 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-ками
FST
dssi-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  - тыц-тыц, тыц-тыц, тыц-тыц, тыц-бум, .... очень сложно оторваться, да....

☛ запись/редактирование материала - вагон вариантов. наиболее известны
Audacity
Ardour
сам часто пользую "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

если у Вас есть какие-то вопросы - пните автора в комментариях или/лучше ЛС (чтоб уведомление наверняка приехало). потихоньку постараюсь эту статейку дополнить.
« Последнее редактирование: Октября 23, 2012, 02:09:49 от sda00 »

Оффлайн reido

  • Эксперт
  • *****
  • Сообщений: 1383
  • Репутация: +320/-0
  • BlastWave Records
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #1 : Октября 03, 2012, 00:18:57 »
Мне лично интересна эта тема, хотя бы просто из-за спортивного интереса, неоднократно пробовал ставить Ubuntu Studio, лично моя главная проблема это завести мою звуковую карту E-MU 1212m (драйверов нету, да чего говорить даже под win7 нормальных и стабильных до сих пор нет!! и наверное не будет). пробовал читать в инете как завести под линукс карту мою...но очень не просто все...плюнул...
Если бы удалось завести карту, то я бы стал экспирементировать дальше..а так :hmmm:

Оффлайн Santjago

  • Живу на форуме
  • *******
  • Сообщений: 13478
  • Репутация: +1029/-40
  • Hard As A Rock
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #2 : Октября 03, 2012, 00:56:47 »
reido, а какие проблемы с дровами 1212м для win7 ? У меня 1616, и к чему, а к дровам никогда ни малейших нареканий небыло...

Оффлайн sda00 Автор темы

  • Эксперт
  • *****
  • Сообщений: 2605
  • Репутация: +1438/-142
  • смотрю на стриптиз, омаров жуя! не трачу время на форуме я!
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #3 : Октября 03, 2012, 01:28:30 »
лично моя главная проблема это завести мою звуковую карту E-MU 1212m (драйверов нету, да чего говорить даже под win7 нормальных и стабильных до сих пор нет!! и наверное не будет).

странно... с 2006-го года вроде как всё наладили в "альсе".  как вариант всегда можно "накатить" OSS... 4Front что-то последние годы как в застое, но скачать архивчик и взглянуть, поддерживается ли эта чудная карточка, можно (ради спортивного интереса хотя бы)

Оффлайн tailz

  • Эксперт
  • *****
  • Сообщений: 2465
  • Репутация: +374/-2
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #4 : Октября 03, 2012, 09:00:00 »
Цитировать
- если Вас задолбало использовать нелицензионный/(ворованный) софт и есть желание попробовать как-то обойтись без него
Господи, да время, потраченое на борьбу с ужасным опенсорсным аудиософтом стоит гораздо больше, чем нормальный лицензионный софт :)

Оффлайн reido

  • Эксперт
  • *****
  • Сообщений: 1383
  • Репутация: +320/-0
  • BlastWave Records
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #5 : Октября 03, 2012, 22:11:56 »
reido, а какие проблемы с дровами 1212м для win7 ? У меня 1616, и к чему, а к дровам никогда ни малейших нареканий небыло...
проблема в том, что до сих пор нет законченной версии для Win7...есть только бета...у меня иногда драйвер отваливается и нет звука...периодичность примерно раз в месяц...под ХР стабильней.. тебе повезло что нет проблем)

... и добавил:

странно... с 2006-го года вроде как всё наладили в "альсе".  как вариант всегда можно "накатить" OSS... 4Front что-то последние годы как в застое, но скачать архивчик и взглянуть, поддерживается ли эта чудная карточка, можно (ради спортивного интереса хотя бы)
мне там мало что понятно, как установить драйвера на Linux...гиблая затея для меня :crazy:
« Последнее редактирование: Октября 03, 2012, 22:14:59 от reido »

Оффлайн Santjago

  • Живу на форуме
  • *******
  • Сообщений: 13478
  • Репутация: +1029/-40
  • Hard As A Rock
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #6 : Октября 03, 2012, 22:52:36 »
reido, у тебя частоты в Patch Mix совпадают с частотами в аудионастройках оси? а то бывает такое, что WDM и ASIO под разными частотами и не могут поделить карту...

Оффлайн Vortex II

  • Эксперт
  • *****
  • Сообщений: 1811
  • Репутация: +221/-8
  • берегите уши!!!
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #7 : Октября 03, 2012, 23:12:05 »
давно хочу заморочиться и поднять все это дело под линуксом. но не для результата, а чисто из линуксоидных побуждений, чтобы затрахаться

Оффлайн sda00 Автор темы

  • Эксперт
  • *****
  • Сообщений: 2605
  • Репутация: +1438/-142
  • смотрю на стриптиз, омаров жуя! не трачу время на форуме я!
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #8 : Октября 04, 2012, 01:18:37 »
давно хочу заморочиться и поднять все это дело под линуксом. но не для результата, а чисто из линуксоидных побуждений, чтобы затрахаться
наверное многим использование *nix-ов в повседневной жизни не нужно. всё же есть некий "порог входа" в мир открытого ПО. смысл учить ся чему-то новому, что нигде, по большому счёту, больше не пригодится? тем более если всё работает и всем доволен. поэтому нужны какие-то веские основания. если их нет - зачем себя насиловать?

меня, например, радует, что всё пашет без задержек. jack - это очень большой и вкусный торт. да и пользую при игре в основном виндовые dll-ки standalone VST плагинов. щас вот с родными эффектами разбираюсь потихоньку. они хорошие, только требуют опять же времени и желания копать это дело. ну а с записью/сведением в *nix вроде всё норм.

Оффлайн reido

  • Эксперт
  • *****
  • Сообщений: 1383
  • Репутация: +320/-0
  • BlastWave Records
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #9 : Октября 04, 2012, 08:45:33 »
reido, у тебя частоты в Patch Mix совпадают с частотами в аудионастройках оси? а то бывает такое, что WDM и ASIO под разными частотами и не могут поделить карту...
ну в повседневе конечно совпадает, а при проблемах... я уже и не вспомню, последнее время тупо накатываю дрова по верх, не разбираясь в причине, нет желания ни времени...

Оффлайн Monolith

  • Эксперт
  • *****
  • Сообщений: 1768
  • Репутация: +113/-22
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #10 : Октября 04, 2012, 15:01:19 »
ага...кому нужны проблемы,если их не хватает...как раз обзавестись линем и трахаться,трахаться с ним целыми днями+традиционные танцы с бубном!
Интереснейшее время провождение и досуг.
Как тоже меня имела  Ubuntu Studio,но я оказался выносливее и бросил всё к черту.....

... и добавил:

Есть тут такая темка на форуме.... поискать только надо,через поизг,давно поднимали её.....
И достойного DAW для линя я тогда не нашел,акромя РИПЕРА ,который пашет только через WINE
« Последнее редактирование: Октября 04, 2012, 15:11:22 от Monolith »

Оффлайн sda00 Автор темы

  • Эксперт
  • *****
  • Сообщений: 2605
  • Репутация: +1438/-142
  • смотрю на стриптиз, омаров жуя! не трачу время на форуме я!
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #11 : Октября 23, 2012, 02:15:08 »
дополнил статейку. жалуйтесь.
спасибо за внимание.

Оффлайн reido

  • Эксперт
  • *****
  • Сообщений: 1383
  • Репутация: +320/-0
  • BlastWave Records
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #12 : Января 13, 2013, 03:01:25 »
Прошло какое-то время и я все же решил снова возобновить эксперименты с linux. Много всяких систем попробовал, остановился на linuxmint 14. В принципе все хорошо, звук удалось завести, теперь это не вызывает проблем, много еще чего научился и попробовал, жажда получить новые знания и интерес удовлетворены :) Однако теперь уже тупик: cubase под linux нету :crazy: а в reaper мне нет смысла работать.
Хотел спросить у знающих: с недавнего времени перестал работать правый канал на моей  EMU 1212m при воспроизведении в плеере любом (linuxmint 14 mate, в винде работает все). Что можно попробовать, что бы это исправить? Пробовал накатить заново alsa - не помогает. может надо удалить все драйвера звуковые и накатить заново? как лучше это сделать?

Оффлайн SadKo

  • Завсегдатай
  • ***
  • Сообщений: 278
  • Репутация: +27/-1
  • Angry Proger
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #13 : Августа 22, 2013, 14:52:12 »
Однако теперь уже тупик: cubase под linux нету :crazy: а в reaper мне нет смысла работать.
А ardour на что вам? Вон, недавно третья версия вышла - я очень рад, по сравнению со второй версией - земля и небо.

Хотел спросить у знающих: с недавнего времени перестал работать правый канал на моей  EMU 1212m при воспроизведении в плеере любом (linuxmint 14 mate, в винде работает все). Что можно попробовать, что бы это исправить? Пробовал накатить заново alsa - не помогает. может надо удалить все драйвера звуковые и накатить заново? как лучше это сделать?
Поковыряйся в alsamixer. Возможно, один из каналов сброшен в ноль на нём.

Оффлайн Snejok

  • Новичок
  • *
  • Сообщений: 43
  • Репутация: +1/-0
  • Desperate plans make sense in a low life
Re: Linux (*NIX) - общие принципы звуковой обработки
« Ответ #14 : Августа 22, 2013, 16:42:42 »
А чисто для linux, есть какой-нибудь родной нестыдный секвенсор, чтоб без вайна и т.п.?