Sei sulla pagina 1di 27

Introduccin

El proyecto consiste en realizar, mediante el lenguaje de programacin MATLAB, un programa que sobre una seal de audio previamente grabada en el disco duro del ordenador o cualquier otro medio de almacenamiento, genere un archivo MIDI que contenga informacin musical sobre ste, es decir, la PARTITURA. Necesidad de conversin Audio -> MIDI La Conversin de un segmento de audio a un archivo MIDI es un viejo anhelo de una gran parte de los msicos y de los programadores de la industria de la informtica musical. Algunas de las utilidades que se le pueden dar a una conversin fiable son las siguientes: Para estudiantes de msica, por ejemplo, el poder observar la partitura de una obra teniendo solamente el sonido. Para msicos, la posibilidad de no necesitar escribir la msica que componen, sino simplemente tocarla mientras con el ordenador se est grabando, y, a continuacin, pasar este sonido grabado por la aplicacin y obtener la partitura. (Aplicacin similar a la de tener un teclado MIDI o cualquier otro controlador pero con la diferencia de que lo que se maneja es el instrumento real, no un controlador adaptado), obviando la diferencia de que sta no es, ni pretende ser, una aplicacin en tiempo real, con las ventajas de que no necesita un hardware muy potente y el inconveniente de tener que hacer la conversin en varios pasos. Para diseadores de Pginas Web: Si se desea que la pgina web diseada contenga sonidos para aadirle alguna funcionalidad, o simplemente esttica. Un archivo de sonido con calidad CD tiene un bitrate de 44100 x 2 x 16 = 1411200 bps (Frec. muestreo x n canales x resolucin (bits) = bits/segundo). Si este archivo se comprime a formato mp3 se puede reducir el bitrate hasta un 10% aproximadamente manteniendo la calidad de sonido casi inalterada, con lo que el resultado es de unos 141120 bps ms o menos . Pero de todas formas este bitrate es an insuficiente para que pueda ser reproducido a travs de Internet, al menos si la conexin se realiza mediante un mdem analgico (las nuevas tecnologas como ADSL y fibra ptica s tienen suficiente velocidad de conexin, pero an no est suficientemente extendido, de todos modos sigue siendo ms que recomendable el ahorro de bitrate). Sin embargo, un archivo MIDI como mximo consume un bitrate de 33150 bps. Este caso solamente se da en archivos con una alta densidad de eventos (desplazamiento de pitch, volumen, efectos...) por lo que es perfectamente posible la reproduccin sin descarga previa de un archivo MIDI va Internet. Eleccin del formato de salida Existen varios formatos para escribir archivos musicales, la eleccin se hizo de la siguiente manera: De entrada, se desecharon los formatos propietarios , porque, aunque en algunas circunstancias puedan ser mejores (ms adaptables, comprimidos, etc.) no ofrecen la gran ventaja que ofrece el formato elegido, el MIDI, que es la PORTABILIDAD, ya que al ser estndar, cualquier programa realizado por cualquier empresa o particular ser capaz de importar o exportar archivos al mencionado formato MIDI, con lo cual el archivo generado por la aplicacin aqu comentada ser utilizable en

cualquier plataforma que cuente con un reproductor para este tipo de archivos como pueden ser MS-Windows, Linux, Macintosh, incluso los antiguos Amiga o Atari en el terreno de los computadores o tambin sintetizadores con teclado que leen archivos MIDI desde una disquetera, debido a la estandarizacin que existe desde hace mucho tiempo en el formato de los archivos MIDI. Eleccin del lenguaje de programacin Se ha elegido el lenguaje de alto nivel MATLAB en lugar de otros debido a la extensin que ste tiene dentro del mundo acadmico y laboral, sobre todo en el terreno del procesado digital de seales por un lado, y por otro lado debido a las facilidades que presenta para el diseo de aplicaciones de este tipo, como la posibilidad de usar vectores de longitud variable, incluso en tiempo de ejecucin, sin necesidad por parte del programador de preocuparse de la asignacin de memoria dinmica como en C/C++, por ejemplo. Otro motivo es debido a que existen versiones de MATLAB para casi todas las plataformas informticas existentes (PC-Windows, Linux-i386, SPARC, Macintosh). Otra ventaja de este lenguaje es la gran cantidad de funciones previamente escritas, tales como la transformada discreta de Fourier, la auto-correlacin, etc., y a un conversor a ANSI C/C++, por lo que portar el programa a cualquier otra plataforma no conlleva ninguna dificultad ni problema al igual que java o visualbasic, pero estos son lenguajes semi-interpretados, con lo que la ejecucin en principio ser ms lenta que en un lenguaje compilado, o al menos, ocupar ms memoria, necesitando por lo tanto un ordenador ms potente para realizar la misma funcin. Limitaciones de la conversin Lgicamente, ningn programa es perfecto, menos incluso en el caso de procesado de seales, y el programa que se explica en las siguientes pginas no es una excepcin. Tiene una serie de limitaciones, algunas de ms importancia que otras, que se describen en los siguientes apartados: Polifona: Con este algoritmo no es posible la conversin de seales polifnicas. El programa calcula el pitch o la frecuencia fundamental de un segmento y lo compara con el pitch del segmento anterior, esto hace que no puedan registrarse dos frecuencias fundamentales de dos instrumentos ni tampoco de un solo instrumento polifnico, tal y como pueden ser la guitarra, el piano, etc., usando este mtodo. Una posible solucin es hacer la transformada discreta de Fourier (en adelante FFT), la nica transformada de Fourier posible dado que el sonido se encuentra muestreado previamente en un archivo del ordenador, y donde se observen picos introducir una nota, pero, que es lo que se puede hacer con los armnicos? Para ilustrar esta dificultad y ayudar a entender el problema se muestra la Transformada de Fourier de un segmento de sonido real, previamente grabado con un micrfono, con los comentarios pertinentes.

