Подключить внешнюю звуковую карту Roland Tri-Capture в Linux сложно по одной единственной причине: в интернете нет никакой информации, как это делать. Нет информации и об архитектуре, и о топологии этой карты — только хвалебные отзывы. На самом же деле проделать это «проще пареной репы» (когда знаешь ).
Debian — очень неблагоприятная среда для любых сторонних нововведений. А вот ALSA — наоборот. Есть в нём замечательная функция — quirks, в переводе - «уловка». С помощью этой «уловки» подключается длинный список внешних карт, в том числе множество Roland'овских и Edirol'овских, что, в принципе, одно и то же. Но Roland Tri-Capture (Roland UA-33) в этом списке нет. Вывод: надо её в список внести. Делается это путём небольших дополнений в 4 файла. Дебиановский пропатченный alsa-source для этой цели не подходит, забудьте и про module-assistant — он установит Вам только то, что прописано в alsa-base. Нужен исходник , лучше самый свежий (на сегодня — alsa-driver-1.0.25.tar.bz2).
Но прежде неплохо будет создать удобную среду управления для будущего устройства. Вот оно:
lefroff@mysqueeze:~$ dmesg [ 2.840014] usb 4-1: new full speed USB device using uhci_hcd and address 2
[ 3.025847] usb 4-1: New USB device found, idVendor=0582, idProduct=0132
[ 3.025850] usb 4-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 3.025853] usb 4-1: Product: TRI-CAPTURE
[ 3.025855] usb 4-1: Manufacturer: Roland
[ 3.025929] usb 4-1: configuration #1 chosen from 1 choice
lefroff@mysqueeze:~$ lsusb -t
/: Bus 07.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 06.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 05.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
/: Bus 04.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
|__ Port 1: Dev 2, If 0, Class=vend., Driver=snd-usb-audio, 12M
|__ Port 1: Dev 2, If 1, Class=vend., Driver=snd-usb-audio, 12M
/: Bus 03.Port 1: Dev 1, Class=root_hub, Driver=uhci_hcd/2p, 12M
|__ Port 1: Dev 2, If 0, Class=HID, Driver=usbhid, 1.5M
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/8p, 480M
|__ Port 4: Dev 3, If 0, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
|__ Port 4: Dev 3, If 1, Class='bInterfaceClass 0x0e not yet handled', Driver=uvcvideo, 480M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
Здесь драйверы уже установлены (snd-usb-audio). До полной установки модифицированного драйвера ALSA их не будет.
УстановитеУстановите pulseaudio — это позволит Вам легко и просто манипулировать входами-выходами карт. У меня установлены:
Может быть, что-то и лишнее, но в процессе своего «исследования», я «грёб всё до кучи». Хотя, если заниматься звукозаписью, многое может пригодиться.
Теперь об установке отредактированного исходника ALSA. Как редактировать — об этом позже, поскольку вопрос несложный.
Поместите распакованный и отредактированный исходник в укромное место. Не знаю, насколько правильно, но я поместил его в /usr/src (пусть гуру не смеются, я - «чайник»). Удалите — временно — дебиановский пакет alsa-base, иначе все труды пойдут насмарку — будет установлена стандартная дебиановская конфигурация, все нужные Вам изменения в файлах будут удалены. После установки alsa-драйвера его нужно вернуть на место, потому что без него миксеры работать не будут. Ну, а теперь:
# cd /path-to/alsa-driver-1.0.25 # ./configure # make # make install
После этого перезагружаете компьютер, устанавливаете удалённый временно пакет alsa-base (важно!) открываете миксер — там должно быть 2 карты, встроенная и внешняя, т. е., Roland Tri-Capture, и куча возможностей их конфигурации. Никаких изменений в конфигурационные файлы в /etc/modprobe.d вносить не нужно. Созданный при установке исходника ALSA пустой файл /etc/modules.conf можно тоже оставить пустым.
Кроме самого драйвера v.1.0.25, я установил alsa-plugins-1.0.25 и alsa-oss-1.0.25. Остальное — дебиановское.
Теперь о файлах, подвергнутых изменениям:
quirks-table.h:./alsa-driver-1.0.25/alsa-kernel/usb/quirks-table.h : вставить в блок Roland/RolandED/Edirol/BOSS 1047 { 1048 /* 1049 * This quirk is for Roland Tri-Capture (edited by A.Z.) 1050 */ 1051 USB_DEVICE_VENDOR_SPEC(0x0582, 0x0132), 1052 .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { 1053 .vendor_name = "Roland", 1054 .product_name = "UA-33", 1055 .ifnum = QUIRK_ANY_INTERFACE, 1056 .type = QUIRK_COMPOSITE, 1057 .data = & (const struct snd_usb_audio_quirk[]) { 1058 { 1059 .ifnum = 0, 1060 .type = QUIRK_AUDIO_ROLAND_UAXX 1061 }, 1062 { 1063 .ifnum = 1, 1064 .type = QUIRK_AUDIO_ROLAND_UAXX 1065 }, 1066 { 1067 .ifnum = -1 1068 } 1069 } 1070 } 1071 },midi.c:
./alsa-driver-1.0.25/alsa-kernel/usb/midi.c вставить: 1553 /* Roland UA-33 */ CONTROL_PORT(0x0582, 0x0132, 1, "%s Control"),quirks.c:
/alsa-driver-1.0.25/alsa-kernel/usb/quirks.c вставить: 313 [QUIRK_AUDIO_ROLAND_UAXX] = create_uaxx_quirk,midi.h:
./alsa-driver-1.0.25/alsa-kernel/usb/midi.h вставить: 31 /* for QUIRK_AUDIO_ROLAND_UA33, data is NULL */
Кому лень писать, можете скачать готовый пакет.
P.S. Статья эта — результат применения метода «тыка» (метод проб и ошибок). Метод медленный, но эффективный, особенно, когда ты не программист и ничегошеньки не знаешь об устройстве, то другого ничего не остаётся.
P.P.S. Насчёт поддержки MIDI не могу ничего сказать. Информации нет а сам проверить не могу. По информации lsmod драйвер snd_usbmidi_lib при включённой Roland Tri-Capture установлен.
P.P.P.S. Обнаружил, что не описал редактирование ещё одного файла - usbaudio.h. В него надо вписать следующую строку:
87 QUIRK_AUDIO_ROLAND_UAXX,
Хорошо ещё, что в пакете, который я предлагаю для скачивания, этот файл отредактирован, а не то был бы совсем конфуз.
27 декабря 2012 г. Автор: lefro
Render time: 0.8838 s, Query: 27 | © Путь Лефро 2010-2018 - Powered by MODx
Template by OS Templates