Emu 0404 usb linux
Итак, по просьбе Teftelia попробуем собарть воедино информацию по настройке E-mu 0202 USB, E-mu 0404 USB и E-mu Tracker Pre USB для начинающих.
1. Определяем, загрузился ли у нас драйвер snd-usb-audio, и под каким номером в системе зарегестрировалась карточка: в консоли набираем
вот что получилось на моем AsusX50N:
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: ALC660-VD Analog [ALC660-VD Analog]
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 6: Si3054 Modem [Si3054 Modem]
Subdevice #0: subdevice #0
card 1: USB [E-MU 0404 | USB], device 0: USB Audio [USB Audio]
Subdevice #0: subdevice #0
card 1: USB [E-MU 0404 | USB], device 1: USB Audio [USB Audio #1]
Subdevice #0: subdevice #0
Отсюда видим, что у нас есть карта E-mu 0404USB и она имеет индекс 1. В составе карты есть два устройсва: 0 и 1 (аналоговый и SPDIF выходы соответсвенно). Карточка HDA Nvidia под номером 0 нас не интересует в данный момент.
2. Проверяем воспроизведение посредством ALSA. Для этого подготовим wav файл стерео 16 бит/44кГц длительностью секунд 30-40 с именем foo.wav Проверять на mp3 или на моно не советую, по крайней мере для новичков, есть неочевидные ньюансы, на крайний случай пойдет ogg 16/44 стерео.
2.1. Запускаем команду
aplay -D hw:1,0 foo.wav
(hw:1,0 — означает карта №1, устройство №0 (данные по номерам берем из п.1))
в результате получаем. правильно, тишину в колонках и сообщение об ошибке:
aplay: set_params:979: Sample format non available
(не все советы одинаково полезны ;-))
Вышеприведенное сообщение говорит о том, что что-то не то с частотой дискретизации — не верьте ему, он банально врет. Причина в том, что наш файл имеет битность 16, а карточка ожидает 24 бита. Если вас посетила мысль о грядущем переконвертировании всей своей музыкальной коллекции из 16 бит в 24, чтоб слушать её на E-mu 0x0xUSB, то это зря, достаточно вместо hw:1,0 указать plughw:1,0. Алиас plughw отличается от hw, тем, что ALSA перед отдачей аудио потка «в железо» преобразует его к «нужной» битности и кол-ву каналов (частота дискретизации остается «оригинальной»).
aplay -D plughw:1,0 foo.wav
Вот теперь звук должен воспроизводиться корректно.
Следующим пунктом нашей программы — полное ингорирование положения регулятора громкости. Это связано с тем, что EMU USB не имеет аппаратного микшера, в отличие от тех же карточек на основе AC97. Но ALSA имеет достаточно гибкую архитектуру, и эту проблему можно решить объявлением программного регулятора громкости. Для этого нам нужно создать в домашнем каталоге пользователя файл «.asoundrc» (без кавычек) со следующим содержимым:
description «EMU-0404USB Volume»
Здесь мы объявили новый алиас с именем «usb_sv», не забываем перебить индексы карты (если нужно) в 3 и 5 строках. Прелесть настроек в .asoundrc состоит в том, что изменения вступют в силу «мгновенно» после сохранения файла.
Проинициализируем наше новое виртуальное PCM устройство «usb_sv» путем вывода звука через него:
aplay -D usb_sv foo.wav
Теперь достаточно закрыть приложение микшера и открыть его заново (под Gnome’oм нужно прибить «mixer_applet2» вручную в «Системном мониторе», хотя проще сделать «Завершение сеанса», и войти в систему заново)
Открываем окно микшера, и наблюдаем новый ползунок с именем «SoftMaster». Проверим работу нашего регулятора: запускаем команду:
aplay -D usb_sv foo.wav
и двигаем ползунком «SoftMaster» — громкость, таки, регулируется, что и требовалось.
Теперь мы можем в настройках программ указывать в качестве вывода устройство usb_sv, и будет «регулироемое» счастье. Но не долгое, т.к. не все программы позволяют подобные «вольности» с алиасами. Например, Скайп без проблем переваривает виртуальные устройства, а в видео проигрывателе VLC нам предлагают на выбор либо устройство по умолчанию, либо конкретное hw устройство, а с hw мы уже проходили — 16 бит «оно» не переваривает.
Что ж, ситуация неприятная, но поправимая, мы просто переопределим ALSA устройство по-умолчанию. Для этого в файле .asoundrc заменим первую строчку и вместо «pcm.usb_sv<" пропишем:
Готово, все программы должны работать на ура! Правда, если у вас есть ещё, например, встроенная карта, то она остается «без работы» в большинстве приложений.
На первый взгляд, мы успешно настроили звуковую подсистему — по крайней мере музыка 16/44 играет без проблем. Теперь запускаем видео-проигрыватель, и получаем. ужасные хрипы, скрежет и подхрюкивание. WTF. Дело в том, что большинство видео имеет 48кГц аудио дорожку, а EMU USB ожидает 44кГц. Передискретизация внутри железок EMU-USB отсутсвует, и это хорошо, по крайней мере для меломанов.
Есть несколько решений данной проблемы:
1. Объявить программный ресемплер.
2. Поставить патч для usb-mixer, и регулировать вручную частоту дискретизации. Ожидая недоверчивые возгласы, повторю ещё раз:да, есть патч; да, это то самое, чего так долго не хватало владельцам EMU-USB; да, он рабочий и обкатаный; да, теперь в alsamixer есть отдельный ползунок, регулирующий аппаратный sample rate. Установку патча я пропишу позже в «разделе» «для продвинутых», особо нетерпеливые могут пройти по: http://ubuntuforums.org/showpost.php?p=7420874&postcount=79 и сделать всё самостоятельно. (За прорыв в создании патча делаем четыре раза «ку» нашему соотечественнику mellowman’у!)
3. Держать в VirtualBox WinXP, и оттуда переключать частоту дискретизации. (анахронизм, и вообще не труЪ).
Итак, добавление программного 44кГц ресемплера к регулятору громкости: после правок ваш файл
Источник
Emu 0404 usb linux
description «EMU-0404USB Volume»
Так, что мы здесь имеем: пропало объявление «usb_44» — правильно, нам не нужен ресемплер, поскольку микшер требует привидения всех потоков к одной частоте перед микшированием, это мы и указали в одyом из параметров dmix. Второе изменение — появлось описание устройства «pre_dmix». Казалось бы, зачем нам нужен какой-то промежуточный уровень между регулятором громкости и микшером? Все просто: микшер в качестве «конечного» устройства понимает только алиасы типа hw:n,m, при попытке подставить plughw, мы не получим ничего кроме ошибки. Поэтому нам нужно перед отдачей потока в микшер преорбразовать его в стерео 24 бит. По сути дела, виртуальное устройство «pre_dmix» выполняет ту же самую работу, что и «plughw».
Итак, открываем две консоли, и готовимся воспроизводить 2 потока одновременно, набираем в обеих консолях:
aplay -D usb_sv foo.wav
и запускаем на выполнение команду в одной консоли, и сразу же в другой. Оба потока должны воспроизводиться одновременно.
Но WTF2. мы слышим существенное ухудшение звука: шум и призвуки слышны даже на наушниках-«вкладышах», не говоря о более серьезной аппаратуре.
Подобная деградация связана с ошибкой в alsa-lib в коде dmix для случая 24 битных звуковых потоков. Поэтому нам необходимо поставить заплатку.
Забегая вперед, скажу — ошибка есть и в регуляторе громкости для 24 битного потока, но вы её не заметите, пока не начнете слушать 24 бинтные файлы, такие, например, как vinyl-ripы 24/96, поэтому мы будем ставить два патча сразу.
Подготовимся к установке патчей: необходимо установить пакеты build-essentials и patch .
1.Идем на сайт ALSA ( www.alsa-project.org ) и скачиваем исходники alsa-lib той версии, которая установлена в системе (установленную версию можно подсмотреть в синаптике)
3.Открываем консоль и вводим команды (первая команда — вход в папку с исходниками)
$sudo make install
Готово! Перегружать ничего не надо. Повторяем одновременный вывод двух потоков через aplay, как указано выше. Все должно теперь звучать «чисто». (Кстати, поскольку Вы уже «продвинутые», я не напоминаю о необходимости перебивать индексы карты и менять объявление «usb_sv» на «!default» ).
Теперь подходим к самому интересному. Наверное, я буду прав, если предположу, что карты E-MU USB покупают люди, которые неравнодушны к качеству звука, и передискретизация «всего чего только можно» к 44100 является для них, мягко говоря, не совсем уместным
Чтож, дело поправимое, готовимся патчить драйвер: с того же сайта ALSA качаем исходники, теперь alsa-driver (обязательно той версии, которая у вас установлена, предполагаю, что на момент написания сего опуса это будет версия 1.0.18)
Открываем консоль и вводим команды (первая команда — вход в папку с исходниками)
$ sudo make install
Можете пока пойти сделать себе кофе/чай/виски-с-содовоай — компилироваться будет долго, можно, конечно ограничиться компилированием драйверов только для нескольких типов карт (ключ —with-cards для команды configure), но я вам этого делать не советую, можете промахнуться, и встроенная звуковая работать перестанет.
Теперь нужно выгрузить и загрузить заново модуль ядра snd-usb-audio, но проще будет просто перегрузить компьютер, всё таки не сервер настраиваем.
Открываем консоль и запускаем alsamixer для карты №1
Среди ползунков наблюдаем «Clock rate selector». Он имеет 6 положений, обозначенные 0-20-40-60-80-100. Чтож не совсем user-friendly, но думаю освоитесь, и запомните, что это соответствует 44100-48000-88200-96000-176400-192000.
Попробуем возвратить в «.asoundrc» самую-самую первую версию содержимого — в которой есть только программный регулятор громкости без передисекретизаторов и микшеров.
Теперь повторим эксперимент с запуском какого-нибудь фильма. Звук опять играет ужасно. Переходим в окно alsamixer’а и ставим ползунок «Clock rate selector» в положение 20 (48000кГц). Другое дело!
К сожалению пока не удается сделать патч для alsa-driver, чтобы частота выставлялась автоматически, в зависимости от выводимого потока (как это сделано в WIndows). Также существенным ограничением является фиксирование частоты в dmix — не будешь же постоянно вручную корректировать .asoundrc Поэтому пусть каждый решает для себя, что ему важнее — воспроизведение нескольких потоков одновременно на фиксированной частоте, или возможность менять частоту, и не терять и толики качества материала, но только для одyого потока.
Владельцы Kubuntu могут для изменеия частоты пользовать стандартный Kmix, вместо alsamixer. А вот, пользователям Gnome повезло меньше. Нет, регулятор в гномовском микшере есть, но он «плавный», и попасть в одно из 6 значений довольно тяжело.
Источник
Настройка e-mu 0204 usb в ubuntu GNU/linux
Пару дней назад купил я себе внешнюю звуковую карту e-mu 0204. Купил с рук, за 2 т.р. Владелец был счастлив, я то же. Оба думали, что надули друг друга. Стоит железка в магазине 4,5 т.р. Принес домой подрубил, звук сказочный. Но, обнаружился косяк. В непредсказуемые моменты времени слышны были тихие пощелкивания и перерывы звука. У меня отличные наушники ATH-SJ55. Соответствуют карточке по уровню, непонятно почему это вдруг началось. Разбираемся как исправить. Да, сразу отмечу, все эти проблемы описаны в инструкции. Так что весь ор вокруг карточки говорит лишь о том, что орущие просто ее не открывали. Инструкции у меня в комплекте не было, я в интернете ее позже нашел. Все настройки в статье все равно понадобятся.
Я конечно слышал о проблемах с картой и попробовал применить описанный в куче мест способ проигрывания звукового файла с тишиной что бы занять канал и вроде как щелчки должны исчезнуть так как «карта перестанет переходить в режим энергосбережения». Что я только не начитался, даже то, что ей питания не хватает и надо внешний usb хаб купить с отдельным блоком питания. Все это не помогло (хаб не пробовал, да и в позже прочитанной инструкции они прямо противопоказаны).
Залез в настройки pulseaudio. В железке есть аппаратный буфер, куда кладутся данные после оцифровки. Звуковой системе компа надо в него класть звук, вообще через него идет общение звуковухи и компа что бы звук не прерывался (туда то и надо смотреть).
Если на компе неверно настроены параметры работы с буфером, будут щелчки. Это я выяснил путем ковыряния настроек и чтения форумов с расчетом значения этих параметров. Второй из здесь описанных вариантов настройки возможно подойдет и для винды, так как есть сборка jackd для нее, кажется. Хотя в винде можно наверное и по другому настроить. На линуксе все проще. Сначала добавим себя в группу audio:
Оно надо что бы добавить пользователя theusername в группу audio так как без этого сервер jackd и pulsaudio не сумеет выделять память и стартовать в режиме реального времени в случае настройки с ним. Далее настройки могут разниться.
Вариант первый, простой:
Я сломал всю башку прежде чем сумел настроить все это в линуксе и вообще понять в чем дело, сначала уже расстраиваться начал. Кстати, первым, попробуйте выбрать более простой ресемплер и больше ничего. Все проблемы с артефактами в звуке упираются в производительность компа и к звуковухе не имеют ровно никакого отношения. Самый простой способ сделать так что бы комп поспевал генерить звук это как раз сменить ресемплер на более простой. Хотя, что стоило производителю включить в комплект инструкцию? Может быть она и была, я с рук интерфейс брал. Тем, кто захочет настроить, смотреть в /etc/pulse/daemon.conf
Еще возможно надо залазить в: /etc/pulse/default.pa
И там поставить:
После установки более простого метода ресемплера, мне эти настройки не понадобились. Сначала стоит попробовать без этого параметра, так как работать скорее всего будет и без него, зато без него нагрузка на процессор даже на самом лучшем ресемплере будет невысокой. Собственно низкой нагрузкой на процессор и хорош этот вариант настройки в целом. Вместе с tsched=0 все работает стабильнее, при этом надо понимать, что при этом параметре возрастет нагрузка на процессор от pulseaudio. Это, кстати, убьет все преимущества пульсы перед алсой, но настраивать алсу мне лень, а щелчки без пульсы те же.
Щелчки останутся только при старте компа (когда карта включается), небольшие, да еще при подключении очередного клиента к звуковухе. Описывать настройку pulseaudio для слабого компа я тут не стану, суть в том, что ресемплер надо попроще поставить и приоритет pulseaudio поднять. Нужно отметить, что этот метод настройки сильно зависит от производительности компа. Если у вас на процессоре плавает частота (ondemand планировщик) то иногда производительности может не хватать и будут артефакты в звуке. Есть и более интересный способ настройки, по моим наблюдениям он намного стабильнее и качественнее.
Вариант второй, кошерный:
Остальное по умолчанию. Даже tsched=0 не ставим! Пользователям skype у которых он хрипит при старте, думаю то же это решение подойдет. Проблема в skype в том, что частота дискретизации файла, который он проигрывает на старте, не совпадает с частотой ресемплера, вот и хрипит и на многих карточках. Наша же карточка то претендует на начальный уровень профессиональных, так что вообще то логично, что она рассчитана на профессиональный софт. В общем, едем дальше.
Ставите jackd, в нем настраиваете количество выборок в буфере 1024 и количество периодов на буфер 2 (можно покрутить и другие варианты этих значений если щелкает, так как буфер настраивается в зависимости от конкретного компа и его возможностей). Минимальное количество выборок 128 для данной карты, а количество периодов на буфер 2, можно поэкспериментировать.
В зависимости о того запустите ли вы jackd в режиме реального времени или нет, буфер может быть разный. По сути это те же параметры буфера, что и в pulseaudio, только в их исходном виде, а не расчетные. Ориентироваться в верности можно на сообщения о рассинхронизации, их надо что бы было 0, хотя в режиме реального времени на этот и так не слишком надежный показатель ориентироваться вообще нельзя, остается просто на слух. Это в qjackctl в окне сообщений найдете, вкладка статус, ее то же надо установить, так же эти числа есть и в окне статуса в главной панели.
Так же обратите внимание на режим запуска jackd, в реальном времени или нет, стоит попробовать оба и посмотреть как будет вести себя звук под нагрузкой компа. Если выставите режим реального времени, не забудьте поставить для pulseaudio то же режим реального времени (в том же daemon.conf):
Только приоритет пульсы должен быть меньше чем у jackd. По умолчанию jackd запускается с приоритетом 10.
В общем окно настроек у меня выглядит так:
Обратите внимание на параметр «Тайм аут», если вас раздражают небольшие артефакты при повторном подключении клиентов (например если звука долго не было, а потом вы включили музыку), то можно там выставить время пока jackd будет держать канал. Например минуту. Это приведет к постоянной загрузке процессора, зато окажет тот же эффект, что и проигрывание файла с тишиной. Но, это если артефакты вообще останутся после настройки. Я сравнивал, встроенная карточка на моем ноуте работает точно так же, немного дергаясь при переключении мелодий в проигрывателе, что вполне логично, так просто слышится резкое прекращение звука или начало нового не с нулевой громкости (без fade in/out). Так что не стоит предъявлять невероятных требований там, где это не нужно.
Потом pulseaudio заставляете выводить через jackd звук, путем добавления команды, которая выполняется после старта jackd.
Команда Это то же в параметрах 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
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
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
Настраиваем громкость на серединку, опять же что бы не подпрыгивать когда первый звук в наушниках зазвучит.
В результате может поэтому, может потому, что софт дорос, никаких косяков в работе звуковухи нет даже без других настроек, да и нормализация скорее всего не нужна, но мне удобно с ней.
Источник