Frecuencia de las notas musicales

Detalles

Si tienes que realizar una aplicación que trate con sonido y música, seguro que tarde o temprano tienes que trabajar con las notas musicales.

Un sonido no es más que una vibración del aire que nuestros oidos pueden captar. Un sonido que tiene un determinado tono, depende de la frecuencia a la cual vibra el aire. Las notas musicales son vibraciones de frecuencias determinadas. Por supuesto, en la creación de música intervienen muchos otros factores complejos, como por ejemplo, el timbre.

No obstante, una vibración sinusoidal a una frecuencia concreta, produce un sonido puro que nosotros percibimos como un pitido de un determinado tono.

En el sistema musical occidental, se ha acordado utilizar sólo unas frecuencias concretas, a las cuales llamamos notas.

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.

El oido humano capta sólamente frecuencias que estén por encima de los 20Hz y por debajo de los 20.000 (muy aproximadamente). Así pues, y con mucha suerte, sólo podemos oir unas 10 octavas como mucho, con doce notas cada una.

La nota La sirve como referencia para todas las demás. A menudo se denomina "nota de afinar". Se produce un La de afinar cuando el aire vibra 440 veces por segundo, es decir a 440 hertzios. Por convención, a la octava que contiene esta nota La se le suele considerar la tercera.

Hay otra nota La, de una "octava" superior (la cuarta octava) cuando el aire vibra a 880 hertzios, y otra más cuando vibra a 880*2 (quinta octava), y otra a 880*2*2 (sexta octava), etc, del mismo modo que hay un La que se produce cuando el aire vibra a 440/2 (segunda octava) y otra a 440/2/2 (primera octava).

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 (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 cuarta octava, está separado 3 semitonos por encima del La. Su frecuencia la podemos calcular multiplicando 440 por la raiz duodécima de 2 elevado a 3. Si buscásemos el Fa de la tercera octava, está cuatro semitonos por debajo del La. 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 1 hasta 8) tiene una frecuencia f(n,o) que podemos calcular de ésta manera:

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:

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...

ln(k)=ln(xy)

ln(k)=ln(x)y

ln(k)=y*ln(x)

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.

Así pues, ya es muy sencillo obtener un pseudocódigo que dada una nota y una octava, nos devuelva la frecuencia.

frecuencia(nota,octava) := 440 * exp(  (octava-3)+ ((nota-10)/12) *ln(2) )

Donde "octava" es un entero entre 1 y 8, y "nota" es un entero en el rango de 1 a 12. Do=1, Do#=2, Re=3, Re#=4, Mi=5, Fa=6, Fa#=7, Sol=8, Sol#=9, La=10, La#=11, Si=12.

 

Esta expresión ya puede utilizarse prácticamente en cualquier lenguaje de programación con mínimas capacidades de cálculo matermático. Por ejemplo, en C#:

double frecuencia(double nota, double octava) 
  {
     return (440.0 * Math.Exp(((octava-3)+(nota-10)/12)*Math.Log(2)));
  }

Tabla de frecuencias de las notas musicales, obtenida con la fórmula de la página anterior.

Primera octava:
---------------
Do  1: 65,406
Do# 1: 69,296
Re  1: 73,416
Re# 1: 77,782
Mi  1: 82,407
Fa  1: 87,307
Fa# 1: 92,499
Sol 1: 97,999
Sol#1: 103,826
La  1: 110
La# 1: 116,541
Si  1: 123,471 

Segunda octava:
---------------
Do  2: 130,813
Do# 2: 138,591
Re  2: 146,832
Re# 2: 155,563
Mi  2: 164,814
Fa  2: 174,614
Fa# 2: 184,997
Sol 2: 195,998
Sol#2: 207,652
La  2: 220
La# 2: 233,082
Si  2: 246,942 
Tercera octava:
---------------
Do  3: 261,626
Do# 3: 277,183
Re  3: 293,665
Re# 3: 311,127
Mi  3: 329,628
Fa  3: 349,228
Fa# 3: 369,994
Sol 3: 391,995
Sol#3: 415,305
La  3: 440
La# 3: 466,164
Si  3: 493,883 

Cuarta octava:
---------------
Do  4: 523,251
Do# 4: 554,365
Re  4: 587,33
Re# 4: 622,254
Mi  4: 659,255
Fa  4: 698,456
Fa# 4: 739,989
Sol 4: 783,991
Sol#4: 830,609
La  4: 880
La# 4: 932,328
Si  4: 987,767 

Quinta octava:
---------------
Do  5: 1046,502
Do# 5: 1108,731
Re  5: 1174,659
Re# 5: 1244,508
Mi  5: 1318,51
Fa  5: 1396,913
Fa# 5: 1479,978
Sol 5: 1567,982
Sol#5: 1661,219
La  5: 1760
La# 5: 1864,655
Si  5: 1975,533 

Sexta octava:
---------------
Do  6: 2093,005
Do# 6: 2217,461
Re  6: 2349,318
Re# 6: 2489,016
Mi  6: 2637,02
Fa  6: 2793,826
Fa# 6: 2959,955
Sol 6: 3135,963
Sol#6: 3322,438
La  6: 3520
La# 6: 3729,31
Si  6: 3951,066

Septima octava:
---------------
Do  7: 4186,009
Do# 7: 4434,922
Re  7: 4698,636
Re# 7: 4978,032
Mi  7: 5274,041
Fa  7: 5587,652
Fa# 7: 5919,911
Sol 7: 6271,927
Sol#7: 6644,875
La  7: 7040
La# 7: 7458,62
Si  7: 7902,133 

Octava octava:
(valga la redundancia :-)
---------------
Do  8: 8372,018
Do# 8: 8869,844
Re  8: 9397,273
Re# 8: 9956,063
Mi  8: 10548,082
Fa  8: 11175,303
Fa# 8: 11839,822
Sol 8: 12543,854
Sol#8: 13289,75
La  8: 14080
La# 8: 14917,24
Si  8: 15804,266

   

Síguenos  

   

¿Dónde estoy?  

Estás en La tecla de ESCAPE, un sitio web personal en el que nos gusta hablar de algoritmos, metodología de la programación, personajes de informática, tecnología, ingeniería del software, internet, y cualquier otra tontería que se nos ocurra.

[Leer más / Términos de uso (ToS)]

   

¿Quién está en línea?