Программист Java как следствие иногда Android
0,0
рейтинг
20 сентября 2013 в 20:58

Администрирование → Настройка e-mu 0204 usb в ubuntu GNU/linux tutorial

Пару дней назад купил я себе внешнюю звуковую карту e-mu 0204. Купил с рук, за 2 т.р. Владелец был счастлив, я то же. Оба думали, что надули друг друга. Стоит железка в магазине 4,5 т.р. Принес домой подрубил, звук сказочный. Но, обнаружился косяк. В непредсказуемые моменты времени слышны были тихие пощелкивания и перерывы звука. У меня отличные наушники ATH-SJ55. Соответствуют карточке по уровню, непонятно почему это вдруг началось. Разбираемся как исправить. Да, сразу отмечу, все эти проблемы описаны в инструкции!!! Так что весь ор вокруг карточки говорит лишь о том, что орущие просто ее не открывали. Инструкции у меня в комплекте не было, я в интернете ее позже нашел. Все настройки в статье все равно понадобятся.

Я конечно слышал о проблемах с картой и попробовал применить описанный в куче мест способ проигрывания звукового файла с тишиной что бы занять канал и вроде как щелчки должны исчезнуть так как «карта перестанет переходить в режим энергосбережения». Что я только не начитался, даже то, что ей питания не хватает и надо внешний usb хаб купить с отдельным блоком питания. Все это не помогло (хаб не пробовал, да и в позже прочитанной инструкции они прямо противопоказаны).
Залез в настройки pulseaudio. В железке есть аппаратный буфер, куда кладутся данные после оцифровки. Звуковой системе компа надо в него класть звук, вообще через него идет общение звуковухи и компа что бы звук не прерывался (туда то и надо смотреть).
Если на компе неверно настроены параметры работы с буфером, будут щелчки. Это я выяснил путем ковыряния настроек и чтения форумов с расчетом значения этих параметров. Второй из здесь описанных вариантов настройки возможно подойдет и для винды, так как есть сборка jackd для нее, кажется. Хотя в винде можно наверное и по другому настроить. На линуксе все проще. Сначала добавим себя в группу audio:
usermod -a -G audio theusername

Оно надо что бы добавить пользователя theusername в группу audio так как без этого сервер jackd и pulsaudio не сумеет выделять память и стартовать в режиме реального времени в случае настройки с ним. Далее настройки могут разниться.

Вариант первый, простой:



Я сломал всю башку прежде чем сумел настроить все это в линуксе и вообще понять в чем дело, сначала уже расстраиваться начал. Кстати, первым, попробуйте выбрать более простой ресемплер и больше ничего. Все проблемы с артефактами в звуке упираются в производительность компа и к звуковухе не имеют ровно никакого отношения. Самый простой способ сделать так что бы комп поспевал генерить звук это как раз сменить ресемплер на более простой. Хотя, что стоило производителю включить в комплект инструкцию? Может быть она и была, я с рук интерфейс брал. Тем, кто захочет настроить, смотреть в /etc/pulse/daemon.conf
#будет работать только если вы в группу audio себя добавили.Причем сначала стоит просто попробовать только этот параметр, высока #вероятность, что все просто заработает. 
realtime-scheduling = yes
#можно и другие значения попробовать
realtime-priority = 10
#запрещаем закрывать демон, если он не используется
allow-exit = no
exit-idle-time = -1
#тут можно и что то поменьше или получше, зависит от машины, у меня i7 четырех ядерный, он не заметит, а слабая машина ляжет
#причем если я ставил src-sinc-best-quality то требовались долгие манипуляции с настройками и все равно ничего толком не помогало
#то есть это главный параметр!
resample-method = src-sinc-medium-quality 
#битность общения с звуковухой
default-sample-format = s24le
#в пульсе ресамплинг проходит весь звук, так как источники имеют зачастую разную частоту дискретизации и по другому никак микшер не сделать
#я поставил максимум частоты
default-sample-rate = 192000
alternate-sample-rate = 192000
#Эти параметры можно крутить именно о их настройки написано на вышеприведенном форуме, но поставив более простой метод ресемплинга, мне это не понадобилось (в начале все же крутил, потом закомментировал)
;default-fragments = 4
;default-fragment-size-msec = 3


Еще возможно надо залазить в: /etc/pulse/default.pa
И там поставить:
load-module module-udev-detect use_ucm=0 tsched=0

