Страница 1 из 1
Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 17:19:44
B@R5uk
Вопрос, пожалуй совсем не в тему сайта, но всё-таки возможно кто-то имел опыт и подскажет/ткнёт носом куда копать.
Хочу написать на С++ прогу, которая в реальном времени будет захватывать звук, подаваемый на звуковую карту (меандр), опредлять его частоту и строить графики частоты и (ВНИМАНИЕ!!!) фазы (поэтому необходимо, чтобы звук захватывался без малейших пропусков).
Математический аппарат уже разработан, опыт в программировании у меня есть, загвоздка только в одном. Функции каких библиотек надо использовать, чтобы заведомо не напоросться ни на какие гадости?
Заранее спасибо.
Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 17:52:29
Yftul
Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 18:19:11
B@R5uk
Ээээммм... Я собрался писать "под виндоувс" для ПК свою программулину.
Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 18:28:03
Goodefine
К чему тут ОС реального времени? Со звуковой даже винда справиться - тому множество примеров, от штатных средств до серьезных коммерческих программ.
А использовать, как ни странно, функции api... Либо обертку вокруг них в виде класса, если кто то ее сделал...
Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 19:46:37
Yftul
Goodefine писал(а):К чему тут ОС реального времени?
B@R5uk писал(а):необходимо, чтобы звук захватывался без малейших пропусков
Либо меняйте условия, либо курите в сторону ОСРВ.
Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 20:08:53
Goodefine
Yftul писал(а):
B@R5uk писал(а):необходимо, чтобы звук захватывался без малейших пропусков
Либо меняйте условия, либо курите в сторону ОСРВ.
"Малейшие" пропуски" - это техническая характеристика?
Почти каждая карточка умеет оцифровывать под 192к выборок в секунду, что почти в 10 раз больше, чем верхняя граничная частота звукового диапазона. Если этого недостаточно, то звуковая тут явно не в тему, независимо от ОС. Или qnx умеет улучшать аппаратные характеристики? Ведь не винда же лично оцифровывает... Только из буфера выгребает. И надо уж очень постараться, чтоб не успела до переполнения оного...
Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 20:16:58
Yftul
Автор пишет что ему нужно очень точно измерять фазу. Гарантии этого винда дать не может. Разговор может лишь идти о вероятности при определенных условиях.
ЗЫ: Может человек атомный реактор проектирует(судя по ИД), не боитесь, что из-за Вас произойдет очередной Чернобыль?

Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 20:49:31
B@R5uk
Goodefine писал(а):...Ведь не винда же лично оцифровывает... Только из буфера выгребает. И надо уж очень постараться, чтоб не успела до переполнения оного...
Именно! Мне это необходимо, и этого достаточно. Не спутники ж в космос запускать. Проблема в том, что я не знаю точно, как это реализовать.
Вот тут замечательная статья на эту тему для начинающих, жаль только не заострён вопрос на тему циклического последовательного заполнения двух буферов без простоев АЦП звуковухи.
Походу я совсем ошибся адресом с этим вопросом. Ну да ладно, попробую поискать решения сам.
Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 20:55:42
Foks
Использовать DirectSound - логичное решение, и в статье азы описаны, а зачем Вам два буфера и в чем конкретно состоит вопрос?
------
Add:
А, ну да, там не описано как ввести буфер в режим циклической записи либо циклического воспроизведения.
http://www.helloworld.ru/texts/comp/gam ... /index.htm - описание API всего этого дела (ссылку нагуглил)
Можно пошаманить и попытаться сделать самому (я когда-то именно так и делал), либо еще погуглить и найти простейшие рабочие примеры реализации.
Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 21:04:25
Goodefine
Yftul писал(а):Автор пишет что ему нужно очень точно измерять фазу. Гарантии этого винда дать не может...

Снова "очень точно"... Причем здесь винда вообще непонятно...
Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 21:25:26
Yftul
Автор не дает точных критериев оценки качества захвата звука, кроме
B@R5uk писал(а):Хочу написать на С++ прогу, которая в реальном времени будет захватывать звук, подаваемый на звуковую карту (меандр), опредлять его частоту и строить графики частоты и (ВНИМАНИЕ!!!) фазы (поэтому необходимо, чтобы звук захватывался без малейших пропусков).
Исходя из этого, ему требуется операционная система, гарантирующая некоторое время реакции на событие, к примеру на смену указателя на буфер

. То есть винда ему не подходит.
Конечно скорее всего все не настолько критично и автор просто сам не понимает что точно он хочет, но мы ведь хотим ему помочь в рамках им выданных ИД, не так ли

Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 22:58:12
B@R5uk
Foks писал(а):...а зачем Вам два буфера?..
Ну, на сколько я себе представляю это дело в общих чертах, звуковуха будет оцифровывать звук в один буфер, в то время как прога будет обсчитывать данные второго. Время, необходимое для обсчёта данных, меньше, чем время, необходимое для заполнения буфера, поэтому накладок быть не должно, и ещё остаётся куча времени для других процессов. По заполнении первого буфера звуковуха не прерываясь должна перейти к заполнению второго и сообщить проге, что она может обрабатывать первый. В реализации этого момента у меня загвоздка. В принципе, для компа есть куча гитарных процессоров, использующие этот момент, да и фирменные программы типа Acid Pro этим тоже пользуются.
Foks писал(а):...и в чем конкретно состоит вопрос?..
Хочу сделать высокоточный частотомер с графиком фазы. По расчётам для частот порадка 10-18кГц, даже с такой низкой частотой дискретизации, как 48 кГц, можно добиться относительной точности определения частоты порадка 2*10^-6 за промежуток времени в 0,1 секунды (естественно без учёта того, на сколько "хорошо кварцована" частота звуковухи). Надо только грамотно обсчитать полученные данные. Я уже года два программирую (а точнее считаю) только в матлабе, под винду прогал очень мало (лучшее, что сделал — обсчёт МНК с графиком и игра жизнь), много — под дос в борланде 3.1, поэтому MS Visual C++ надо практически заново осваивать.
Foks писал(а):http://www.helloworld.ru/texts/comp/games/dsound/dsound/index.htm - описание API всего этого дела (ссылку нагуглил)
Обалденная статья!!! Подробная документация да ещё и на русском! Огромное спасибо. Засейвил =)))
Foks писал(а):...либо еще погуглить и найти простейшие рабочие примеры реализации.
Это было бы полная нирвана...
З.Ы.
Yftul 
Re: Захват звука со звуковой карты в реальном времени.
Добавлено: Ср янв 19, 2011 23:07:57
Yftul
B@R5uk писал(а):З.Ы. Yftul
Учимся правильно давать ИД и составлять ТЗ
