преобразовать частоту в примечание клавиатуры - PullRequest
3 голосов
/ 25 апреля 2011

Я пытаюсь написать аудио приложение.

Я могу воспроизводить синусоидальную волну с частотой от 20 до 20К, чтобы слышать звуки. Мой вопрос: как я могу преобразовать частоты в ноты для клавиатуры, чтобы создать виртуальную клавиатуру (или пианино)? Есть ли какая-то формула для достижения этой цели?

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

обновление

я нашел следующий URL: http://www.reverse -engineering.info / Audio / bwl_eq_info.pdf

, который содержит диаграмму октавной частоты. мне нужно хранить этот список или есть формула, которую можно использовать вместо этого?

Ответы [ 4 ]

5 голосов
/ 25 апреля 2011

Есть несколько способов настройки инструментов. Для пианино чаще всего используется 12-тональный равный темперамент, формулу которого можно найти здесь . Идея состоит в том, что каждая пара смежных нот имеет одинаковое соотношение частот.

См. Также равный темперамент в Википедии .

5 голосов
/ 25 апреля 2011

Вы можете рассчитать частоту тона как

f = 440 * exp (x * ln (2) / 12)

где x - количество полутонов над буквой А в середине клавиатуры пианино.

2 голосов
/ 25 апреля 2011

Во-первых, вам нужно знать о A440 .Это «стандартная» высота для настройки всего остального.

Удвойте частоту, чтобы поднять октаву;уменьшить частоту вдвое на октавуИз этого ясно, что тоны являются логарифмическими по отношению к частотам.

Существует несколько систем для определения, где на логарифмической линии располагаются остальные ноты.Простой подход состоит в том, чтобы геометрически разделить полутоны по логарифмической шкале (что использует ответ Хофона), но могут быть и лучшие способы.

0 голосов
/ 28 ноября 2014

полное описание функций преобразования P2F F2P.Я использую 69 вместо 57, хотя.http://musicdsp.org/showone.php?id=125

...