вместо
load-module module-udev-detect use_ucm=0

После установки более простого метода ресемплера, мне эти настройки не понадобились. Сначала стоит попробовать без этого параметра, так как работать скорее всего будет и без него, зато без него нагрузка на процессор даже на самом лучшем ресемплере будет невысокой. Собственно низкой нагрузкой на процессор и хорош этот вариант настройки в целом. Вместе с tsched=0 все работает стабильнее, при этом надо понимать, что при этом параметре возрастет нагрузка на процессор от pulseaudio. Это, кстати, убьет все преимущества пульсы перед алсой, но настраивать алсу мне лень, а щелчки без пульсы те же.

Щелчки останутся только при старте компа (когда карта включается), небольшие, да еще при подключении очередного клиента к звуковухе. Описывать настройку pulseaudio для слабого компа я тут не стану, суть в том, что ресемплер надо попроще поставить и приоритет pulseaudio поднять. Нужно отметить, что этот метод настройки сильно зависит от производительности компа. Если у вас на процессоре плавает частота (ondemand планировщик) то иногда производительности может не хватать и будут артефакты в звуке. Есть и более интересный способ настройки, по моим наблюдениям он намного стабильнее и качественнее.

Вариант второй, кошерный:


В /etc/pulse/daemon.conf
#с этим методом спокойно и без косяков работает самый классный ресемплер
resample-method = src-sinc-best-quality 
default-sample-format = s24le
#в пульсе ресамплинг проходит весь звук, так как источники имеют зачастую разную частоту дискретизации и по другому никак микшер не сделать
#но я поставил максимум частоты
default-sample-rate = 192000
alternate-sample-rate = 192000

Остальное по умолчанию. Даже tsched=0 не ставим! Пользователям skype у которых он хрипит при старте, думаю то же это решение подойдет. Проблема в skype в том, что частота дискретизации файла, который он проигрывает на старте, не совпадает с частотой ресемплера, вот и хрипит и на многих карточках. Наша же карточка то претендует на начальный уровень профессиональных, так что вообще то логично, что она рассчитана на профессиональный софт. В общем, едем дальше.
Ставите jackd, в нем настраиваете количество выборок в буфере 1024 и количество периодов на буфер 2 (можно покрутить и другие варианты этих значений если щелкает, так как буфер настраивается в зависимости от конкретного компа и его возможностей). Минимальное количество выборок 128 для данной карты, а количество периодов на буфер 2, можно поэкспериментировать.
В зависимости о того запустите ли вы jackd в режиме реального времени или нет, буфер может быть разный. По сути это те же параметры буфера, что и в pulseaudio, только в их исходном виде, а не расчетные. Ориентироваться в верности можно на сообщения о рассинхронизации, их надо что бы было 0, хотя в режиме реального времени на этот и так не слишком надежный показатель ориентироваться вообще нельзя, остается просто на слух. Это в qjackctl в окне сообщений найдете, вкладка статус, ее то же надо установить, так же эти числа есть и в окне статуса в главной панели.
Так же обратите внимание на режим запуска jackd, в реальном времени или нет, стоит попробовать оба и посмотреть как будет вести себя звук под нагрузкой компа. Если выставите режим реального времени, не забудьте поставить для pulseaudio то же режим реального времени (в том же daemon.conf):
realtime-scheduling = yes
realtime-priority = 5

Только приоритет пульсы должен быть меньше чем у jackd. По умолчанию jackd запускается с приоритетом 10.
В общем окно настроек у меня выглядит так:
image
Обратите внимание на параметр «Тайм аут», если вас раздражают небольшие артефакты при повторном подключении клиентов (например если звука долго не было, а потом вы включили музыку), то можно там выставить время пока jackd будет держать канал. Например минуту. Это приведет к постоянной загрузке процессора, зато окажет тот же эффект, что и проигрывание файла с тишиной. Но, это если артефакты вообще останутся после настройки. Я сравнивал, встроенная карточка на моем ноуте работает точно так же, немного дергаясь при переключении мелодий в проигрывателе, что вполне логично, так просто слышится резкое прекращение звука или начало нового не с нулевой громкости (без fade in/out). Так что не стоит предъявлять невероятных требований там, где это не нужно.
Потом pulseaudio заставляете выводить через jackd звук, путем добавления команды, которая выполняется после старта jackd.
Команда
pacmd set-default-sink jack_out
Это то же в параметрах qjackctl задается. Теперь pulsaudio работает микшером и результат выводит в jackd, который напрямую льет звук в alsa драйвер и через него в железку.
В конечном итоге я просто взял qjackctl да поставил в автозагрузку, настроив все параметры в ней. В отличии от pulseaudio параметры работы с буфером понятны и расчетов не требуют, а так же очевидно влияют на работу.

Щелчки исчезнут, звук будет чистый, шелковистый. Причем всегда, во всяком случае я пока не слышал больше щелчков ни под нагрузкой, нигде, даже при воспроизведении нескольких звуковых источников из разных мест и подключении разных клиентов к звуковухе.

UPD №1: Так же я крутил latency I/O, но вразумительных результатов не получил, помимо этого указав конкретно, что надо два канала вывода. Я подробно не лез, вроде бы latency I/O задает некоторый учет задержек внутри самой звуковухи, туда можно загнать и значительно большие значения. Но, это уже просто ковыряние настроек из любопытства. Оказалось, что хорошая звуковуха и наушники, имеют свои недостатки, я теперь слышу даже совсем мелкие косяки в звуке, а звуковая паранойя, заработанная за день разбирательств с настройками, приводит к тому, что непонятно, то ли это в самой исходной записи косяк, то ли буфер подкрутить. Хотя качество звука превосходное все время.

UPD №2: Нашел отличный обзор карточки. В нем есть параметры буферов и задержек для нее. Что может послужить основой для более точной настройки.
RightMark Audio Analyzer 6.2.3 PRO

Device: ASIO E-MU 0204 | USB

Features:
Input channels: 2
Output channels: 4
Input latency: 440
Output latency: 440
Min buffer size: 88
Max buffer size: 22000
Preferred buffer size: 440
Granularity: 44


Для сравнения

Device: ASIO E-MU 0202 | USB

Features:
Input channels: 2
Output channels: 2
Input latency: 2138
Output latency: 2714
Min buffer size: 384
Max buffer size: 96000
Preferred buffer size: 1920
Granularity: 192


Device: ASIO E-MU 0404 | USB

Features:
Input channels: 4
Output channels: 4
Input latency: 22083
Output latency: 22216
Min buffer size: 88
Max buffer size: 22000
Preferred buffer size: 22000
Granularity: 44


Обратите внимания на размеры буфера! Вот почему у 0202, 0404 проблем нет, а у 0204 есть! В случае с 0404 буфер такой же как у 0204, но она сообщает «Preferred buffer size: 22000» то есть сама говорит, по протоколу, что буфер надо пользовать на всю катушку сразу, потому настройка не требуется. Вот поэтому и требуется настройка 0204, на мой любительский взгляд, так как она говорит софту на компе «Preferred buffer size: 440». Но, опять же, зато гляньте на latancy, она зависит от параметров буфера, так что 0404 такую задержку имеет потому, что буфер 22000 предлагает, а предлагает она его для перестраховки, так как профи перенастроит по своему если надо. Настройка вполне себе приводит карту в отличное состояние. У производителей других карт (и этой серии в том числе) расчет был вероятно такой «выставим буфер на максимум, если задержки пользователь не заметит, отлично, зато буфера хватит, если заметит, сам знает где настроить, раз заметил». Расчет, как выясняется, верный.

UPD №3: Найдена великолепная статья с раскладыванием всего по полкам, что связано с буферами. Да, и не забывайте, ресемплер тратит ресурсы процессора, значит от того какой тип ресемплера вы выберете будет зависеть максимальная нагрузка на проц, если вы переборщите, то при ресемплинге нескольких источников, проца не хватит и будут рассинхронизации, а значит щелчки. В общем меру надо знать.

UPD №4: ВНИМАНИЕ!!! Я нашел простое решение! Читать инструкцию :) В ней написано про эти буфера и про гул, что возникает у некоторых (там есть специальные переключатели на дне что бы гул убирать). В общем не знаешь, что делать, читай инструкцию! :) У меня в комплекте ее не было, вот и возился, иначе сразу бы прочел. А те, кто орет о недостатках просто ее не читали!!! :) Правда, надо признать, софт под винды для карточки вероятно так себе, судя по отзывам, я сам его не видел.

