lunes, 31 de octubre de 2016

EL PIANO
La frecuencia de afinación del piano se consigue partiendo como base del sonido la 440, elegido por convención. A continuación se muestran las teclas de un pianovirtual estándar con 88 teclas con las frecuencias, en ciclos por segundo (Hz), de cada nota.

Frecuencia de las notas musicales






En la música occidental dividimos las posibles frecuencias en porciones que llamamos "octavas", y cada octava en 12 porciones que llamamos notas. Cada nota de una octava tiene exactamente la mitad de frecuencia que la misma nota en la octava superior.
Por ejemplo, las notas dore y mi en dos octavas distintas... Al escucharlas correlativamente son perfectamente identificables.
Para hallar la frecuencia de una nota cualquiera mediante una expresión matemática, se suele coger una frecuencia de referencia, por ejemplo el La de afinar (La4, 440 Hertzios) y se multiplica por la raiz duodécima de 2 elevado al número de semitonos que separa el la de afinar de la nota que estamos buscando.
Por ejemplo, si buscamos el Do de la quinta octava (Do5, está separado 3 semitonos por encima del La4. Su frecuencia la podemos calcular multiplicando 440 por la raiz duodécima de 2 elevado a 3. Si buscásemos el Fa4, está cuatro semitonos por debajo del La4. Los semitonos hacia abajo los consideraremos negativos. Así pues, su frecuencia se obtiene multiplicando 440 por la raiz duodécima de 2 elevado a -4.
Con caracter general, una nota n (n=1 para Do, n=2 para Do#... n=12 para Si) de la octava o (o desde 0 hasta 10) tiene una frecuencia f(n,o) que podemos calcular de ésta manera:
fórmula primera
Esta expresión puede ser dificil de codificar en algunos lenguajes de programación, ya que es muy probable que no dispongan de funciones matemáticas para hallar una raíz duodécima. Adaptarla un poco es muy sencillo, ya que la raíz duodécima de 2 se puede calcular como 2 elevado a 1/12, con lo que la expresión quedaría de ésta manera:
fórmula segunda
Aún así es posible que no podamos codificarla si no disponemos de una función que nos permita potencias de cualquier exponente. No obstante, tampoco supone problema. Todos los lenguajes que se precien disponen al menos de una función para hallar logaritmos (por ejemplo, naturales) y otra para hallar potencias de e (la base de los logaritmos naturales).
Una potencia cualquiera, por ejemplo xy puede ser calculada con potencias de e y logaritmos naturales (en realidad, podría hacerse con cualquier base).
Veamos.... Si tenemos una potencia k=xy podemos tomar logaritmos a ambos lados de la expresión y manipularla un poco...
Partimos de ésta expresión:
  • ln(k)=ln(xy)
y la manipulamos un poco aplicando las reglas de manipulación de los logaritmos
  • ln(k)=ln(x)y
  • ln(k)=y·ln(x)
finalmente, tomamos potencias de base e en ambos lados de la ecuación
  • eln(k)=ey·ln(x)
Así que podemos concluir que
  • k=ey·ln(x)
Utilizando esta expresión en nuestra fórmula de la frecuencia para quitarnos de enmedio la potencia, finalmente queda de ésta manera:
fórmula final
Así pues, ya es muy sencillo obtener un pseudocódigo que dada una nota y una octava, nos devuelva la frecuencia, suponiendo que exp(n) sea una función que calcula el valor de en, y ln(n) una función que calcula el logaritmo natural de n, es decir, la operación inversa de la anterior.
frecuencia(nota,octava) = 440.0 * exp(((octava-4)+ (nota-10)/12.0) *ln(2)))
Para esta función, octava es un entero entre 0 y 10, y "nota" es un entero en el rango de 1 a 12, de tal manera que Do=1, Do#=2, Re=3, Re#=4, Mi=5, Fa=6, Fa#=7, Sol=8, Sol#=9, La=10, La#=11, Si=12.


1 comentario: