Частота проигрываемого звука.

Тема в разделе "WASM.BEGINNERS", создана пользователем Beowulf, 13 апр 2007.

  1. Beowulf

    Beowulf New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2007
    Сообщения:
    20
    так это ж через какой интервал времени придется делать выборки? О_О
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Beowulf
    Не надо их "делать" - их нужно последовательно читать из файла (см. пример выше).
     
  3. ksacvet777

    ksacvet777 Александр

    Публикаций:
    0
    Регистрация:
    9 ноя 2006
    Сообщения:
    180
    Адрес:
    Кемеровская обл.
    Quantum
    а как прочитать поступающий на звуковушку звук как цифровой массив . У меня задача попроще - прямоугольный сигнал с максимальным размахом (измерить частоту). Но прочитать не с файла , а с прямо со входа. ... с буфера чтоли..? .. вобщем незнаю, и прочитать - ничего про это не пишут.

    т.е. пишут наверное , но не знаю где . Догадываюсь , что юзать winmm.dll , только вот какие апи-шки ?
    Мне б только получить этот массив-звук, а там я уже сам .

    извиняюсь , что залез в чужую тему.

    может и товарищу, создавшему тему , пригодится.
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    ksacvet777
    Средствами WINMM можно читать звук прямо со входа.

    1. Открываем девайс функцией waveInOpen. Одним из параметров задаётся формат оцифровки.
    2. Регистрируем буфер, в который будут поступать данные с микрофона функцией waveInPrepareHeader.
    3. Начинаем запись функцией waveInStart.
    4. Ждём пока не запишется...
    5. Останавливаем запись функцией waveInReset и waveInStop.
    6. Читаем и обрабатываем данные, которые записались в буфер.

    Можно и через оконную процедуру читать (см. MM_WIM_DATA).

    Также можно записывать данные через OpenAL.
     
  5. ksacvet777

    ksacvet777 Александр

    Публикаций:
    0
    Регистрация:
    9 ноя 2006
    Сообщения:
    180
    Адрес:
    Кемеровская обл.
    Quantum
    большое спасибо, что направили. буду смотреть мсдн по этам апишкам .

    ....

    вот , человек !!! Никогда не нахамит , не нагрубит , не выпендривается , всегда поможет -пример всем !!

    Ещё раз спасибо вам ,Квантиум !!!
     
  6. Beowulf

    Beowulf New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2007
    Сообщения:
    20
    Quantum, препод сказал, что можно и через БПФ (теперь), но только если не писать это все самому. Не подскажете, откуда можно стрельнуть библиотеку, с готовой функцией, чтобы передавать в нее данные, и получать частоту? (:
     
  7. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Beowulf
    Лично я использовал интеловские библиотеки для FFT/IFFT. Эти библиотеки раньше были бесплатными, а сейчас - не знаю. Скорее всего, эти функции можно стрельнуть и из исходников JPEG, во всяком случае DCT/IDCT там точно есть.

    Может, кто-нибудь располагает более свежей информацией?

    Вообще, тема часто всплывает на форумах asm-community, fasm и др.
     
  8. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    Насколько я понял, это задача определения мгновенной частоты по оцифрованному сигналу?
    Имхо, при помощи ДПФ можно, но это все равно будет через анальное отверстие. :dntknw:
    Навскидку, на практике реально используются методы:
    - подсчетов количества пересечений уровня мат. ожидания, посчитанного по N предыдущим отсчетам;
    - решением тригонометрических ураавнений;
    - расчетом преобразования Гильберта по N предыдущим отсчетам.

    На практике проверено, работает. Если надо, могу подогнать формулы, в личку или на форум.
     
  9. Beowulf

    Beowulf New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2007
    Сообщения:
    20
    Quantum,

    это подойдет? http://downloadfinder.intel.com/scripts-df-external/Product_Search.aspx?lang=eng&Prod_nm=FFT

    И если да, то как это использовать? А то я скачал fftasm.zip ничего не понимаю )=
     
  10. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
  11. Beowulf

    Beowulf New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2007
    Сообщения:
    20
    Y_Mur, я там ничего не понимаю. Вообще. Статью под кодовым названием "здесь" я уже читал, перед тем как сюла постить. Наверное я лобзик, но ничего не понял. "Прикольный мануальчик" тоже ничего не дал )=
     
  12. drmad

    drmad New Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    332
    Адрес:
    Russia
    Beowulf

    Еще раз предлагаю: может быть, не стоит лезть в спектральный анализ? Может быть, можно многократно проще?
    Вот, например, расчет мгновенной частоты (относительно медленно изменяющегося) сигнала x в точке с индексом i:
    f(i) = (1/(6.28*T))*arccos((x(i-1)+x(i+1))/(2*x(i))),
    где T - период дискретизации, т.е. шаг между двумя соседними отсчетами. И все! Делается за 5 минут.
    По крайней мере, есть подозрение, что препод имел в виду что-нибудь вроде этого и страшно удивился, когда ему начали невнятно лепетать про Фурье. :) Устроит?
     
  13. Beowulf

    Beowulf New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2007
    Сообщения:
    20
    drmad, про Фурье все понятно. Он разрешил. Сказал только, чтобы сам это не писал. А так - бери библиотеку и используй.