Observando detenidamente la imagen, y dada la distribucin de los armnicos se puede observar que la frecuencia fundamental del segmento es la que corresponde al pico A. Sin embargo, si el algoritmo aplicado da como resultado el mximo de la Transformada de Fourier resultara ser la frecuencia que corresponda al pico de frecuencia B, con el error que esta decisin conlleva, ya que a menudo la condicin de que la energa de un armnico sea superior a la de la frecuencia fundamental tan solo se da durante el transitorio inicial o final de una nota, o a la transicin entre dos notas diferentes. ste no es, ni mucho menos, un problema trivial, incluso en los convertidores por hardware de instrumentos polifnicos (como lo es una guitarra, por citar un ejemplo) se usan 6 pastillas (sensores o transductores) distintas para convertir el sonido de cada cuerda de forma independiente unas de otras, as como 6 canales MIDI distintos, uno para cada cuerda. A este problema se le pueden aportar varias posibles soluciones. Una solucin de las posibles, en el caso de que se quisiera realizar un convertidor polifnico, sera darle a todos los picos que superen una cierta energa una activacin o continuidad de nota, pero esto presenta ahora un nuevo problema: Si los picos observados son armnicos de una frecuencia fundamental, algo bastante comn en diferentes estilos musicales, esos picos siguen existiendo aun cuando no son notas reales y por lo tanto no deberan serlo, ya que si son activadas afectaran negativamente a la calidad de la conversin, tambin es posible hacer que las notas que sean armnicas (es fcil saber si una nota puede corresponder a un armnico, simplemente basta con calcular si su frecuencia es un mltiplo o no de una frecuencia inferior) no sean activadas y, en este caso, despreciarlas constantemente, pero, qu se podra hacer si en un determinado momento suenan a la vez DO#5 y DO#6 ,por ejemplo?. Si se elige la opcin de despreciar los armnicos se est cometiendo un error mientras que si la opcin es tenerlos en cuenta cuando DO#5 est sonando pero DO#6 no, esta nota se activar, con el consiguiente error en la conversin. Una posible mejora de este mtodo sera activar el armnico si supera una cierta cantidad de energa respecto al primer armnico o frecuencia fundamental, pero en este caso surge otro problema, y es que no todos los instrumentos tienen el mismo nivel de armnicos, as que habra que incluir unos nuevos parmetros que son la energa del segundo, tercer y cuarto armnico (en una primera aproximacin no deben ser necesarios ms armnicos, debido a que generalmente van reduciendo su amplitud a medida que aumenta su ndice, al menos en los instrumentos 'reales', no tiene por que ser de este modo en los sonidos generados por

sintetizadores) respecto al primer armnico. Esta solucin propuesta presenta un serio problema prctico, y es que el modelo de componentes armnicas construido ha sido realizado sobre un determinado instrumento. La situacin se podra complicar mucho ms si en el archivo de audio original existen varios instrumentos diferentes, algo bastante comn: la combinacin de distintos instrumentos en una sola pieza musical para ser escuchados simultneamente, cada uno con una relacin diferente entre sus componentes armnicas. Instrumentos de percusin: Al ser los instrumentos de percusin (principalmente bombo, platos y caja, no son as los timbales, por ejemplo) instrumentos cuya caracterstica principal no es tener una nota definida o frecuencia fundamental, sino que ms bien se caracterizan por su envolvente y otros parmetros , no es posible utilizar el mtodo anteriormente descrito para analizar una seal sonora grabada con instrumentos de percusin, sin tener en cuenta el hecho de que, adems, en la gran mayora de los casos de seales de audio procedentes de instrumentos de percusin existe adems polifona , el programa no sirve para analizar muestras de batera, ya que los resultados seran impredecibles, aunque, por supuesto, se deja al usuario la libertad para realizar experimentos con cualquier tipo de archivo de audio. Visualizacin de la partitura: Debido a que la duracin de una nota en msica est definida por cuantos de tiempo (redonda, blanca, negra, semi/corchea, semi/fusa) es posible que dada la eleccin de los ticks por negra, y del tempo , se produzcan visualizaciones extraas aunque no afecten a la calidad de la conversin. Pues se oir perfectamente aunque no se visualizar de forma, no incorrecta, sino entendible por un msico, ya que el ritmo y el comps estaran completamente descoordinados y no tendra nada que ver con las notas. Se presenta un ejemplo de una seal perfectamente convertida, y, que sin embargo es de muy difcil lectura para un msico, no as para un ordenador, por lo cual sonar perfectamente.

Eleccin del Tempo: Es bastante adecuado escoger para la conversin un tempo correcto, aunque no es una eleccin que afectar a la calidad de la conversin sino a la visualizacin (tal y como se expuso en el apartado anterior). El algoritmo no incluye deteccin automtica de tempo en si mismo, sino que se ha incluido como un mdulo aparte, ya que el hecho de calcular simultneamente la conversin y el tempo ralentizara demasiado la ejecucin del algoritmo. Aunque se puede escoger manualmente en caso de conocerlo de antemano, para as hacer ms rpida la conversin (ver Manual de usuario).

Introduccin a la nota musical


Notas musicales Las notas musicales conocidas DO, RE, MI, FA, SOL, LA, SI o su traduccin al ingls C, D, E, F, G, A, B respectivamente corresponden a las teclas blancas de un piano.

Por otro lado tenemos las teclas negras que se llaman Sostenidos o bemoles, que significa un semitono ms o menos que la nota que le da el nombre, por ejemplo DO SOSTENIDO (DO#) se corresponde con RE BEMOL (RE b), en una octava completa hay doce notas: DO, DO #, RE, RE #, MI, FA, FA #, SOL, SOL #, LA, LA# SI Entre MI y FA y entre SI y DO no existen notas intermedias, con lo que tampoco existen ni FA b ni DO b. Veamos un esquema de lo anterior:

A continuacin la siguiente nota vuelve a ser DO, como se puede ver en un esquema de un teclado completo:

Se presenta tambin una tabla con la correspondencia entre el nmero de nota MIDI y su frecuencia fundamental, segn el estndar:

Se puede apreciar observando la tabla el la escala logartmica que representa el teclado de un piano Ya que cada doce teclas corresponde a una escala o, lo que es lo mismo, a doblar la frecuencia. Pentagrama Las notas anteriormente descritas se escriben mediante una notacin especial llamada pentagrama. El pentagrama utiliza cinco lneas para indicar la altura (tono o frecuencia fundamental de una nota) de la siguiente forma:

Como se ve se pueden aadir lneas adicionales tanto por debajo (ejemplo de la figura) como por encima para poder escribir notas que no son accesibles desde el pentagrama principal. Tambin se puede observar que adems existen otros smbolos que no son notas, tales como unas lneas verticales, el 4/4 al principio de la partitura y el smbolo inicial llamada "clave de sol", estos smbolos se explicarn ms adelante. Duracin de las notas

Con la informacin de la nota que se est tocando no se tiene an toda la informacin de la msica que se va a tocar, es necesario adems dar informacin sobre la duracin del tiempo que dura cada nota y del instante en que empieza a sonar. Esto se consigue mediante la ayuda de las figuras: Se define una duracin estndar de una figura llamada negra y se toman en referencia las duraciones de todas las dems: Por un lado, tenemos como mltiplos: Una blanca corresponde a dos negras Una redonda a dos blancas Y como submltiplos: Una corchea tiene una duracin mitad que una negra Una semicorchea la mitad de una corchea (1/4 de negra) Una fusa la mitad de una semicorchea (1/8 de negra) Una semifusa la mitad de una fusa (1/16 de negra) Vemoslo de un modo grfico:

De esta forma y con algunos smbolos adicionales se puede escribir perfectamente msica para que cualquier otra persona la pueda tocar sin ninguna ambigedad. Tempo Se define el Tempo como la cantidad de negras que hay en un minuto, de esta forma queda completamente definida la meloda escrita, hay que resaltar, no obstante, que es muy importante el hecho de que se defina por un lado el tempo y por otro la duracin relativa de las notas respecto a ste, ya que si se desea cambiar la velocidad de ejecucin de la partitura simplemente basta con cambiar el tempo, mientras que si las duraciones fuesen absolutas (en segundos, por ejemplo) habra que reconstruir la partitura completamente para acelerar o ralentizar la ejecucin de la partitura en cuestin. Comps Si se escribiesen continuamente notas y ms notas sin parar, es posible que en el momento de la interpretacin el ejecutante pudiese llegar a perder el ritmo, para evitar esto se introducen los llamados compases. El comps es lo que va marcando, por ejemplo, el director de orquesta con los movimientos de sus brazos, o el metrnomo con su movimiento oscilatorio. Es decir, el comps lo determinan los dos, tres o cuatro movimientos simtricos de la mano. En un pentagrama los compases son las lneas verticales que estn espaciadas, como se vio en la figura que explicaba el pentagrama. El tipo de comps se especifica al principio de la partitura mediante dos nmeros, A y B, de forma que el comps se llama A por B, siendo A el nmero de encima y B el de debajo: El primer nmero quiere decir el nmero de negras que caben, en el mismo ejemplo referido anteriormente se ve que caben 4 negras en cada comps,

y el segundo nmero es algo ms difcil de entender para los no iniciados en msica , y lo ms comn es utilizar el 4. Los ritmos ms comunes son 2/4, 3/4 y 4/4.

Convertidor de Audio a MIDI


MIDI Hardware

Volver al ndice

El MIDI "Musical Instruments Digital Interface", (Interfaz digital para instrumentos musicales), surge de la necesidad de comunicar distintos instrumentos, principalmente sintetizadores y teclados electrnicos. Introduccin Histrica: Interfaz CV/Gate Los primeros sintetizadores se comunicaban con su controlador (en principio un teclado, pero no tiene por qu serlo) de forma analgica, la llamada interfaz CV/Gate (Control por Voltaje/puerta), donde la seal CV es una seal analgica que indica la frecuencia fundamental de la nota que ha de producir el sintetizador por medio de sus osciladores controlados por voltaje o cualquier otro medio que utilice para sintetizar las notas musicales, mientras que la seal Gate, es una seal que indica si debe o no debe haber sonido (al tener solamente dos posibles valores se podra considerar que es una seal digital), de esta forma se evita que el sintetizador est reproduciendo sonido continuamente.. De todas maneras este sistema de comunicacin es un sistema analgico, con todas las implicaciones tanto positivas como negativas que esto conlleva, que son, entre otras: 1. Si la nota pulsada en el teclado se transmite en forma de voltaje al sintetizador, este voltaje disminuye segn la longitud del cable que lo conecta al sintetizador, debido a la resistencia que este cable ofrece al paso de la corriente elctrica (a efectos prcticos esto significa que el sintetizador desafinar siempre en el mismo sentido debido a la resistencia del cable). 2. Al ser la transmisin analgica, es ms vulnerable respecto a un sistema de comunicacin digital a las variaciones de temperatura o de longitud del cable, ruidos, interferencias de otros aparatos elctricos, cambios de la tensin de alimentacin o diafonas. 3. No era estndar, en otras palabras, cada fabricante tena su propia escala de Voltios / Hertzio (lineal) o Voltios / Octava (logartmica), tanto en sentido creciente como decreciente, es posible construir convertidores de uno a otro sistema, pero encarecen en exceso el sistema si este es complejo, adems de ser otra fuente de posibles errores. 4. Al realizarse la comunicacin mediante dos cables que contengan informacin ms un tercer cable de masa, que es comn a los dos dispositivos, uno que indica si hay o no sonido ("digital'') y un segundo cable con la tensin que corresponda a la frecuencia deseada (3 cables en total para comunicar un solo controlador con solamente un sintetizador monofnico) se encarece tanto en precio como en materiales tambin el sistema de conexin de todo el conjunto de dispositivos. 5. Un sistema de comunicacin analgico como ste limita, intrnsecamente, la polifona en un sintetizador analgico, ya que hace falta al menos un cable extra para cada nota simultnea, aparte de que limita el nmero de dispositivos sintetizadores y/o controladores que pueden

aparecer simultneamente en el sistema completa. Se hace necesario un nuevo sistema de comunicacin digital. Adems con este sistema de comunicacin debe ser posible, aunque sigue sin ser recomendable, la posibilidad de varios controladores simultneos en un mismo sistema MIDI. En resumen, no era posible interconectar, sino mediante mdulos extra construidos al efecto o confiando en la suerte de que todos los dispositivos del sistema fuesen compatibles entre s, diferentes sintetizadores y controladores si estn producidos cada uno por un fabricante distinto, adems el nmero de hilos es superior en este caso al que se utilizara en un cable serie digital, lo cual reduce tambin la posibilidad de errores en el cableado de conexin, y, por extensin, de todo el sistema en general. Interfaz MIDI Para solucionar todos los inconvenientes anteriormente expuestos se tom la decisin, entre distintos fabricantes de dispositivos musicales electrnicos, de desarrollar la estandarizacin de un interfaz comn, que tuviera como principal caracterstica que fuese digital, por los motivos que se han comentado anteriormente, y por otro lado que tenga una gran facilidad de uso, cuya complejidad no fuese mucho mayor que el anterior modelo de conexin con una interfaz analgica. El modelo elegido para el estndar fue una variacin simplificada del conocido puerto serie RS-232 (con lo que se ahorra en costes de desarrollo ya que no hay que hacer inversiones en un nuevo hardware para la interfaz), con las diferencias de que la transmisin se realiza por intensidad en lugar de por tensin (un '1' corresponde a la ausencia de corriente y un '0' a 25 mA aproximadamente), con las ventajas que supone la transmisin por corriente en lugar de por tensin, como una mayor longitud mxima del cable de conexin, entre otras, los dispositivos pueden tener masa separada (la comunicacin se realiza mediante un optoacoplador en el receptor), velocidad de comunicacin fija (31250 1% bps) y los bits de paridad, inicio y stop son fijos, es decir, no son configurables (menos flexibilidad pero elimina la posibilidad de equivocacin en la configuracin de los dispositivos, as como posibles incompatibilidades entre distintos fabricantes y distintas calidades). El protocolo escogido es muy sencillo: No existe ningn tipo de confirmacin de trama recibida, ni tampoco recuperacin de errores, tan slo bits de start / stop y de paridad, de esta forma los bytes errneos recibidos se desechan directamente sin necesidad de procesarse. La informacin que se enva por el cable MIDI son los llamados eventos MIDI, que a continuacin se explican someramente: - Todos lo bytes comienzan con el bit '0', excepto los que informan sobre el inicio de un evento, de esta forma, se salvaguarda ligeramente de errores de sincronismo a un nivel superior al fsico. - La informacin bsica transmitida es activo/desactivo_nota. numero_canal, velocidad_pulsacin, pues es ms cmodo informacin de tecla recin pulsada/soltada que decir la tecla nmero xxxx sigue pulsada. El nmero de canal sirve para el caso de que distintos instrumentos estn conectados al mismo controlador, cada uno responde solamente a los canales para los cuales est sintonizado. - Aparte, tambin se transmiten datos extras como cambio de programa (sonido) o cambio de volumen, balance... Inconvenientes del sistema Digital frente al Analgico Como siempre ocurre con las novedades, esto tambin presenta una serie de inconvenientes o desventajas respecto al anterior sistema, entre las que se pueden destacar:

Si un cable se rompe o se desconecta, existe la posibilidad de que no suene nada, en lugar de deteriorarse la calidad , o, lo que es peor en caso de una posible actuacin en directo, que se quede una nota sonando ininterrumpidamente debido a que el sintetizador no recibe el mensaje de desactivacin de sta (Este efecto es muy comn en los juegos antiguos con sonido basado en MIDI en lugar de audio cuando se pulsa la tecla de pausa). Es ms difcil (en un sistema digital) conseguir efectos tipo vibrato (alteracin de la frecuencia de una nota repetidamente) o portamento (cambio de una nota a otra por desplazamiento gradual de la frecuencia) debido a que los valores de frecuencia estn fijados de antemano, si bien se puede conseguir mediante mensajes de variacin del pitch. Sin embargo, hacer esto puede sobrecargar mucho el canal de transmisin si se hace muy suavemente, ya que incrementa mucho la densidad de eventos. Esto unido a que el bitrate es fijo a una velocidad demasiado lenta para un uso intensivo del canal. Sin embargo, el rango de posibles frecuencias sigue sin ser continuo, aunque puede ser por variaciones tan pequeas que no se note 'a odo', ya que las variaciones son 'digitales', es decir, a escalones, en lugar de continuas. Se muestran posibles formas de conectar distintos dispositivos MIDI. a) Master/Slave o Daisy Chain (un solo maestro con varios esclavos en serie) El dispositivo A controla lo que est sonando en el dispositivo B, y en el caso de la segunda figura, el dispositivo A controla lo que suena por los dispositivos B, C y D independientemente.

b) Conexin en estrella (ms rpida que el Daisy Cahin debido a la latencia de los elementos de conexin, principalmente optoacopladores). Al igual que el Daisy Chain, el A controla todos los dems dispositivos. c) Multimaster: A controla a B, y B a su vez controla a C. Las notas tocadas en A suenan en el dispositivo B, y, a su vez, las tocadas en B suenan en C. Para configuraciones complejas o para monitorear distintos instrumentos tiene utilidad. d) MIDI Loop: Dos dispositivos se controlan simultneamente el uno al

otro, es un caso concreto del Multimaster.

MIDI Software Todo lo anteriormente comentado no presenta ningn problema prctico cuando la situacin es que se est tocando un teclado o cualquier otro controlador MIDI, y, por medio de un cable MIDI se transmiten a un sintetizador o secuenciador externo los distintos eventos segn van sucediendo (lase Ordenador, caja de ritmos...) Cuando es necesario guardar esa informacin en un archivo, es necesario decir en que instante de tiempo ocurre cada evento, hasta 1987 cada fabricante o diseador de secuenciadores o cualquier otro dispositivo lector o reproductor usaba su propio formato de archivo, con lo cual se lleg a la misma situacin anterior, por lo que en el caso de formatos de archivo se hizo necesaria la creacin de un formato de fichero estndar. El formato para almacenar el instante de tiempo en el que ocurre cada evento y la naturaleza del mismo es el siguiente: 1. Se informa del tempo (negras/minuto) en la cabecera del archivo, con la diferencia de que en lugar de en negras/minuto como se hace en las partituras normales, se hace en microsegundos/negra. 2. Se divide cada negra en un nmero determinado de ticks, definible por el usuario o por defecto en algunos secuenciadores. 3. Antes de cada evento se informan de la cantidad de ticks que han transcurrido desde el anterior evento (separacin de los eventos en el tiempo), as el reproductor o secuenciador sabr en que instante lanzar los eventos para el sintetizador . A continuacin se explican los detalles de como conseguir lo anteriormente explicado.

Mensajes de Canal de un Sistema MIDI En una comunicacin entre dos dispositivos MIDI hay varios tipos de mensaje, aqu se van a explicar los mensajes de canal, que son los ms comunes, aunque existen otros como mensajes de modo, mensajes de sistema o mensajes de sistema exclusivo (estos ltimos no estn contemplados por el estndar). 1. Activacin y desactivacin de nota (1001/1000). Consisten en 3 bytes, el primero de encabezamiento (primer bit 1) '1001XXX' y otros dos de datos: '0NNNNNNN' y ' '0VVVVVVV' para el caso de activacin, donde el primer '1' significa que es un nuevo evento, '001' que es activacin de una nota, XXXX es el numero del canal, NNNNNNN es el nmero de nota y VVVVVVV es la velocidad de pulsacin de la tecla (en caso de desactivacin de nota es el mismo cdigo, pero cambiando 001 por 000) . 2. Presin global de pulsacin de las teclas (1101). Consiste solamente en dos bytes, el byte de encabezamiento seguido de un solo byte de datos que es la medida de la fuerza global con la que se estn pulsando las teclas despus del primer impulso (dato ya medido por el parmetro 'velocidad'). A menudo se le conoce tambin con el nombre de Postpulsacin o Presin de postpulsacin (aftertouch). 3. Presin de pulsacin de teclas en un teclado polifnico (1010). Este dato proporciona un valor de postpulsacin diferente para cada nota, por lo tanto requiere 3 bytes en el mensaje: 1010XXXX 0NNNNNNN 0PPPPPPP num. de canal Valor de la nota de postpulsacin

4. Cambio de programa (1100). Aqu, la palabra 'programa' se refiere a una serie de parmetros que definen el sonido que genera el sintetizador, es, decir, cambia el sonido del instrumento . 1100XXXX 0PPPPPPP nmero de canal nmero de programa

5. Modificacin del pitch (1110). Las 128 notas que se pueden conseguir mediante mensajes de activacin y desactivacin tienen una resolucin de un semitono, esto representa un problema a la hora de conseguir efecto vibrato y portamento. Como ya se ha comentado, el formato del mensaje de modificacin de pitch es el que sigue:

1110XXXX 0xxxxxxx 0xxxxxxx

nmero de canal Bits de datos del 0 al 6 Bits de datos del 7 al 14

Con 14 bits se puede llegar a conseguir un ajuste muy fino del pitch, si se tiene en cuenta que solamente con 7 bits se recorre toda la escala musical de semitono en semitono , sin embargo, en la mayora de los casos prcticos no es necesario tener control tan absoluto sobre la frecuencia fundamental de la seal, de forma que muchos equipos solo responden a los siete bits ms significativos o incluso a menos . Un valor de b'10000000000000' (8192) no provoca cambios, un valor por encima provoca una subida de tono y un valor por debajo una bajada de ste, algo que no especifica el estndar es la cantidad de desafinacin (variacin de la frecuencia) que introduce cada paso, hay equipos que responden con 3 semitonos, otros con 1 semitono (con lo que se tiene un mayor control sobre la frecuencia, pero

tambin se limita la posibilidad de hacer portamento entre dos notas ) y los que responden con 1 octava, y por supuesto, existen equipos que son configurables tanto por software mediante mensajes de sistema como por hardware. 6. Cambio de control (1011). Estos controles no estn asociados a ningn programa en particular, son el cambio de volumen, balance, eco... El formato es el siguiente:

1011XXXX nmero de canal 0cccccccc nmero de control 0mmmmmmm modulacin o movimiento Tabla de eventos MIDI

HEX 8x 9x Ax Bx

DEC 128-143 144-159 160-175 176-191

BIN 1000xxxx 1001xxxx 1011xxxx 1100xxxx

Datos nnvv nnvv ccvv pp

Descripcin Apaga Nota nn=n nota vv=velocidad Activa nota nn=n nota vv=velocidad Cambio de Control cc=n control vv= nuevo valor Cambio de Programa pp=n de prog

Tabla de metaeventos MIDI A parte de los eventos anteriormente expuestos, hay otro tipo de eventos que son los llamados Metaeventos, que se diferencian de los anteriores porque se almacenan en el archivo MIDI, pero que sin embargo no se envan por el canal, como son por ejemplo el tempo, el comps, los ticks / negra, eventos de texto tales como ttulo de track o del archivo, letra de la cancin, etc. Se muestra a continuacin una tabla con los Metaeventos MIDI.

HEX 00 01

DEC 00 01

BIN 00000000 00000001

Datos nn ssss nn tt

02 03 04 05 06

02 03 04 05 06

00000010 00000011 00000100 00000101 00000110

nn tt nn tt nn tt nn tt nn tt

Descripcin N de secuencia del track nn = longitud (2 bytes) ssss = n secuencia Evento de texto (Cualquier texto) nn = longitud en bytes del texto tt = caracteres dem, pero usada para informacin relativa al copyright dem, para ttulo del track dem, nombre del instrumento Letra del track Marker

07 2F 51 58

07 47 81 88

00000111 00101111 01010001 01011000

59

89

01011001

Cue point Fin de Track Tempo ttttt = microsegundos/negra 04 nn dd cc bb Comps Nn = numerador cc = n de ticks en un clic de metrnomo bb= n de treintaidosavos de nota en una negra 02 sf mi Clave Sf = sharps/flats (sostenidos/bemoles) mi = mayor menor

nn tt 00 03 tttttt

Funcionamiento de los ticks Como se ha comentado, antes de que ocurra cualquier evento o metaevento ste debe ir precedido por el nmero de ticks que han pasado desde el ltimo evento antes de que se dispare el actual, esto significa que la 'regla' de 3 bytes/evento vlida para la comunicacin entre instrumentos MIDI por hardware se incumple, ya que si una nota est inactiva y se hace una referencia a ella la nica opcin que queda es activarla, y viceversa, con lo cual es posible conseguir un ahorro significativo en el tamao del archivo final: 1. 1 byte de evento (Note ON/OFF) MSB=1, por lo tanto est entre 128 y 255 2. Nmero de nota MSB=0, por lo tanto est entre 0 y 127 3. Velocidad de pulsacin MSB=0, por lo tanto est entre 0 y 127 Se ha suprimido el Note ON/OFF salvo en el primer evento (para inicializar el canal) porque no es necesario, ya que si una nota est activa y se vuelve a referenciar es para apagarla y viceversa. De esta forma, si se supone que una negra se divide en 120 ticks el resultado del archivo si la partitura es la de la figura:

La lista de los bytes almacenados en el archivo es la siguiente: 0 144 78 100 120 78 0 0 80 100 120 80 0

que significa: Espera 0 ticks, lanza la nota 78 con una velocidad 100 en el canal 1 (144) Espera 120 ticks (1 negra), nota 78 (como est activa solo queda desactivarla) velocidad 0. (En la prctica se puede poner cualquier valor) Espera 0 ticks, nota 80 (como no est sonando solo se puede activar), con velocidad de 100 Espera 120 ticks, nota 80 (solo queda apagar), velocidad 0.

Es necesario observar que el byte de inicializacin de canal es el nico de todos los bytes mayor de 128 (MSB = 1), esto sirve porque, que pasa si hay que esperar ms de 127 ticks para que ocurra un evento?, se hace lo siguiente: Se muestra el nmero en base 128, y a continuacin se hace el MSB de todos los bytes resultantes igual a 1, salvo del ltimo, es decir: Suponiendo que los ticks son 350, por ejemplo: 350/128 2.7, el cociente entero es 2 y el resto es 94 2128+94=350, que se codifica mediante la secuencia 130 94 y de esta forma no hay problema para leer los eventos. Este valor delta se codifica con longitud variable con un mximo de 4 bytes. Cabecera de los archivos MIDI a) Cabecera del archivo: La Cabecera de un archivo MIDI consiste en la siguiente cadena de bytes: 4D 54 68 64 00 00 00 06 ff ff nn nn dd dd Los 4 primeros bytes corresponden en formato ASCII a la cadena MThd ff ff es el formato del archivo: 0 un solo track o pista 1 - multiples tracks, sincronos 2 - multiples tracks, asincronos En este caso se usar siempre el formato 0 (un solo track, ya que se realiza la conversin de una seal monofnica) nn nn es el nmero de tracks, los archivos MIDI generados por este programa, al ser un convertidor monofnico siermpre constarn de un solo track (es redundante respecto al anterior dato). dd dd es el nmero de ticks por negra que hay en el archivo. b) Cabecera del track: Consiste en: 4D 54 72 6B xx xx xx xx Los 4 primeros bytes, al igual que la cabecera del archivo, tienen un equivalente ascii: MTrk Los siguientes 4 bits xx xx xx xx contienen la longitud del archivo en bytes sin incluir las cabeceras. A partir de ah comienzan los eventos que se han explicado en los apartados previos.

Ejemplo de archivo MIDI Se presenta un archivo MIDI para ilustrar lo anteriormente comentado, he aqu la partitura:

Dec 77 84 104 100 0 0 6 0 0 0 1 1 128 77 84 114 107 0 0 0 65

Hex 4D 54 68 64 0 0 6 0 0 0 1 1 80 4D 54 72 6B 0 0 0 41

ASCII M T h d

Dec 0 255 3 6 83 112 117 114 132 51 0 255 88

Hex 0 FF 3 6 53 70 75 72 84 33 0 FF 58 4 4 2 18 8 0 FF 51

ASCII b)

Dec 3 7 161 32

Hex 3 7 A1 20 0 AE 4C 4A 82 20 90 4A 20 60 80 4A 40 82 20 90 48

ASCII

Dec 32 96 128 72

Hex 20 60 80 48 40 82 20 90 4D 20 60 80 4D 40 A6 20 FF 7 0

ASCII 15

S p u r 3 c)

0 174 76 74 130 32 144 74 32 96 128 74 64 130

e)

64 130 32 144 77 32

f)

96 128 77 64 166 32 255 47 0

M T r k

4 4 2 24 8 0 255

h)

d)

32 144 72

a)

81

a) 65 bytes desde 107 (k) b) 0: Espera 0 ticks -> 255: Comienza metaevento -> 3: tipo de metaevento (titulo del track) -> 6: longitud de los datos c) 0: Espera 0 ticks -> 255: Comienza metaevento -> 88: tipo de metaevento (tipo de comps) d) dem, tempo 7, 161,32 = 32+161*256+7*256^2=500 000 microsegundos/negra. Tempo = 60 000 000/500 000 = 120 negras / minuto e) Cambio de control. f) Empieza la activacin y desactivacin de notas, ver apartado funcionamiento de los ticks h) Metaevento de final de track.

Explicacin del algoritmo de Conversin


Como se ha comentado anteriormente, se pretende extraer de un archivo de audio los parmetros suficientes para poder construir un archivo MIDI, es decir, en que instante se lanza cada nota y cunto dura cada una de ellas. Para ello se captura segmento a segmento el archivo original. A continuacin se calcula la frecuencia fundamental del segmento mediante un algoritmo determinado a elegir entre las distintas elecciones dando dos posibles valores: Segmento silencioso Segmento sonoro Una vez calculada se compara con la frecuencia fundamental del segmento anterior, para saber si, en el caso de segmento sonoro, es una nota nueva o es la

misma que sigue durando, o, en caso de silencio, para saber si hay que desactivar la nota previa o, por el contrario, incrementar la duracin del silencio existente. Se muestra el algoritmo en la siguiente figura:

En el algoritmo presentado se ha obviado el principio del programa, el cual consiste en la generacin de la cabecera del archivo MIDI (tempo, comps, etc.) en su respectiva codificacin ya que no aportara nada para ayudar a entender el algoritmo y sin embargo s lo hara ms difcil de entender, al menos a primera vista. De todas maneras, son funciones muy simples escritas con muy pocas lneas de MATLAB y se puede estudiar el cdigo fuente sin problemas. Consiste principalmente, como ya se ha comentado, en ir capturando segmentos de la seal a convertir y calcular la frecuencia fundamental de cada uno de ellos, e ir comparando con la frecuencia fundamental del segmento anterior, y de esta forma ir activando nuevas notas y desactivando las viejas.

Principales variables usadas. La variable 'prim_even' est a '1' al principio porque es necesario indicar el canal en el momento que ocurre el primer evento, a partir de ah se pone a '0' y ya no se ejecuta ms esa parte del algoritmo. El valor 'ilegal' (se ha hecho ilegal = -5, pero es indiferente), es el valor de la nota que indica silencio, como los valores vlidos permitidos por el sistema MIDI son 0~127 al darle un valor -5 se indica que es un segmento considerado silencio. La variable 'ticks' es la medida de tiempo explicada en el captulo 'Introduccin al MIDI' El valor 'dt' es el tamao del avance que hay entre dos segmentos (solapamiento) medido en 'ticks' Dejando esto aparte se han usado algunas funciones dentro del programa, como son leer.m y leer2.m que se encargan de leer el fichero de configuracin config.pbg (se mantienen dos versiones debido a la naturaleza inicial del proyecto, realizado en modo texto). Explicacin detallada del algoritmo. 1. Se extraen los parmetros del fichero de configuracin. 2. Se inicializan las variables prim_even a 1, vieja a -5 (valor ilegal ) y ticks a 0. 3. Se abre el archivo .wav y se van tomando segmentos 4. Si no es el ltimo segmento (lo ms normal) se hace un anlisis del segmento para detectar el pitch y calcular la nota MIDI correspondiente 0 hasta 127, o -5, en el caso de que el segmento sea considerado silencio. 5. Si la nota nueva y la antigua son iguales (sean valores legales o ilegales), simplemente se actualiza la variable ticks al valor correspondiente. 6. Si la nota nueva es diferente de la antigua, pero ambos son valores legales, se apaga la nota antigua y se activa la nueva. 7. Si el segmento anterior fue considerado silencio y el nuevo se considera una nota vlida, se activa la nota nueva. 8. Si es el segmento actual el considerado silencio y el anterior tena una nota vlida, en este caso se desactiva la nota anterior. 9. Se actualiza la variable ticks en los casos 6, 7 y 8. 10. Se pasa el valor de nota nueva a la antigua en caso de desigualdad entre ellas. 11. Se repite el proceso hasta que llega el ltimo segmento, en cuyo caso se desactiva la ltima nota vieja en caso de ser necesario y se cierra el archivo.

Algoritmo de deteccin del Tempo


Un problema que surge es la deteccin automtica del tempo, una posible solucin consiste en realizar un anlisis previo de la seal y seleccionar el trozo de seal ms largo que haya con la misma nota sonando y suponer que ese periodo de tiempo corresponde a una negra, si, por ejemplo despus de un anlisis el nmero mximo de segmentos es de 15 y cada segmento tiene 500 muestras a una frecuencia de muestreo de 22050 muestras/segundo, una negra equivale a 15500/22050 segundos, es decir 2940 microsegundos por negra. El algoritmo que se ha utilizado para el clculo automtico del tempo del archivo .wav de entrada es una modificacin del algoritmo de conversin anteriormente comentado, como se puede ver en el esquema que se presenta en la pgina siguiente. Las diferencias con el algoritmo de conversin del captulo anterior se encuentran listadas a continuacin: El parmetro 'avance' que en el algoritmo de conversin es libre, aqu se hace

igual al tamao del segmento, de esta forma se consigue un anlisis ms rpido aunque menos detallado. Cuando las notas se van activando y desactivando, en el algoritmo de conversin se modifica un archivo MIDI, sin embargo, en este caso se acumula en una variable temporal el nmero total de segmentos consecutivos que tienen la misma frecuencia fundamental (obviando los que tienen silencio).

Siga en: Mtodos de deteccin de Pitch

Mtodos de deteccin de Pitch


Basados en FFT En el primer mtodo en el que se piensa cuando se trata de calcular la frecuencia fundamental de un segmento determinado es hacer la FFT al mismo. A continuacin se escoge el mximo de la FFT calculada, y ya se tiene la frecuencia fundamental del segmento, pero surgen 2 problemas bsicos que hay que resolver: 1. Previamente hay que eliminar la componente continua, porque si no se hace el mximo resulta ser casi siempre para la componente continua (frecuencia cero), por lo que no saldra ningn resultado vlido. Otra opcin es hacer la bsqueda en un determinado rango de frecuencias, con lo que tambin se elimina el mencionado problema del pico para frecuencia = 0. 2. Si un determinado instrumento tiene algn armnico con mucha energa, puede ser que la amplitud del armnico sea superior a la de la frecuencia fundamental del segmento en cuestin, como ya se coment en el primer captulo, en referencia a las limitaciones de la conversin. Por lo tanto la deteccin fracasara, dando un resultado errneo. Una solucin a este problema es hacer un filtrado pasobajo (la solucin tomada en este caso). Para hacer el algoritmo ms rpido, ya que no se pretende una gran calidad es hacer la FFT del segmento completo, y, en el dominio de la frecuencia, una vez calculado el valor absoluto de la transformada, hacer el filtrado mediante una simple multiplicacin componente a componente . Se han probado varios mtodos de filtrado, lineal, exponencial, logartmico, etc. El que mejor resultado ha dado es un filtro lineal que multiplica la 'continua' (frecuencia 0) por 1 y la frecuencia Fs/2 por 0 , aunque no tenga sentido desde el punto de vista de la transformada solamente es para calcular la frecuencia fundamental (de esta forma es ms rpido, ya que no se va a realizar la transformada inversa). Tipos de filtrado usados Se pueden observar las grficas de los distintos tipos de filtrado paso-bajo usado:

Segmento a analizar

FFT del segmento

Filtrado lineal paso-bajo

FFT tras el filtrado

Filtrado lineal paso-bajo suave

FFT tras el filtrado

Basados en parmetros temporales Otros posibles mtodos, dejando a parte el dominio de la frecuencia, se basan en la funcin de autocorrelacin. La autocorrelacin es una funcin que devuelve un vector, el cual contiene informacin sobre lo repetitiva que es la seal respecto a s misma, y se calcula de la mediante la frmula siguiente:

Siendo R(k) la funcin de autocorrelacin y x el vector cuya autocorrelacin queremos calcular. Por otro lado, como se ven en la siguiente grfica, el valor de la autocorrelacin disminuye a medida que aumenta el valor de k, esto se debe principalmente a una reduccin del nmero de sumandos que hay a medida que aumenta k (ver ejemplo del pi de pgina). Para solucionar esta limitacin existe otra funcin de autocorrelacin que normaliza el resultado de la sumatoria anterior al nmero de sumandos. Esta ltima se llama autocorrelacin sin desplazamiento o Unbias, mientras que la primera se llama autocorrelacin con desplazamiento o Bias. A continuacin se muestran dos grficas correspondientes al mismo segmento para el cual se calcul la fft con sus correspondientes filtrados paso-bajo, pero ahora mostrando las dos autocorrelaciones, con y sin desplazamiento.

Correlacin "Bias"

Correlacin "Unbias" Algoritmo SIFT Consiste en utilizar el modelo LPC (Linear Prediction Code) de produccin de voz, que supone que la excitacin es un tren de pulsos (cuerdas vocales, sonido sonoro) o un ruido blanco (el aire proveniente de los pulmones) que pasa por un filtro todo-polos (cavidad bucal ver grfica siguiente). Este mtodo de deteccin de pitch utiliza ese modelo, por lo que los resultados slo son buenos en los casos en que el origen del sonido se ajuste bien a ese modelo, caso que se da en la voz (el modelo LPC es un modelo de produccin de voz, es aplicable tambin para audio aunque los resultados no son tan satisfactorios como para la voz).

Los pasos a seguir son los siguientes: Obtengo el filtro todo-polos (Hz) correspondiente (Funcin lpc.m de MATLAB) Obtengo la excitacin por la siguiente frmula: S(z)=E(z)/A(z) => E(z) = A(z)S(z) donde A(z) es el filtro LPC, E(z) es la excitacin y S(z) es el segmento en el dominio de la transformada Z, todo en el dominio de la transformada, en el tiempo el producto se convierte en una convolucin por las propiedades de la citada transformada. Aplico un center clip a la seal de excitacin para eliminar el ruido blanco de fondo. Calculo la funcin de autocorrelacin de la seal de excitacin calculada. (Se ha usado solamente el caso de la autocorrelacin con desplazamiento porque da mejores resultados que sin desplazamiento, como se ha comprobado en las grficas anteriores). Calculo el retardo kmax para el que la funcin de autocorrelacin es mxima, y se calcula con l la frecuencia fundamental del segmento que se est analizando, sabiendo la relacin Fpitch=Fs/kmax

Determinacin del filtro A(z) Criterio: Minimizar el error cuadrtico medio, calculado ste como e2(n) Finalmente el valor del filtro es a = -Rxrx,, siendo a un vector que contiene los parmetros del filtro todo-polos

Justificacin de Parmetros
Hay 18 datos a configurar: Algunos de ellos son: 1. Los Archivo .wav a convertir y archivo .mid de salida son obvios, por lo tanto no se comentan aqu.

2. Comentario y Ttulo del track son unos metaeventos que permite el formato de archivo MIDI y que se ha puesto como configurable, de todas formas, no afecta en modo alguno a la calidad de la conversin, simplemente permite aadir algunos datos extras. Existen ms tipos de metaeventos que no se han incluido, ver captulo, Introduccin al MIDI. 3. Los parmetros frecuencia mxima y frecuencia mnima sirven para localizar la bsqueda en un determinado rango de frecuencias, y as hacer menos vulnerable al algoritmo de posibles ruidos, adems de la ventaja de que la bsqueda, al efectuarse entre menos elementos se hace ms rpidamente, acelerando a su vez el algoritmo en general, dado que esta es una funcin usada prcticamente en cada iteracin del bucle principal. 4. Tamao del segmento: Para analizar la seal se hace, como ya se ha comentado, segmento a segmento. El tamao de estos segmentos se mide en muestras, aunque bien podra haber sido en segundos, ticks o cualquier otra unidad de tiempo. Ha de haber una relacin entre el tamao del segmento y la frecuencia mnima, si el mtodo a de conversin est basado en fft, el tamao del segmento a de contener al menos 1 ciclo de la mnima frecuencia a detectar, y si est basado en la funcin de autocorrelacin o bien es el algoritmo SIFT, 2 ciclos, aunque es recomendable al menos 4 ciclos de la frecuencia mnima. 5. N Canal: ste es otro parmetro que no tiene importancia, exceptuando el caso de que el archivo MIDI generado por esta aplicacin se vaya a mezclar con otro en un editor / secuenciador. La nica restriccin es no usar el canal 10, ya que est reservado para percusin, si bien no est impedido en ningn momento por el programa. 6. Comps: Aunque el estndar MIDI permite cualquier tipo de comps, slo se permiten el 3/4 y 4/4. No tiene efecto sobre la calidad de la conversin (solo sobre la visualizacin de la partitura). 7. N de Instrumento: Tal como se vio en el captulo del MIDI, el estndar permite hasta 128 instrumentos, se incluyen los nombres en la interfaz grfica, pero no en el archivo de configuracin. Aunque hay una estandarizacin al respecto, no es de obligado cumplimiento para que el dispositivo cumpla con los requerimientos del estndar MIDI. 8. Avance: Otro parmetro importante, determina el solapamiento entre dos segmentos, es decir: Si tamao_segmento = 500 y Avance = 200, el primer segmento ser desde la muestra 1 hasta la 500 y el segundo segmento 200~700 (500+200). Se recomienda un valor 50% del tamao del segmento, pero se puede poner el tamao que se quiera, incluso mayor que ste (nada recomendable, pues quedaran muestras que no se han analizado). 9. Porcentaje Silencio: Antes de hacer el anlisis comentado anteriormente, se hace un anlisis previo para comparar la energa media del segmento respecto a la energa media de la seal completa, si es inferior al porcentaje indicado por este parmetro el segmento en cuestin se considera silencio, y de esta forma se consigue agilizar el clculo, ya que no realiza el clculo de la frecuencia fundamental del segmento en cuestin. 10. Porcentaje de Autocorrelacin: Este parmetro regula el lmite inferior que ha de tener el vector de autocorrelacin respecto a su mximo absoluto (energa). Lase el apartado Mtodos de deteccin de pitch. Carece de utilidad si el mtodo escogido est basado en FFT.

11. Porcentaje Center Clip. Antes de calcular la autocorrelacin las muestras que tienen un valor absoluto muy bajo (valor controlado por este parmetro) se hacen 0 directamente, mejora el resultado. Se utiliza en todos los mtodos de anlisis excepto en los basados en FFT, ya que producira picos en altas frecuencias que no existen realmente. 12. Mtodo: El mtodo de anlisis empleado. Ver captulo. Mtodos de deteccin de pitch. 13. Nmero de coeficientes LPC: El nmero de coeficientes usados en caso de que el mtodo de deteccin de pitch sea SIFT. Siga en: Manual de usuario

Manual de usuario
Versin compilada o con interfaz grfica para ejecutar desde Matlab 6.1. Descripcin de la Interfaz

Arriba del todo se encuentra el lugar donde se ha de escribir el nombre de los archivos .wav y .mid de entrada y salida respectivamente, si bien se pueden seleccionar de archivos existentes mediante los botones que hay al lado o desde el men Archivo. A continuacin en 2 columnas, los restantes 16 parmetros necesarios para realizar la conversin (en algunos casos, en los que la opcin es elegir entre unos casos en lugar de un nmero simplemente, se ha aadido la opcin de seleccionarlo con un men tipo popup, aunque se ha mantenido la visualizacin y la posibilidad de editarlo a mano para mayor facilidad en la comprensin del archivo config.pbg, y, finalmente una ventana de resultados. El manejo de la interfaz grfica del programa es muy simple: Esta interfaz grfica es simplemente una ayuda para editar un archivo de texto llamado config.pbg donde se almacenan los parmetros para ser ledos, a continuacin se pulsa el botn convertir, se lee el archivo de configuracin

y se convierte la seal guardando el resultado en el archivo .mid indicado. Si queremos editar el archivo de configuracin (lo ms lgico) las dos opciones posibles para hacerlo son: 1. Modificar el archivo ya existente. 2. Crear un archivo de configuracin nuevo. En caso de que queramos modificar el config.pbg existente se pulsa el botn leer y se presentan por pantalla todos los parmetros del ltimo archivo de configuracin generado, a continuacin se tocan los parmetros necesarios, se pulsa el botn salvar y a continuacin convertir. Si queremos que el programa calcule el tempo de forma automtica, se debe pulsar salvar, y despus calcular_tempo, a continuacin el programa indica en la ventana de resultados cual es el tempo recomendado, si es anormalmente elevado o muy bajo (debe estar situado entre 40 y 240 como norma general) se debe repetir la operacin con otros parmetros (el ms habitual que se debe tocar es el tamao del segmento en este tipo de fallos, que es demasiado corto, y conviene hacer el tamao del segmento mayor. Si lo que queremos es crear un nuevo config.pbg se pulsa el botn generar_config y el programa automticamente rellena todos los apartados, a excepcin, lgicamente, de los archivos de entrada y salida. Una vez hecho esto el proceso es el mismo que el descrito anteriormente. Finalmente se incluyen dos botones ms: reproducir wav y reproducir mid, que lanza la aplicacin predeterminada que tenga el usuario en su sistema operativo MS-Windows para los archivos .wav y .mid respectivamente.

Potrebbero piacerti anche