Algoritmo de detección de escalas musicales para viol´ın.

43
Universidad de Costa Rica Facultad de Ingenier´ ıa Escuela de Ingenier´ ıa El´ ectrica Algoritmo de detecci´on de escalas musicales para viol´ ın. Por: Mauricio Campos Salas Ciudad Universitaria “Rodrigo Facio”, Costa Rica Diciembre de 2014

Transcript of Algoritmo de detección de escalas musicales para viol´ın.

Page 1: Algoritmo de detección de escalas musicales para viol´ın.

Universidad de Costa RicaFacultad de Ingenierıa

Escuela de Ingenierıa Electrica

Algoritmo de deteccion de escalas

musicales para violın.

Por:

Mauricio Campos Salas

Ciudad Universitaria “Rodrigo Facio”, Costa Rica

Diciembre de 2014

Page 2: Algoritmo de detección de escalas musicales para viol´ın.
Page 3: Algoritmo de detección de escalas musicales para viol´ın.

Algoritmo de deteccion de escalas

musicales para violın.

Por:

Mauricio Campos Salas

IE-0499 Proyecto electrico

Aprobado por el Tribunal:

Ing.Gustavo Nunez SeguraProfesor guıa

Ing. Teodoro Willink Castro Ing. Osvaldo Fernandez CascanteProfesor lector Profesor lector

Page 4: Algoritmo de detección de escalas musicales para viol´ın.
Page 5: Algoritmo de detección de escalas musicales para viol´ın.

ResumenEl objetivo general del presente trabajo fue el desarrollar un algoritmo que

permitiera, dado un archivo de audio interpretado en violın, el reconocimientode la escala o escalas musicales relacionados directamente con las notas ejec-tudas.A pesar de la existencia de varios programas que permiten reconocimientode notas, el presente proyecto pretende introducir mas conceptos musicales,abarcar mas generalmente desde el punto de vista ingenieril y musical un ex-tracto de audio, como por ejemplo su senal en el tiempo y el reconocimientode escalas.De esta manera se creo un algoritmo que permitio la lectura del archivo y apartir de esto se obtuvo la senal en el tiempo y consecuentemente la transfor-mada rapida de Fourier de la senal.Al realizarse el analisis en la frecuencia, se crearon ventanas para identificar lasdistintas notas musicales ejecutables por un violinista. Al crearse las ventanasse pudo extraer las magnitudes maximas encontradas y con esto verificar si setrataba de la ejecucion de una nota o de ruido producido por el entorno de lagrabacion del archivo.Luego se crearon los distintos patrones de las escalas musicales, para ası agru-par en uno, alguno o ningun grupo el conjunto de notas musicales reconocido.Por ultimo se creo una interfaz grafica que permitiera al usuario ejecutar elalgoritmo, obteniendo a partir de esta la senal en el tiempo, la transformadarapida de Fourier de la senal, las notas musicales ejectudas y la o las escalasa las que este conjunto de notas musicales pertenece.Se logro implementar correctamente el algoritmo para extractos de una du-racion cercana a los 10 segundos, con esto es posible eventualmente realizaranalisis en el tiempo que permita el estudio de otros ambitos relacionadostanto con la musica como con la ingenierıa.

v

Page 6: Algoritmo de detección de escalas musicales para viol´ın.
Page 7: Algoritmo de detección de escalas musicales para viol´ın.

Indice general

Indice de figuras viii

Indice de cuadros ix

Nomenclatura xi

1 Introduccion 11.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Metodologıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Alcance del proyecto . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Desarrollo teorico 52.1 Teorıa Musical . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Procesamiento de senales . . . . . . . . . . . . . . . . . . . . . 92.3 Funciones utilizadas en MATLAB . . . . . . . . . . . . . . . . . 12

3 Desarrollo del algoritmo 153.1 Analisis en el dominio del tiempo . . . . . . . . . . . . . . . . . 163.2 Analisis en el dominio de la frecuencia . . . . . . . . . . . . . . 173.3 Recorrido por las frecuencias . . . . . . . . . . . . . . . . . . . 183.4 Banderas de las frecuencias . . . . . . . . . . . . . . . . . . . . 193.5 Reconocimiento de Escalas . . . . . . . . . . . . . . . . . . . . 213.6 Interfaz de usuario en GUI de MATLAB . . . . . . . . . . . . . 22

4 Conclusiones y recomendaciones 274.1 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.2 Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Bibliografıa 29

A Documentacion 31

vii

Page 8: Algoritmo de detección de escalas musicales para viol´ın.

Indice de figuras

2.1 Espectro de potencia de una senal continua periodica (John G. Proakis,1996). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.1 Diagrama de contenido del proyecto. . . . . . . . . . . . . . . . . . 153.2 Senal en el tiempo del archivo en Do Mayor. . . . . . . . . . . . . 163.3 Transformada rapida de Fourier del archivo en Do mayor. . . . . . 173.4 Transformada rapida de Fourier del archivo en La menor armonico. 183.5 Espectro de potencia de la nota LA con frecuencia central en 440.5Hz. 193.6 Creacion de la matriz z. . . . . . . . . . . . . . . . . . . . . . . . . 193.7 Recorrido de rango de frecuencias de Sol1. . . . . . . . . . . . . . . 203.8 Valor mınimo de amplitud. . . . . . . . . . . . . . . . . . . . . . . 203.9 Archivo .fig de la interfaz de GUIDE. . . . . . . . . . . . . . . . . 233.10 Interfaz desplegada al darle play al archivo creado. . . . . . . . . . 253.11 Archivos desplegados al presionar el Push Button SELECCIONE

EL ARCHIVO DE AUDIO. . . . . . . . . . . . . . . . . . . . . . . 253.12 Interfaz en ejecucion con archivo de audio en Do Mayor. . . . . . . 263.13 Interfaz en ejecucion con archivo de audio de disco de Henryk

Szeryng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

viii

Page 9: Algoritmo de detección de escalas musicales para viol´ın.

Indice de cuadros

2.1 Enarmonıas musicales . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Intervalos entre notas consecutivas . . . . . . . . . . . . . . . . . . 62.3 Frecuencias de las notas musicales (Macıas, 2012) . . . . . . . . . . 82.4 Rangos de frecuencias de las notas musicales . . . . . . . . . . . . 14

ix

Page 10: Algoritmo de detección de escalas musicales para viol´ın.
Page 11: Algoritmo de detección de escalas musicales para viol´ın.

Nomenclatura

DFTS serie de Fourier en tiempo discreto, del ingles DiscreteFourier Transform.

FFT transformada rapida de Fourier, del ingles Fast Fouriertransform.

b alteracion musical correspondiente al bemol.

# alteracion musical correspondiente al sostenido.

xi

Page 12: Algoritmo de detección de escalas musicales para viol´ın.
Page 13: Algoritmo de detección de escalas musicales para viol´ın.

1 Introduccion

Con el fin de evitar el desconocimiento de la teorıa musical por cuanto al re-conocimiento de ciertos elementos especıficos, como por ejemplo, los tipos denotas y escalas musicales, se pretende desarrollar un algoritmo que permita,dado un fragmento musical interpretado por un violın, ubicar en una escaladeterminada y de esta forma facilitar el reconocimiento de una tonalidad.Se utilizara el programa MATLAB para implementar y probar el algoritmo,de manera que, a partir de un archivo de audio que contenga el fragmento au-ditivo, se obtenga informacion, como la nota o las notas que se reproducieron

”y al comparar con patrones musicales establecidos sobre escalas musicales, de-terminar a cual de esas escalas pertenece el fragmento.De esta manera, se pretende un uso pedagogico del algoritmo para la ensenan-za del violın, sin embargo, es aplicable a los diversos instrumentos orquestales,ya que los rangos utilizados en frecuencia lo permiten.

1

Page 14: Algoritmo de detección de escalas musicales para viol´ın.

2 1 Introduccion

1.1 Objetivos

Objetivo General

Desarrollar un algoritmo que permita determinar la escala musical utilizada enun fragmento de interpretacion de violın, con el fin de evitar el desconocimientode la teorıa musical por cuanto al reconocimiento de ciertos elementos enmusica, mediante el desarrollo de un programa en MATLAB.

Objetivos Especıficos

• Analizar, con ayuda de MATLAB, un fragmento de audio interpretadopor violın, de forma que se pueda determinar la nota musical o notasmusicales ejecutadas.

• Comparar las notas musicales del fragmento de audio, con las formas deescalas musicales ya definidas.

• Crear una interfaz grafica que permita al usuario la ejecucion del algo-ritmo.

Page 15: Algoritmo de detección de escalas musicales para viol´ın.

1.2. Metodologıa 3

1.2 Metodologıa

Para el desarrollo de este proyecto, se efectuo en varias etapas, de manera quecada una permitiera funcionar a la siguiente. Primero, se debio realizar un ana-lisis del espectro armonico de las distintas notas utilizadas en el violın. Luego,se formo una base de datos en MATLAB, donde se contiene la informacion delas distintas escalas musicales a reconocer. Seguidamente, se procedio a hacerlas grabaciones de los extractos en violın, en un formato de .wav, que luego seprocedieron a leer en MATLAB. Una vez contenidos los archivos de audio, serealizo el algoritmo en MATLAB para reconocer la nota musical interpretadaen un momento determinado. Luego se amplio el algoritmo para reconocertambien, cuando en el archivo hay un cambio en el tiempo de una nota, yhacer un reconocimiento de la nueva. Ası sucesivamente hasta terminar con elarchivo completo. Por ultimo, al haber hecho el reconocimiento de la totalidadde las notas del archivo, se tomaron los resultados obtenidos, y se compararoncon los datos de la base de datos realizada al principio, con lo que se pudoproceder con la deteccion de escalas musicales.

Page 16: Algoritmo de detección de escalas musicales para viol´ın.

4 1 Introduccion

1.3 Alcance del proyecto

Se utilizo un archivo de grabacion con una extension de 10 segundos maximo,luego se analizo en MATLAB y por ultimo utilizando el algoritmo desarrolla-do se logro determinar la escala o las escalas musicales en las cuales se puedeclasificar el patron de notas identificado. Luego, se creo una interfaz que per-mitiera al usuario manipular el algoritmo por medio de la seleccion del archivode audio y que este, automaticamente desplegara la informacion obtenida.

Page 17: Algoritmo de detección de escalas musicales para viol´ın.

2 Desarrollo teorico

2.1 Teorıa Musical

Notas, intervalos y alteraciones

La distancia que separa a una nota de otra, es conocida como intervalo. Elsemitono es la distancia (o intervalo) mas pequena entre dos notas musicalesreconocida en la musica ortiental, puesto que en la musica oriental se puedeencontrar el cuarto de tono, sin embargo, se remitio a trabajar exclusivamentecon lo que se refiere a la musica occidental.En el lenguage musical se cuenta con siete notas en su estado natural, estasson en orden: do, re, mi, fa, sol, la y si. Existen dos tipos de alteraciones aestas, que son el sostenido y el bemol.La alteracion del sostenido (#) consiste en agregar un semitono a alguna notaen particular, es decir, la hace un semitono mas aguda.Por su parte, la alteracion del bemol (b) realiza lo contrario al sostenido, leresta un semitono a la nota dada. Es decir, la hace un semitono mas grave.En el lenguage musical se llama enarmonıa a aquellas notas que se escribende manera diferente pero que suenan igual, las enarmonıas mas comunes, ylas utilizadas para este proyecto se muestran en 2.1. Los intervalos entre las

Cuadro 2.1: Enarmonıas musicales

Notas

Do# - RebRe# - MibFa# - SolbSol# - LabLa# - Sib

notas naturales consecutivas se pueden observar en 2.2.

5

Page 18: Algoritmo de detección de escalas musicales para viol´ın.

6 2 Desarrollo teorico

Cuadro 2.2: Intervalos entre notas consecutivas

Notas Intervalo

Do - Re Un tono (dos semitonos)Re - Mi Un tonoMi - Fa Un semitonoFa - Sol Un tonoSol - La Un tonoLa - Si Un tonoSi - Do Un semitono

Escalas y tonalidades

Una escala musical consiste en una sucesion de notas que comienzan y termi-nan en la misma nota, a esta nota se le llama tonica, y es lo que se denominael centro tonal. La sucesion de las ocho notas de la escala musical se denominaoctava, y la diferencia entre una nota y esta misma una octava mas arriba esexactamente el doble de su frecuencia (Isabel Jeremıas L, 2005).En este proyecto, se tomaron en cuenta 36 escalas, 12 mayores, 12 menoresarmonicas y 12 menores melodicas, en las que cada una de ellas se conformande un total de 7 notas consecutivas con patrones distintos.Una tonalidad consiste en un sistema organizado de tonos y semitonos, queda como resultado las dos escalas basicas, la escala mayor y la escala menor.La tonalidad mayor, esta basada en la estructura melodica de la escala dia-tonica (Isabel Jeremıas L, 2005). El patron de estas escalas esta formado porlas siguientes relaciones intervalicas:

• Tono - Tono - Semitono - Tono - Tono - Tono - Semitono.

Ası, por ejemplo la escala de Re Mayor serıa:

• Re - (Tono) - Mi - (Tono) - Fa # - (Semitono) - Sol - (Tono) - La -(Tono) - Si - (Tono) - Do # - (Semitono) - Re.

La tonalidad menor por su parte, se basa en la estructura melodica de tresescalas: la escala menor natural, la escala menor melodica y la escala menorarmonica (Isabel Jeremıas L, 2005). Sin embargo, para el proyecto se tomo enconsideracion la escala menor armonica y la escala menor melodica.La escala menor natural esta formada por la siguiente sucesion de intervalosmelodicos:

Page 19: Algoritmo de detección de escalas musicales para viol´ın.

2.1. Teorıa Musical 7

• Tono - Semitono - Tono - Tono - Semitono - Tono - Tono.

De este modo, por ejemplo, la escala de La menor natural serıa:

• La - (Tono) - Si - (Semitono) - Do - (Tono) - Re - (Tono) - Mi - (Semitono)- Fa - (Tono) - Sol - (Tono) - La.

La escala menor melodica, tiene la siguiente estructura intervalica:

• Tono - Semitono - Tono - Tono - Tono - Tono - Semitono.

La escala de La menor melodica es:

• La - (Tono) - Si - (Semitono) - Do - (Tono) - Re - (Tono) - Mi - (Tono)- Fa# - (Tono) - Sol# - (Semitono) - La.

La escala menor armonica, se conforma de la siguiente secuencia de inter-valos:

• Tono - Semitono - Tono - Tono - Semitono - Tono y medio - Semitono.

La escala de La menor armonica es:

• La - (Tono) - Si - (Semitono) - Do - (Tono) - Re - (Tono) - Mi - (Semitono)- Fa - (Tono y medio) - Sol# - (Semitono) - La.

Frecuencias de las ondas sonoras

Actualmente, las notas musicales se definen a partir de la frecuencia de vibra-cion de la onda sonora que esta produce, lo que es conocido como afinacionPitagorica. Matematicamente se puede expresar la frecuencia (f) de la siguien-te manera,

f =v

l. (2.1)

Donde v es la velocidad del sonido en metros por segundo, y l es la longitudde onda en metros (Tomasini, sf).Las frecuencias que identifican a las ocho notas de la escala son, aproxima-damente las mostradas en 2.3. Es importante resaltar que, al doble de lafrecuencia de una nota musical especıfica se le llama una octava por encima, yes por esto que estas dos notas llevaran el mismo nombre. Por ejemplo: la notaLa central tiene una frecuencia de 440 Hz, el siguiente La que es una octava

Page 20: Algoritmo de detección de escalas musicales para viol´ın.

8 2 Desarrollo teorico

Cuadro 2.3: Frecuencias de las notas musicales (Macıas, 2012)

Nota Frecuencia (Hz)

Do 261.63Do#/Reb 277.18Re 293.66Re#/Mib 311.13Mi 329.63Fa 349.23Fa#/Solb 369.99Sol 392Sol#/Lab 415.30La 440La#/Sib 466.16Si 493.88Do 523.26

por encima, tiene una frecuencia de 880 Hz.El ser humano tiene un espectro audible de entre los 20 Hz y los 20 kHz, sinembargo, en musica se trabaja con un rango de 27 Hz a 13186 Hz, lo que co-rresponde a las frecuencias fundamentales de las ondas sonoras de la nota masgrave y mas aguda del piano. La region mas aguda, es decir, de frecuenciasmayores (hasta los 20 kHz), es dedicada a los armonicos de los tonos altos,lo que produce el timbre de los distintos instrumentos, por lo que se puedediferenciar uno de otro (Macıas, 2012).Al ser el violın un instrumento de cuerda no temperado, es decir, que cadauna de las notas que se interpretan dependen del desarrollo auditivo y fısicodel ejecutante ya que no hay referencias fısicas sobre cada nota, y la afinaciondepende de la pulsacion que se realice sobre la cuerda, se tiene que la afina-cion no necesariamente va a ser precisa en todos los casos. Por esto, al ser unalgoritmo que esta dirigido al reconocimiento de escalas musicales en violın,se tomaran rangos de frecuencias sobre cada una de las notas, y no ası solo lafrecuencia central de cada una de ellas. Los rangos utilizados para cada unade las notas, con su respectiva notacion en este proyecto son mostrados en 2.4.Cabe resaltar que estos rangos son denotados geometricamente, es decir por

distancias Pitagoricas.

Page 21: Algoritmo de detección de escalas musicales para viol´ın.

2.2. Procesamiento de senales 9

2.2 Procesamiento de senales

Cuando se habla de un filtro digital, se trata de un sistema que a partir de unainformacion dada, es capaz de discriminar cierta parte de esta. Generalmen-te esta discriminacion se realiza con base en consideraciones de contenido enfrecuencia, sin embargo, se puede discriminar con base en longitud de onda,velocidad, y otros criterios (Danilo, sf).Es importante tomar en cosideracion el teorema de la convolucion en el anali-sis de Fourier, este dice que la convolucion en el dominio del tiempo equivalea multiplicacion en el dominio de la frecuencia. Es decir, la convolucion de dostransformadas es igual a la multiplicacion de sus transformadas. Esto facilitaun poco el trabajo, ya que al aplicarse un filtro a cualquiera de los dos domi-nios (tiempo o frecuencia), se va a obtener el mismo resultado que con el otro.El tipo de filtro utilizado en el dominio del tiempo se caracteriza por su res-puesta impulsiva, es decir, los coeficientes y muestras del filtro.Por su parte, el tipo de filtro utilizado en el dominio de la frecuencia se carac-teriza porque tienen en cuenta los espectros de magnitud y de fase, y toma encuenta conceptos como frecuencia de corte, banda de paso, entre otras (Danilo,sf).

Page 22: Algoritmo de detección de escalas musicales para viol´ın.

10 2 Desarrollo teorico

Analisis frecuencial

Espectro de senales continuas periodicas

Para este tipo de senales se utiliza el analisis por series de Fourier. Donde,para la senal se utiliza,

x(t) =∞∑

k=−∞cke

jΩ0kt. (2.2)

Luego, para su respectivo analisis se utiliza,

ck =

∫ t0+Tp

t0

x(t)e−jΩ0ktdt. (2.3)

Si la senal tiene potencia media finita Px se sigue que,

Px =1

Tp

∫ t0+Tp

t0

|x(t)|2dt =

∞∑k=−∞

|ck|2. (2.4)

Esta ultima se conoce como relacion de Parseval, y afirma que la potenciamedia de la senal equivale a la suma de potencias medias de sus componentesfrecuenciales, tambien llamados armonicos (Moya, 2011).Se tiene tambien que la frecuencia fundamental (F0) viene dada por,

F0 =Ω0

2π(2.5)

Por lo tanto, para cada frecuencia kF0 a la grafica de |ck|2 se le llama densidadespectral de potencia, espectro de densidad de potencia, o espectro de potencia(Moya, 2011).El diagrama en 2.1 muestra el espectro de potencia para una senal continuaperiodica.

Figura 2.1: Espectro de potencia de una senal continua periodica (JohnG. Proakis, 1996).

Page 23: Algoritmo de detección de escalas musicales para viol´ın.

2.2. Procesamiento de senales 11

Espectro de senales discretas periodicas

Una senal discreta periodica, que cuenta con un periodo fundamental N, pue-de tener componentes en frecuencia distantes unos de otros por ciclos de lasiguiente manera,

ω =2π

N(2.6)

O bien,

f =1

N(2.7)

Se representan por los exponenciales complejos armonicamente relacionadospor,

sk(n) = ej2πkn/N (2.8)

Donde se tiene que k = 0,...,N-1.Para la sıntesis de la senal se tiene,

x(n) =∞∑

k=−∞cke

j2πln/N . (2.9)

Por lo tanto,

N−1∑n=0

x(n)e−j2πln/N = Ncl. (2.10)

Donde se tiene que,

cl =1

N

N−1∑n=0

x(n)e−j2πln/N . (2.11)

Con l=0,...,N-1. Esto se conoce como serie de Fourier en tiempo discreto(DTFS, por sus siglas en ingles).La relacion de Parseval en este caso es,

1

N

N−1∑n=0

|x(n)|2 =

N−1∑k=0

|ck|2. (2.12)

Por lo tanto, la potencia media de la senal equivale a la suma de las potenciasmedias de las componentes de frecuencia (Moya, 2011).

Page 24: Algoritmo de detección de escalas musicales para viol´ın.

12 2 Desarrollo teorico

2.3 Funciones utilizadas en MATLAB

Al ser el objeto de estudio del proyecto un algoritmo de reconocimiento deescalas musicales en violın por medio del uso de MATLAB, se consideraronvarias funciones propias del programa para el desarrollo de las distintas etapasdel algoritmo, a continuacion se mencionan y como se utilizan.

Funcion audioread

La funcion [y, Fs] = audioread(′nombredearchivo.tipodearchivo′) carga unarchivo con algun formato de audio por el arreglo llamado ”nombredearchivo”,y devuelve una tasa de muestras (Fs) en Hertz codificadas en el archivo, ade-mas de devolver la tasa de muestras en y (Mathworks, 2014b).

Funcion abs

La funcion Y = abs(X) devuelve el valor absoluto de cada uno de los valoresdel arreglo de X, donde X puede ser un escalar, un vector, una matriz o unarreglo multidimensional (Mathworks, 2014a).

Funcion fft

Las siglas fft se refieren a la Transformada rapida de Fourier (Fast Fouriertransform), la funcion y = fft(x) devuelve la transformada de Fourier de ca-da una de las columnas de la matriz X (Mathworks, 2014c). Esto lo realizautilizando la transformada de Fourier para un vector de longitud N, donde,

X(k) =N∑j=1

x(j)ω(j−1)(k−1)N (2.13)

x(j) =1

N

N∑k=1

X(k)ωN (2.14)

Donde se tiene que,

ωN = e(−2πi/N) (2.15)

Page 25: Algoritmo de detección de escalas musicales para viol´ın.

2.3. Funciones utilizadas en MATLAB 13

Funcion median

La funcion M = median(A), devuelve el valor de la media de todos los valoresde las muestras del vector A (Mathworks, 2014a).

Funcion std

La funcion S = std(A), devuelve el valor de la desviacion estandar del vectorA, esto lo hace de la siguiente forma,

s =

(1

n− 1

n∑i=1

(xi−−x)2

)( 12

)

(2.16)

Donde s es la desviacion estandar y n es el numero de muestras del vector A(Mathworks, 2014c).

Funcion msgbox

La funcion h = msgbox(′Mensaje′) crea un mensaje en un cuadrado de textoque inmediatamente envuelve el texto ′Mensaje′ y lo acomoda de maneraapropiada en una figura.El mensaje puede ser un vector string, una matriz string o un arreglo de celdas(Mathworks, 2014b).

GUIDE

La herramienta GUIDE (graphical user interface design environment por sussiglas en ingles) (MathWorks, 2014) es un entorno de programacion lineal quepertenece a MATLAB, se utiliza especialmente en la realizacion y ejecucionde programas con entrada continua de datos. Posee el mismo tipo de caracte-rısticas de programas visuales como lo es Visual C + + (Guerrero, 2008).

Page 26: Algoritmo de detección de escalas musicales para viol´ın.

14 2 Desarrollo teorico

Cuadro 2.4: Rangos de frecuencias de las notas musicales

Nota Rango de frecuencias (Hz)

Sol1 190.4975 - 201.825Sol#1 / Lab1 201.825 - 213.825La1 213.825 - 226.54La#1 /Sib1 226.54 - 240.01Si1 240.01 - 254.285Do1 254.285 - 269.405Do#1 / Reb1 269.405 - 285.42Re1 285.42 - 302.395Re#1 / Mib1 302.395 - 320.38Mi1 320.38 - 339.43Fa1 339.43 - 359.61Fa#1 / Solb1 359.61 - 380.995Sol2 380.995 - 403.65Sol#2 / Lab2 403.65 - 427.65La2 427.65 - 453.08La#2 /Sib1 453.08 - 480.02Si2 480.02 - 508.57Do2 508.57 - 538.81Do#2 / Reb2 538.81 - 570.84Re2 570.84 - 604.79Re#2 / Mib2 604.79 - 640.76Mi2 640.76 - 678.86Fa2 678.86 - 719.22Fa#2 / Solb2 719.22 - 761.99Sol3 761.99 - 807.3Sol#3 / Lab3 807.3 - 855.3La3 855.3 - 906.16La#3 /Sib3 906.16 - 960.04Si3 960.04 - 1017.14Do3 1017.14 - 1077.62Do#3 / Reb3 1077.62 - 1141.68Re3 1141.68 - 1209.58

Page 27: Algoritmo de detección de escalas musicales para viol´ın.

3 Desarrollo del algoritmo

En este capıtulo se describe el desarrollo por etapas que tuvo el proyecto,desde el analisis en el tiempo de la grabacion, a partir de esto al analisis defrecuencia y por ultimo el algoritmo en sı de reconocimiento de las notas y lasescalas musicales.La figura3.1 muestra el diagrama de contenido del proyecto, iniciando por eldesarrollo del algoritmo paso a paso hasta llegar a la interfaz grafica.Como primer paso se graba el archivo de audio y se guarda este en la carpe-

Figura 3.1: Diagrama de contenido del proyecto.

ta donde se contiene el algoritmo. Posteriormente se procede a la lectura delarchivo, la reproduccion del audio, la obtencion de la senal en el tiempo y lasenal en la frecuencia.Una vez identificado esto, se procede al reconocimiento de las frecuencias conrangos establecidos, luego las banderas de estas, las cuales se encargaron decolocar en 1 o en 0 si la nota fue interpretada o no, respectivamente.A partir del reconocimiento de las frecuencias se procedio al reconocimientode las escalas por medio de patrones establecidos musicalmente.Para probar el correcto funcionamiento del algoritmo se continuo con el des-pliegue de una ventana de texto con el nombre o nombres de las escalas reco-

15

Page 28: Algoritmo de detección de escalas musicales para viol´ın.

16 3 Desarrollo del algoritmo

nocidas.Con esto se unio todo y se formo una sola funcion para ser utilizada en GUIde MATLAB y ası crear una interfaz grafica manipulable por el usuario.

3.1 Analisis en el dominio del tiempo

Para poder abrir y correr la grabacion del archivo de audio utilizando MATLAB,se utilizo la funcion ’audioread’, la cual permite leer cualquier formato de au-dio.De esta manera se obtienen las tasas de muestras que se necesitan para el ana-lisis. Ademas se puede apreciar que la funcion audioread define la frecuenciade muestreo fs la cual corresponde a 44100 Hz.Una vez cargado el archivo de audio, se creo un arreglo de vectores de tiempollamado ’t’ el cual tiene pasos de 1/fs, ademas, tiene una longitud de el ta-mano del archivo menos 1, de manera que se garantice que el arreglo tenga eltamano correcto.Luego, se procedio a graficar en el tiempo el archivo de audio.Esto indica que en el eje x se tiene la informacion correspondiente a la dura-cion en segundos y en el eje y se tiene la amplitud del archivo de audio.Se utilizo este algoritmo para algunos archivos, a continuacion se muestran losresultados.Para el archivo de audio en Do Mayor se obtuvo la senal en el tiempo repre-sentada en 3.2.Notese que el archivo de audio cumple con la especificacion de tener una du-

Figura 3.2: Senal en el tiempo del archivo en Do Mayor.

racion igual o menor a 10 segundos.

Page 29: Algoritmo de detección de escalas musicales para viol´ın.

3.2. Analisis en el dominio de la frecuencia 17

3.2 Analisis en el dominio de la frecuencia

Una vez analizado en el tiempo, se creo una variable ’n’ de manera que tuvierala extension del audio menos 1.A partir de la definicion de ’n’ se definio el arreglo de vectores en frecuencia,de forma que fuera de 0 hasta fs en pasos de fs/n.Luego se aplica al archivo de audio la transformada rapida de Fourier juntocon el valor absoluto de esta, de manera que se pueda trabajar correctamenteen el dominio de la frecuencia.Una vez obtenida la transformada rapida se procedio a graficar cada uno delos archivos de audio ya analizados en el tiempo, pero en este caso en lafrecuencia. De manera que tiene los datos de frecuencia en Hz en el eje x ydatos de amplitud en el eje y.Se acotaron los lımites en frecuencia desde 0 Hz hasta un maximo de 1210Hz, ya que la nota con la frecuencia central mas alta interpretada en lasgrabaciones tiene una frecuencia de 1176 Hz.El archivo de audio en Do Mayor tiene la transformada de Fourier de la senalcomo se muestra en 3.3.La transformada rapida de Fourier para el archivo de audio en La menor

Figura 3.3: Transformada rapida de Fourier del archivo en Do mayor.

armonico se puede observar en 3.4.Se puede observar de los tres casos analizados, que todos estan en el rango de

frecuencia de entre 0 Hz y 1210 Hz, ademas que la magnitud de la transformadade Fourier no es mayor a 3000 en ningun caso.De este analisis en frecuencia se puede observar el espectro de potencia tal ycomo se muestra en 2.1, por ejemplo una nota LA centrada aproximadamenteen la frecuencia de 440 Hz se ve en 3.5.

Page 30: Algoritmo de detección de escalas musicales para viol´ın.

18 3 Desarrollo del algoritmo

Figura 3.4: Transformada rapida de Fourier del archivo en La menor armonico.

3.3 Recorrido por las frecuencias

Una vez leıdo el archivo wav introducido y al ser recorrido tanto en el tiempocomo en la frecuencia, se sigue entonces con el recorrido de las frecuencias.Primeramente se tomo en cuenta una sola columna de ’wave1’ ya que estecontiene dos columnas identicas.Luego se combinaron los vectores, de manera que se creo una matriz z condos colummas, en la primera se colocaron los valores de la magnitud de latransformada de Fourier, y en la segunda columna los valores de la frecuenciaasociados a dichas magnitudes. Esto se logro utilizando el codigo descrito en3.6.Ya creada la matriz z, se empezo a recorrer cada uno de los rangos de fre-

cuencias, de manera que se comparara cada par ordenado con el siguiente, yse guardara el valor de amplitud maximo de cada uno de los rangos. De estaforma se guardaron los valores de frecuencia y amplitud donde se encuentranlos picos en la transformada de Fourier. En 3.7 se muestra un ejemplo de comose recorrieron los rangos de frecuencia.En Finicial se definio el valor mınimo de frecuencia en el rango establecido y

en Ffinal el valor maximo, luego se coloco el valor de SOL1 en 0 para empe-zar con la comparacion. Una vez establecido esto, se recorrieron uno por unocada uno de los pares ordenados, de manera que si se encontraba un valor deamplitud mayor se guardara este valor nuevo, y ası sucesivamente hasta llegaral valor final del rango, ya con el pico maximo encontrado.Se recorrio cada uno de los 32 rangos en total por analizar, tan solo cambiandolos valores de frecuencia inicial y de frecuencia final.

Page 31: Algoritmo de detección de escalas musicales para viol´ın.

3.4. Banderas de las frecuencias 19

Figura 3.5: Espectro de potencia de la nota LA con frecuencia central en440.5Hz.

Figura 3.6: Creacion de la matriz z.

3.4 Banderas de las frecuencias

Para hacer el reconocimiento de las escalas mas sencillo, lo siguiente que seimplemento fue la utilizacion de banderas para denotar las frecuencias, es decircolocar las notas musicales en 0 o en 1 segun estas tuvieran picos de amplitudo no.

Page 32: Algoritmo de detección de escalas musicales para viol´ın.

20 3 Desarrollo del algoritmo

Figura 3.7: Recorrido de rango de frecuencias de Sol1.

Esta comparacion se realizo de la siguiente manera: primero se tomo la mediade todas las muestras de amplitud de la FFT, luego la desviacion estandar, ycon esto se determino y definio experimentalmente, que para que hubiera unpico de amplitud considerable en el muestreo, particularmente en este proyec-to y tipo de grabacion, se debıa tomar el valor mınimo de la media mas ochodesviaciones estandar, como se puede observar en 3.8.Una vez definido el valor mınimo para considerar un pico, se tomaron cada

Figura 3.8: Valor mınimo de amplitud.

uno de los picos reconocidos en la seccion reconocimiento de frecuencias y secompararon contra el valor mınimo, de esta forma si el pico ya reconocido era

Page 33: Algoritmo de detección de escalas musicales para viol´ın.

3.5. Reconocimiento de Escalas 21

mayor a este valor se coloca en 1, mientras que en el caso contrario se colocaen 0.Terminada la bandera del SOL1 se continuo con la siguiente nota y de maneraconsecutiva hasta terminar con todos los picos de amplitud reconocidos.

3.5 Reconocimiento de Escalas

Con las banderas de frecuencias en 0 o en 1, se pueden agrupar las distintasnotas reconocidas en escalas musicales, especıficamente en escalas mayores,menores armonicas o menores melodicas.El codigo primero toma en cuenta las notas que no pueden formar parte delpatron de notas establecidas para cada patron, de manera que, si se encuentrauna bandera en 1 de alguna nota que forme parte de la escala recorrida enese momento, de inmediato coloca la bandera de esa escala en 0, y continuacon la siguiente escala, es decir con solo que haya una nota que no debe estardebe continuar con el siguiente caso. Si todas las banderas de las notas queno pueden estar dentro de la escala estan en 0, entonces el programa continuacon las notas que sı pueden estar, de esta manera, puede estar una, varias otodas las notas y ası el programa coloca la bandera de la escala en 1.

Casos posibles

Dentro del reconocimiento de la escala pueden ocurrir algunos casos factibles,que se enumeraran a continuacion.

• El violinista interprete una escala cromatica, esto es, que se interpreteuna secuencia de semitonos de por lo menos una octava, lo que provocarıaque las banderas de todas las escalas se coloquen en 0, es decir no sepodrıa ubicar el segmento en ninguna escala.

• Un conjunto de pocas notas, lo que provocarıa que las banderas en 1correspondan a una o varias escalas.

• La escala mayor tiene una relativa menor natural, por lo tanto, al re-conocerse una escala mayor, implıcitamente se reconoce la escala menornatural.

• Puede reconocerse un grupo de notas que correspondan a una sola escala.

Page 34: Algoritmo de detección de escalas musicales para viol´ın.

22 3 Desarrollo del algoritmo

Ventana de texto

La ventana de texto es utilizada para desplegar el nombre o nombres de la olas escalas reconocidas por el algoritmo. Esta ventana reconoce si la banderade cada escala esta en 1 o en 0, de esta manera si esta en 1 automaticamentese despliega una ventana que contiene el nombre de dicha escala.Notese que el algoritmo detecta si la bandera de dicha escala se encuentra en1, de esta manera utilizando la funcion msgbox de MATLAB el despliega elmensaje de la escala.Al tener toda escala mayor una relativa menor natural que posee las mismasnotas, entonces en el mensaje que se despliega para cada una de las escalasmayores se adjunta el nombre de su escala relativa menor natural, ya que sepodrıa tratar de cualquiera de los dos casos.

3.6 Interfaz de usuario en GUI de MATLAB

Creacion de la interfaz

Realizados los distintos scripts en MATLAB para cada una de las seccionesdel programa, se unieron todos en un solo script, y luego se transformaron enuna funcion para ser utilizada en GUIDE, de manera que se permitiera crearuna interfaz grafica que fuera utilizada por cualquier usuario.Al crearse un nuevo Blank GUI, o nuevo documento de GUIDE, se forman dostipos de archivo, uno grafico (.fig) donde se colocan los distintos componentesque llevara la interfaz y otro (.m) donde se colocan las funciones y distintoscomandos que se le asignaran a cada uno de los componentes de la interfaz.De esta manera se empezo a implementar la interfaz grafica, la cual cuentacon 3 imagenes (axes1, axes2,axes3), un boton (SELECCIONE EL ARCHIVODE AUDIO), dos listas (listbox1, listbox2) y dos textos estaticos (ESCALAO ESCALA RECONOCIDAS, NOTAS INTERPRETADAS) tal y como semuestra en 3.9. Se describira a continuacion cada uno de los componentes.

• Axes1: se trata de un complemento tipo AXES, en el cual se incluyo laimagen de fondo para el programa final, esta imagen se llama violin1.jpg.

• Axes2: esta imagen tambien de tipo AXES, es utilizada para captar lasenal en el tiempo del script PARTE 1 del algoritmo, de esta manera sele asigna a Axes2 la imagen obtenida por plot(t,wave).

Page 35: Algoritmo de detección de escalas musicales para viol´ın.

3.6. Interfaz de usuario en GUI de MATLAB 23

Figura 3.9: Archivo .fig de la interfaz de GUIDE.

• Axes3: esta imagen de tipo AXES, al igual que a Axes2, se le asigno unaimagen graficada por el script PARTE 1, en este caso la transformadarapida de Fourier de la senal.

• SELECCIONE EL ARCHIVO DE AUDIO: corresponde a un boton detipo Push Button, el cual al momento de presionarlo se direcciona a lacarpeta donde se encuentra el programa y a la vez todos los archivos deaudio, de manera que se puede seleccionar el archivo y a partir de estose obtienen los resultados generados por todos los algoritmos automati-camente.

• ESCALA O ESCALA RECONOCIDAS: este texto es de tipo StaticText, es decir, es un texto estatico que en el caso de la interfaz se utilizocomo tıtulo para denotar la lista donde se coloco el nombre de la escala oescalas reconocidas tal y como se realizo en el script de Reconocimientode Escalas.

• NOTAS INTERPRETADAS: este texto tambien es de tipo Static Text,utilizado como tıtulo para la lista de notas interpretadas, tal y como seextrajeron en los scripts Reconocimiento de frecuencias y Banderas delas frecuencias.

• listbox1: Esta lista de tipo Listbox fue utilizada en la interfaz de maneraque en ella se colocara el nombre o los nombres de las escalas que elalgoritmo reconocio. Para lograr esto, se reemplazo la ventana de texto

Page 36: Algoritmo de detección de escalas musicales para viol´ın.

24 3 Desarrollo del algoritmo

desplegada, de manera que en su lugar, si la funcion entra en la senten-cia ’if’, este guarda en ’hn, 1’ un String con el nombre de dicha escala, yluego sumara 1 el contador para que continuara con todos los casos has-ta finalizar. De esta manera ’h’ es un arreglo de celdas (cell array) quecorre por todas las escalas y guarda todos los casos correspondientes.Una vez creado el arreglo de celdas ’h’, se procedio a introducir este enuna lista (listbox1), al contener este solamente contenido de tipo String(solo texto).

• listbox2: Esta lista tambien de tipo Listbox, fue utilizada para colocar enella el nombre de todas las notas que el algoritmo reconocio. Se realizo enla parte del algoritmo correspondiente a la Banderas de las Frecuencias,de esta manera, al poner la bandera en 0 o en 1, se coloca una sentencia’if’ de forma que si se encuentra en 1 se guardara en en lz, 1 un Stringcon el nombre de dicha nota, por lo tanto al igual que en el caso pasado,’l’ es un arreglo de celdas de longitud z.Al crearse el arreglo de celdas ’l’ se procedio a colocarlo en listbox2, deesta forma en la lista se desplegara el nombre de todas las notas recono-cidas por el algoritmo.

Interfaz en ejecucion

La ultima parte del proyecto, correspondio a ejecutar la interfaz realizada. Aldarle play al archivo creado se desplego la interfaz mostrada en 3.10.Se puede observar cada uno de los componentes introducidos ya en ejecucion,

donde axes1 es un fondo permamente o fijo en la interfaz, el Push ButtonSELECCIONE EL ARCHIVO DE AUDIO se encuentra disponible para queel usuario lo presione y se despliegue la lista de archivos de audio, las imagenesaxes2 y axes3 se encuentran vacıas puesto que aun no se ha ejectudo ningunarchivo, y las listas listbox1 y listbox2 igualmente estan vacıas ya que no seha corrido el programa.En la figura 3.11 se puede observar la lista con los archivos de audio disponiblesque se despliega al presionar el Push Button SELECCIONE EL ARCHIVODE AUDIO.Se selecciona el archivo de audio que se desee y a continuacion el programa

despliega la senal en el tiempo en axes1, la transformada rapida de Fourier enaxes2, la escala o escalas reconocidas en listbox1 y las notas interpretadas enlistbox2, tal como se muestra en 3.12, adicionalmente, el programa reproduceel archivo de audio elegido. El archivo reproducido es un audio en Do Mayor.Notese que el programa identifico el archivo en Do Mayor, tal y como se es-

Page 37: Algoritmo de detección de escalas musicales para viol´ın.

3.6. Interfaz de usuario en GUI de MATLAB 25

Figura 3.10: Interfaz desplegada al darle play al archivo creado.

Figura 3.11: Archivos desplegados al presionar el Push Button SELECCIONEEL ARCHIVO DE AUDIO.

peraba.El programa reconocio el archivo de audio en Lab Mayor, lo que era de espe-rarse.Por ultimo, se muestra en 3.13 al programa ejecutandose con un archivo deaudio de una grabacion de la casa disquera Deutsche Grammophon del violi-nista Henryk Szeryng. Esta obra seleccionada no pertenece al conjunto de unasola tonalidad puesto que pasa por varias al ser una obra de longitud larga,

Page 38: Algoritmo de detección de escalas musicales para viol´ın.

26 3 Desarrollo del algoritmo

Figura 3.12: Interfaz en ejecucion con archivo de audio en Do Mayor.

por lo que el programa debe reconocer que no pertenece a ninguna escala (yaque esta en varias, y estos requisitos anulan unas de otras), ademas, se podraobservar mas de una senal al ser un archivo de una casa disquera, el cual co-rrige ciertos errores para la edicion de este.Se puede observar las dos senales tanto en el tiempo como en la frecuencia,

Figura 3.13: Interfaz en ejecucion con archivo de audio de disco de HenrykSzeryng.

ademas no pertenece a ninguna escala como ya se sabıa y se despliegan lasnotas interpretadas, tal como se esperaba.

Page 39: Algoritmo de detección de escalas musicales para viol´ın.

4 Conclusiones y recomendaciones

4.1 Conclusiones

• Se crearon cinco Scripts en MATLAB, de manera que cada uno cum-pliera una funcion especıfica del algoritmo, luego se unieron en un soloScript, con lo que se creo una funcion para implementarse en GUIDE deMATLAB.

• Se logro por medio de MATLAB, leer un archivo de audio y partir de estose pudo reconocer la senal en el tiempo y en la frecuencia, ası reconocerlas distintas notas musicales ejecutadas mediante ventanas establecidasen la frecuencia.

• Se logro implementar un algoritmo que permitiera agrupar el conjun-to de las distintas notas musicales en escalas mayores, escalas menoresarmonicas o escalas menores melodicas.

• Se creo una interfaz grafica por medio de la herramienta GUIDE deMATLAB, accesible al usuario, de manera que desplegara la lista dearchivos de audio disponibles y luego el nombre de la o las escalas re-conocidas, las notas ejecutadas, la senal en el tiempo y la senal en lafrecuencia.

4.2 Recomendaciones

• El presente proyecto puede ser eventualmente implementado en tiemporeal mediante procesamiento digital de senales en una plataforma dehardware libre como por ejemplo en Arduino.

• Se puede profundizar en metodos de procesamiento digital de senalespara el analisis de la transformada rapida de Fourier, como lo es el ZeroPadding.

• Procurar realizar las grabaciones en un entorno cerrado con poco ruidoexterno, ademas de verificar el correcto funcionamiento del microfono, demanera que el archivo de audio sea fiel a la interpretacion del violinista.

• Las ventanas utilizadas en la frecuencia para el reconocimiento de notaspueden definirse de manera distinta, dependiendo del fin con el que se

27

Page 40: Algoritmo de detección de escalas musicales para viol´ın.

28 4 Conclusiones y recomendaciones

utilice el programa, de manera que si se trata de un estudiante avanzadode violın o de un profesional, la ventana se puede reducir para ser masestrictos con la afinacion.

• El algoritmo puede ampliarse para incluir en el conceptos musicales comoel tempo y el ritmo, ademas se puede expandir la longitud del archivode audio para poder reconocer cuando se termina una escala y comienzauna nueva.

• Se puede agregar al algoritmo la opcion de poder interpretar mas de uninstrumento a la vez, como por ejemplo una orquesta, y que este a lavez reconozca cada uno de ellos.

Page 41: Algoritmo de detección de escalas musicales para viol´ın.

Bibliografıa

Danilo (s.f.). Notas de danilo. paginas 3–7.

Guerrero, D. O. B. (2008). Manual de interfaz grafica de usario en matlab.

Isabel Jeremıas L, E. C. R. (2005). Curso Basico de Armonıa. Editorial de laUniversidad de Costa Rica.

John G. Proakis, D. G. M. (1996). Digital Signal Processing. Prentice HallInternational, Inc.

Macıas, J. M. (2012). Diseno e implementacion de un detector automatico deacordes. Master’s thesis, Universidad Carlos III de Madrid.

Mathworks (2014a). abs. http://www.mathworks.com/help/matlab/ref/abs.html.

Mathworks (2014b). audioread. http://www.mathworks.com/help/matlab/ref/audioread.html.

Mathworks (2014c). fft. http://www.mathworks.com/help/matlab/ref/fft.html.

MathWorks (2014). Matlab gui. http://www.mathworks.com/discovery/matlab-gui.html.

Mathworks (2014a). median. http://www.mathworks.com/help/matlab/ref/median.html.

Mathworks (2014b). msgbox. http://www.mathworks.com/help/matlab/ref/msgbox.html.

Mathworks (2014c). std. http://www.mathworks.com/help/matlab/ref/std.html.

Moya, J. P. A. (2011). Notas de clase, procesamiento digital de senales. Ins-tituto Tecnologico de Costa Rica, paginas 91–100.

Tomasini, M. C. (s.f.). El fundamento matematico de la escala musical y susraıces pitagoricas. Universidad de Palermo, paginas 16, 17.

29

Page 42: Algoritmo de detección de escalas musicales para viol´ın.
Page 43: Algoritmo de detección de escalas musicales para viol´ın.

A Documentacion

Las grabaciones en los distintos formatos de audio utilizados en este proyectofueron grabados por:

• Mauricio Campos Salas. Los archivos fueron grabados en una compu-tadora Dell Inspiron N4110 y utilizando el programa propio de Windows7, Sound Recorder. Noviembre de 2014 en San Jose Costa Rica.

• Henryk Szeryng. Disco ’Sonatas & Partitas For Violin’ de la casa dis-quera Deutsche Grammophon, ano 1967. Hamburgo, Alemania.

31