Сергей писал(а):
Если я ничего не напутал в выкладках, то на основании взаимосвязи герцев и центов а также очевидного закона
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 - номер клавиши.
Пользуясь этими законами можно примерно посчитать какие ресурсы компьютера потребуются для определения чистых тонов по всему диапазону фортепиано. Достаточно приравнять время T в формуле выше времени затраченному на сбор данных для FFT:
(Обычно SamplingRate=44100) И далее для всего диапазона клавиш от k=0 до k=87 решаем это уравнение для переменной power, определяющей степень двойки для преобразования Фурье потому что как правило алгоритмы БПФ любят степени двойки (не все алгоритмы но очень многие).
Вобщем, получается что
- для точности в 1 цент необходимо минимум 8 мегабайт оперативной памяти (power=22)
- для точности в 0,1 цента необходимо минимум 64 мегабайта оперативной памяти (power=25)
- для точности в 0,01 цента необходимо минимум 512 мегабайт оперативной памяти (power=28)
Да и вообще, минимально необходимая степень двойки вполне естественным образом вырастает каждый раз на единицу при продвижении на октаву влево, к басам. То есть, потребная память растет лавинообразно как при продвижении к басам так и при увеличении точности. Где-то в середине этой лавины, как всегда, должен быть найден компромисс.
К чему это я пишу? Чтобы примерно знать чего ожидать если пытаться распознавать
биения в результатах Фурье-анализа на лету. Для себя пишу.
Нравится мне эта задача. (Вы уж не обращайте пока внимания по возможности.)
Почему-то я до сих пор вообще не встречал программы которая хотя бы пыталась показывать биения. Тогда как задача эта для компьютера не очень сложная. В идеале нужна программа в смартфоне которая помогала бы (прежде всего мне) развивать настройщицкий слух. Если б была такая простая программа - можно было бы тренироваться быстрее.