Quantum а как прочитать поступающий на звуковушку звук как цифровой массив . У меня задача попроще - прямоугольный сигнал с максимальным размахом (измерить частоту). Но прочитать не с файла , а с прямо со входа. ... с буфера чтоли..? .. вобщем незнаю, и прочитать - ничего про это не пишут. т.е. пишут наверное , но не знаю где . Догадываюсь , что юзать winmm.dll , только вот какие апи-шки ? Мне б только получить этот массив-звук, а там я уже сам . извиняюсь , что залез в чужую тему. может и товарищу, создавшему тему , пригодится.
ksacvet777 Средствами WINMM можно читать звук прямо со входа. 1. Открываем девайс функцией waveInOpen. Одним из параметров задаётся формат оцифровки. 2. Регистрируем буфер, в который будут поступать данные с микрофона функцией waveInPrepareHeader. 3. Начинаем запись функцией waveInStart. 4. Ждём пока не запишется... 5. Останавливаем запись функцией waveInReset и waveInStop. 6. Читаем и обрабатываем данные, которые записались в буфер. Можно и через оконную процедуру читать (см. MM_WIM_DATA). Также можно записывать данные через OpenAL.
Quantum большое спасибо, что направили. буду смотреть мсдн по этам апишкам . .... вот , человек !!! Никогда не нахамит , не нагрубит , не выпендривается , всегда поможет -пример всем !! Ещё раз спасибо вам ,Квантиум !!!
Quantum, препод сказал, что можно и через БПФ (теперь), но только если не писать это все самому. Не подскажете, откуда можно стрельнуть библиотеку, с готовой функцией, чтобы передавать в нее данные, и получать частоту? (:
Beowulf Лично я использовал интеловские библиотеки для FFT/IFFT. Эти библиотеки раньше были бесплатными, а сейчас - не знаю. Скорее всего, эти функции можно стрельнуть и из исходников JPEG, во всяком случае DCT/IDCT там точно есть. Может, кто-нибудь располагает более свежей информацией? Вообще, тема часто всплывает на форумах asm-community, fasm и др.
Насколько я понял, это задача определения мгновенной частоты по оцифрованному сигналу? Имхо, при помощи ДПФ можно, но это все равно будет через анальное отверстие. Навскидку, на практике реально используются методы: - подсчетов количества пересечений уровня мат. ожидания, посчитанного по N предыдущим отсчетам; - решением тригонометрических ураавнений; - расчетом преобразования Гильберта по N предыдущим отсчетам. На практике проверено, работает. Если надо, могу подогнать формулы, в личку или на форум.
Quantum, это подойдет? http://downloadfinder.intel.com/scripts-df-external/Product_Search.aspx?lang=eng&Prod_nm=FFT И если да, то как это использовать? А то я скачал fftasm.zip ничего не понимаю )=
Y_Mur, я там ничего не понимаю. Вообще. Статью под кодовым названием "здесь" я уже читал, перед тем как сюла постить. Наверное я лобзик, но ничего не понял. "Прикольный мануальчик" тоже ничего не дал )=
Beowulf Еще раз предлагаю: может быть, не стоит лезть в спектральный анализ? Может быть, можно многократно проще? Вот, например, расчет мгновенной частоты (относительно медленно изменяющегося) сигнала x в точке с индексом i: f(i) = (1/(6.28*T))*arccos((x(i-1)+x(i+1))/(2*x(i))), где T - период дискретизации, т.е. шаг между двумя соседними отсчетами. И все! Делается за 5 минут. По крайней мере, есть подозрение, что препод имел в виду что-нибудь вроде этого и страшно удивился, когда ему начали невнятно лепетать про Фурье. Устроит?
drmad, про Фурье все понятно. Он разрешил. Сказал только, чтобы сам это не писал. А так - бери библиотеку и используй.