afinador de instrumentos - dsi.fceia.unr.edu.ar · pdf filepara no depender de la frecuencia...

24
Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura Escuela de Ingeniería Electrónica Trabajo práctico final Afinador de instrumentos Informática Electrónica Integrantes: Curuchet, Juan Pablo (C-5831/9) Genre Bert, Jairo (G-4558/6) Año: 2016

Upload: lequynh

Post on 05-Feb-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Universidad Nacional de RosarioFacultad de Ciencias Exactas, Ingeniería y Agrimensura

Escuela de Ingeniería Electrónica

Trabajo práctico final

Afinador de instrumentos

Informática Electrónica

Integrantes:Curuchet, Juan Pablo (C-5831/9)Genre Bert, Jairo (G-4558/6)

Año: 2016

Page 2: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Índice1. Objetivo 2

2. Introducción 3

3. Desarrollo del código 43.1. Detección de Frecuencia . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3.1.1. Primera aproximación . . . . . . . . . . . . . . . . . . . . . . . . 43.1.2. Implementación de la transformada de Fourier . . . . . . . . . . . 43.1.3. Rango útil de frecuencias . . . . . . . . . . . . . . . . . . . . . . . 53.1.4. Resolución en frecuencia . . . . . . . . . . . . . . . . . . . . . . . 63.1.5. Criterio de decisión de la frecuencia fundamental . . . . . . . . . 6

3.2. Detección de la nota y la afinación . . . . . . . . . . . . . . . . . . . . . 133.3. Tiempo de conversión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.4. Presentación de la información . . . . . . . . . . . . . . . . . . . . . . . . 153.5. Estructura del programa . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4. Hardware 18

5. Conclusiones 20

6. Anexo 22

1

Page 3: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

1. ObjetivoEn el presente trabajo se pretende desarrollar un afinador de instruméntos eléctricos

(guitarra, bajo o violín) , el cual se implementará en la placa de desarrollo provista porla cátedra, cuyo modelo es QE128 de Freescale. Esta placa si bien posee varios periféricosincluidos, serán necesarios dispositivos externos para poder cumplir con las necesidadesque implica el dispositivo en cuestión, las cuales serán analizadas detalladamente masadelante. La QE128 brinda la posibilidad de intercambiar de microcontrolador, entre unade las dos opciones que trae: 8 bits o 32 bits, según sea la necesidad. En este caso secomenzo con la opción de 8 bits y luego se analizó si era necesario cambiarlo por el de 32bits.

Figura 1: Placa de desarrollo DEMOQE128

2

Page 4: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

2. IntroducciónUn afinador es un dispositivo que es capaz de evaluar la diferencia entre la frecuencia

que está ejecutando un instrumento y el sonido que debiera tener. Esta comparación sehace en base a la frecuencia fundamental que caracteriza cada nota. Así, el dispositivomide la frecuencia de la nota ejecutada y en base a ella, calcula la nota que es, y quefrecuencia debería ser. La frecuencia fundamental de cada nota se calcula a partir de unafrecuencia de referencia, que en la mayoría de casos es el LA central en 440Hz. Algunoscasos pueden diferir por lo que estos aparatos suelen traer un ajuste de frecuencia dereferencia. Las notas restantes se calculan en base a ella, considerando que cada semitonoa continuación de una nota se calcula como fo · 2 n

12 , donde n es la cantidad de semitonoscontados desde la fo. En dicha fórmula puede verse también que pasado los 12 semitonos,o sea la nota de la próxima octava, se obtiene el doble de frecuencia.

En la figura 2 se observa una tabla con las frecuencias de cada una de las notas envarias octavas (algunas de ellas escapan al alcance del presente proyecto debido al filtradoprevio de la señal).

Figura 2: Frecuencias fundamentales de cada nota con un La de referencia de 40Hz

3

Page 5: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

3. Desarrollo del código

3.1. Detección de Frecuencia3.1.1. Primera aproximación

Para la detección de la frecuencia fundamental de la nota se implementó inicialmenteun código de medición de frecuencia básico, el cual detecta los cruces por cero con unahistéresis y en base a la distancia temporal entre ellos calcula la frecuencia. Este método nofuncionó debido a que las formas de onda de los instrumentos musicales poseen demasiadosarmónicos, lo cual lleva a que se tengan una gran cantidad de cruces por cero debido aestos armónicos y no a la frecuencia fundamental que es lo que se quiere detectar.

