ОБСЛУЖИВАНИЕ И РЕМОНТ ФОРТЕПИАНО

ГОСТЕВАЯ ВЕРСИЯ ФОРУМА


Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Быстрое преобразование Фурье
СообщениеДобавлено: 20 фев 2019, 15:56 
Мэтр
Аватара пользователя
AlexHutor писал(а):
Klopff писал(а):
Есть такой закон физический: точность определения частоты периодического колебания прямо пропорциональна длительности существования этого колебания. Если звук длится одну секунду, то определить его частоту можно с точностью не более +/-1 Гц. Если длится 10 секунд, достижимая точность +/-0,1 Гц, 100 сек. - +/-0,01 Гц.
Владимир Алексеевич, а как же тогда программа определяет с точностью до сотых герца частоту звука за полсекунды?

Закон есть закон. Но он действителен только при определении частоты изолированного звука. Что касается настроечных программ, то они не определяют частоту звука, а сопоставляют эту "слышимую" частоту с вычисленной заранее образцовой частотой. Определить, в какую сторону и с какой скоростью ползет слышимая частота относительно образцовой нетрудно буквально за несколько периодов, и на базе такого подсчета выдать на дисплей "измеренную" частоту и меру ее отклонения от образцовой. Кстати, ушами определить, в какую сторону и насколько смещается частота при настройке, тоже довольно легко, причем даже при настройке одной струны, не говоря уже о настройке унисона двух струн.


Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Klopff "Спасибо" сказали:
= [ Новый Рояль ] =
 Заголовок сообщения: Re: Быстрое преобразование Фурье
СообщениеДобавлено: 20 фев 2019, 16:13 
Administrator
Аватара пользователя
Спасибо, Владимир Алексеевич. И всё равно я недопонимаю. Как же тогда в автомобиле спидометр показывает скорость в км/час, когда машина ещё не проехала километр, да и измерения производились меньше часа? Может я некорректный пример привёл, но понять, почему нельзя точно измерить частоту за короткий отрезок времени, не могу.


Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Быстрое преобразование Фурье
СообщениеДобавлено: 20 фев 2019, 16:36 
Старожил Форума
Аватара пользователя
Сергей еще один писал(а):
Кстати, хотел спросить у daly. А как он оценивал частоту своих камертонов с точностью до 0.2гц?

Я в 90-ые еще мальчиком совсем начинал свою трудовую карьеру на турбинном заводе в лаборатории на испытательных стендах в качестве обслуживающего персонала КИП и систем управления. Мне тогда сходило с рук разные шалости, "эксперименты", вот и в один случай я принес все камертоны из дома и измерял их частоту через микрофон на осцилографе, были и частотомеры и очень много различных приборов от древних за 1957год до новейших на то время. В моем распоряжении были целые этажи приборов на все случаи жизни, названий уже и не вспомню. И ушел от туда потому что понял, что электроника - не мое

_________________
Готовлю кофе


Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю daly "Спасибо" сказали:
= [ Новый Рояль ] =, Сергей
 Заголовок сообщения: Re: Быстрое преобразование Фурье
СообщениеДобавлено: 20 фев 2019, 19:12 
Мэтр
Аватара пользователя
AlexHutor писал(а):
... Как же тогда в автомобиле спидометр показывает скорость в км/час, когда машина ещё не проехала километр, да и измерения производились меньше часа?
...понять, почему нельзя точно измерить частоту за короткий отрезок времени, не могу.

С автомобилем все просто: 60 км/ч = 1 км/мин = 1/60 км/сек = 16,67 м\сек. То есть для определения скорости с достаточной для практических целей точностью можно просто измерить период вращения колеса (или какой-то жестко с колесом связанной шестерни в трансмисии), скажем, в миллисекундах. Электронный спидометр в современных авто так и делает. А вот с измерением частоты сложнее. Я в данном случае сам не вполне отчетливо это понимаю, во всяком случае "нутром чую", что закон этот есть и работает, но объяснить его суть словами пока не получается. Надо бы полистать какой-нибудь серьезный учебник физики в разделе "Колебания и волны", но все руки не доходят.


Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Klopff "Спасибо" сказали:
= [ Новый Рояль ] =
 Заголовок сообщения: Re: Быстрое преобразование Фурье
СообщениеДобавлено: 20 фев 2019, 19:57 
Активный завсегдатай
Аватара пользователя
Мне кажется что серьезный учебник физики здесь не нужен. Попробую развить аналогию с автомобильным спидометром:
AlexHutor писал(а):
Как же тогда в автомобиле спидометр показывает скорость в км/час, когда машина ещё не проехала километр, да и измерения производились меньше часа? Может я некорректный пример привёл, но понять, почему нельзя точно измерить частоту за короткий отрезок времени, не могу.
У многих в автомобиле есть бортовой компьютер. И он показывает не только мгновенную скорость и мгновенный расход топлива но и средние показатели того же самого в расчете на 100 пройденных машиной километров. Разве может компьютер показать достаточно точно что-то усредненное на 100 км не проехав хотя бы 100км?? Если он и покажет - это будет враньё, экстраполяция, поскольку истинную цифру мы узнаем лишь проехав 100км (или больше!). Потому что нам интересны не моментальные значения расхода и не грубые оценки а именно - средний расход на 100км чтобы понимать что и в ближайшие 1000км средний расход скорее всего будет приблизительно таким же.

По-другому: Если вы проехали 99км пути а потом, например, надолго скрылись в длинном туннеле и исчезли из поля зрения наблюдателя. Какой вывод о вашей средней скорости на 100км пути должен сделать наблюдатель? Если он педант то он не сможет сделать никакого вывода.

Так и с частотой. Нас интересует именно та устоявшаяся частота которая останется в инструменте и через 100 секунд и через 100 минут и дальше. То есть - усредненная а не кусок синусоиды которые различить по степени наклона можно но при всем старании - опять же - не точнее чем позволяет размер разглядываемого куска.

А теперь представьте себе что ни одна из настроечных программ на самом деле не держит в руках никаких кусков простых синусоид и не смотрит на них с целью оценить их частоту. Она держит кусок сложного суммарного колебания и дерзает считать его периодическим даже при том что он (кусок) не сходится своими концами, то есть, фактически он непериодичен. Лишь при этом допущении программа может выделить из него гармоники с помощью БПФ. Первое что приходится сделать программе чтобы применить БПФ - допустить что это кусок в 0.2 сек - один полный период выдернутый из сложного периодического колебания. В результате того что делается такое допущение, БПФ работает уже со сложным но периодическим сигналом у которого каждые 0.2секунды неуклюжие склейки которые никто на этом этапе не сглаживает. В итоге когда БПФ применено - из-за склеек в спектре обнаруживаются "паразитные" артефакты и мы видим "сталинскую высотку" вместо одиночного острого пика. Понятно что каждая из найденных в куске гармоник целое число раз умещается в первоначально взятом за образец куске колебаний. А общий период колебаний самого "куска", его длина - общее кратное всех периодов всех составляющих его гармоник. P.S.: Судя по всему длина "куска" в вашем примере равна 2048


Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Быстрое преобразование Фурье
СообщениеДобавлено: 21 фев 2019, 17:17 
Старожил Форума
Аватара пользователя
daly писал(а):
Сергей еще один писал(а):
Кстати, хотел спросить у daly. А как он оценивал частоту своих камертонов с точностью до 0.2гц?

Я в 90-ые еще мальчиком совсем начинал свою трудовую карьеру на турбинном заводе в лаборатории на испытательных стендах в качестве обслуживающего персонала КИП и систем управления. Мне тогда сходило с рук разные шалости, "эксперименты", вот и в один случай я принес все камертоны из дома и измерял их частоту через микрофон на осцилографе, были и частотомеры и очень много различных приборов от древних за 1957год до новейших на то время. В моем распоряжении были целые этажи приборов на все случаи жизни, названий уже и не вспомню. И ушел от туда потому что понял, что электроника - не мое

:like: :bravo: :good: :bravo2:

_________________
: Заранее благодарен :
= [ Новый Рояль ] =


Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Быстрое преобразование Фурье
СообщениеДобавлено: 21 фев 2019, 17:31 
Старожил Форума
Аватара пользователя
Сергей еще один
Тема повідомлення: Re: Быстрое преобразование Фурье

Мне кажется что серьезный учебник физики здесь не нужен.
# #
Хммм.... Ув. Сергей, ЕЩЕ КАК : Н У Ж Е Н ! ! :OO:

_________________
: Заранее благодарен :
= [ Новый Рояль ] =


Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Быстрое преобразование Фурье
СообщениеДобавлено: 21 фев 2019, 17:57 
Старожил Форума
Аватара пользователя
Klopff писал(а):
AlexHutor писал(а):
... Как же тогда в автомобиле спидометр показывает скорость в км/час, когда машина ещё не проехала километр, да и измерения производились меньше часа?
...понять, почему нельзя точно измерить частоту за короткий отрезок времени, не могу.

С автомобилем все просто: 60 км/ч = 1 км/мин = 1/60 км/сек = 16,67 м\сек. То есть для определения скорости с достаточной для практических целей точностью можно просто измерить период вращения колеса (или какой-то жестко с колесом связанной шестерни в трансмисии), скажем, в миллисекундах. Электронный спидометр в современных авто так и делает. А вот с измерением частоты сложнее. Я в данном случае сам не вполне отчетливо это понимаю, во всяком случае "нутром чую", что закон этот есть и работает, но объяснить его суть словами пока не получается. Надо бы полистать какой-нибудь серьезный учебник физики в разделе "Колебания и волны", но все руки не доходят.

Ув, Владимир Алексеевич, а Вы попробуйте "полистать" ! Вам понравится ! ! Да и нам, настройщикам, пригодится ! ! :duma:
СПАСИБО!

_________________
: Заранее благодарен :
= [ Новый Рояль ] =


Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: Быстрое преобразование Фурье
СообщениеДобавлено: 21 фев 2019, 20:56 
Активный завсегдатай
Аватара пользователя
Хорошая программа Spectroid! На её примере давайте выясним какие параметры быстрого преобразования Фурье следует использовать для достижения своих целей. У программы есть меню Settings/Audio. Давайте разберем подробнее что там можно выбирать. А именно: какие параметры программы следует установить чтобы, к примеру, определять частоты с точностью до 0.5 цента по всему диапазону фортепиано - приблизительно с 35 до 3500гц?

Я нарошно подобрал такие границы диапазона чтобы быстрее и нагляднее считать. Ведь с помощью калькулятора перевода герц в центы мы можем определить что слева у нас 50 центов в герце а справа - 0.5 цента в герце.

Про середину диапазона сразу забудем. Если нам удастся подобрать удачные параметры для краев диапазона то они сойдут и для середины.

Начнем с верхов. По одной известной в узких кругах теореме для того чтобы уверено распознавать диапазон частот вплоть до 3500гц нам необходимо нашинковать входящий сигнал по крайней мере вдвое чаще - на 3500*2=7000 кусочков в секунду. Этот параметр называется частота дискретизации (sampling rate) и его значение по умолчанию позволяет распознавать частоты за 44100/2=22050гц и, следовательно, нас вполне устроит:
Изображение
Мы могли бы даже выбрать sampling rate = 8000Hz. И такое значение нас также устроило бы в том смысле что распознать частоты фортепиано оно позволило бы (8000/2=4000>3500). Посмотрим теперь что насчет точности. Поскольку там где частоты 3500гц один герц это как раз 0.5 цента то определив частоту с точностью до 1 герца мы как раз определим ее с точностью до 0.5 цента. Это как раз то что нам нужно. Но, как мы уже видели раньше, нам потребуется для этого собрать данные за 1 секунду. То есть, нам потребуются все 44100 значений из sample rate, переданных в программу за последнюю секунду. Но тут необходимо оказывается рассмотреть второй параметр программы который называется FFT size и определяет сколько именно значений из 44100 будет передано в БПФ за раз для спектрального анализа:
Изображение
Ну нельзя вот так взять и передать программе все 44100 значений. Можно меньше. Например, лишь 1024 из них. Зато это позволит нам показывать пользователю живое изменение частоты аж 44100/1024=43 раза в секунду или даже чаще если ухитриться "сдвигать" эти 1024 значения по всему диапазону в 44100 значений. Так программы обычно и поступают. Они не выбрасывают проанализированные 1024 значения входного сигнала а просто берут (от микрофона) еще несколько значений, пристраивают их в хвост этим 1024 и отрезают от начала такое же число входных значений сигнала. И снова можно производить анализ частоты.

Обратите внимание, однако, на то что FFT size не может быть выбран слишком большим, таким как нам хотелось бы из соображений точности (44100). Предельно большое значение этого параметра соответствует 8192/44100=0.185 секунды. То есть, меньше секунды. Для нас это означает что замерить частоту 3500гц с желаемой точностью не удастся. Вместо 1 секунды анализатор спектра проанализирует в 5 раз меньший интервал времени и неизбежно даст ошибку больше чем 1 гц или больше чем 0.5цента. Если выбрать FFT size = 1024 то ошибка определения частоты в дискантах может составить (44100/1024)*0.5=21.5 цента.

Можно заметить что при выборе одних параметров программа услужливо пересчитывает другие. Мы видим что варианты выбора параметра Decimations теперь выглядят следующим образом:
Изображение

Одновременно мы переходим к рассмотрению басов. 43 Hz/bin - это как раз та точность которую мы получим в басах если будем использовать при анализе FFT size = 1024. Это ужасно потому что нам для достижения точности в 0.5 цента необходима точность примерно в 100 раз лучше одного герца! Программа имеет выбор - 0.084 Hz/bin что примерно равно тому что мы хотим. Смысл этого параметра в том что в басах программа постарается использовать (1024*(2^9))=524288 входных значений сигнала вместо 1024 ради достижения требуемой точности.

Но! Для того чтобы увидеть частоту клавиши в басах вам придется подождать примерно 524288/44100=12 секунд прежде чем программа покажет ее всплески в левой стороне спектра. Это чудовищно но это справедливо. Попробуйте выбрать большое значение параметра Decimations и вы увидите что правая часть спектра появляется практически сразу а вот появления левой приходится долго ждать.

Для сведения привожу описание параметра Decimations взятое с сайта автора Carl Reinke: "More decimations means greater frequency resolution at lower frequencies (but also slower impulse response). For example: With 0 decimations, all of the points on the plot are evenly spaced (in linear space). With 1 decimation (and a 48 kHz sample rate), the band from 6 kHz down to DC has points twice as dense. With 2 decimations, the band from 3 kHz to DC is twice as dense, yet again. And so on. The increasing density and log-space plotting sort of cancel out so that the result has more uniform density.
There is an option "decimations" that defines the number of downsampling stages, each stage having its own spectrum computed. When set to a high number you can see more detail at lower frequencies at the cost of greater lag.
Desired transform interval: This is the amount of time it waits from one FFT to the next. A shorter interval means the plot updates more often and that your battery gets eaten faster. (It also changes how quickly the waterfall scrolls, but that's more of a design flaw in the program.)
"

В итоге компромиссный вариант набора основных параметров выглядит следующим образом:
Sampling rate = 8000
FFT size = 8192
Decimations = 6 (0.015Hz/bin)

Прочие параметры:
Window function = von Hann (говорят что выбор здесь окна Ханна позволяет наиболее точно определить именно частоту)
Desired transform interval = 100ms (как часто обновлять показания на дисплее)
Exponential smoothing factor = 0.5 (сглаживание)

В результате получим максимальную точность и в дискантах и в басах. Но для того чтобы увидеть показания частоты в басах, похоже, придется подождать примерно (8192*(2^6))/8000=65 секунд. В середине диапазона дела наверное обстоят лучше но практика показала что там тоже спектр показывается не мгновенно а требуется подождать несколько секунд.

Вот. Сам разобрался, надеюсь, и вам не наврал.


Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Сергей "Спасибо" сказали:
= [ Новый Рояль ] =, Klopff
 Заголовок сообщения: Re: Быстрое преобразование Фурье
СообщениеДобавлено: 02 апр 2019, 15:17 
Активный завсегдатай
Аватара пользователя
Если я ничего не напутал в выкладках, то на основании взаимосвязи герцев и центов а также очевидного закона
Klopff писал(а):
Есть такой закон физический: точность определения частоты периодического колебания прямо пропорциональна длительности существования этого колебания. Если звук длится одну секунду, то определить его частоту можно с точностью не более +/-1 Гц. Если длится 10 секунд, достижимая точность +/-0,1 Гц, 100 сек. - +/-0,01 Гц.
можно построить следующую зависимость времени в секундах (T) необходимого для прослушивания чистых тонов от заданной точности в центах (с):
Изображение

Код:
gnuplot> cents=1;
gnuplot> stretch=1.059;
gnuplot> set dummy k;
gnuplot> seconds(k)=1/(440*stretch**(k-48)*(stretch**(cents/100.0)-1));
gnuplot> plot [0:88] seconds(k) title "секунд необходимо слушать чистый тон чтобы достичь точности в $cents цент" lw 2


Она строится по формуле:
Изображение

Здecь s=1.059 - знакомая всем мера растяжки полутона, k - номер клавиши.

Если бы частоты фортепиано были чистыми то для достижения точности в 1 цент дисканты мы должны были бы слушать по 0,5 секунд а басы - по 1 минуте. А чтобы достичь точности в 0,1 цента, дисканты нужно было бы слушать по 5 секунд а басы - по 10 минут!

Кстати, камертон (если бы он был чистым тоном и) если бы мы хотели определить его частоту с точностью до 0,1 цента, должен был бы звучать около 40 секунд, что в общем, не далеко от истины:
Изображение

Но к счастью, как мы выяснили ранее, в реальной жизни чистых тонов нет. Зато есть куча обертонов, помогающих определять высоту звука гораздо быстрее - и в басах и в дискантах.

Вопрос который я хочу задать участникам форума звучит так: Какова на ваш взгляд зависимость ваших (!) возможностей по определению высоты звука на слух от диапазона фортепиано? Одинаково ли то время которое вам необходимо для прослушивания звука и определения его высоты (выше она или ниже чем необходимо) по всему диапазону? Или имеется какая-либо иная зависимость?

Я ожидаю, что время должно быть примерно одинаковым из-за особенностей человеческого слуха. Пожалуйста прокомментируйте.


Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2, 3  След.

ГОСТЕВАЯ ВЕРСИЯ ФОРУМА



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Добавить в Избранное
Добавить в Избранное

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB
Copyright © Aiwan. Kolobok smiles