В спеке USB Audio Class есть описание чудного компонента - “Selector Unit (SU)”, который позволяет переключать несколько входов на один выход. Терминах USB спецификации: несколько Input Terminals (IT) к одному Output Terminal (OT). Сразу отмечу, что к каждому юниту может быть прикреплён строковый дескриптор, который его описывает. Если такое поведение не нужно, то ставится ноль и используется имя соответствующей USB функции (UAC в нашем случае) или устройства как такового, если дескриптор для функции тоже не задан, в общем - иерархия.
Но самый смак, как он обслуживается в разных операционных системах. Рассмотрим триаду: Windows (конкретно Win8), Linux (Ubuntu 14.04), MacOSX (TBD).
Windows
У вас 16 входов, между которыми нужно переключаться без потери стрима? Получите 16 отдельных устройств для записи с одинаковыми именами к которым система сама добавит #1, #2 и так далее, начиная со второго! Основой для имени будет выбран тип терминала (Микрофон, к примеру) и имя функции (ну или устройства)! Причём переключаться можно путём выбора дефолтного устройства для записи. Остальные устройства помечаются при этом как временно недоступные. Windows лучше знает, что показывать пользователю: вдруг производитель железки какую каку в имени написал!
UAA появилась ещё в XP, а воз почти и не тронулся. Прекрасный UI.
Linux
Стандартный контрол звука в Юнити входы не увидел. Но показал честно одно устройство. Откуда будет идти звук - гадай (привет pulseaudio!). GNOME Alsa Mixer - вообще какую-то муть вывел. А вот консольный alsamixer, правильно отобразил карту, а при выборе её - селектор для входов. При этом корректно отобразились строковые описания входов. Как обычно для Linux: UI отстрой, консоль рулит!
Возможно - это кривые настройки у убунты. Сегодня проверю на Mint. Но универсальный и самый дружественный способ один: выбрать в alsamixer.
Mac OS X
Версию уточню. Сам не любитель маков. НО! Это единственная система в которой это сделано для человеков: устройство отображается одно, к нему подписывается сколько у него есть входов и выходов и даётся возможность выбрать вход, если он переключается через Selector Unit. Блеск.
Завтра уточню по поводу имён, но, вроде как, аналогично alsamixer, отображает корректно.
Послесловие
А не будет его. Сами выводы делайте. Лучше ссылок чуток накидаю:
- Technical Note TN2274: USB Audio on the Mac
- USB Audio 2.0 Class Driver for Windows - да, из коробки её нету. В Linux есть, в Маках есть, а в Windows нет. Выкусите. Пруфы: раз, два (отсюда по двум редиректам пришел к пункту раз), три
- Спеки на USB классы
- Обзорные статьи по UAC:
- http://electronix.ru/forum/index.php?act=Attach&type=post&id=19450
- http://florian.nouwt.com/wiki/index.php/USB_Audio_Class#Selector_Unit - тут иконки для рисования схем можно урвать, жаль, что не SVG :)
- https://doc.micrium.com/display/USBDDOCV403/Audio+Class+Overview
- http://york.wikidot.com/usb-audio