Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[54.166.234.171] |
|
Сообщ.
#1
,
|
|
|
ПК с Windows 7. Мне нужно решить следующую задачу:
- оцифровать аналоговые сигналы с нескольких аналоговых аудиоустройств (по крайней мере 2 микрофона), устанавливая параметры оцифровки с ПК; - сохранить оцифрованные сигналы с внешних аналоговых устройств на ПК; - обработать оцифрованные сигналы. На первом этапе стоит задача научиться управлять устройством для обработки звука. Вопросы чувствительности, частотного и динамического диапазоны, быстройдействия пока не очень существенны, но устройство должно иметь, как я понимаю, поддержку ASIO и MME, чтобы отлаженные программы на более простом устройстве можно было использовать на более сложном и чувствительном. Очень желательно, чтобы устройство имело интерфейс USB (для возможности отладки программ на разных ПК и ноутбуках), а также имело драйвера для Windows 7. Но если внешнего такого устройства нет, то можно и PCI. Верхний ценовой диапазон 15 тыс. рублей, но чем дешевле, тем лучше. |
Сообщ.
#2
,
|
|
|
А вопрос в чём заключается?
1. Определитесь, с каким количеством, с какими микрофонами вы собираетсь работать, что записывать. 2. Штатные интерфейсы винды не умеют работать с многоканальным(больше 2-х каналов) оборудованием. В этом случае только ASIO. 3. USB и пр. девайсы могут иметь недостаточную чувствительность микрофонного входа. Стоит обратить внимание перед покупкой на чувствительность(коэффициент усиления) микрофонного входа, сопоставить с чувствительностью микрофонов, уровнем звукового давления(SPL) сигналов, которые вы собираетесь записывать и прикинуть, какой уровень сигнала будет на выходе девайса. Встроенные, PCI "бытовые" аудиокарты не расчитаны на подключение "нормальных" динамических и конденсаторных микрофонов. Совершенно. Они заточены под конденсаторные микрофонные капсюли с низковольным питанием, со встроенным усилителем, какие используются во всех гарнитурах. 4. "Быстродействие" ASIO, и вообще "быстрдействие", в случае простой записи сигналов, на скорость ветра не влияет вообще никак. 5. Если необходимо записать не более 2-х микрофонов, то можно взять микшерный пульт с 2-мя микрофонными входами и коэффициентом усиления 60 дБ. Оцифровывать можно любой аудиокартой, подавая сигнал с пульта на линейный вход. Проблем с чувствительностью не будет. Уровень собственных шумов...зависит от класса микрофонного усилителя/пульта, см. характеристики. |
Сообщ.
#3
,
|
|
|
Я плохо сформулировал вопрос, попробую пояснить:
1. Входом может быть более двух, мне говорил о 6-8. 2. Мне нужно понять, с помощью каких драйверов (интерфейсов) (ASIO, Windows MME или другие) можно решить задачу записи звуковых сигналов с микрофонов по отдельности (нужно записывать каждый сигнал с каждого канала в отдельные файлы) на ПК (ноутбуке) с Windows. 3. Затем мне нужно научиться записывать сигналы на устройстве с выбранным драйвером (интерфейсом). Для того, чтобы научиться это делать (написать программу), можно взять устройство для двух каналов с выбранным интерфейсом (чтобы оно было приемлемым по цене). 4. После демонстрации возможностей программы по записи по двум каналам будет закуплено другое многоканальное оборудование с выбранным интерфейсом и хорошими параметрами. Заниматься этим будут другие люди. Я буду заниматься программированием этого другого оборудования (если буду участвовать в проекте). Короче говоря, мне поступило предложение поучаствовать в проекте, который начнется в начале 2016 года. Но для этого я должен показать, что способен написать программу для записи сигналов по отдельности с разных каналов. Наверное, у руководителей проекта есть и другие кандидатуры, но я все-таки хочу попробовать. Тем более, что мне это самому интересно. Помощь специалистов в программировании звука нужна в плане выбора драйвера (интерфейса) для решения задачи многоканальной записи звука и в совете по выбору не очень дорогого устройства с этим интерфейсом и хотя бы с двумя каналами. Недорогого, потому что участие в проекте никто не гарантировал, возможно все лопнет и будет очень жаль большого количества потраченных впустую денег. Хотя знания и приобрету, но хотелось бы не очень дорогой ценой (в плане денег, а не потраченных усилий на решение задачи). Очень надеюсь на Вашу помощь. |
Сообщ.
#4
,
|
|
|
Цитата Мне нужно понять, с помощью каких драйверов (интерфейсов) (ASIO, Windows MME или другие) можно решить задачу записи звуковых сигналов с микрофонов по отдельности (нужно записывать каждый сигнал с каждого канала в отдельные файлы) на ПК (ноутбуке) с Windows. С помощью любых. Загляните в FAQ. Прочтите Кинтцеля, Секунова, многие вопросы прояснятся, отпадут, появятся новые... |
Сообщ.
#5
,
|
|
|
Если б мне надо было показать, что я умею захватывать звук с нескольких микрофонов, то я б использовал WinMM. Только потому, что у меня есть опыт подобной разработки (Запись 8 радио станциий на 4 аудио карты). Может DirectX проще, но не для меня.
Вставляешь вторую (третью, четвертую) аудио карту (карты должны быть от разных производителей). Вставляешь микрофоны. Пишешь код, который определяет количество карт в компьютере (waveInGetNumDevs). Пишешь код, который открывает нужную карту, а далее используешь стандартный код захвата звука. Отдельное приложение для каждой карты, записываешь звук с каждого микрофона. |
Сообщ.
#6
,
|
|
|
Вам нужен АЦП и мультиплексор. А вот как сделать? Это вопрос выбора, таких вариантов вагон и маленькая тележка.
1) Звуковые карты от разных производителей. 2) Профессиональная звуковая карта с несколькими входами. 3) Несколько USB аудиокарт 4) микроконтроллер с АЦП и мультиплексором. - Самый дешёвый вариант. ДА и самый простой. 5) Какую нибудь L-card или лучше любой другой АЦП с PCI/PCIe/USB главное ищите с SDK. 6) Астерикс Цитата tumanovalex @ 3. Затем мне нужно научиться записывать сигналы на устройстве с выбранным драйвером (интерфейсом). Для того, чтобы научиться это делать (написать программу), можно взять устройство для двух каналов с выбранным интерфейсом (чтобы оно было приемлемым по цене).4. После демонстрации возможностей программы по записи по двум каналам будет закуплено другое многоканальное оборудование с выбранным интерфейсом и хорошими параметрами. Заниматься этим будут другие люди. Я буду заниматься программированием этого другого оборудования (если буду участвовать в проекте).Короче говоря, мне поступило предложение поучаствовать в проекте, который начнется в начале 2016 года. Но для этого я должен показать, что способен написать программу для записи сигналов по отдельности с разных каналов. Наверное, у руководителей проекта есть и другие кандидатуры, но я все-таки хочу попробовать. Тем более, что мне это самому интересно. Честно тут муть какая-та. Либо имели печальный опыт кто-то брался и не сделал. Да такое у программистов бывает. Либо сами не знаю что хотят. Со звуком по аккуратнее, пожалуй это самая глючная и бажная область после видео. Поэтому к примеру звуковые карты от одного производителя могут не заработать из-за конфликта. А от разных тоже могут быть конфликты и код разнится. И готовитесь, что на одном API может пойти на другом нет, надо пробовать разные. А вообще это как повезёт. Повезёт с первого раза всё заработает и проблем не заметите. Не повезёт будете мучится. Но чаще всего ошибки в коде прикладной программы. ASIO(не распространён), Windows MME, DirectX, и тп. https://msdn.microsoft.com/en-us/library/wi...0(v=vs.85).aspx Я за DirectX он по проще будет. Но не для новичков. Там надо владеть ООП: понимать как работает конвейер, что такое фабрики, как работает барьерной синхронизация и так далее. А вообще какие требования к звуку? Частота работы? Качество, нелинейные искажения? Временные требования голос передавать? Задержки(джитер)? Сжатие? |
Сообщ.
#7
,
|
|
|
Цитата MIF @ Если б мне надо было показать, что я умею захватывать звук с нескольких микрофонов, то я б использовал WinMM. Только потому, что у меня есть опыт подобной разработки (Запись 8 радио станциий на 4 аудио карты). Может DirectX проще, но не для меня. Вставляешь вторую (третью, четвертую) аудио карту (карты должны быть от разных производителей). Вставляешь микрофоны. Пишешь код, который определяет количество карт в компьютере (waveInGetNumDevs). Пишешь код, который открывает нужную карту, а далее используешь стандартный код захвата звука. Отдельное приложение для каждой карты, записываешь звук с каждого микрофона. В принципе, таким же образом можно и с многоканальными устройствами попробовать работать. Помимо поддержки ASIO, в драйверах [может быть] реализована поддержка и winmm и DirectSound. В этом случае каналы делятся на пары(стерео), обращение к парам каналов как к разным устройствам. В общем, если каналы записи независимые, т.е., не требуется жёсткая синхронизация, можно попробовать юзать winmm. Тогда будет неважно, одно мноканальное устройство используется или несколько отдельных аудиокарт. Не могу утверждать, что обязательно получится, с любым многоканальным устройством, но попробовать можно. |
Сообщ.
#8
,
|
|
|
Спасибо большое за ответы. Они помогли мне понять следующее:
1. Сначала идет удовлетворяющая потребностям заказчика программы аппаратура, а потом уже именно для нее нужно создавать программу. 2. Попытки угадать интерфейсы и возможности этой аппаратуры - бесперспективны. То, что вроде бы будет удовлетворять на простом устройстве, может не удовлетворять на сложном. Да и интерфейсы могут отличаться. 3. Для решения такой сложной задачи нужна большая программистская практика, в том числе и в области работы со звуком. Опыта и знаний у меня мало, практики тоже. Прошу меня извинить, что отнял у вас время. Участвовать в этом проекте не буду, задача мне не по силам. |
Сообщ.
#9
,
|
|
|
Цитата Сначала идет удовлетворяющая потребностям заказчика программы аппаратура, а потом уже именно для нее нужно создавать программу. По идее, да. |
Сообщ.
#10
,
|
|
|
Тему не читал, может повторюсь.
Для записи более двух |
Сообщ.
#11
,
|
|
|
Цитата Mikle @ свободно пишу до восьми источников звука, для этого достаточно даже DirectSound, в устройствах записи видятся четыре независимых стерео устройства. Лет восемь назад у меня ещё не было этой звучки, и я просто устанавливал в компьютер несколько звуковых карт, это тоже работает без проблем. А для записи многоканального звука с помощью своей программы Вы создаете несколько потоков, по потоку на канал? Или как-то по другому? |
Сообщ.
#12
,
|
|
|
Цитата tumanovalex @ А для записи многоканального звука с помощью своей программы Вы создаете несколько потоков, по потоку на канал? Или как-то по другому? Всё в одном потоке. С помощью DirectSoundCreate создаётся столько экземпляров DirectSound8, сколько есть звуковых карт, каждый со своим GUID, которые получаем с помощью DirectSoundEnum8.GetGuid. Каждым экземпляром DirectSound8 создаём свой DirectSoundCapture8 и стартуем на запись с параметром DSCBSTART_LOOPING. С помощью GetCurrentPosition читаем текущую позицию, лочим записанное до этой позиции и скидываем, например, в файл. |
Сообщ.
#13
,
|
|
|
Спасибо за ответ, попробую.
|