Распределение звуковых потоков

Простейшие вопросы в области инженерной разработки

Распределение звуковых потоков

Postby Select on 05 Feb 2019, 23:48

Всех приветствую,
столкнулся с необычным решением с многоканальной потоковой трансляцией НЧ сигналов.
В качестве источника выступают НЧ :labview: генераторы с подключением их на Play Wafe Form, сконфигурированные под соответствующие USB аудио карты по их номерам, в моем случае их 3 и одна PCE встроенная.
Все работает превосходно до момента переноса vi на другой ПК. После запуска в конфигурациях все настройки слетают, номера портов перемешиваются в произвольном порядке или совпадают. Причина скорей всего в произвольной активизации со стороны OS USB устройств при загрузке.
Существует ли метод жесткой привязки по заранее прописанным USB номерам портов.
Пробовал компилировать в exe та же история. :think:
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 120
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Распределение звуковых потоков

Postby taras_33 on 11 Feb 2019, 00:57

номера портов перемешиваются в произвольном порядке или совпадают

Речь идет о виртуальных COM портах? Как определяютя в Диспетчере устройств сисемы ваши устройства?
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
User avatar
taras_33
developer
developer
 
Posts: 280
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 130
CLD VIP

Re: Распределение звуковых потоков

Postby ladik on 15 Feb 2019, 23:17

Можно попробовать получать device ID либо с помощью dll и call library node либо с помощью функций VISA. Зависит от спецификации и реализации драйвера устройства. Попробуйте поискать информацию в Гугл по ключевым словам LabVIEW+USB+device Id.
Дорогу осилит идущий.
User avatar
ladik
adviser
adviser
 
Posts: 222
Joined: 18 Nov 2014, 11:45
Location: Астана
Medals: 1
Silver (1)
LabVIEW Version: 2011, 2015
Karma: 87
hardware I/O VIP

Re: Распределение звуковых потоков

Postby taras_33 on 16 Feb 2019, 02:41

ladik wrote:Можно попробовать получать device ID либо с помощью dll и call library node либо с помощью функций VISA. Зависит от спецификации и реализации драйвера устройства. Попробуйте поискать информацию в Гугл по ключевым словам LabVIEW+USB+device Id.

Согласен. В одном из древних проектов использовал функцию из библиотеки FTDI для LabVIEW, что бы определить номер VCP который присвоила Windows моему устройству. Что бы в последствии знать какой порт открывать...
FTDI.png
FTDI.png (9.84 KiB) Viewed 896 times

В другом проекте для этих же целей использовал VISA Find Resource Function, получаешь список устройств и выискивай свое. В моем конкретном случае было достаточно выловить по имени, которое видно в Диспетчере устройств. Но можно и с другими параметрами поиграться..
Visa.png
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
User avatar
taras_33
developer
developer
 
Posts: 280
Joined: 31 Oct 2009, 18:25
Location: Minsk -> Miami
Medals: 1
Activity (1)
LabVIEW Version: 2016
Karma: 130
CLD VIP

Re: Распределение звуковых потоков

Postby dadreamer on 16 Feb 2019, 10:24

Select wrote:USB аудио карты по их номерам, в моем случае их 3 и одна PCE встроенная.
...
Существует ли метод жесткой привязки по заранее прописанным USB номерам портов.

Если имеется ввиду Device Id, который нужно подавать на некоторые :vi: с палитры Graphics & Sound -> Sound, то можно попробовать кое что. Откройте панель Acquire Sound, проверьте, что все ваши устройства отображаются в выпадающем списке. На втором компе проделайте то же самое. Если все ЗК на месте, то идём сюда: <labview directory>\vi.lib\sound2\_SoundAcquireConfig.llb\InitializeInputDeviceRing.vi, вносим маленькую модификацию и снова проверяем вывод:
InitializeInputD_BD.png
Все звуковухи также должны быть на месте. После этого не должно составлять труда разобрать выходной массив и вытащить оттуда Dev Id.
User avatar
dadreamer
professor
professor
 
Posts: 3256
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 812
I/O VIP vision internet

Re: Распределение звуковых потоков

Postby Select on 22 Feb 2019, 01:47

Мои извинения за свое отсутствие в обсуждениях темы, все это время занимался поиском решения, в который раз все оказалось до неприличия просто.
Как выяснилось, ExpressVI, в моем случае их 5 присваивает ID номера хаотично для обнаруженных USB карт и в далצнейшем ведет себя непредсказуемо в случае их многократного перемешивания между USB портами. Оно и понятно, так традиционно устроен OC Win, когда происходит автоматическая регистрация подключаемого USB устройства.
Как я и говорил, мне каждый раз приходилось править свойства ExpressVI расставляя карты по своим местам.
Поступил следующим образом:
после очередной отладки, внешний хаб становится частью оборудования раз и навсегда, соответсвенно USB караты в дальнейшем никогда не изымаются из хаба и не переставляются, все синхронизируется посредством драйвера Realtec HD и всЁ :super:
Имеем контролируем многоканальную трансляцию.
Я обкуривался среди админов, но так ответ и не нашел, как и чем профиксить OC, чтоб она не меняла, однажды присвоенные регистрационные номера подключаемых USBшек.
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 120
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Распределение звуковых потоков

Postby dadreamer on 22 Feb 2019, 08:08

Select, а чем не угодил предложенный мной вариант? Или у карт имена одинаковые?.. Есть ещё вот такой вариант, хотя наверно это то же самое, только под другим соусом. По идее можно через WinAPI все данные вытащить, у каждой карты должен быть уникальным как минимум VID/PID, по нему уже отсортировать. Просто со всем, что касается звука, в ОС довольно-таки всё заморочено. Впрочем, вопрос уже решился.
User avatar
dadreamer
professor
professor
 
Posts: 3256
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 812
I/O VIP vision internet

Re: Распределение звуковых потоков

Postby Select on 22 Feb 2019, 14:32

dadreamer, благодарю, да это мой случай, взял там пример, попробую в качестве альтенативы :drink:
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 120
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Распределение звуковых потоков

Postby Select on 22 Feb 2019, 15:04

dadreamerПо идее можно через WinAPI все данные вытащить, у каждой карты должен быть уникальным как минимум VID/PID, по нему уже отсортировать. Просто со всем, что касается звука, в ОС довольно-таки всё заморочено. Впрочем, вопрос уже решился.
тот же расклад, но проще, все карты видны и можно выполнять выборку.
Attachments
screenshot 2019-02-22 001.png
screenshot 2019-02-22 001.png (2.67 KiB) Viewed 756 times
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 120
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Распределение звуковых потоков

Postby dadreamer on 22 Feb 2019, 17:32

Select wrote:тот же расклад, но проще, все карты видны и можно выполнять выборку.

Это ведь вручную делается. Я писал насчёт программного способа формирования аналогичного списка карт. InitializeInputDeviceRing.vi как раз и выполняет это при открытии панели Play Waveform и Acquire Sound. Подприбор легко приспособить под свои нужды, если имена карт не повторяются: модифицируем как описано выше, сохраняем под другим именем, вызываем данный SubVI, в выходном массиве ищем карту по её имени, находим пару "имя - dev id", дальше этот id подаём на стандартные инструменты :labview: . Если имена повторяются, ну, в таком случае необходим дополнительный идентификатор. Кроме WinAPI можно также выдернуть системную инфу через WMI. Для меня только один здесь сомнительный момент: будет ли список, полученный через WinAPI или WMI, совпадать со списком, полученным через InitializeInputDeviceRing.vi. Это надо практически проверять.
User avatar
dadreamer
professor
professor
 
Posts: 3256
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 812
I/O VIP vision internet

Re: Распределение звуковых потоков

Postby Select on 22 Feb 2019, 22:48

Имена карт не повторяются и метод раздельной трансляции работает, значения в контролах установил по номерам карт в дифолт.
Есть еще один вопрос, если я хочу сохранить эти потоки в wav формате под разными именам, трансляция потоков идет последовательно по каждой карте, далее в таком же порядке я хочу каждый поочередно проиграть.
В этом примере пишутся одновременно в два файла но сигнал в обоих файлах только от одной карты и разделения не происходит, хотя аппаратно на динамики потоки идут раздельно. Что я делаю не так?
Для наглядности, в качестве источника я взял две разнесенные частоты.
Attachments
screenshot 2019-02-22 001.png
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 120
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Распределение звуковых потоков

Postby dadreamer on 23 Feb 2019, 12:25

Select wrote:В этом примере пишутся одновременно в два файла но сигнал в обоих файлах только от одной карты

Из того, что я вижу на картинке, сигнал генерируется инструментом Simulate Signal и сразу же пишется в файл. Вывод на аудиокарту выполняется "до кучи", т.е. к записи в файл он никак не привязан. Поэтому то, что в файл запишется, целиком определяется настройками Simulate Signal (можно даже удалить Play Waveform, чтобы в этом убедиться). Попробуйте сделать запись не в одном, а в двух параллельных циклах. И выкладывайте программу или сниппет, чтобы можно было открыть, посмотреть, какие параметры стоят у :vi: , запустить.
User avatar
dadreamer
professor
professor
 
Posts: 3256
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 812
I/O VIP vision internet

Re: Распределение звуковых потоков

Postby Select on 25 Feb 2019, 02:15

dadreamer, действительно размещение в отдельных циклах решило проблему, так же найдено решение, на проигрывание распределением файлов по USB устройствам:
Attachments
screenshot 2019-02-25 001.png
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 120
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0

Re: Распределение звуковых потоков

Postby dadreamer on 25 Feb 2019, 09:17

Select wrote:dadreamer, действительно размещение в отдельных циклах решило проблему

Только это один цикл, а не два параллельных. :) И ещё не хватает Sound File Close после цикла.
User avatar
dadreamer
professor
professor
 
Posts: 3256
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2018
Karma: 812
I/O VIP vision internet

Re: Распределение звуковых потоков

Postby Select on 26 Feb 2019, 02:41

В.у. диаграмма, продолжение темы, с вариантом распределения потоков от сохраненных файлов на разные USB в одном цикле.
Изначально у меня задача была в сохранении в разные wav от каждой USB. Разнос на 2 цикла дает нужный результат, при этом полный останов приходится выполнять внешней командой меню или запускать эти процедуры в отдельных sub vi, что работает, но не так чтоб культурно, пока все суб vi висят в фоновом режиме, они записывают белый шум.
LabView 14
User avatar
Select
assistant
assistant
 
Posts: 120
Joined: 12 Dec 2017, 23:56
Location: Врата надежды.
LabVIEW Version: 14
Karma: 0


Return to Для чайников

Who is online

Users browsing this forum: Yandex and 9 guests

cron