Вечер добрый! Скажите пожалуйста как можно получить звуковой поток с микрофона и выводить в график участки превышающие определённую планку в Герцах. Например мне надо отобразить на графике пики превышающие 200 Гц.
Этот топик читают: Гость
Ответов: 563
Рейтинг: 54
|
|||
карма: 0 |
|
Ответов: 8930
Рейтинг: 823
|
|||
bublik, см. тему "Графический визуализатор", там есть http://hiasm.com/forum.html?q=3&p=150321
|
|||
карма: 19 |
| ||
Голосовали: | bublik |
Ответов: 4641
Рейтинг: 334
|
|||
bublik писал(а): получить звуковой поток с микрофонасмотри примеры по Bass bublik писал(а): на графике пики превышающие 200 Гцкомпонент от Леонида http://hiasm.com//getfile/17639 и тема по нему http://hiasm.com/forum.html?q=3&p=150803#p150803 ------------ Дoбавленo в 21.52: [offtop]пока старался, Леонид, сам написал. [/offtop] |
|||
карма: 1 |
| ||
Голосовали: | bublik |
Ответов: 563
Рейтинг: 54
|
|||
Спасибо конечно, но я там ничего не понял )
Сделал захват потока с микрофона всё как бы работает но хочется отображать в виде линейного графика и не очень понятен список выдаваемый через Memory в FFT самом начале. Помогите пожалуйста поправить. code_17841.txt |
|||
карма: 0 |
| ||
файлы: 1 | code_17841.txt [1.4KB] [177] |
Ответов: 4641
Рейтинг: 334
|
|||
bublik писал(а): график участки превышающие определённую планкуа какой ты график хочешь... может на картинках объяснишь что хочешь? |
|||
карма: 1 |
| ||
Голосовали: | bublik |
Ответов: 563
Рейтинг: 54
|
|||
Типа этого:
|
|||
карма: 0 |
|
Ответов: 8930
Рейтинг: 823
|
|||
bublik, ликбез: по точке doFFT компонент выдаёт индексы частот и коэффициенты амплитуд преобразования Фурье по 2048 точкам, индексы от 1 до 743 соответствоют частотам (44100/2048)*индекс (Гц); амплитуды звука на этой частоте равна 32768*(коэф/6,2831852...)
по точке doFftVis компонент выдаёт суммы коэффициентов амплитуд в заранее установленных полосах частот, эти полосы подаются на точку doStrFreqSeparation в виде строки с разделителем, например 2;10;50;250,где цифры - индексы частот раздела, это означает что первая полоса от 43 Гц (индекс 2) до 215 Гц (индекс 10), вторая полоса от 215 Гц до 1076 Гц (индекс 50) и третья полоса от 1076 Гц до 5383 Гц (индекс 250) выход амплитуд предваряется выдачей на onIndFreq индекса частоты или номером полосы (программисты считают от 0 ) |
|||
карма: 19 |
| ||
Голосовали: | bublik |
Ответов: 563
Рейтинг: 54
|
|||
Во заработало Но на графике не отображаются цифры.
Спасибо за разъяснение. Откуда можно получить событие при превышении 200 Гц? |
|||
карма: 0 |
|
Ответов: 4641
Рейтинг: 334
|
|||
bublik писал(а): Откуда можно получить событие при превышении 200 Гц?Леонид писал(а): вторая полоса от 215 Гц до 1076 Гц (индекс 50) и третья полоса от 1076 Гц до 5383 Гц (индекс 250)задай полосы и только по ним ты и будешь вдеть амплитуды. Вроде так! |
|||
карма: 1 |
|
Ответов: 563
Рейтинг: 54
|
|||
Задал полосы, из точки onAmpl получаю дробные значения, как перевести это значение в частоту?
Сорри если задаю глупые вопросы |
|||
карма: 0 |
|
Ответов: 8930
Рейтинг: 823
|
|||
bublik, сделайте 2 полосы: (1;9;743), в Герцах - 20--193--16000, первое значение на onIndFreq будет соответствовать до ~200 Гц, второе после 200 Гц.
------------ Дoбавленo в 14.47: bublik, bublik писал(а): из точки onAmpl получаю дробные значения |
|||
карма: 19 |
| ||
Голосовали: | bublik |
Ответов: 563
Рейтинг: 54
|
|||
Задал полосы, прилинковал точку onIndFreq к списку и вижу что появляются значения от 0 до 10, хочется увидеть в потоке значения герц, звук в потоке явно превышает 200 герц а onIndFreq выдаёт числа до 10.
В чём моя ошибка? И что делать если мне нужно получить из потока все значения выше 200 Гц. Хотел использовать If Freq>=200 для сортировки. |
|||
карма: 0 |
|
Ответов: 8930
Рейтинг: 823
|
|||
bublik,
Леонид писал(а): индексы от 1 до 743 соответствоют частотам (44100/2048)*индекс (Гц); Freq=индекс*21.533203125, индекс=9 соответствует частоте 193 Гц |
|||
карма: 19 |
| ||
Голосовали: | bublik |
Ответов: 563
Рейтинг: 54
|
|||
Ясно Спасибо огромное ;)
|
|||
карма: 0 |
|
Ответов: 4641
Рейтинг: 334
|
|||
bublik писал(а): Ясно Спасибо огромное ;)Как сделаешь... выкладывай схему |
|||
карма: 1 |
|