Algoritmo de detección de escalas musicales para violín

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

1 downloads 48 Views 2MB Size

Recommend Stories


Construcción de un algoritmo para el producto
Unidad 01: Resolviendo problemas, la necesidad de operar. Grado 02 • Matemáticas Clase: Construcción de un algoritmo para el producto Nombre: Intro

ESCALAS DE CALIFICACIONES CREDITICIAS NACIONALES
ESCALAS DE CALIFICACIONES CREDITICIAS NACIONALES CALIFICACIONES CREDITICIAS NACIONALES DE LARGO PLAZO: AAA(pan). Las Calificaciones Nacionales 'AAA' i

Story Transcript

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

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

Por: Mauricio Campos Salas

IE-0499 Proyecto el´ ectrico Aprobado por el Tribunal:

Ing.Gustavo N´ un ˜ez Segura Profesor gu´ıa

Ing. Teodoro Willink Castro Profesor lector

Ing. Osvaldo Fern´andez Cascante Profesor lector

Resumen El objetivo general del presente trabajo fue el desarrollar un algoritmo que permitiera, dado un archivo de audio interpretado en viol´ın, el reconocimiento de la escala o escalas musicales relacionados directamente con las notas ejectudas. A pesar de la existencia de varios programas que permiten reconocimiento de notas, el presente proyecto pretende introducir m´as conceptos musicales, abarcar m´ as generalmente desde el punto de vista ingenieril y musical un extracto de audio, como por ejemplo su se˜ nal en el tiempo y el reconocimiento de escalas. De esta manera se cre´ o un algoritmo que permiti´o la lectura del archivo y a partir de esto se obtuvo la se˜ nal en el tiempo y consecuentemente la transformada r´ apida de Fourier de la se˜ nal. Al realizarse el an´ alisis en la frecuencia, se crearon ventanas para identificar las distintas notas musicales ejecutables por un violinista. Al crearse las ventanas se pudo extraer las magnitudes m´aximas encontradas y con esto verificar si se trataba de la ejecuci´ on de una nota o de ruido producido por el entorno de la grabaci´ on del archivo. Luego se crearon los distintos patrones de las escalas musicales, para as´ı agrupar en uno, alguno o ning´ un grupo el conjunto de notas musicales reconocido. Por u ´ltimo se cre´ o una interfaz gr´afica que permitiera al usuario ejecutar el algoritmo, obteniendo a partir de esta la se˜ nal en el tiempo, la transformada r´ apida de Fourier de la se˜ nal, las notas musicales ejectudas y la o las escalas a las que este conjunto de notas musicales pertenece. Se logr´ o implementar correctamente el algoritmo para extractos de una duraci´ on cercana a los 10 segundos, con esto es posible eventualmente realizar an´ alisis en el tiempo que permita el estudio de otros ´ambitos relacionados tanto con la m´ usica como con la ingenier´ıa.

v

´Indice general ´ Indice de figuras

viii

´ Indice de cuadros

ix

Nomenclatura

xi

1 Introducci´ on 1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Metodolog´ıa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Alcance del proyecto . . . . . . . . . . . . . . . . . . . . . . . .

1 2 3 4

2 Desarrollo te´ orico 2.1 Teor´ıa Musical . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Procesamiento de se˜ nales . . . . . . . . . . . . . . . . . . . . . 2.3 Funciones utilizadas en MATLAB . . . . . . . . . . . . . . . . .

5 5 9 12

3 Desarrollo del algoritmo 3.1 An´ alisis en el dominio del tiempo . . . . 3.2 An´ alisis en el dominio de la frecuencia . 3.3 Recorrido por las frecuencias . . . . . . 3.4 Banderas de las frecuencias . . . . . . . 3.5 Reconocimiento de Escalas . . . . . . . 3.6 Interfaz de usuario en GUI de MATLAB

15 16 17 18 19 21 22

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

4 Conclusiones y recomendaciones 27 4.1 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2 Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Bibliograf´ıa

29

A Documentaci´ on

31

vii

´Indice de figuras 2.1

Espectro de potencia de una se˜ nal continua peri´odica (John G. Proakis, 1996). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11

Diagrama de contenido del proyecto. . . . . . . . . . . . . . . . . . Se˜ nal en el tiempo del archivo en Do Mayor. . . . . . . . . . . . . Transformada r´ apida de Fourier del archivo en Do mayor. . . . . . Transformada r´ apida de Fourier del archivo en La menor arm´onico. Espectro de potencia de la nota LA con frecuencia central en 440.5Hz. Creaci´ on de la matriz z. . . . . . . . . . . . . . . . . . . . . . . . . Recorrido de rango de frecuencias de Sol1. . . . . . . . . . . . . . . Valor m´ınimo de amplitud. . . . . . . . . . . . . . . . . . . . . . . Archivo .fig de la interfaz de GUIDE. . . . . . . . . . . . . . . . . Interfaz desplegada al darle play al archivo creado. . . . . . . . . . Archivos desplegados al presionar el Push Button SELECCIONE EL ARCHIVO DE AUDIO. . . . . . . . . . . . . . . . . . . . . . . 3.12 Interfaz en ejecuci´ on con archivo de audio en Do Mayor. . . . . . . 3.13 Interfaz en ejecuci´ on con archivo de audio de disco de Henryk Szeryng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

viii

15 16 17 18 19 19 20 20 23 25 25 26 26

´Indice de cuadros 2.1 2.2 2.3 2.4

Enarmon´ıas musicales . . . . . . . . . . . . . . . Intervalos entre notas consecutivas . . . . . . . . Frecuencias de las notas musicales (Mac´ıas, 2012) Rangos de frecuencias de las notas musicales . .

ix

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

5 6 8 14

Nomenclatura DF T S

serie de Fourier en tiempo discreto, del ingl´es Discrete Fourier Transform.

FFT

transformada r´apida de Fourier, del ingl´es Fast Fourier transform.

b

alteraci´on musical correspondiente al bemol.

#

alteraci´on musical correspondiente al sostenido.

xi

1

Introducci´ on

Con el fin de evitar el desconocimiento de la teor´ıa musical por cuanto al reconocimiento de ciertos elementos espec´ıficos, como por ejemplo, los tipos de notas y escalas musicales, se pretende desarrollar un algoritmo que permita, dado un fragmento musical interpretado por un viol´ın, ubicar en una escala determinada y de esta forma facilitar el reconocimiento de una tonalidad. Se utilizar´ a el programa MATLAB para implementar y probar el algoritmo, de manera que, a partir de un archivo de audio que contenga el fragmento auditivo, se obtenga informaci´on, como la nota o las notas que se reproducieron ” y al comparar con patrones musicales establecidos sobre escalas musicales, determinar a cu´ al de esas escalas pertenece el fragmento. De esta manera, se pretende un uso pedag´ogico del algoritmo para la ense˜ nanza del viol´ın, sin embargo, es aplicable a los diversos instrumentos orquestales, ya que los rangos utilizados en frecuencia lo permiten.

1

2

1 Introducci´on

1.1

Objetivos

Objetivo General Desarrollar un algoritmo que permita determinar la escala musical utilizada en un fragmento de interpretaci´ on de viol´ın, con el fin de evitar el desconocimiento de la teor´ıa musical por cuanto al reconocimiento de ciertos elementos en m´ usica, mediante el desarrollo de un programa en MATLAB.

Objetivos Espec´ıficos • Analizar, con ayuda de MATLAB, un fragmento de audio interpretado por viol´ın, de forma que se pueda determinar la nota musical o notas musicales ejecutadas. • Comparar las notas musicales del fragmento de audio, con las formas de escalas musicales ya definidas. • Crear una interfaz gr´ afica que permita al usuario la ejecuci´on del algoritmo.

1.2. Metodolog´ıa

1.2

3

Metodolog´ıa

Para el desarrollo de este proyecto, se efectu´o en varias etapas, de manera que cada una permitiera funcionar a la siguiente. Primero, se debi´o realizar un an´alisis del espectro arm´ onico de las distintas notas utilizadas en el viol´ın. Luego, se form´ o una base de datos en MATLAB, donde se contiene la informaci´on de las distintas escalas musicales a reconocer. Seguidamente, se procedi´o a hacer las grabaciones de los extractos en viol´ın, en un formato de .wav, que luego se procedieron a leer en MATLAB. Una vez contenidos los archivos de audio, se realiz´ o el algoritmo en MATLAB para reconocer la nota musical interpretada en un momento determinado. Luego se ampli´o el algoritmo para reconocer tambi´en, cuando en el archivo hay un cambio en el tiempo de una nota, y hacer un reconocimiento de la nueva. As´ı sucesivamente hasta terminar con el archivo completo. Por u ´ltimo, al haber hecho el reconocimiento de la totalidad de las notas del archivo, se tomaron los resultados obtenidos, y se compararon con los datos de la base de datos realizada al principio, con lo que se pudo proceder con la detecci´ on de escalas musicales.

4

1.3

1 Introducci´on

Alcance del proyecto

Se utiliz´ o un archivo de grabaci´ on con una extensi´on de 10 segundos m´aximo, luego se analiz´ o en MATLAB y por u ´ltimo utilizando el algoritmo desarrollado se logr´ o determinar la escala o las escalas musicales en las cuales se puede clasificar el patr´ on de notas identificado. Luego, se cre´o una interfaz que permitiera al usuario manipular el algoritmo por medio de la selecci´on del archivo de audio y que este, autom´ aticamente desplegara la informaci´on obtenida.

2

Desarrollo te´ orico

2.1

Teor´ıa Musical

Notas, intervalos y alteraciones La distancia que separa a una nota de otra, es conocida como intervalo. El semitono es la distancia (o intervalo) m´as peque˜ na entre dos notas musicales reconocida en la m´ usica ortiental, puesto que en la m´ usica oriental se puede encontrar el cuarto de tono, sin embargo, se remiti´o a trabajar exclusivamente con lo que se refiere a la m´ usica occidental. En el lenguage musical se cuenta con siete notas en su estado natural, estas son en orden: do, re, mi, fa, sol, la y si. Existen dos tipos de alteraciones a estas, que son el sostenido y el bemol. La alteraci´ on del sostenido (#) consiste en agregar un semitono a alguna nota en particular, es decir, la hace un semitono m´as aguda. Por su parte, la alteraci´on del bemol (b) realiza lo contrario al sostenido, le resta un semitono a la nota dada. Es decir, la hace un semitono m´as grave. En el lenguage musical se llama enarmon´ıa a aquellas notas que se escriben de manera diferente pero que suenan igual, las enarmon´ıas m´as comunes, y las utilizadas para este proyecto se muestran en 2.1. Los intervalos entre las

Cuadro 2.1: Enarmon´ıas musicales Notas Do# - Reb Re# - Mib Fa# - Solb Sol# - Lab La# - Sib

notas naturales consecutivas se pueden observar en 2.2.

5

6

2 Desarrollo te´orico Cuadro 2.2: Intervalos entre notas consecutivas Notas Do - Re Re - Mi Mi - Fa Fa - Sol Sol - La La - Si Si - Do

Intervalo Un tono (dos semitonos) Un tono Un semitono Un tono Un tono Un tono Un semitono

Escalas y tonalidades Una escala musical consiste en una sucesi´on de notas que comienzan y terminan en la misma nota, a esta nota se le llama t´onica, y es lo que se denomina el centro tonal. La sucesi´ on de las ocho notas de la escala musical se denomina octava, y la diferencia entre una nota y esta misma una octava m´as arriba es exactamente el doble de su frecuencia (Isabel Jerem´ıas L, 2005). En este proyecto, se tomaron en cuenta 36 escalas, 12 mayores, 12 menores arm´onicas y 12 menores mel´ odicas, en las que cada una de ellas se conforman de un total de 7 notas consecutivas con patrones distintos. Una tonalidad consiste en un sistema organizado de tonos y semitonos, que da como resultado las dos escalas b´asicas, la escala mayor y la escala menor. La tonalidad mayor, est´ a basada en la estructura mel´odica de la escala diat´onica (Isabel Jerem´ıas L, 2005). El patr´on de estas escalas est´a formado por las siguientes relaciones interv´ alicas: • 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 mel´odica de tres escalas: la escala menor natural, la escala menor mel´odica y la escala menor arm´onica (Isabel Jerem´ıas L, 2005). Sin embargo, para el proyecto se tom´o en consideraci´ on la escala menor arm´onica y la escala menor mel´odica. La escala menor natural est´ a formada por la siguiente sucesi´on de intervalos mel´odicos:

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 mel´odica, tiene la siguiente estructura interv´alica: • Tono - Semitono - Tono - Tono - Tono - Tono - Semitono. La escala de La menor mel´odica es: • La - (Tono) - Si - (Semitono) - Do - (Tono) - Re - (Tono) - Mi - (Tono) - Fa# - (Tono) - Sol# - (Semitono) - La.

La escala menor arm´onica, se conforma de la siguiente secuencia de intervalos: • Tono - Semitono - Tono - Tono - Semitono - Tono y medio - Semitono. La escala de La menor arm´onica 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 vibraci´ on de la onda sonora que esta produce, lo que es conocido como afinaci´on Pitag´ orica. Matem´ aticamente se puede expresar la frecuencia (f) de la siguiente manera, v . (2.1) l Donde v es la velocidad del sonido en metros por segundo, y l es la longitud de onda en metros (Tomasini, sf). Las frecuencias que identifican a las ocho notas de la escala son, aproximadamente las mostradas en 2.3. Es importante resaltar que, al doble de la frecuencia de una nota musical espec´ıfica se le llama una octava por encima, y es por esto que estas dos notas llevar´an el mismo nombre. Por ejemplo: la nota La central tiene una frecuencia de 440 Hz, el siguiente La que es una octava f=

8

2 Desarrollo te´orico Cuadro 2.3: Frecuencias de las notas musicales (Mac´ıas, 2012) Nota Do Do#/Reb Re Re#/Mib Mi Fa Fa#/Solb Sol Sol#/Lab La La#/Sib Si Do

Frecuencia (Hz) 261.63 277.18 293.66 311.13 329.63 349.23 369.99 392 415.30 440 466.16 493.88 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, sin embargo, en m´ usica se trabaja con un rango de 27 Hz a 13186 Hz, lo que corresponde a las frecuencias fundamentales de las ondas sonoras de la nota m´as grave y m´ as aguda del piano. La regi´on m´as aguda, es decir, de frecuencias mayores (hasta los 20 kHz), es dedicada a los arm´onicos de los tonos altos, lo que produce el timbre de los distintos instrumentos, por lo que se puede diferenciar uno de otro (Mac´ıas, 2012). Al ser el viol´ın un instrumento de cuerda no temperado, es decir, que cada una de las notas que se interpretan dependen del desarrollo auditivo y f´ısico del ejecutante ya que no hay referencias f´ısicas sobre cada nota, y la afinaci´on depende de la pulsaci´ on que se realice sobre la cuerda, se tiene que la afinaci´on no necesariamente va a ser precisa en todos los casos. Por esto, al ser un algoritmo que est´ a dirigido al reconocimiento de escalas musicales en viol´ın, se tomar´ an rangos de frecuencias sobre cada una de las notas, y no as´ı solo la frecuencia central de cada una de ellas. Los rangos utilizados para cada una de las notas, con su respectiva notaci´on en este proyecto son mostrados en 2.4. Cabe resaltar que estos rangos son denotados geom´etricamente, es decir por distancias Pitag´ oricas.

2.2. Procesamiento de se˜ nales

2.2

9

Procesamiento de se˜ nales

Cuando se habla de un filtro digital, se trata de un sistema que a partir de una informaci´ on dada, es capaz de discriminar cierta parte de esta. Generalmente esta discriminaci´ on se realiza con base en consideraciones de contenido en frecuencia, sin embargo, se puede discriminar con base en longitud de onda, velocidad, y otros criterios (Danilo, sf). Es importante tomar en cosideraci´on el teorema de la convoluci´on en el an´alisis de Fourier, este dice que la convoluci´on en el dominio del tiempo equivale a multiplicaci´ on en el dominio de la frecuencia. Es decir, la convoluci´on de dos transformadas es igual a la multiplicaci´on de sus transformadas. Esto facilita un poco el trabajo, ya que al aplicarse un filtro a cualquiera de los dos dominios (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 respuesta impulsiva, es decir, los coeficientes y muestras del filtro. Por su parte, el tipo de filtro utilizado en el dominio de la frecuencia se caracteriza porque tienen en cuenta los espectros de magnitud y de fase, y toma en cuenta conceptos como frecuencia de corte, banda de paso, entre otras (Danilo, sf).

10

2 Desarrollo te´orico

An´ alisis frecuencial Espectro de se˜ nales continuas peri´ odicas Para este tipo de se˜ nales se utiliza el an´alisis por series de Fourier. Donde, para la se˜ nal se utiliza, ∞ X

x(t) =

ck ejΩ0 kt .

(2.2)

k=−∞

Luego, para su respectivo an´ alisis se utiliza, Z

t0 +Tp

ck =

x(t)e−jΩ0 kt dt.

(2.3)

t0

Si la se˜ nal tiene potencia media finita Px se sigue que, Px =

1 Tp

Z

t0 +Tp

|x(t)|2 dt =

t0

∞ X

|ck |2 .

(2.4)

k=−∞

Esta u ´ltima se conoce como relaci´on de Parseval, y afirma que la potencia media de la se˜ nal equivale a la suma de potencias medias de sus componentes frecuenciales, tambi´en llamados arm´onicos (Moya, 2011). Se tiene tambi´en que la frecuencia fundamental (F0 ) viene dada por, Ω0 (2.5) 2π Por lo tanto, para cada frecuencia kF0 a la gr´afica de |ck |2 se le llama densidad espectral 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 se˜ nal continua peri´odica. F0 =

Figura 2.1: Espectro de potencia de una se˜ nal continua peri´odica (John G. Proakis, 1996).

2.2. Procesamiento de se˜ nales

11

Espectro de se˜ nales discretas peri´ odicas Una se˜ nal discreta peri´ odica, que cuenta con un periodo fundamental N, puede tener componentes en frecuencia distantes unos de otros por ciclos de la siguiente manera, ω=

2π N

(2.6)

f=

1 N

(2.7)

O bien,

Se representan por los exponenciales complejos arm´onicamente relacionados por, sk (n) = ej2πkn/N

(2.8)

Donde se tiene que k = 0,...,N-1. Para la s´ıntesis de la se˜ nal se tiene, x(n) =

∞ X

ck ej2πln/N .

(2.9)

k=−∞

Por lo tanto, N −1 X

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

(2.10)

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

(2.11)

n=0

Donde se tiene que, cl =

n=0

Con l=0,...,N-1. Esto se conoce como serie de Fourier en tiempo discreto (DTFS, por sus siglas en ingl´es). La relaci´ on de Parseval en este caso es, N −1 N −1 X 1 X 2 |x(n)| = |ck |2 . N n=0

(2.12)

k=0

Por lo tanto, la potencia media de la se˜ nal equivale a la suma de las potencias medias de las componentes de frecuencia (Moya, 2011).

12

2.3

2 Desarrollo te´orico

Funciones utilizadas en MATLAB

Al ser el objeto de estudio del proyecto un algoritmo de reconocimiento de escalas musicales en viol´ın por medio del uso de MATLAB, se consideraron varias funciones propias del programa para el desarrollo de las distintas etapas del algoritmo, a continuaci´ on se mencionan y c´omo se utilizan.

Funci´ on audioread La funci´ on [y, F s] = audioread(0 nombredearchivo.tipodearchivo0 ) carga un archivo con alg´ un formato de audio por el arreglo llamado ”nombredearchivo”, y devuelve una tasa de muestras (Fs) en Hertz codificadas en el archivo, adem´as de devolver la tasa de muestras en y (Mathworks, 2014b).

Funci´ on abs La funci´ on Y = abs(X) devuelve el valor absoluto de cada uno de los valores del arreglo de X, donde X puede ser un escalar, un vector, una matriz o un arreglo multidimensional (Mathworks, 2014a).

Funci´ on fft Las siglas fft se refieren a la Transformada r´apida de Fourier (Fast Fourier transform), la funci´ on y = f f t(x) devuelve la transformada de Fourier de cada una de las columnas de la matriz X (Mathworks, 2014c). Esto lo realiza utilizando la transformada de Fourier para un vector de longitud N, donde,

X(k) =

N X

(j−1)(k−1)

x(j)ωN

(2.13)

j=1

x(j) =

N 1 X X(k)ωN N

(2.14)

k=1

Donde se tiene que, ωN = e(−2πi/N )

(2.15)

2.3. Funciones utilizadas en MATLAB

13

Funci´ on median La funci´ on M = median(A), devuelve el valor de la media de todos los valores de las muestras del vector A (Mathworks, 2014a).

Funci´ on std La funci´ on S = std(A), devuelve el valor de la desviaci´on est´andar del vector A, esto lo hace de la siguiente forma, n

s=

1 X − (xi − x)2 n−1

!( 1 ) 2

(2.16)

i=1

Donde s es la desviaci´ on est´andar y n es el n´ umero de muestras del vector A (Mathworks, 2014c).

Funci´ on msgbox La funci´ on h = msgbox(0 M ensaje0 ) crea un mensaje en un cuadrado de texto que inmediatamente envuelve el texto 0 M ensaje0 y lo acomoda de manera apropiada 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 sus siglas en ingl´es) (MathWorks, 2014) es un entorno de programaci´on lineal que pertenece a MATLAB, se utiliza especialmente en la realizaci´on y ejecuci´on de programas con entrada continua de datos. Posee el mismo tipo de caracter´ısticas de programas visuales como lo es Visual C + + (Guerrero, 2008).

14

2 Desarrollo te´orico

Cuadro 2.4: Rangos de frecuencias de las notas musicales Nota Sol1 Sol#1 / Lab1 La1 La#1 /Sib1 Si1 Do1 Do#1 / Reb1 Re1 Re#1 / Mib1 Mi1 Fa1 Fa#1 / Solb1 Sol2 Sol#2 / Lab2 La2 La#2 /Sib1 Si2 Do2 Do#2 / Reb2 Re2 Re#2 / Mib2 Mi2 Fa2 Fa#2 / Solb2 Sol3 Sol#3 / Lab3 La3 La#3 /Sib3 Si3 Do3 Do#3 / Reb3 Re3

Rango de frecuencias (Hz) 190.4975 - 201.825 201.825 - 213.825 213.825 - 226.54 226.54 - 240.01 240.01 - 254.285 254.285 - 269.405 269.405 - 285.42 285.42 - 302.395 302.395 - 320.38 320.38 - 339.43 339.43 - 359.61 359.61 - 380.995 380.995 - 403.65 403.65 - 427.65 427.65 - 453.08 453.08 - 480.02 480.02 - 508.57 508.57 - 538.81 538.81 - 570.84 570.84 - 604.79 604.79 - 640.76 640.76 - 678.86 678.86 - 719.22 719.22 - 761.99 761.99 - 807.3 807.3 - 855.3 855.3 - 906.16 906.16 - 960.04 960.04 - 1017.14 1017.14 - 1077.62 1077.62 - 1141.68 1141.68 - 1209.58

3

Desarrollo del algoritmo

En este cap´ıtulo se describe el desarrollo por etapas que tuvo el proyecto, desde el an´ alisis en el tiempo de la grabaci´on, a partir de esto al an´alisis de frecuencia y por u ´ltimo el algoritmo en s´ı de reconocimiento de las notas y las escalas musicales. La figura3.1 muestra el diagrama de contenido del proyecto, iniciando por el desarrollo del algoritmo paso a paso hasta llegar a la interfaz gr´afica. 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 del archivo, la reproducci´ on del audio, la obtenci´on de la se˜ nal en el tiempo y la se˜ nal en la frecuencia. Una vez identificado esto, se procede al reconocimiento de las frecuencias con rangos establecidos, luego las banderas de estas, las cuales se encargaron de colocar en 1 o en 0 si la nota fue interpretada o no, respectivamente. A partir del reconocimiento de las frecuencias se procedi´o al reconocimiento de las escalas por medio de patrones establecidos musicalmente. Para probar el correcto funcionamiento del algoritmo se continu´o con el despliegue de una ventana de texto con el nombre o nombres de las escalas reco15

16

3 Desarrollo del algoritmo

nocidas. Con esto se uni´ o todo y se form´ o una sola funci´on para ser utilizada en GUI de MATLAB y as´ı crear una interfaz gr´afica manipulable por el usuario.

3.1

An´ alisis en el dominio del tiempo

Para poder abrir y correr la grabaci´on del archivo de audio utilizando MATLAB, se utiliz´ o la funci´ on ’audioread’, la cual permite leer cualquier formato de audio. De esta manera se obtienen las tasas de muestras que se necesitan para el an´alisis. Adem´ as se puede apreciar que la funci´on audioread define la frecuencia de muestreo fs la cual corresponde a 44100 Hz. Una vez cargado el archivo de audio, se cre´o un arreglo de vectores de tiempo llamado ’t’ el cual tiene pasos de 1/fs , adem´as, tiene una longitud de el tama˜ no del archivo menos 1, de manera que se garantice que el arreglo tenga el tama˜ no correcto. Luego, se procedi´ o a graficar en el tiempo el archivo de audio. Esto indica que en el eje x se tiene la informaci´on correspondiente a la duraci´on en segundos y en el eje y se tiene la amplitud del archivo de audio. Se utiliz´ o este algoritmo para algunos archivos, a continuaci´on se muestran los resultados. Para el archivo de audio en Do Mayor se obtuvo la se˜ nal en el tiempo representada en 3.2. N´otese que el archivo de audio cumple con la especificaci´on de tener una du-

Figura 3.2: Se˜ nal en el tiempo del archivo en Do Mayor. raci´on igual o menor a 10 segundos.

3.2. An´ alisis en el dominio de la frecuencia

3.2

17

An´ alisis en el dominio de la frecuencia

Una vez analizado en el tiempo, se cre´o una variable ’n’ de manera que tuviera la extensi´ on del audio menos 1. A partir de la definici´ on de ’n’ se defini´o 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 r´apida de Fourier junto con el valor absoluto de esta, de manera que se pueda trabajar correctamente en el dominio de la frecuencia. Una vez obtenida la transformada r´apida se procedi´o a graficar cada uno de los archivos de audio ya analizados en el tiempo, pero en este caso en la frecuencia. De manera que tiene los datos de frecuencia en Hz en el eje x y datos de amplitud en el eje y. Se acotaron los l´ımites en frecuencia desde 0 Hz hasta un m´aximo de 1210 Hz, ya que la nota con la frecuencia central m´as alta interpretada en las grabaciones tiene una frecuencia de 1176 Hz. El archivo de audio en Do Mayor tiene la transformada de Fourier de la se˜ nal como se muestra en 3.3. La transformada r´ apida de Fourier para el archivo de audio en La menor

Figura 3.3: Transformada r´apida de Fourier del archivo en Do mayor.

arm´ onico se puede observar en 3.4. Se puede observar de los tres casos analizados, que todos est´an en el rango de frecuencia de entre 0 Hz y 1210 Hz, adem´as que la magnitud de la transformada de Fourier no es mayor a 3000 en ning´ un caso. De este an´ alisis en frecuencia se puede observar el espectro de potencia tal y como se muestra en 2.1, por ejemplo una nota LA centrada aproximadamente en la frecuencia de 440 Hz se ve en 3.5.

18

3 Desarrollo del algoritmo

Figura 3.4: Transformada r´ apida de Fourier del archivo en La menor arm´onico.

3.3

Recorrido por las frecuencias

Una vez le´ıdo el archivo wav introducido y al ser recorrido tanto en el tiempo como en la frecuencia, se sigue entonces con el recorrido de las frecuencias. Primeramente se tom´ o en cuenta una sola columna de ’wave1’ ya que este contiene dos columnas id´enticas. Luego se combinaron los vectores, de manera que se cre´o una matriz z con dos colummas, en la primera se colocaron los valores de la magnitud de la transformada de Fourier, y en la segunda columna los valores de la frecuencia asociados a dichas magnitudes. Esto se logr´o utilizando el c´odigo descrito en 3.6. Ya creada la matriz z, se empez´o a recorrer cada uno de los rangos de frecuencias, de manera que se comparara cada par ordenado con el siguiente, y se guardara el valor de amplitud m´aximo de cada uno de los rangos. De esta forma se guardaron los valores de frecuencia y amplitud donde se encuentran los picos en la transformada de Fourier. En 3.7 se muestra un ejemplo de c´omo se recorrieron los rangos de frecuencia. En Finicial se defini´ o el valor m´ınimo de frecuencia en el rango establecido y en Ffinal el valor m´ aximo, luego se coloc´o el valor de SOL1 en 0 para empezar con la comparaci´ on. Una vez establecido esto, se recorrieron uno por uno cada uno de los pares ordenados, de manera que si se encontraba un valor de amplitud mayor se guardara este valor nuevo, y as´ı sucesivamente hasta llegar al valor final del rango, ya con el pico m´aximo encontrado. Se recorri´ o cada uno de los 32 rangos en total por analizar, tan solo cambiando los valores de frecuencia inicial y de frecuencia final.

3.4. Banderas de las frecuencias

19

Figura 3.5: Espectro de potencia de la nota LA con frecuencia central en 440.5Hz.

Figura 3.6: Creaci´on de la matriz z.

3.4

Banderas de las frecuencias

Para hacer el reconocimiento de las escalas m´as sencillo, lo siguiente que se implement´ o fue la utilizaci´on de banderas para denotar las frecuencias, es decir colocar las notas musicales en 0 o en 1 seg´ un estas tuvieran picos de amplitud o no.

20

3 Desarrollo del algoritmo

Figura 3.7: Recorrido de rango de frecuencias de Sol1.

Esta comparaci´ on se realiz´ o de la siguiente manera: primero se tom´o la media de todas las muestras de amplitud de la FFT, luego la desviaci´on est´andar, y con esto se determin´ o y defini´ o experimentalmente, que para que hubiera un pico de amplitud considerable en el muestreo, particularmente en este proyecto y tipo de grabaci´ on, se deb´ıa tomar el valor m´ınimo de la media m´as ocho desviaciones est´ andar, c´ omo 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 secci´on reconocimiento de frecuencias y se compararon contra el valor m´ınimo, de esta forma si el pico ya reconocido era

3.5. Reconocimiento de Escalas

21

mayor a este valor se coloca en 1, mientras que en el caso contrario se coloca en 0. Terminada la bandera del SOL1 se continu´o con la siguiente nota y de manera consecutiva 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 distintas notas reconocidas en escalas musicales, espec´ıficamente en escalas mayores, menores arm´ onicas ´ o menores mel´odicas. El c´ odigo primero toma en cuenta las notas que no pueden formar parte del patr´ on de notas establecidas para cada patr´on, de manera que, si se encuentra una bandera en 1 de alguna nota que forme parte de la escala recorrida en ese momento, de inmediato coloca la bandera de esa escala en 0, y contin´ ua con la siguiente escala, es decir con solo que haya una nota que no debe estar debe continuar con el siguiente caso. Si todas las banderas de las notas que no pueden estar dentro de la escala est´an en 0, entonces el programa contin´ ua con las notas que s´ı pueden estar, de esta manera, puede estar una, varias o todas 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 enumerar´ an a continuaci´on. • El violinista interprete una escala crom´atica, esto es, que se interprete una secuencia de semitonos de por lo menos una octava, lo que provocar´ıa que las banderas de todas las escalas se coloquen en 0, es decir no se podr´ıa ubicar el segmento en ninguna escala. • Un conjunto de pocas notas, lo que provocar´ıa que las banderas en 1 correspondan a una o varias escalas. • La escala mayor tiene una relativa menor natural, por lo tanto, al reconocerse una escala mayor, impl´ıcitamente se reconoce la escala menor natural. • Puede reconocerse un grupo de notas que correspondan a una sola escala.

22

3 Desarrollo del algoritmo

Ventana de texto La ventana de texto es utilizada para desplegar el nombre o nombres de la o las escalas reconocidas por el algoritmo. Esta ventana reconoce si la bandera de cada escala est´ a en 1 o en 0, de esta manera si est´a en 1 autom´aticamente se despliega una ventana que contiene el nombre de dicha escala. N´otese que el algoritmo detecta si la bandera de dicha escala se encuentra en 1, de esta manera utilizando la funci´on msgbox de MATLAB el despliega el mensaje de la escala. Al tener toda escala mayor una relativa menor natural que posee las mismas notas, entonces en el mensaje que se despliega para cada una de las escalas mayores se adjunta el nombre de su escala relativa menor natural, ya que se podr´ıa tratar de cualquiera de los dos casos.

3.6

Interfaz de usuario en GUI de MATLAB

Creaci´ on de la interfaz Realizados los distintos scripts en MATLAB para cada una de las secciones del programa, se unieron todos en un solo script, y luego se transformaron en una funci´ on para ser utilizada en GUIDE, de manera que se permitiera crear una interfaz gr´ afica que fuera utilizada por cualquier usuario. Al crearse un nuevo Blank GUI, o nuevo documento de GUIDE, se forman dos tipos de archivo, uno gr´ afico (.fig) donde se colocan los distintos componentes que llevar´ a la interfaz y otro (.m) donde se colocan las funciones y distintos comandos que se le asignar´ an a cada uno de los componentes de la interfaz. De esta manera se empez´ o a implementar la interfaz gr´afica, la cual cuenta con 3 im´ agenes (axes1, axes2,axes3), un bot´on (SELECCIONE EL ARCHIVO DE AUDIO), dos listas (listbox1, listbox2) y dos textos est´aticos (ESCALA O ESCALA RECONOCIDAS, NOTAS INTERPRETADAS) tal y como se muestra en 3.9. Se describir´ a a continuaci´on cada uno de los componentes.

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

• Axes2: esta imagen tambi´en de tipo AXES, es utilizada para captar la se˜ nal en el tiempo del script PARTE 1 del algoritmo, de esta manera se le asigna a Axes2 la imagen obtenida por plot(t,wave).

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 asign´o una imagen graficada por el script PARTE 1, en este caso la transformada r´ apida de Fourier de la se˜ nal. • SELECCIONE EL ARCHIVO DE AUDIO: corresponde a un bot´on de tipo Push Button, el cual al momento de presionarlo se direcciona a la carpeta donde se encuentra el programa y a la vez todos los archivos de audio, de manera que se puede seleccionar el archivo y a partir de esto se obtienen los resultados generados por todos los algoritmos autom´aticamente. • ESCALA O ESCALA RECONOCIDAS: este texto es de tipo Static Text, es decir, es un texto est´atico que en el caso de la interfaz se utiliz´o como t´ıtulo para denotar la lista donde se coloc´o el nombre de la escala o escalas reconocidas tal y como se realiz´o en el script de Reconocimiento de Escalas. • NOTAS INTERPRETADAS: este texto tambi´en es de tipo Static Text, utilizado como t´ıtulo para la lista de notas interpretadas, tal y como se extrajeron en los scripts Reconocimiento de frecuencias y Banderas de las frecuencias. • listbox1: Esta lista de tipo Listbox fue utilizada en la interfaz de manera que en ella se colocara el nombre o los nombres de las escalas que el algoritmo reconoci´o. Para lograr esto, se reemplaz´o la ventana de texto

24

3 Desarrollo del algoritmo desplegada, de manera que en su lugar, si la funci´on entra en la sentencia ’if’, este guarda en ’hn, 1’ un String con el nombre de dicha escala, y luego sumara 1 el contador para que continuara con todos los casos hasta finalizar. De esta manera ’h’ es un arreglo de celdas (cell array) que corre por todas las escalas y guarda todos los casos correspondientes. Una vez creado el arreglo de celdas ’h’, se procedi´o a introducir este en una lista (listbox1), al contener este solamente contenido de tipo String (solo texto).

• listbox2: Esta lista tambi´en de tipo Listbox, fue utilizada para colocar en ella el nombre de todas las notas que el algoritmo reconoci´o. Se realiz´o en la 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 String con 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 procedi´o a colocarlo en listbox2, de esta forma en la lista se desplegara el nombre de todas las notas reconocidas por el algoritmo.

Interfaz en ejecuci´ on La u ´ltima parte del proyecto, correspondi´o a ejecutar la interfaz realizada. Al darle play al archivo creado se despleg´o la interfaz mostrada en 3.10. Se puede observar cada uno de los componentes introducidos ya en ejecuci´on, donde axes1 es un fondo permamente o fijo en la interfaz, el Push Button SELECCIONE EL ARCHIVO DE AUDIO se encuentra disponible para que el usuario lo presione y se despliegue la lista de archivos de audio, las im´agenes axes2 y axes3 se encuentran vac´ıas puesto que a´ un no se ha ejectudo ning´ un archivo, y las listas listbox1 y listbox2 igualmente est´an vac´ıas ya que no se ha corrido el programa. En la figura 3.11 se puede observar la lista con los archivos de audio disponibles que se despliega al presionar el Push Button SELECCIONE EL ARCHIVO DE AUDIO. Se selecciona el archivo de audio que se desee y a continuaci´on el programa despliega la se˜ nal en el tiempo en axes1, la transformada r´apida de Fourier en axes2, la escala o escalas reconocidas en listbox1 y las notas interpretadas en listbox2, tal como se muestra en 3.12, adicionalmente, el programa reproduce el archivo de audio elegido. El archivo reproducido es un audio en Do Mayor. N´otese que el programa identific´o el archivo en Do Mayor, tal y c´omo se es-

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 SELECCIONE EL ARCHIVO DE AUDIO.

peraba. El programa reconoci´ o el archivo de audio en Lab Mayor, lo que era de esperarse. Por u ´ltimo, se muestra en 3.13 al programa ejecut´andose con un archivo de audio de una grabaci´ on de la casa disquera Deutsche Grammophon del violinista Henryk Szeryng. Esta obra seleccionada no pertenece al conjunto de una sola tonalidad puesto que pasa por varias al ser una obra de longitud larga,

26

3 Desarrollo del algoritmo

Figura 3.12: Interfaz en ejecuci´on con archivo de audio en Do Mayor.

por lo que el programa debe reconocer que no pertenece a ninguna escala (ya que est´ a en varias, y estos requisitos anulan unas de otras), adem´as, se podr´a observar m´ as de una se˜ nal al ser un archivo de una casa disquera, el cual corrige ciertos errores para la edici´ on de este. Se puede observar las dos se˜ nales tanto en el tiempo como en la frecuencia,

Figura 3.13: Interfaz en ejecuci´ on con archivo de audio de disco de Henryk Szeryng. adem´as no pertenece a ninguna escala como ya se sab´ıa y se despliegan las notas interpretadas, tal como se esperaba.

4

Conclusiones y recomendaciones

4.1

Conclusiones

• Se crearon cinco Scripts en MATLAB, de manera que cada uno cumpliera una funci´ on espec´ıfica del algoritmo, luego se unieron en un solo Script, con lo que se cre´o una funci´on para implementarse en GUIDE de MATLAB. • Se logr´ o por medio de MATLAB, leer un archivo de audio y partir de esto se pudo reconocer la se˜ nal en el tiempo y en la frecuencia, as´ı reconocer las distintas notas musicales ejecutadas mediante ventanas establecidas en la frecuencia. • Se logr´ o implementar un algoritmo que permitiera agrupar el conjunto de las distintas notas musicales en escalas mayores, escalas menores arm´ onicas o escalas menores mel´odicas. • Se cre´ o una interfaz gr´afica por medio de la herramienta GUIDE de MATLAB, accesible al usuario, de manera que desplegara la lista de archivos de audio disponibles y luego el nombre de la o las escalas reconocidas, las notas ejecutadas, la se˜ nal en el tiempo y la se˜ nal en la frecuencia.

4.2

Recomendaciones

• El presente proyecto puede ser eventualmente implementado en tiempo real mediante procesamiento digital de se˜ nales en una plataforma de hardware libre como por ejemplo en Arduino. • Se puede profundizar en m´etodos de procesamiento digital de se˜ nales para el an´ alisis de la transformada r´apida de Fourier, como lo es el Zero Padding. • Procurar realizar las grabaciones en un entorno cerrado con poco ruido externo, adem´ as de verificar el correcto funcionamiento del micr´ofono, de manera que el archivo de audio sea fiel a la interpretaci´on del violinista. • Las ventanas utilizadas en la frecuencia para el reconocimiento de notas pueden definirse de manera distinta, dependiendo del fin con el que se 27

28

4 Conclusiones y recomendaciones utilice el programa, de manera que si se trata de un estudiante avanzado de viol´ın o de un profesional, la ventana se puede reducir para ser m´as estrictos con la afinaci´ on. • El algoritmo puede ampliarse para incluir en ´el conceptos musicales como el tempo y el ritmo, adem´ as se puede expandir la longitud del archivo de audio para poder reconocer cu´ando se termina una escala y comienza una nueva. • Se puede agregar al algoritmo la opci´on de poder interpretar m´as de un instrumento a la vez, como por ejemplo una orquesta, y que este a la vez reconozca cada uno de ellos.

Bibliograf´ıa Danilo (s.f.). Notas de danilo. p´aginas 3–7. Guerrero, D. O. B. (2008). Manual de interfaz gr´afica de usario en matlab. Isabel Jerem´ıas L, E. C. R. (2005). Curso B´ asico de Armon´ıa. Editorial de la Universidad de Costa Rica. John G. Proakis, D. G. M. (1996). Digital Signal Processing. Prentice Hall International, Inc. Mac´ıas, J. M. (2012). Dise˜ no e implementaci´on de un detector autom´atico de acordes. 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/matlabgui.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 se˜ nales. Instituto Tecnol´ ogico de Costa Rica, p´aginas 91–100. Tomasini, M. C. (s.f.). El fundamento matem´atico de la escala musical y sus ra´ıces pitag´ oricas. Universidad de Palermo, p´aginas 16, 17.

29

A

Documentaci´ on

Las grabaciones en los distintos formatos de audio utilizados en este proyecto fueron grabados por: • Mauricio Campos Salas. Los archivos fueron grabados en una computadora Dell Inspiron N4110 y utilizando el programa propio de Windows 7, Sound Recorder. Noviembre de 2014 en San Jos´e Costa Rica. • Henryk Szeryng. Disco ’Sonatas & Partitas For Violin’ de la casa disquera Deutsche Grammophon, a˜ no 1967. Hamburgo, Alemania.

31

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.