UPD №5: Для пользователей линукс дополнительно сообщу, что можно настроить все в чистой алсе и еще ссылка. Так как 0404 и 0204 очень похожи, скорее всего инструкция подойдет и в данном случае, но, я не проверял, как я и говорил, возится мне лень. Плюс к всему, я не спец так что могу ошибиться, судя по тому, что нагрузка на процессор при моих настройках меняется в зависимости от того какая частота дискретизации у исходного звукового файла, значит передискретизацию записи в 192000 не проходят и звук выводится в таком виде на карту. Это значит, что инструкция по вышеприведенным ссылкам и вывод через чистую alsa не так и совершенны по сравнению с выводом с помощью pulseaudio+jackd+alsa. Несовершенны с очки зрения простоты настройки конечно. Но, вам решать. Правда надо отметить, что с момента написания инструкции по этим ссылкам alsa совершенствовалась и у меня устройство вообще автоматом просто заработало, только с щелчками. Так что настроить dmix и буфера скорее всего несложно и просто в alsa.

UPD №6:
Найден самый простой способ настройки из всех вышеперечисленных. Достаточно поставить частоту дискретизации 88200 и все пашет при обычной pulseaudio. Частота выставляется в вышеприведенных настройках… если вас конечно такая устроит. Меня устроила, чем проще, тем лучше.

UPD №7:
В убунте 14.04 проблем больше просто нет. Но. Я использую нормализацию звука, может быть дело в этом. Потому оставлю здесь метод нормализации звука в Pulseaudio:
Ставите пакеты с ladspa плагинами. Какой конретно я не знаю, я просто поставил все по поиску, они маленькие и ставятся в одну папку.
Добавляем в конец файла /etc/pulse/default.pa несколько строк

1. load-module module-ladspa-sink sink_name=ladspa_output.dysonCompress master=0 sink_properties=device.description=«Compress» plugin=dyson_compress_1403 label=dysonCompress control=-9.0,1,0.5,0.7
Эта строка загружает модуль нормализации звука. Нормализация не позволяет громкости звука прыгать резко и как следствие меня бесить :)

2. set-default-sink 2
Номер 2 у меня потому, что мне надо включить нужную звуковуху по умолчанию, что бы руками это не делать.

3. set-sink-volume 2 40000
Настраиваем громкость на серединку, опять же что бы не подпрыгивать когда первый звук в наушниках зазвучит.

В результате может поэтому, может потому, что софт дорос, никаких косяков в работе звуковухи нет даже без других настроек, да и нормализация скорее всего не нужна, но мне удобно с ней.
@3draven
карма
21,0
рейтинг 0,0
Программист Java как следствие иногда Android
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (25)

  • +2
    У меня такой же интерфейс, и сразу после покупки с ним начались проблемы: иногда в звук начинали подмешиваться шумы, со временем нараставшие, и в какой-то момент полностью поглощавшие весь звук.

    Я пробовал использовать ее под Windows и под Ubuntu; для простого проигрывания музыки и в DAW's, перепробовал все настройки, до которых мог дотянуться, но ничего не помогало. К счастью, страдал я недолго, и однажды, случайно, я понял, в чем была проблема. Все дело было в том, что так как родной USB кабель был довольно длинный, я воспользовался завалявшимся у меня более коротким. И, похоже, что родной был экранированным (тут, как в терминологии, так и в понимании могу ошибаться), а с неродным ловились какие-то наводки и возникала положительная обратная связь. Я поменял кабель, и с тех пор все отлично.

    Так что иногда причина может лежать за границами программного обеспечения.
    • 0
      Да, с кабелем надо быть внимательным, у меня кабель родной, я то же подумал, что длинноват он для звука, но очень он качественный и экранирован хорошо, да и производитель не просто так именно такой в комплект включил. Что до шумов и поглощения всего звука, тут есть еще одна фишка, пока искал решение я наткнулся на сообщение о том, что на низкоомных наушниках карточка может уходить в перегруз, так как рассчитана на высокоомные. Как говорится, за что купил, за то продал :)
      • +1
        Самое приятное с такой карточкой, нет шумов. Наводки на встроенной карточке приводили к постоянном жужжанию от мышки и прочего, теперь — наслаждаюсь тишиной в наушниках, когда ничего не звучит. Сам же звук не сказать что бы прямо разительно отличается, у меня и встроенная была очень хорошая.
    • +1
      На дне карточки есть пара переключателей… догадались куда воткнуть :) Я случайно заметил и полез читать инструкцию. В инструкции написано, что они нужны для исключения замыкания по земле и за которого возникает гул и прочие артефакты. В инструкции подробно расписано как с ними быть и зачем оно надо.
      • 0
        Так же (о чудо!) там же написано почему щелчки :) В комплекте бумажная инструкция не шла иначе я бы сразу ее прочел, пришлось в интернете искать :)
      • 0
        Эти переключатели относятся только к цепям входа и не влияют на выход.
  • 0
    А я свою сдал по гарантии. Если в режиме DirectSound были только щелчки, то в ASIO (а мне без него никак) — звук сначала всё больше заикался, а потом и вовсе пропадал до перезапуска карты.
    • –5
      А звук заикался с наушниками? Для нее ушки нужны от 200Ом где то.
      • +1
        Плюс ко всему, при неправильной настройке размеров этих самых буферов у меня он то же начинал заикаться. Так что дело может быть вовсе не в железке.
      • +1
        Для неё нужны не наушники, а прямые руки инженеров. И программистов тоже. Четвертый год подряд пользуюсь карточками ESI (aka EgoSys) — всё идеально. Ни одного щелчка, ни одного заикания.
        • 0
          Наверное софт для карточки надо было бы лучше писать в виндовсе, не знаю, я там их не видел, но в линуксе то они не виноваты, настройки в сторонних проектах делаются, а дров открытых компания не поддерживает насколько я знаю. Плюс, я думаю, что профессиональные железки должны требовать профессионального подхода и знаний, думается настоящий спец по звуку (не я) сразу бы все настроил и вообще не знал проблем. Карточку же выпустили с очень хорошей начинкой, но по бюджетной цене, в результате она попала в руки к любителям, которые понятия не имеют как с таким железом работать, вот и орут, что плохая. Ведь бюджетные карточки с убогими параметрами потому и убогие, что рассчитаны на воткнул и забыл.
          • 0
            Мне почему то кажется, что эти проблемы вызваны достоинствами карты, а не недостатками, например нулевой задержкой на мониторах (которая заявлена), надо просто ее уметь готовить (профессионализм нужен и знания). Я любитель, купил что бы музычку послушать и потому, что дешево отдавали… и то разобрался.
        • 0
          Кстати, про щелчки, буфера и гул написано в инструкции и о причинах и что делать. Надо было ее просто прочесть.
          • 0
            Нулевая задержка на мониторах — это схемотехнически простейшее решение (буферный каскад). Зато красивый коммерческий пунктик. Проблемы вызваны кривизной драйверов по большей части. Достоинства карты тут единственные — неплохой аудиотракт. Звук и правда хорош, пока не заикается.

            Я, поверьте, не первый год плаваю, хорошо знаком со множеством карт. И именно с этой моделью такие проблемы встречаются у каждого второго. Гугл тут не помогает. Карта просто кривая. Что характерно, под MacOS и Linux она работала вполне сносно, а на момент когда я её сдал назад, на сайте EMU драйверов к ней не было вообще. Никаких.
  • 0
    А с 404ой другая история, в форточках начинаются адовые проблемы после работы в Cubase, Studio One и так далее. А в линуске работает из коробки без каких-либо проблем. А дело в том, что любимый Creative забил на обновление дров своей карты, а линукс сообщество нет.
  • 0
    Люди-человеки! Ищу консольную ударку под linux!
    Задал везде кучу вопросов, все молчат как рыбы.
    Суть такова: у меня миди ударка, звук так себе, хочу сделать к ней модуль на raspberry pi,
    но надо побороть задержки.
    • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    на вытрубке есть ролик, где чел на кзш играет через мидишный пэд и дешевую усб звуковуху почти без задержки.
    Он уже даже описание сделал, как установить, он использует drumkv1.
    Для начала это попробую, а потом буду оптимизировать
  • 0
    ATH-SJ55 — отличные наушники?

    А, ну ОК…
    • 0
      Так вышло, что я сначала купил уши, а потом, случайно купил 0204 :) Но, думаю они вполне отличные, только импеданс маловат. Я уже другие купил :)
      • 0
        Да и пост не о них.
  • 0
    А зачем вы pulseaudio используете? У меня, правда, 0404, но пульсы нет, а через сырую альсу ничего нигде не заикается, никаких проблем со звуком не замечено, заработала с первой попытки.
    • 0
      В посте рассмотрено.
      • 0
        Понял, теперь вижу апдейт. Ну процесс настройки меня никогда не смущал.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.