|
|
  |
USBAUDIO.SYS, Сколько входных каналов он поддерживает? |
|
|
|
Apr 14 2008, 14:11
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Устройство аналогового ввода-вывода. 4 ADC + 2 DAC. То есть 4 входа и 2 выхода. Прикидывается USB Audio. Выходы описаны как SPEAKER, входы - MICROPHONE. Все было хорошо пока использовался Linux. Но понабилось и Windows. Так вот Windows видит только 2 ADC а остальные 2 в упор не видит. Все программы для работы со звуком знают только mono и stereo, а попытки воспользоваться звуковым WinAPI дают ошибки при указании числа входных каналов больше 2. Для тестирования прописал в устройстве 4 выхода и вывел 2 лишних на последовательный порт. Windows 4 выхода видит и медиаплеер играет на все 4 канала. Так что, USBAUDIO.SYS не поддерживает 4 микрофона? Как его заставить видеть все 4 входа? Спецификация USB Audio Class Devices 1.00 имеет только определения для разных вариантов микрофона, типа MICROPHONE SET и никаих других вариантов для входов не остается. Во всяком случае я не нашел других типов входов. Или я не там смотрел? Поможет ли переход на USB Audio Class Devices 2.00? Ориентируюся на WinXP и Vista. Дескриптор прилагается.
Прикрепленные файлы
desc.txt ( 7.36 килобайт )
Кол-во скачиваний: 74
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 19 2008, 15:23
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(KolyanV @ Apr 19 2008, 16:24)  Ничего не могу сказать по поводу USBAUDIO.SYS, но при работе с устройстовм через WinAPI (mmsystem), входы должны быть разбиты на 2 устройства. Т.е система должна их понимать как два записывающих стерео устройства. Т.е. запись принципиально моно или стерео, и ни как иначе? Цитата Подсистема mmsystem (если речь идет о ней), вообще не оперирует такими понятиями как 4-х канальная запись. Простите не понял, поясните пожалуйста.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 19 2008, 18:12
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(khach @ Apr 19 2008, 19:50)  Вроде в Висте в каком-то апдейте добавили возможность работать с microphone array. Но по-умолчанию только один стерео источник (с одного аудиоустройства). Попробуйте добавить в свое USB устройство mixer (логически, в дескриптор), и им коммутировать каналы АЦП. Дыл мне жнужно 4 одновременно. Mixer их будет по одному (то есть по одной паре) включать. Пробовал MICROPHONE_ARRAY отличий не обнаружил. Штатными средствами не получается.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 19 2008, 19:04
|

Частый гость
 
Группа: Свой
Сообщений: 91
Регистрация: 1-06-05
Пользователь №: 5 621

|
Цитата(amw @ Apr 19 2008, 18:23)  Т.е. запись принципиально моно или стерео, и ни как иначе? Простите не понял, поясните пожалуйста. WinAPI бывает разное ... Есть стандартное API для работы со звуковыми устройствами, содержиться в библиотеке mmsystem.dll (В MSDN смотрим по ключевому слову MMSYSTEM). С его помощью можно работать с записывающими устройствами только моно или стерео. Во всяком случае в XP так, про висту не скажу, но, даже если она это поддерживает, сами понимаете, Вам от того легче не будет. Есть еще DirectX, но тут вам ничего не скажу. В многоканальных звуковых платах (в которых много каналов - записи) делают так - каждая пара записывающих каналов определяется системой как независимое стерео устройство. Таким образом, можно одновременно записывать хоть 4, хоть 8 каналов. Но на уровне WinAPI работа идет с набором виртуальных записывающих устройств. Такая организация выполняется на уровне драйвера такой звуковой платы. В Вашем случае, пологаю, аналогичную функцию можно реализовать на уровне софта Вашего устройства. Т.е хост -компьютер его должен видеть как 2 звуковых записывающих стереоустройства.
|
|
|
|
|
Apr 20 2008, 11:32
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(KolyanV @ Apr 19 2008, 22:04)  WinAPI бывает разное ... Есть стандартное API для работы со звуковыми устройствами, содержиться в библиотеке mmsystem.dll (В MSDN смотрим по ключевому слову MMSYSTEM). С его помощью можно работать с записывающими устройствами только моно или стерео. Во всяком случае в XP так, про висту не скажу, но, даже если она это поддерживает, сами понимаете, Вам от того легче не будет. Есть еще DirectX, но тут вам ничего не скажу. В многоканальных звуковых платах (в которых много каналов - записи) делают так - каждая пара записывающих каналов определяется системой как независимое стерео устройство. Таким образом, можно одновременно записывать хоть 4, хоть 8 каналов. Но на уровне WinAPI работа идет с набором виртуальных записывающих устройств. Такая организация выполняется на уровне драйвера такой звуковой платы. В Вашем случае, пологаю, аналогичную функцию можно реализовать на уровне софта Вашего устройства. Т.е хост -компьютер его должен видеть как 2 звуковых записывающих стереоустройства. Спасибо. Буду пробовать.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 20 2008, 12:12
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(galjoen @ Apr 20 2008, 14:50)  А почему-бы вам не попробовать всё это как составной HID сделать. Я под Win пробовал составное устройство из 12 HIDов делать. Всё работало. И скорость передачи через Interrupt In соответствующая была 12*64=768 байт/милисек. И время для исправления ошибок оставалось, т.е. гарантия доставки. Под Win этот способ. на мой взгляд, явно лучше. Хотя под Linux просто так работать не будет - мы с вами это обсуждали. Ну во первых у меня не HID а AUDIO. Во вторых USB Audio и так составное, а я, после продолжительных поисков решения проблемы, нашел много, к сожалению очень разрозненной, информации о том, что с составными устройствами у Windows большие проблемы. Вот тут http://electronix.ru/forum/index.php?showtopic=45721 малая толика того, что мне удалось найти более или менее официальное. Основная проблема заключается в том, что крайне нежелательно иметь собственный драйвер. Плюс Windows, как оказалось, в этом вопросе (USB Audio) сильно ограниченная. Работают очень мало вариантов комбинаций конфигурации. Похожая проблема обсуждается на разных форумах, но решения ни на одном не было найдено. Оптимизм дает то, что сегодня Vista начинает быть широко используемой ОС. Там поддержано гораздо больше вариантов.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 20 2008, 12:50
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(amw @ Apr 20 2008, 16:12)  Ну во первых у меня не HID а AUDIO. Это я понял. Цитата(amw @ Apr 14 2008, 18:11)  Устройство аналогового ввода-вывода. 4 ADC + 2 DAC. То есть 4 входа и 2 выхода. Прикидывается USB Audio. Я вообще-то предлагал вам "прикинуться" не USB Audio, а USB HID. А чтобы обеспечить такую-же скорость передачи данных - составным HID. Из 6 интерфейсов, или 12 если скорость такая нужна. Кроме того в этом случае будет гарантироваться доставка. Цитата(amw @ Apr 20 2008, 16:12)  Основная проблема заключается в том, что крайне нежелательно иметь собственный драйвер. Плюс Windows, как оказалось, в этом вопросе (USB Audio) сильно ограниченная. Работают очень мало вариантов комбинаций конфигурации. В случае HID, собственного драйвера под Win не нужно. А насчёт глюков с конфигурацией - верно. Заметил, что почему-то под Win MassStorage в составе составного устройства работет ТОЛЬКО если у его интерфейса N=0. Но с 12 интерфейсами HID работает. Хотя для этого 12 EP нужно. Если, как я сейчас понял, вы на LPC2378 делаете, то у него вроде столько нет. Хотя м.б. и можно одну (с одинаковым адресом) Interrupt In EP или Ineterrupt Out EP в нескольких интерфейсах использовать. Я не пробовал, мне EP хватало.
|
|
|
|
|
Apr 20 2008, 13:13
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(galjoen @ Apr 20 2008, 15:50)  Я вообще-то предлагал вам "прикинуться" не USB Audio, а USB HID. А чтобы обеспечить такую-же скорость передачи данных - составным HID. Из 6 интерфейсов, или 12 если скорость такая нужна. Кроме того в этом случае будет гарантироваться доставка. Что-то я не понял идеи с HID. Если я сделаю свои АЦП/ЦАП как HID (что конечно в принципе реализуемо, но нужно в корпусе  ), разве будет, например, Windows Media Player проигрывать на мой HID музыку? Что то я сильно сомневаюся. Сомневаюся также что через HID можно "прокачать" 4вх + 2вых каналов по 16 бит и дискретизацией 10кГц. И это только минимальные характеристики. Сейчас прорабатываем вариант с 4вх + 4вых все по 16бит и дискретизация от 8кГц до 48кГц. Собственно USB Audio и выбрал потому, чтоб можно было использовать существующий софт для обработки данных. Сам софт я не разрабатываю, клиенты сами решают что им больше подходит, но в большинстве случаев используются программы работы со звуком, имеющиеся в почти каждом дистре Linux. Очень желательно получить тот-же результат и с Windows.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
Apr 20 2008, 14:18
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(amw @ Apr 20 2008, 17:13)  Что-то я не понял идеи с HID. Если я сделаю свои АЦП/ЦАП как HID (что конечно в принципе реализуемо, но нужно в корпусе  ), разве будет, например, Windows Media Player проигрывать на мой HID музыку? Что то я сильно сомневаюся. Сомневаюся также что через HID можно "прокачать" 4вх + 2вых каналов по 16 бит и дискретизацией 10кГц. И это только минимальные характеристики. Сейчас прорабатываем вариант с 4вх + 4вых все по 16бит и дискретизация от 8кГц до 48кГц. Собственно USB Audio и выбрал потому, чтоб можно было использовать существующий софт для обработки данных. Сам софт я не разрабатываю, клиенты сами решают что им больше подходит, но в большинстве случаев используются программы работы со звуком, имеющиеся в почти каждом дистре Linux. Очень желательно получить тот-же результат и с Windows. 1. Как музыку конечно проигрывать HID конечно никто не будет 2. Через HID "прокачать" 4вх + 2вых каналов по 16 бит и дискретизацией 10кГц можно. Для этого (4+2)*2*10=120 байт/мСек нужно будет 2 HIDа. Или вроде даже 1го хватит, но пользоваться неудобно будет. 3. HID это максимум 64 байта/мСек с гарантированной доставкой через КАЖДУЮ In In и In Out EP (контрольный канал не учитываем) в обе стороны. Т.е. для 16 бит это 32 кГц на каждую EP. 4. Составное устройство (в т.ч. HID) может иметь до 16 EP, и общую скорость передачи (в обе стороны) 16*64=1024 байт/мСек, что является максимальным для full speed. Но в этом случае ошибки будут приводить к уменьшунию скорости передачи. Если сделать меньше EP, например 12, то ошибки будут исправляться, не приводя к уменьшению скорости. 5. Случай (4вх+4вых)*2байта*48выборок/мСек=768байт/мСек. Т.е. вам нужно 12 EP 768/64=12. Из них 6 EP In In и 6 In Out. Для этого достаточно 6 HID устройств (в каждом по одной In In EP и одной In Out EP). Т.е. USB девайс с 6 HID интерфейсами. Хотя конечно распределять 4 вх/вых на 6 EP, а потом всё это собирать... Думаю в принципе реализовать такое можно, но нужно-ли? Это от задачи зависит. Ваша, на мой взгляд, как-то не очень ложится. Тем более, что софт для компьютера придётся разрабатывать. А вот у меня задача есть, которая отлично на 12 HIDов ложится. Если договоримся с заказчиками - так сделаю.
|
|
|
|
|
Apr 20 2008, 15:03
|
Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847

|
Цитата(galjoen @ Apr 20 2008, 17:18)  1. Как музыку конечно проигрывать HID конечно никто не будет 2. Через HID "прокачать" 4вх + 2вых каналов по 16 бит и дискретизацией 10кГц можно. Для этого (4+2)*2*10=120 байт/мСек нужно будет 2 HIDа. Или вроде даже 1го хватит, но пользоваться неудобно будет. 3. HID это максимум 64 байта/мСек с гарантированной доставкой через КАЖДУЮ In In и In Out EP (контрольный канал не учитываем) в обе стороны. Т.е. для 16 бит это 32 кГц на каждую EP. 4. Составное устройство (в т.ч. HID) может иметь до 16 EP, и общую скорость передачи (в обе стороны) 16*64=1024 байт/мСек, что является максимальным для full speed. Но в этом случае ошибки будут приводить к уменьшунию скорости передачи. Если сделать меньше EP, например 12, то ошибки будут исправляться, не приводя к уменьшению скорости. 5. Случай (4вх+4вых)*2байта*48выборок/мСек=768байт/мСек. Т.е. вам нужно 12 EP 768/64=12. Из них 6 EP In In и 6 In Out. Для этого достаточно 6 HID устройств (в каждом по одной In In EP и одной In Out EP). Т.е. USB девайс с 6 HID интерфейсами. Хотя конечно распределять 4 вх/вых на 6 EP, а потом всё это собирать...
Думаю в принципе реализовать такое можно, но нужно-ли? Это от задачи зависит. Ваша, на мой взгляд, как-то не очень ложится. Тем более, что софт для компьютера придётся разрабатывать. А вот у меня задача есть, которая отлично на 12 HIDов ложится. Если договоримся с заказчиками - так сделаю. Спасибо за разъяснения. Но, к сожалению, такой вариант мне не подходит.
--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть. © Lewis Carroll. Alice's adventures in wonderland.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|