LINUX.ORG.RU

Куда копать с udev и JACK?


0

1

В общем и целом, я победил проблему http://linuxsound.ru/forum/viewthread.php?thread_id=182&pid=1534#post_1534

Но осталось вот такое вот: надо, чтобы при любой погоде и порядке загрузки модулей встроенная звуковая называлась hw:0, воткнутый в один USB-порт девайс назывался hw:1, и так далее — то есть конкретному порту отвечает конкретный же индекс (идея в том, чтобы при запуске графической сессии у меня запускались alsa_in с правильными параметрами).

Кто может помочь с тем, куда копать?

★★★★★

1. Параметр index= у модулей звуковых устройств

2. Вместо hw:0 использовать символьные имена типа hw:Intel и hw:USB (смотреть в выдаче aplay/arecord -L, там, где написано CARD=<> - это оно).

alegz ★★★★
()
Ответ на: комментарий от alegz

по пункту 2: почему-то если указать, к примеру, hw:2, то формат сэмпла определяется корректно как S16LE, а если сказать default:CARD=C03U, то получается float, в результате libsamplerate ненужно грузит процессор. Не знаю, кто глючит, альса или конкретно alsa_in.

shimon ★★★★★
() автор топика
Ответ на: комментарий от shimon

Это причуды alsa_in, как я понял. У него не предусмотрен способ явного задания формата потока с устройства, и выбирает он его из каких-то своих соображений (в вишлист им, что ли, запилить возможность принудительного задания... Или самому поковырять). Для snd-aloop в качестве воркэраунда получалось делать что-то типа:

aplay -f <формат> -D hw:Loopback,0 /dev/zero &
alsa_in -d hw:Loopback,1
killall aplay

А как без loopback... C .asoundrc шаманить если только.

alegz ★★★★
()
Ответ на: комментарий от shimon

По пункту 1: три устройства управляются одним модулем snd-usb-audio.

Тогда, если не ошибаюсь, в /etc/modprobe.d/sound.conf (или где оно там) нужно что-то типа:

options snd-usb-audio vid=<v1> pid=<p1> index=1 # для первого девайса

options snd-usb-audio vid=<v2> pid=<p2> index=2 # для второго и т.д.

проверить в данный момент не могу — нет юсб-звуковухи под рукой.

alegz ★★★★
()
Ответ на: комментарий от shimon

Да, точно. Щас глянул в исходники alsa_in из jackd2-1.9.7 — он тупо выбирает максимальный формат из поддерживаемых устройством, а узнает о них от алсы. Если зажать формат в .asoundrc — должно помочь...

alegz ★★★★
()
Ответ на: комментарий от alegz

Ну, JACK ни при чем, это alsa_in чудит.

Еще мне вдруг стало интересно, а можно ли сказать, что вот эти USB-дырки обслуживать ТОЛЬКО с помощью ohci-hcd, а все остальное, так и быть, пусть будет ehci-hcd?

Все же знают, что поддержка USB 2.0 в линуксе кривая до ужаса (если использовать usb-storage исключительно, то это не так заметно, с видеокамерами заметно иногда при количестве камер две и больше, со звуковыми устройствами — заметно практически всегда при количестве два и более). У меня где-то закладки были на соответствующие списки рассылки, где автор драйвера расписывался в том, что чинить он это не хочет, ибо не знает как.

Короче, звуковые устройства в линуксе надо использовать только в режиме USB1.1, иначе будет ад, израиль и кранты. Я в этом режиме спокойно записал концерт на полтора часа, и xrun'ов было поразительно мало, и размер их не превышал пары семплов (мне кажется, если потвикать параметров, можно за счет немного возросшей задержки свести их количество к нулю). Проблема в том, что система тоже грузится с USB-носителя, и грузится она ожидаемо (для USB 1.1) медленно. Это хочется обойти.

shimon ★★★★★
() автор топика
Ответ на: комментарий от shimon

Дак alsa_in в составе jack же. Как пример использования API.

А насчет usb - фиг знает, может, с правилами udev как-то шаманить. Модуль на ходу блеклистить, что ли... Чтобы нужные устройства грузились с ним, а остальные - без.

Вообще usb 2.0 одну Tracker Pre в дуплексе 96/24 вроде прожевывает. На невыделенной машине xruns бывали, конечно, но мне для любительских целей было некритично.

alegz ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.