Форум программистов, компьютерный форум, киберфорум
Цифровая обработка сигналов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/294: Рейтинг темы: голосов - 294, средняя оценка - 4.82
53 / 53 / 8
Регистрация: 21.03.2009
Сообщений: 371

Как узнать частоту звука?

20.01.2012, 16:11. Показов 65056. Ответов 252
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
народ,подскажите кто знает.обработкой сигнала нигода не занимался,поэтому если что-то говорю не правильно хочу программно определить к какой ноте принадлежит звук. Имею частоту дискретизации 8кГц и глубину 16 бит. значения этой выборки заносятся в массив.
1)Что представляют из себя эти значения?
если я правильно понял то каждый элемент массива это значение частоты в момент времени?
2)что нужно сделать с этим массивом чтобы узнать ноту?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2012, 16:11
Ответы с готовыми решениями:

Как менять частоту звука на STM32
Всем привет, на курсовую дали вот такое задание "Разработать МК устройство которое позволяет в зависимости от нажимаемой кнопки изменять...

Узнать из программы частоту процессора
Приветствую. Подскажите способ узнать из программы частоту процессора (ATMiko32, впрочем хотелось бы универсальный ваирант).

Как узнать частоту звука без сторонних библиотек
кто нибудь знает как в работать со звуком без сторонних библиотек? мне нужно чтобы во время проигрывания звука можно было узнать его...

252
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
16.05.2014, 19:59
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от bobrokrol Посмотреть сообщение
Обертоны могут быть негармоническими.
откуда они могут
Цитата Сообщение от bobrokrol Посмотреть сообщение
под "магнитудами" я понимаю модуль значений FFT = |FFT|.
магнитуда это энергия волны, чаще всего применяется при измерении энергии взрыва или землятресения
Магнитуда - Условная величина, характеризующая общую энергию упругих колебаний, вызванных землетрясениями или взрывами.


http://tolkslovar.ru/m249.html
Цитата Сообщение от bobrokrol Посмотреть сообщение
В англоязычных источниках это называется Magnitude
у них и "излучение"-"radiation"

Не по теме:

помню какие бури бушевали когда один из знатоков перевел как "радиация от ЭЛТ"
"Мониторы излучают радиацию"


Цитата Сообщение от bobrokrol Посмотреть сообщение
Обертоны могут быть негармоническими.
интересно, откуда им взяться при звучании струны?
изначально речь шла о гитаре

колокольчик,который ты привел, как и звук "А" это несколько другой звук,можно назвать аккордом,смесь нот
соответственно там нужен другой анализ

например спектр одиночного импульса "иголки" имеет плоскую характеристику, все частоты от 0 до бесконечности
http://peredacha-informacii.ru... pulsa.html
0
0 / 0 / 0
Регистрация: 26.04.2014
Сообщений: 11
16.05.2014, 20:19
Вот именно поэтому нет никакого желания перечитывать тему -- куча бесполезных советов всяких умников, а за 2 года существования темы, так и не нашлось нормального алгоритма. Особенно умиляли заявления о "неправильном FFT" и плохих коэффициентах. Русского термина для модуля FFT я не знаю, можете написать если он Вам известен. Я нигде не писал что меня интересует определение основной частоты струнных инструментов, если у вас есть факты того, что в губной гармошке все обертоны - гармонические, то прошу ссылки в студию, это бы помогло закрыть этот вопрос.
0
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
16.05.2014, 21:03
Так, почему то в коде не оказалось функции параболы. Вот она такая должна быть:
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
void VerPar(float x1,float y1,float x2,float y2,float x3,float y3)
{
    // определяем координаты вершины параболы
    float A,B,C;
    A=(y3-( (x3*(y2-y1)+x2*y1-x1*y2) /  (x2-x1)))   /(x3*(x3-x1-x2)+x1*x2);
    B= (y2-y1)/(x2-x1) - A*(x1+x2);
    C= ( (x2*y1-x1*y2) / (x2-x1) )+A*x1*x2;
    //выводим в глобальные переменные
    X0= -(B/(2*A));
    Y0= - ( (B*B-4*A*C)  /   (4*A) );
    return;
}

Где-то проскакивал другой вариант, в котором учтено, что расстояния между x1 x2 x3 равно единице.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
16.05.2014, 21:37
Цитата Сообщение от bobrokrol Посмотреть сообщение
а за 2 года существования темы, так и не нашлось нормального алгоритма.
не учитываешь несколько вариантов
а) его нет
б) никому не интересно его разрабатывать
в) тот кто его разрабатывает, не ищет готовые модули, а математический аппарат, не готов вот так выложить свои наработки