Se estudiaron entonces otros métodos temporales y uno basado en la autocorrelación.Se optó como segunda opción por un método llamado algoritmo "YIN", que es basado enla autocorrelación, pero con varias mejoras para optimizar los resultados.

La opción del algoritmo YIN se descartó antes de intentar implementarla ya que apa-rentemente se suele terminar usando una FFT para calcular la autocorrelación, por lo quededujimos que sería computacionalmente mas costoso utilizar el método YIN y enton-ces llegamos a la tercera y última opción que fue directamente calcular la transformadadiscreta de Fourier haciendo uso de un algoritmo de cálculo de la FFT.

3.1.2. Implementación de la transformada de Fourier

Lo que en realidad hacemos es una transformada discreta de Fourier (DFT), queconsiste en muestras periódicas en frecuencia, del espectro continuo en frecuencias de laseñal muestreada por el ADC del micro con una frecuencia de muestreo controlada, vistaa través de una ventana cuadrada de longitud controlada por nosotros también.

Para realizar el cálculo se buscó una implementación en C de la transformada rápidade Fourier, que lo que hace es calcular la DFT, pero mucho mas eficientemente siemprey cuando se use un número de muestras que sea una potencia entera de 2.

Encontramos en internet [2] un algoritmo para realizar la FFT con números enterosde 8 bits, escrito para Arduino. La función está pensada para ingresar por referencia losarrays con la parte real e imaginaria de la señal a transformar, arrays que son sobreescritoscon la parte real e imaginaria de la transformada.

El código fue modificado para utilizar los tipos de datos permitidos en el Codewarrior,y se eliminaron partes innecesarias, como ser la posibilidad de cálculo de la transformadainversa. También hubo que modificar la longitud máxima permitida, ya que en esta ver-sión, era de 256 muestras y nosotros usaríamos muchas mas. Por ello también se debiócambiar la longitud de la tabla que contiene 3/4 partes de un ciclo de una senoide, porlo que generamos una senoide del tamaño apto para tranformar la cantidad de muestrasmáxima que podemos tener (que mas adelante veremos que son 2048) y lo reemplazamos.

El algoritmo fue testeado experimentalmente con éxito generando por codigo unaonda cuadrada y realizandole la fft. Cabe aclarar que no se bajó al micro el código yaque no necesitabamos ningún periférico, así que se ensayó directamente en el debuggersimulando el comportamiento del micro de modo de evitar escrituras innecesarias en laflash.

4

Page 6: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

3.1.3. Rango útil de frecuencias

Para nuestro caso, la máxima frecuencia de trabajo, será la frecuencia fundamentalmas alta que pueda ingresar. En la figura 3 se muestra una tabla [3] que representalos rangos de distintos instrumentos musicales. Este afinador apunta a instrumentos decuerda en sus versiones eléctricas, por lo que la frecuencia mas alta sería la mas alta delviolín, es decir, alrededor de los 3.5 kHz, mientras que la mas baja es de alrededor de 40Hz para el contrabajo.

Figura 3: Rango de frecuencias de algunos de los instrumentos de la orquesta

A partir de este punto sabemos que debemos filtrar en la etapa analógica, las fre-cuencias superiores a 3.5kHz, y que nuestra frecuencia de muestreo del ADC deberá ser

5

Page 7: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

configurada por encima de la frecuencia de corte del filtro.Para no depender de la frecuencia de clock del micro, decidimos utilizar el ADC

activado por hardware. En este micro, esto significa que cuando el RTC llega a la cuentaprefijada, se inicia una conversión. La frecuencia mas adecuada de muestreo que logramoses de 8192 Hz.

3.1.4. Resolución en frecuencia

El oido humano, tiene umbrales absolutos de audición en cuanto a frecuencia e intensis-dad del sonido, pero también tiene umbrales diferenciales. Según [1] el umbral diferencialdel oido humano es de alrededor de 3Hz hasta una frecuencia de 1kHz, y de ahi en mascrece linealmente siendo de aproximadamente de un 0.03% de la frecuencia.

La ventana con la cual se recorta la señal de entrada influye en la resolución enfrecuencia de la DFT. La relación es:

∆f = L · fs

donde L es la longitud de la ventana cuadrada que recorta la señal y fs es la frecuenciade muestreo.

Para una resolución frecuencial de 3 Hz y la frecuencia de muestreo usada necesita-ríamos una ventana de 2731 muestras. Como no es una potencia de 2, se debería usarla siguiente potencia de 2 que es 4096. Si muestreamos en 8 bits, y considerando quenecesitamos duplicar el espacio para considerar la parte imaginaria de la DFT, que el al-goritmo necesita tener para realizar calculos recursivos, necesitaríamos 8kB de memoriaRAM para almacenar solo las muestras de la DFT. Según el manual de cualquiera de losdos micros compatibles con la placa, la memoria RAM es justamente de 8kB, por lo quedeberemos conformarnos con utilizar 2048 muestras, utilizando 4kB de memoria para losresultados de la DFT.

Con 2048 muestras a 8192kHz de frecuencia de muestreo, nuestra resolución en fre-cuencia resulta de 4Hz y tardará 0.25 segundos en llenar el buffer.

Dado que no tenemos buena resolución en frecuencia, se decidió descartar la posibi-lidad de afinar bajos eléctricos ya que a bajas frecuencias, las variaciones de frecuenciason muy pequeñas y no podemos representarlas correctamente, por lo tanto decidimosarrancar en los 60Hz, pensando en la posibilidad de afinar una guitarra de 7 cuerdas quetiene una cuerda mas grave de lo normal. Aprovechamos también para filtrar los 50 HZde linea, aunque no nos sacamos de encima sus armónicos.

3.1.5. Criterio de decisión de la frecuencia fundamental

Una vez que tenemos 2048 muestras de la transformada de Fourier en tiempo discreto,de 2048 muestras de la señal del instrumento, se debe utilizar algún criterio para extraerla frecuencia fundamental de la señal.

Como primera aproximación se pensó en barrer una vez todo el array en busca delmáximo valor absoluto, computado en el momento elevando al cuadrado las partes reale imaginaria, de modo de no utilizar espacio extra en la memoria RAM, aunque a costade mas c’computo. Esta opción fue descartada debido a que la mayor parte de las veces,son los armónicos superiores los que prevalecen por encima de la fundamental.

6

Page 8: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Espectro de una guitarra eléctrica: Con el fin de mostrar la forma del espectro de laguitarra, se grabó la misma mediante una interfaz de audio con entrada de alta impedanciapara instrumentos, usando un programa tipo DAW (digital audio workstation) llamado”Reaper”.

Para mostrar el espectro se utilizó un plugin de la misma empresa, llamado ”ReaFIR”,que entre otras cosas permite visualizar en tiempo real, el espectro de la señal de entrada.Se observó que el patrón armónico varía bastante según la intensidad con la que se pulsecada cuerda, si se pulsa con dedos o con púas, la zona de la cuerda donde se pulse ypastilla (micrófono) desde el cual se capture el sonido.

La guitarra, como se observa en la figura 4, posee tres pastillas magnéticas que captanlos movimientos de las cuerdas, las cuales están indicadas en el epígrafe de la figura.También puede observarse una pequeña palanca selectora de 5 posiciones que permitedecidir desde cual de las tres se capta el sonido, o si se usa una combinación de dos deellas consecutivas.

Figura 4: Pastillas de la guitarra, de izquierda a derecha, la pastilla del puente, la centraly la del mástil

En las figuras 5 a 13 que se muestran a continuación, se pueden ver los resultados deeste ensayo, tocando de a una cuerda por vez, con distintas intensidades y capturando elmovimiento de la cuerda con distintas pastillas.

7

Page 9: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Figura 5: Espectro de la primer cuerda tomada desde el pickup del mástil. Sonido intenso.Predomina 1er armónico (330 Hz)

Figura 6: Espectro de la primera cuerda tomada desde el pickup del mástil. Sonido debil.Predomina 1er armónico (330 Hz)

8

Page 10: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Figura 7: Espectro de la primera cuerda tomada desde el pickup del puente. Sonido debil.Predomina 1er armónico (330 Hz)

Figura 8: Espectro de la tercera cuerda tomada desde el pickup del puente. Intensidadmedia. Predomina el 2do armónico (392 Hz)

9

Page 11: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Figura 9: Espectro de la quinta cuerda tomada desde el pickup del mástil. Sonido debil.Predomina el 2do armónico (220 Hz)

Figura 10: Espectro de la quinta cuerda tomada desde el pickup del puente. Nivel medio.Predomina el 2do armónico (220 Hz)

10

Page 12: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Figura 11: Espectro de la sexta cuerda tomada desde el pickup del mástil. Sonido débil.Predomina 1er armónico (82 Hz)

Figura 12: Espectro de la sexta cuerda tomada desde el pickup del puente. Intensidadalta. Predomina el 4to armónico (330 Hz)

11

Page 13: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Figura 13: Espectro de la sexta cuerda tomada desde el pickup del puente. Nivel medio.Predomina 2do armónico (164 Hz)

Se puede concluir a partir de estas gráficas que la mayor parte de las veces, no es lafrecuencia fundamental la que predomina y que, en cambio, tiende a sobresalir el segundoarmónico. De todos modos, en niveles mas altos, otros armónicos superiores tienden atomar mas importancia (figura 12), probablemente debido a no linealidades en las pastillasmagnéticas. Si bien en niveles mas bien bajos, tiende a predominar el primer armónico,con algunas de las pastillas tenemos el problema de que el ruido de 50Hz de linea y susarmónicos comienzan a tomar importancia (figuras 6 y 9) y de hecho, en el caso de lafigura 9, resulta superior a la frecuencia fundamental.

Para resolver esto se resolvió barrer los arrays que contienen las partes real e imagina-ria de la fft, encontrar el máximo en valor absoluto y repetir el proceso un total de 5 vecesignorando los máximos encontrados anteriormente y todo otro máximo que se de en unafrecuencia que diste de la de los máximos anteriores en menos de la frecuencia util masbaja. De esta forma se evita que si un máximo se da en una frecuencia equidistante a dosvalores posibles de la DFT, y que probablemente resulte en dos picos de similar intensi-dad en las dos frecuencias vecinas, pueda ser superior a otros máximos y detecte así dosmáximos que en realidad corresponden a uno solo. Por otro lado, no queremos ignorarotro pico debido a otro armónico, es por eso que si se encuentra otro máximo en unafrecuencia que diste en una cantidad de frecuencia igual o mayor a la menor frecuenciautil, puede ser otro armónico, entonces si queremos detectar ese máximo.

En resumen, se buscarán los 5 valores absolutos mas altos, se almacenarán sus fre-cuencias y luego se elegirá la mas baja de todas ellas como frecuencia fundamental.

Este número se obtuvo experimentalmente incrementando de a uno hasta notar querespondía apropiadamente la mayor parte del tiempo, las pruebas estas se realizaron conposterioridad, y es por eso que si observamos la figura 12, notaremos que en realidadallí se pueden observar que hay 6 armónicos superiores a la fundamental, que son mas

12

Page 14: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

intensos, por lo cual guiándonos por esa gráfica, deberíamos haber buscado mas máximosaún.

Por otro lado, tenemos el problema de que para sonidos débiles, en presencia de unintenso ruido de linea, como lo es el caso de la figura 9, el hecho de buscar varios máximoshace que confundamos el ruido de 50 Hz con la fundamental, cosa que no pasaría si nohubiésemos agregado esta corrección.

Una solución que se podría implementar es poner un umbral de valor de pico de laseÃśal a partir del cual se considera que el ruido de linea es enmascarado por la señal y sebuscan 5, 6 o 7 máximos, tomando el de menor frecuencia, y en el caso de no superar eseumbral, se considera que el sonido es débil, que el ruido es importante, pero que tenemosmenos distorsión y podemos considerar que la fundamental predomina (o en este caso susegundo armónico que en definitiva es la misma nota musical) y buscar entonces un solomáximo.

3.2. Detección de la nota y la afinaciónEn este afinador se decidió no dar una indicación de la octava a la que pertenece la

nota, y de hecho muchos afinadores comerciales también obvian esta información, por lotanto no importa la frecuencia real, sino la nota musical que representen. Es por esto que sedecidió que, una vez obtenido el valor de la frecuencia fundamental, se lo multiplicará pordos hasta que entre en un rango de frecuencias correspondientes a una octava completa,pero en la zona de mas alta frecuencia, de modo de que nunca sea necesario dividir pordos la frecuencia para obtener su correlato en esa octava.

La octava dentro de la cual trabajaremos comienza con la frecuencia intermedia entreun La bemol y un La (no linealmente, sino en potencias fraccionarias de 2, tal como vandandose los semitonos).

Una vez obtenida la frecuencia de la ultima octava que representará a la nota en-contrada, se debe encontrar a cual de las 12 posibles notas (7 notas naturales mas las 5alteradas) se parece mas, y luego, cuanto difiere de esa nota. En la figura 14 se muestrala octava completa en el piano para aclarar mejor a lo que nos referimos.

Para obtener la frecuencia de cada nota, multiplicamos el La de la octava mas alta denuestro rango util por 2 n

12 con n variando de 0 a 11. De este modo, formamos un arraycon las frecuencias de cada nota comenzando desde el La, que sería la primer nota en elcifrado americano.

La nota que indicará el afinador, será la de frecuencia mas cercana a la medida. Con-cretamente, se crea otro array que contiene factores que al multiplicar al La de referencia,devuelven las fronteras a partir de las cuales se considera que la frecuencia medida debioser otra nota. Es decir, las frecuencias intermedias entre dos notas consecutivas, pero nolinealmente, sino que son factores del tipo 2 n

24 con n impar variando de -1 a 21.

13

Page 15: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Figura 14: Una octava completa con sus 12 notas vista en un piano. Cada nota conla alteración sostenido, coincide en frecuencia con la nota siguiente pero con alteraciónbemol

Finalmente se compara sucesivamente la frecuencia medida y trasladada a la últimaoctava, con las fronteras calculadas en el aquel último array hasta encontrar el limite queno supere, entonces determinamos cual es la nota que se mostrará en el display.

Para determinar cuan lejos se está de la nota que debería ser, se creó otro array quecontiene 18 factores que al multiplicarse por la frecuencia límite inferior del intervalode frecuencias en el que se encuentra nuestra fundamental, resulta en 18 fronteras, quegeneran 19 subintervalos, espaciadas en potencias fraccionarias de 2, de la forma 2 n

12·19 .Luego se repite el procedimiento de barrido que se hizo para obtener la nota, pero en estecaso, para ver en cual de los 19 subintervalos está la fundamental. Si se encuentra en los 9inferiores, la cuerda está mas baja, si se encuentra en cualquiera de los 9 superiores, estámuy alta, y si se encuentra en el intervalo central, que contienea al valor de frecuenciareal que debería tener la nota, lo consideramos correcto.

Debe notarse que la división en 19 subintervalos no es arbitraria, se hizo así porque2 n

12·19 da aproximadamente 1,003, es decir que la relación entre los límites superior einferior de estos subintervalos, es de un 0,3%, que es el umbral de audición en frecuenciadel ser humano por encima del kHz, para frecuencias menores, estos intervalos son maspequeños que el umbral, lo cual no es un problema.

Debe notarse también que, si bien las fronteras de los subintervalos están separadassegún el umbral auditivo del ser humano, por los límites de memoria y de frecuencia demuestreo que ya vimos, la resolución en frecuencia es ligeramente mayor, por lo que en

14

Page 16: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

realidad, muchos subintervalos no serán usados jamás.

3.3. Tiempo de conversiónIndependientemente del cálculo de la FFT, solo para tener una determinada resolución

en frecuencia, tenemos 0.25 segundos de colecta de información, ya que como no nosalcanza el espacio, usamos una rutina de cálculo que sobreescribe el array de la señalmuestreada para almacenar su FFT, no podemos calcular mientras tomamos datos. Estetiempo es razonable para afinar, pero no podemos tomarnos mucho mas tiempo que 0.5segundos, porque ya resultaría incomodo de utilizar y propenso a pasarse hacia abajo, omas peligrosamente hacia arriba hasta que se termina una conversión.

Utilizando el micro de 8 bits, el cálculo de la FFT demoraba un tiempo del orden delos 4 o 5 segundos, tiempo totalmente inviable. Al cambiar por el micro de 32 bits, eltiempo se reduce considerablemente al orden de 0.5 segundos.

De todas maneras, se decidió subir la frecuencia de clock a 25 MHz reduciendo eltiempo de conversión a poco mas de los 0.25 segundos que se tardan en recolectar losdatos.

3.4. Presentación de la informaciónPara presentar los datos, se agregó una placa confeccionada por nosotros, que contiene

dos displays de 14 segmentos, uno para mostrar la nota mas cercana a la frecuencia dela señal analógica en cifrado americano (que consiste de una sola letra), y el segundopara indicar la alteración de la nota. Decidimos utilizar solo la alteración bemol y noel sostenido, ya que las frecuencias de una nota alterada sostenido coincide con la de lasiguiente nota alterada bemol (aunque musicalmente no signifique lo mismo, se suponeque al afinar no se está tocando nada en particular, por lo que no nos interesa estasituación), y el símbolo de sostenido (que es un #) es dificil de representar.

Cuando la amplitud del sonido es muy baja, se ignoran los resultados y se muestrandos guiones medios en el display. Ante la aparición de ciertos posibles errores que tuvimosen cuenta, el display muestra ”ee”.

Para indicar el apartamiento de la frecuencia de la cuerda tocada con respecto a lanota mas cercana se aprovecharon los leds de la placa de desarrollo. La idea es usarlos pararespresentar gráficamente este apartamiento. El problema es que tenemos 8 leds, y hemosvisto ya que para representar la resolución del oido humano necesitabamos subdividir elsemitono en 19 subintervalos, debemos poder representar esta situación.

Como no podemos concatenar los leds de la placa con mas leds, lo que hicimos fueagregar 2 leds en la placa desarrollada por nosotros. Si el intervalo en el que cae lafrecuencia de la cuerda está en el que contiene a la frecuencia de la nota que debería ser,se encienden los dos leds, pero se apagan todos los de la placa de desarrollo, indicando quese acertó la nota. Los nueve subinetrvalos superiores e inferiores, se indican encendiendouno de los dos leds y los 8 de la placa, es decir, los dos leds indican sentido de la desviacióny los otros 8 indican la magnitud de la desvaición de 0 a 8. Es decir, la situación de mayordesviación de la cuerda respecto a la nota correcta se representaría con uno de los dosleds de la placa extra y los 8 leds de la placa de desarrollo encendidos.

15

Page 17: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

3.5. Estructura del programaEl sistema tiene dos modos de funcionamiento. Inicia por defecto en el modo afinador

con el La de referencia por defecto en 440 Hz en el cual se ignoran todos los pulsadoresexcepto el tercero que cambia al segundo modo, de ajuste de frecuencia de referencia. Unbandera de tipo byte indica el modo en el que estamos.

Durante ambos modos, el temporizador TPM2 genera una interrupción cada 5 milise-gundos en cuya rutina de interrupción cambia el display que es excitado, y por supuesto elcaracter que se muestra en display, que se almacenan en las variables globales ”caracter1”y ”caracter2”, ya que ambos dígitos tienen cátodos comunes para mismos segmentos decada dígito por lo tanto no podemos excitar los dos a la vez y se debe exitar el ánodocorrespondiente al dígito que se quiere mostrar para seleccionarlo.

El RTC activa el ADC con una frecuencia de 8192 Hz y el ADC genera una inte-rrupción cada vez que completa una conversión en 8 bits en el canal 18 que es el que vaconectado al plug hembra donde se enchufa el instrumento. Cada conversión se almacenaen una de las 2048 posicione de un array hasta llenarlo. Se aprovecha esta rutina tam-bien para reiniciar en 0 la parte imaginaria que contiene la parte imaginaria de la FFTanterior.

Dado que la FFT sobreescribe a los arrays de la parte real e imaginaria de la señal(nuestra parte imaginaria es siempre nula para la señal), debemos separar el modo afi-nador en dos etapas, la de colecta de los 2048 datos, y la de procesamiento de esa señal.Una bandera de tipo byte indica la etapa en la que estamos.

Durante la etapa de colecta de datos, la rutina principal solamente se encarga deencontrar el máximo y el mínimo de la señal analógica, para que cuando se llege a la etapade procesamiento, mediante estos datos, determinar si el nivel de la señal es suficientecomo para ser tenido en cuenta.

Durante la etapa de procesamiento de datos, si bien el ADC sigue convirtiendo ygenerando interrupciones, un if con la bandera de la etapa previene de seguir escribiendoel array que ahora se está ultilizando para la FFT.

En la rutina principal, la etapa de procesamiento de datos inicia checkeando que laamplitud pico a pico de la señal, obtenida durante la etapa de colecta de datos, sea losuficientemente grande, de serlo, procede al calculo de la FFT. Luego de esto los arraysde la señal analogica y el de la parte imaginaria que era nulo, quedan sobreescritos conlas partes real e imaginaria de la FFT. Se procede entonces a encontrar los 5 máximosque menionamos anteriormente y a obtener la frecuencia fundamental como la menor delas 5 en las que se dieron los máximos, a trasladarla a la última octava, y a compararlasucesivamente con los límites de los intervalos centrados en cada nota, para encontrar quenota es. Una vez encontrada la nota, se almacena en una variabla llamada nota actualque es una enumeración de las notas.

Una vez obtenida la nota que debería ser, comparamos sucesivamente la frecuenciaobtenida con los límites de los subintervalos en los que dividimos al intervalo de 1 semitonocentrado en la nota actual. Con eso obtenemos el apartamiento con respecto al centro delintervalo, es decir, con respecto a la frecuencia correcta.

Finalmente se setea en base a esto último, lo que se va a mostrar en los leds y lo quese mostrará en el display. En la proxima interrupción del TPM2, se actualizará el displayy los leds con la nueva información.

16

Page 18: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Antes de salir del if y regresar al loop infinito, se resetea el máximo, el mínimo y labandera de la etapa, de modo de volver a la recolección de datos.

Por otro lado, en el modo de seteo de frecuencias, la rutina principal se limita aactualizar los valores a mostrar en display con los últimos dos dígitos de la frecuenciadel La de referencia. Por otro lado, en la rutina de interrupción de teclado, se prestaráatención ahora también a los primeros dos pulsadores que incrementan o decrementan lafrecuencia del La de referencia.

La rutina del ADC sigue convirtiendo, pero no almacena los resultados en este modo.En cambio, se limita a reiniciar el indice a 0 y resetear la bandera de etapa para que alvolver al modo afinador entremos en la etapa de colecta de datos y desde el principiodel array, ya que si se cambió de modo en medio de la recolección, los datos anterioresson obsoletos por no estar correlacionados con los actuales, y si estabamos en modo deprocesamiento de datos, estos datos también son obsoletos.

Cabe mencionar que en realidad el procesamiento de los pulsadores se hace en unarutina de interrupción del TPM1, y no en la del teclado, ya que se implementa un anti-rebotes mediante el mismo, y en la rutina del teclado solo se inicia ese temporizador.

17

Page 19: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

4. HardwarePara la implementación de éste afinador se hace necesario disponer de periféricos que

la placa de desarrollo utilizada no posee, como lo son un display donde mostrar la notaque se ha detectado, y un amplificador para adaptar la se nal de audio proveniente delinstrumento al rango que trabaja el adc.

Para mostrar la nota, se decidió por hacerlo con la nomenclatura inglesa, ya que de estamanera es más sencillo el display necesario. Por lo tanto sólo basta un dígito para hacerlo,y como generalmente se lo hace en mayúsculas, se utilizó un display de 14 segmentos.Para poder también indicar la alteración de la nota (sostenido o bemol) se colocó undisplay de dos dígitos de 14 segmentos para representar en uno la nota y en el otro si esbemol o no. Debido a que en términos de frecuencia un bemol es exactamente igual quela nota anterior pero sostenido, bastó con sólo representar el bemol (b minúscula). Estedisplay también permite mostrar la frecuencia de referencia para así poder ajustarla.

Figura 15: Esquema Amplificador

Con respecto al amplificador (que se observa en la figura 15), tiene dos objetivos: unoes adaptar la amplitud de la señal, dándole una ganancia (o atenuación según sea el nivelde entrada) y por otro un offset para ingresar al microcontrolador con una se nal continua.Por ello la topología usada donde un divisor resistivo fija la tensíon de offset con el AOcomo seguidor, y amplifica la señal desacoplada de continua mediante un capacitor. Elmicro trabaja con 3.3v por lo tanto éste es el rango en el que se debe encontrar la señal. Laganancia oscila entre uno y tres para poder adaptarse a diferentes amplitudes de nivel decada instrumento. A la salida del amplificador, se colocó un filtro paso bajos de primerorden cuya frecuencia de corte se encuentra justo por encima de la nota más aguda a

18

Page 20: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

detectar, o sea la mayor frecuencia, en este caso en 3.8kHz. Esto se hizo para evitar quearmónicos de las notas generen el fenómeno de aliasing, entonces muestreando al doblede dicha frecuencia de corte no deberíamos tener el mencionado problema. Además secolocó una limitación de 3.3v para evitar da nar el pin de entrada del microprocesadorya que la etapa diseñada trabaja con 5v.

Anexo se encuentran los esquemáticos (Fig 17) y la vista del dise no de pcb (Fig 16)que se han hecho para implementar lo anteriormente descripto. Dichos dise nos han sidocreados con el software Altium v13.

19

Page 21: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

5. ConclusionesSi bien el sistema respondió, consideramos que necesita mejoras para ser utilizado

en la práctica. Si utilizamos un afinador comercial con la guitarra, podemos ver que lafrecuencia no se mantiene constante, sino que se mueve un poco. Esto se ve reflejadotambién en nuestro afinador, pero salta de manera brusca además de que para la mayoríade las notas, no tenemos la resolución suficiente en frecuencia como para usar todos losleds.

Para solucionar esto necesitaríamos mas memoria RAM. Una solución posible es usarla siguiente potencia de 2, por ejemplo 4096 muestras, pero no tomar todas las muestrascada vez, sino tomar, por ejemplo, de a 256 o 512 muestras nuevas y completar las 4096con parte de las 4096 anteriores y calcular nuevamente la FFT.

También se podría realizar una promediación entre las últimas frecuencias fundamen-tales detectadas y en base a éste promedio, seleccionar la nota. De esta forma se aumentala resolución del sistema sin necesidad de aumentar considerablemente la memoria. Perocomo consecuencia de esto aparece un retardo en la detección debido al mayor tiemponecesario para obtener el resultado de la frecuencia, que habría que probar si influye ono en el uso del dispositivo.

Por otro lado, tendríamos mejor relación señal a ruido si pudieramos convertir en 12bits, pero entonces tendríamos que usar datos de 16 bit y volveríamos a duplicar el usode memoria. En resumen, de una forma u otra, necesitamos mas memoria RAM pararesolver ese problema.

Una forma de necesitar menos memoria RAM hubiera sido limitar el espectro a ana-lizar, a las frecuencias fundamentales de una guitarra únicamente. En ese caso la funda-mental mas alta es del orden de los 1300 Hz. Si ponemos una frecuencia de corte de 1500Hz, y una Fs del orden de 3000 Hz, bastarían 1024 muestras para tener una resolución demenos de 3Hz y así tal vez alcanzaría la memoria para realizar este proceso. La idea dereducir las prestaciones vino tarde y cuando ya estaba armada la placa extra con su filtro,pero es algo que se podría intentar. Además, que al tener mejor resolución, se pueden in-tentar afinar frecuencias mas graves. De todos modos seguiríamos sin memoria suficientepara muestrear en 12 bits, a menos que hagamos un tipo de datos con estructuras quenos permita evitar usar arrays de 16 bit y minimizar el uso de memoria.

Otra mejora que se puede hacer, es la ya mencionada idea de utilizar distintos algo-ritmos para distintos niveles de la señal, es decir, ignorar resultados para niveles muybajos como ya venimos haciendo, pero además buscar menos cantidad de máximos enniveles medios, y mas cantidad de máximos en niveles mas altos. De todas maneras, cadainstrumento tendrá sus particularidades, y también depende mucho de la ejecución de lanota, el patrón de armónicos que va a poseer.

Como conclusión general, pensamos que las prestaciones de este micro no son suficien-tes para realizar un afinador de instrumentos funcional en todo el rango de los instrumen-tos de cuerdas eléctricos. Creemos de todos modos que, disminuyendo las prestacionesdel afinador, reduciendo el problema a solamente afinar guitarras y bajos, y siendo muycuidadosos con el uso de la memoria, se pueden hacer varias mejoras en los algoritmosque permitan tener un afinador funcional.

20

Page 22: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Referencias[1] Federico Miyara: Introducción a la psicoacústica. 1991.

[2] Modified 8bit FFT in c. [en linea]. Octubre 2010. [Diciembre 2016]. Disponible en laweb: http://forum.arduino.cc/index.php?topic=38153.0

[3] Ronald Furet H. Rango de frecuencias de algunos instrumentos de la orquesta. [enlinea]. Julio 2013. [Diciembre 2016]. Disponible en la web: https://www.bunker-audio.com/bunker-audio-portal-sonido-documentos.php?id=6

21

Page 23: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

6. Anexo

Figura 16: PCB

22

Page 24: Afinador de instrumentos - dsi.fceia.unr.edu.ar · PDF filePara no depender de la frecuencia de clock del micro, ... actualizar los valores a mostrar en display con los últimos dos

Figura 17: Esquemático23