еще раз повторюсь задача поставленная Rem_, это сольфеджио, расписать звук по нотам, люди годами учатся и не у все получается
Цитата Сообщение от bobrokrol Посмотреть сообщение
Русского термина для модуля FFT я не знаю,
"Амплитудный спектр"
вот здесь есть кое что из теории и терминологии
http://old.computerra.ru/offline/1999/302/3763/
http://www.prist.ru/info.php/articles/sa_dpo.htm
и еще куча книг, лекций в интернете в pdf и по преобразованиям Фурье и по быстрым преобразованиям Фурье (БПФ) который ты называешь FFT( fast Fourier transform)
Цитата Сообщение от bobrokrol Посмотреть сообщение
если у вас есть факты того, что в губной гармошке все обертоны - гармонические,
Я специально не занимался этим вопросом, но даже поверхностного взгляда достаточно чтобы понять что в губной гармошке есть два источника звука, колебания язычка, это как у струнных и поток воздуха "белый шум" который отфильтрован в резонансной камере
и для того чтобы узнать ноту нужно отфильтровать шум

и самое главное о чем не однократно говорилось, необходимо отъюстировать тракт( помешение-микрофон-звуковуха) чтобы иметь уже нормальный спектр
0
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
18.05.2014, 15:04
Нормальные алгоритмы есть. Они в тюнерах с открытыми кодами на саузфорге, несколько штук. Нет людей, которые могли бы посмотреть и разобраться в них.
0
 Аватар для Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 181
18.05.2014, 18:18
Цитата Сообщение от Rem_ Посмотреть сообщение
Нормальные алгоритмы есть. Они в тюнерах с открытыми кодами на саузфорге, несколько штук. Нет людей, которые могли бы посмотреть и разобраться в них.
Можно ссылки?
0
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
19.05.2014, 04:05
http://sourceforge.net/projects/otuner/
http://sourceforge.net/projects/lstune/
http://sourceforge.net/projects/accordeur/
http://miracle.otago.ac.nz/tartini/download.html
1
0 / 0 / 0
Регистрация: 26.04.2014
Сообщений: 11
21.05.2014, 02:34
К сожалению полезной информации в этом сообщении очень мало. FFT уже давно реализовано несколькими способами и забыт. Почитать абстрактные статью про спектральный анализ на осциллографе LeCroy?
Уже неоднократно говорилось что алгоритмы есть и они работают без всяких юстировок.
Хорошо работающие тюнеры для Андроида, как я уже писал, в частности используют автокорреляцию. Проблема только в том, что там до и после получения автокорреляции происходит магия.
"Амплитудный спектр" -- это модуль значений комплексного спектра(FFT). Повторюсь еще раз - в английском, для модуля конкретного значения FFT есть термин "magnitude". Их, наверно можно обозвать амплитудами, но тогда может возникнуть путаница, так как эти значения не равны в точности амплитудам. Мне не очень понятно почему вас так смущают английские термины, БПФ чем то лучше чем FFT?(это риторический вопрос)

Добавлено через 16 минут
взглянул на Otuner, похоже там делали вот этим способом, сейчас разбираюсь с ним, там в коде тоже очень много магии.
Автокорреляция считается с помошью IFFT (можно как то так -- ifft(fft(x) * conj(fft(x))))
0
0 / 0 / 0
Регистрация: 26.04.2014
Сообщений: 11
22.05.2014, 08:29
Цитата Сообщение от Rem_ Посмотреть сообщение
похоже автор этой программы просто скоммуниздил код из Audicity. Думаю поступить также, раз это работает :/.
0
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
22.05.2014, 20:17
Поступил вопрос про точность. В программе Audacity генерирую синусоиду Generate - Tone - Sine. Жму Play, звук попадает сразу на микрофон и анализируется. Внешнего генератора частот у меня нет.
Все отклонения в десятых Герц. Форма лепестков зависит от оконной функции. Какая из них даёт идеальную параболу, не знаю.
Миниатюры
Как узнать частоту звука?   Как узнать частоту звука?   Как узнать частоту звука?  

Как узнать частоту звука?  
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
23.05.2014, 21:22
Rem_,
Внешнего генератора частот у меня нет
Это плохо!!! Технику правильно настраивать при помощи ГСС (Генератора стандартных сигналов)
звук попадает сразу на микрофон
Правильно повторюсь, подать ГСС на вход микрофонный, а не через микрофон!
Эта первая правильная ступень, выполнишь ее и картина прояснится. После этого будет вторая ступень, а через ступеньки лучше не прыгать!
0
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
23.05.2014, 21:37
Для музыки этого достаточно. Там частоты друг от друга отличаются в 1.059 раз. Так что 415.3 , 440 , 466.16 ни сколько не сливаются. Точность даже чрезмерная.
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
24.05.2014, 00:06
Rem_,
Пятая струна имеет частоту 110 герц, но при дёргании программа распознаёт её как 220 гц.
Путаница может быть и с гармониками, поэтому предлагаю настойчиво, подкинь ГСС с частотой 110гц. Не удивлюсь если программа распознает, и выведет на экран 220гц.
0
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
26.05.2014, 04:11
Появилась шальная мысль. А если захватить 2048 семплов, а потом интерполяцией наставить между ними ещё по одной или по три точки? Но тут опять нужно определить, какой по размеру массив комп сможет преобразовать без особой задержки?
0
0 / 0 / 0
Регистрация: 26.04.2014
Сообщений: 11
26.05.2014, 10:01
Цитата Сообщение от Rem_ Посмотреть сообщение
Появилась шальная мысль. А если захватить 2048 семплов, а потом интерполяцией наставить между ними ещё по одной или по три точки? Но тут опять нужно определить, какой по размеру массив комп сможет преобразовать без особой задержки?
Я не думаю что это хорошая идея, но наверно можно попробовать, правда, это может дать и негативный результат так как выбросы будут влиять на форму кривых, которыми будет производиться апроксимация / интерполяция. Делается это, обычно, сплайнами их очень много видов на любой вкус и цвет, но стоит поискать информацию о том, какие именно лучше использовать для звука.
0
 Аватар для Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 181
31.05.2014, 00:16
Цитата Сообщение от Rem_ Посмотреть сообщение
Появилась шальная мысль. А если захватить 2048 семплов, а потом интерполяцией наставить между ними ещё по одной или по три точки? Но тут опять нужно определить, какой по размеру массив комп сможет преобразовать без особой задержки?
А почему бы не взять 8192 сэмплов и не сделать fft этого массива шагом 4( те получается 2048 сэмплов )? Или ты так и делаешь?
0
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
12.06.2014, 14:26
Развития нет, проект стоит на месте.
А пока хочу показать, как анализ работает в профессиональных программах для электрогитар.
1. Rocksmith - Through The Fire And Flames. Вся песня быстрая. Соло с 6:30 до 8:40
Кликните здесь для просмотра всего текста

2. Rocksmith 2014 - Metallica - One (Lead). Очень известная песня, соло начинается с 5:40
Кликните здесь для просмотра всего текста
1
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
05.08.2014, 11:39
Все свои программы буду выкладывать в облако - https://cloud.mail.ru/public/2... Programms/
Скриншоты, описания, архивы. Во всех используются алгоритмы из этой темы.
0
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
10.08.2014, 15:49
Плейлист для демонстрации получившихся программ - http://www.youtube.com/playlis... C4rBnTR-Y1
0
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
15.08.2014, 11:20
Мыль для эксперимента. Вот мы получили несколько отсчетов фурье, нашли максимальный, взяли два соседних, теперь надо найти вершину. Надо как то сравнить два метода - по параболе и по кривой гауса. Потом им скармливать какие-нибудь стандартные частоты и замерять отклонения. Какой точнее показывает, тот оставить для использования.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.08.2014, 11:20

Как узнать частоту, амплетуду, длинну и т.д. звука в данный момент?
Здравствуйте! Как узнать частоту, амплетуду, длинну, скорость и т.д. звука в данный момент? ВОТ загрузил компонент(delphi new audio...

Как получить частоту звука?
Здравствуйте! как получить частоту звука? MediaPlayer1.FileName := 'sound.mp3'; if MediaPlayer1.Media <> nil then begin...

Как узнать частоту процессора?
Подскажите как узнать частоту процессора?

Как узнать частоту прцессора?
Как узнать частоту прцессора?

Как узнать начальную частоту?
собственно говоря для моей gtx 460 по сайту нвидии стандартная частота ядра 675, памяти - 1800. Так все и было, пока не зашел в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru