You are on page 1of 144

UNIVERSITAT POLITCNICA DE CATALUNYA (UPC)

PROYECTO FINAL DE CARRERA

IMPLEMENTACIN DE UN PROCESADOR DIGITAL DE EFECTOS MEDIANTE DSP E INTERFAZ GRFICA SOBRE PLATAFORMA W2000 Y XP.

Profesor Tutor del Proyecto: D. Manel Lamich Arocas Dept. Electrnica. EEL Proyecto realizado por: Jos M Grijota Delgado.

Ing. Tcnica en Telecomunicaciones. Especialidad Sonido e Imagen

UPC. EUETIT. TERRASSA. Enero de 2008

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

I.T.T esp. Sonido e Imagen

-1-

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Abstract: Para todos aquellos a los que la vida maltrata y luchan para que el futuro sea mejor que el presente, y el presente, mejor que el pasado. Para todos aquellos que crean en los sueos, y son conscientes que los sueos se transforman en realidades con constancia y trabajo. Para todos aquellos a los que les gusta amar y sentirse amados. Para todos aquellos a los que el conocimiento enriquece y creen que la inteligencia se debe a la contribucin de millones de mentes. Para todos aquellos que creen que el conocimiento debe ser universal, gratuito y necesario, y piensan que la barbarie de la ignorancia podra ser erradicada con un poco ms de altruismo y sobre todo, con un mucho ms de humanidad. Para las personas que son personas y no se regocijan cuando dicen que son personas, sino que sienten la necesidad de sentirse as .

A mis padres: Que lo dieron todo por m.

I.T.T esp. Sonido e Imagen

-2-

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Agradecimientos:

Mi ms profundo agradecimiento al Profesor, Manel Lamich, ya que sin su gua y tutorizacin, este proyecto no hubiese sido posible. Un entraable saludo al Profesor Juan Mn, por sus inestimables conocimientos sobre DSP s y esas charlas durante el tiempo del cigarrillo. Agradecer a todos aquellos profesores, alumnos, o simplemente personas, amigos y compaeros, que me han apoyado o aleccionado acerca de cualquier aspecto tcnico, o cualquier otra cosa en la vida. A mis amigos por su apoyo, carencias. por soportar mis excentricidades, faltas y

En general a todos aquellos que me ayudaron o me pusieron obstculos en esta vida, ya que sin ellos, no sera lo que soy.
que no me mata, me hace ms fuerte Karl Friedrich Nietzche Lo .

I.T.T esp. Sonido e Imagen

-3-

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

ndice:

1. Introduccin . Pg. 10 2. Objetivos del proyecto ... Pg. 11 3. Metodologa Pg. 12 4. Plataforma Hardware Placa DSK TMS320C6713 ........... ..Pag. 14
4.1 Introduccin .. ..Pg. 14 4.2 Conversin Analgico/Digital (ADC) . .. ..Pg. 15 4.3 Conversin Digital- Analgica (DAC) ..Pg. 17
4.3.1 Muestreo: Velocidad y Tamao de la muestra. Pg. 17

4.4 Anlisis de la Tecnologa de Procesadores Digital de seales (DSP) ..Pg. 19


4.4.1. Diferencias entre un DSP y un Procesador de Propsito General .Pg. 19 4.4.2. DSP y Efectos de Audio Pg. 20

5. Anlisis de Herramientas (Software) utilizadas y criterios de diseo ..Pg. 20


5.1 Implementacin en Labview . ...Pg. 25 5.2 Programa de Aplicacin . ..Pg. 26
5.2.1 IGU (Interfaz Grfica de usuario) . Pg. 26 5.2.2. Funcionalidad de la aplicacin ...Pg. 26

5.3 Programacin Grfica .. .Pg. 27


5.3.1 Software Controlador de Dispositivo . ..Pg. 27 5.3.2 Descripcin de VI y SubVI . ..Pg. 30 s s
5.3.2.1 5.3.2.2 5.3.2.3 5.3.2.4 5.3.2.5 5.3.2.6 Diagrama de conexin entre VI y SubVI ...Pg. 31 s s Descripcin de VI On_Off . . Pg. 31 Descripcin del VI P_Ruido . .. ...Pg. 32 Descripcin del VI Compresor_Expansor ...Pg. 34 Descripcin del VI CajaEfectos.Vi ....Pg. 35 Descripcin del VI Amplificacin.Vi .. ...Pg. 37

5.4.- Ejecucin de un VI .. .Pg. 38

I.T.T esp. Sonido e Imagen

-4-

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

5.5.- Conclusiones y resultados sobre el uso de Labview .. .. ......Pg. 38

6. Programacin en Visual C++ ( POO, Programacin orientada a Objetos) . .Pg. 39


6.1 Introduccin .. ..Pg. 39 6.2 Descripcin del proyecto en Visual C++ ..Pg. 41 6.3 Descripcin del Interfaz de usuario de Grijotech DSP1 .. ..Pg. 44 6.4 Descripcin de las funcionalidades del interfaz de la Aplicacin . . .... Pg. 45
6.4.1 6.4.2 6.4.3 6.4.4 rea de efectos de Rango Dinmico rea de Seleccin de efectos rea de Seleccin de efectos rea de Efectos en tiempo Real .......Pg. 45 Pg. 46 Pg. 48 ......Pg. 50

6.5 La Clase CGRIJOTECH_DSP1Dlg ..Pg. 53


6.5.1 Funciones Miembro Implementadas y Programacin de Eventos ...Pg. 54

6.6 Las Clases derivadas de CGRIJOTECH_DSP1Dlg .. . .........Pg. 65 6.7 La Clase IrtdxExp .. .Pg. 69 6.8 Declaracin de Estructuras Pblicas y Tipos Definidos . ...Pg. 74
6.5.1 Estructura Efectos .. ..Pg. 74 6.5.2 Estructura Coms .. .Pg. 76

6.9 Protocolo de Codificacin y Comunicacin entre aplicaciones ....Pag. 78


6.9.1. Trama Tipo 1 . ...Pg. 79 6.9.2. Trama Tipo 2 . ...Pg. 80 6.9.3. Trama Tipo 3 . ...Pg. 81

6.10 Diagramas de Flujo y esquemas de comunicacin.Pag. 82

7. Programacin en C/ C++ ( Code Composer Studio) . . ....Pg. 81


7.1 Metodologa y configuracin de la Aplicacin (CCS) ....Pg. 83
7.1.1. Creacin de un Proyecto en CCS .Pg. 84 7.1.2.Generacin de un archivo de Configuracin .... .Pg. 84

I.T.T esp. Sonido e Imagen

-5-

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

7.1.3. Aadir ficheros al proyecto .......Pg. 85 7.1.4. Desarrollo de la aplicacin ........Pg. 86 7.1.5. Compilacin y carga del cdigo ejecutable . ....Pg. 89

7.2 Descripcin de las libreras incluidas en la aplicacin .. .Pg. 90 7.3 La Clase RTDX en Code Composer Studio .. ...Pg. 91 7.4 Funciones y Tipos declarados en Procesador_efectos.c . . .. ...Pg. 93
7.4.1 Estructura Datos .........Pg. 93
7.4.1.1 Introduccin Pg. 93 7.4.1.2. Principios y Modelado .. .Pg. 93 7.4.1.3 Implementacin ...Pg. 94

7.4.2 Funciones implementadas ... Pg. 94

7.5 Protocolo de comunicacin en la DSP . . . Pg. 98 7.6 Parmetros de configuracin de la DSP . . .Pg. 99 7.7 Diagrama de Flujos y funcionamiento de la aplicacin.. ......................... .Pg. 101
7.7.1. Diagrama de Flujo y funcionamiento de la aplicacin Target Pg. 101 7.7.2. Diagrama de Flujo y funcionamiento global del sistema ..Pg. 102

8. Efectos digitales de Audio ..Pg. 105


8.1. Efectos de Rango Dinmico ... ...Pg. 105
8.1.1. Efecto Distorsin .Pg. 105
8.1.1.1 Introduccin Pg. 105 8.1.1.2. Principios y Modelado .. .Pg. 106 8.1.1.3 Implementacin ...Pg. 107

8.1.2. Puerta de Ruido (Noise Gate)..Pg. 107


8.1.2.1 Principios y Modelado . ...Pg. 107 8.1.2.2 Implementacin ...Pg. 108

8.1.3. Compresor .. . .Pg. 109


8.1.3.1 Introduccin .Pg. 109 8.1.3.2 Principios y Modelado Pg. 109

I.T.T esp. Sonido e Imagen

-6-

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

8.1.4. Expansor .. . .. . .Pg. 112


8.1.4.1 Introduccin .Pg. 112 8.1.4.2 Principios y modelado ...Pg. 112

8.2. Efectos basados en el uso de muestras retardadas . ... ...Pg. 115


8.2.1 Delay .. ... .Pg. 115
8.2.1.1 Introduccin .Pg. 8.2.1.2 Principios y Modelado .Pg. 8.2.1.3 Otros tipos de Delay .Pg. s 8.2.1.4 Implementacin Pg. 115 115 118 118

8.2.2. Chorus
8.2.2.1 Introduccin. . ..Pg. 8.2.2.2 Parmetros Comunes . Pg. 8.8.2.3 Resumen. .. ..Pg. 8.2.2.4 Implementacin . . .Pg. 119 119 123 124

8.2.3 Flanger .. . .Pg. 125


8.2.3.1. Introduccin. . .Pg. 125 8.2.3.2. Principios y Modelado ...Pg. 125 8.2.3.3 Parmetros comunes .Pg. 127

8.2.4 Reverb .. .. .Pg. 129


8.2.4.1 Introduccin.. . ..Pg. 129 8.2.4.2 Principios y Modelado Pg. 129 8.2.4.3 Diferentes tipos de Reverb ....Pg. 133 8.2.4.4 Parmetros comunes . ....Pg. 134 8.2.4.5. Implementacin .. ....Pg. 135

9. Conexionado e imgenes.. . ..Pg. 136 10. Conclusiones y posibles futuras mejoras ..Pg. 139
10.1 Conclusiones. .. . ... ...Pg. 139 10. 2 Futuros desarrollos . . ... ...Pg. 140

11. Compromiso Medioambiental .. ..Pg. 141 12. Bibliografa .. .. .Pg. 142

I.T.T esp. Sonido e Imagen

-7-

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

I.T.T esp. Sonido e Imagen

-8-

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

I.T.T esp. Sonido e Imagen

-9-

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

1. Introduccin
La idea de este proyecto nace de la gran importancia y actualidad que est cobrando en los ltimos aos, las tcnicas de procesado digital de seales. Tcnicas que aunque no son excesivamente recientes (los primeros estudios datan de los aos 50 y 60), han podido llevarse a cabo gracias a la aparicin en el mercado de procesadores digitales lo suficientemente rpidos y potentes, como para poder implementar los algoritmos de tratamiento de seales de forma econmica y sencilla. Estos procesadores digitales de seal surgieron en la dcada de los 80 y reciben el nombre de DSP s. De esta manera y en el contexto general anteriormente citado, el presente trabajo centra toda su atencin, de entre la gran amalgama de posibilidades y aplicaciones posibles, en las tcnicas de procesado digital de seales de audio en tiempo real. As como la obtencin de los efectos ms frecuentes con los que modificar el sonido original de un instrumento musical, proporcionando al msico un potente vehculo para la expansin de sus capacidades expresivas. Debe sealarse pues, haciendo un poco de historia, que la bsqueda de nuevos sonidos ha sido una constante a lo largo de los aos. Los msicos en su afn por innovar y conseguir nuevos estilos y sonidos con los que marcar su impronta personal, siempre han echado mano de todo el ingenio posible. En primer lugar, para idear el efecto buscado, y despus para fabricar el dispositivo que les permitiese obtenerlo, siendo las tcnicas tradicionalmente usadas puramente analgicas (recurdese el sonido caracterstico de las distorsiones empleadas en los amplificadores de vlvulas, as como el del famoso pedal Fuzz de Jimi Hendrix, o los primitivos efectos de Flanger retrasando grabaciones, usados por los Beatles en su aclamado lbum blanco). En este punto, debemos tener en cuenta que la DSP sera el vehculo que nos proporcionar la capacidad de procesar las seales en tiempo real, mediante los algoritmos necesarios para generar los efectos de audio deseados. Pero no debemos olvidar, que todo vehculo necesita un conductor o gua, en nuestro caso, esta capacidad nos la proporcionar nuestra interficie, que dotar a nuestro sistema de un Interfaz capaz de modificar los parmetros necesarios para tildar nuestros efectos de nuestro toque personal. Como podemos comprobar, mediante el Interfaz de nuestra aplicacin, que correr sobre el sistema Operativo WindowsXP, y que ser programado en MS Visual C++, tendremos la capacidad de generar nuestros propios efectos de audio en tiempo real, guardar configuraciones predefinidas por nosotros mismos, utilizar nuestra aplicacin como pedal Multiefecto en tiempo real, filtrado de seales, y otras muchas capacidades ms. Obviamente, para que exista una coordinacin entre nuestra DSP y la aplicacin, debe existir una comunicacin entre ambas. Las libreras RTDX incluidas en el Software de programacin de la DSP Code Composer Studio y distribuidas con ste, sern las encargadas de gestionar la comunicacin entre I.T.T esp. Sonido e Imagen - 10 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

el PC y la DSP. Dicha comunicacin se realizar va USB, mediante el puerto JTAG de la DSP y el interfaz USB de Windows. As finalmente obtendremos un sistema que nos permitir conectar nuestra guitarra a la entrada de Lnea de la DSP y mediante un software que corra en el ordenador, y otro en la DSP, podremos manejar los efectos necesarios para que mejoren nuestras interpretaciones, con el fin de dotar a nuestras composiciones de nuestro propio toque musical. Por otro lado, se plantea el diseo de un dispositivo de uso sencillo y econmico, ya que mediante un simple PC y una Tarjeta DSP, podemos obtener un potente procesador de efectos casero, con una calidad aceptable y con un coste totalmente asumible para cualquier usuario.

2. Objetivos del proyecto.


El objetivo de nuestro proyecto ser el de conseguir implementar mediante herramientas de programacin de Alto nivel un sistema que sea capaz de comunicar el Interfaz generado por una aplicacin programada en Visual C++ con una Placa de Evaluacin de la DSP de la marca Texas Instruments DSP TMS6000 DSK6713. Adems de la implementacin de los diferentes algoritmos de procesado de seal necesarios para generar los efectos de Audio que modificarn la seal de salida de nuestro sistema. A continuacin se muestra un breve desglose de las actividades que se deben llevar a cabo para la realizacin de este proyecto. - Estudio general terico de los distintos efectos de sonido para guitarra. - Modelado y descripcin de dichos efectos en el campo del tratamiento digital de seales. - Programacin de la interfaz grfica encargada de gestionar y manipular los efectos de audio, en el entorno de programacin de Microsoft MS Visual C++, mediante objetos OLE y COM. - Programacin de los registros necesarios para activar el convertidor A/D D/A , distintos dispositivos y perifricos, adems de los parmetros necesarios de configuracin y trabajo de nuestra DSP. - Programacin y manipulacin del Interfaz RTDX (Real Time Data Exchange), para la comunicacin entre la plataforma PC de la Interfaz grfica, y la Plataforma DSP de la DSK6713 de Texas Instruments. - Implementacin de los algoritmos de procesado de seal necesarios para el procesado digital de la seal en la plataforma DSP, concretamente de la Plataforma DSP de Texas Instruments TMS6000 DSK6713.

I.T.T esp. Sonido e Imagen

- 11 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Como podemos observar los objetivos a cumplir se presentan como ambiciosos para su implementacin en el corto tiempo del que se dispone para este proyecto, pero se procurar la obtencin de todos stos en dicho periodo. Tal y como se expone anteriormente, la consecucin de estos objetivos proporcionar una herramienta capaz, en cierto modo, de sustituir el uso de engorrosos y caros pedales de efectos, o almenos, generar una herramienta para uso domstico que dote al msico de la capacidad de obtener un sistema para generar efectos digitales que resulte barato, a la vez que funcional, donde con una DSP y un PC conectados va USB se pueda tocar la guitarra, adems de poder disponer de efectos digitales para nuestro instrumento.

3. Metodologa
Una tarea muy importante a realizar, y que a veces no se tiene demasiado en cuenta en la realizacin de un proyecto, es la metodologa de trabajo que se debe seguir en ste. Este aspecto ha tomado gran relevancia en nuestro proyecto, ya que en parte, el buen fin de ste depender de la metodologa de trabajo, as como de la distribucin de tareas a realizar, tiempos de ejecucin de stas y verificacin del buen funcionamiento de la implementacin realizada en cada una de las etapas. Nuestro objetivo ser el de implementar un sistema capaz de generar efectos de audio, una vez se conecte una guitarra a la entrada de lnea de la DSP. Este sistema se podra descomponer modularmente en los siguientes bloques: Libreras RTDX (Real Time Data Exchange)

Aplicacin VC++ (Interfaz de Usuario)

PC usb

Aplicacin en C/C++ (CCS) (Algoritmos de Procesado)

Instrumento musical (Guitarra electroacstica)

Placa de Desarrollo (Texas Instruments) DSK6713

Altavoces

(((( ))))

Fig. 1 Esquema de funcionamiento Global del Sistema a implementar.

I.T.T esp. Sonido e Imagen

- 12 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

1- En primer lugar nos percatamos que debe existir una Aplicacin que
realice la funcin de interfaz grfica con el usuario, y que deba permitir que ste pueda interactuar con los parmetros de configuracin de los efectos. Ser una de las partes ms complejas del proyecto, ya que adems de la gran cantidad de funcionalidades que debe ofrecer, se debe implementar en una plataforma hasta el momento desconocida por nosotros, como es el caso del uso de las libreras MFC (Microsoft Foundation Components) propios del API de Windows, por lo tanto, en primer lugar debemos realizar un estudio concienzudo acerca del uso de estas clases, al igual que de la dinmica y funcionamiento de la construccin de aplicaciones en el compilador MS VC++ 6.0.

2- Deberemos implementar una aplicacin programada en C/C++ mediante


el compilador CCS. Esta aplicacin contendr llamadas a la clase RTDX, la cual se encargar de realizar la comunicacin entre la Aplicacin programada en VC++ (Aplicacin Host) y la aplicacin programada en CCS (Aplicacin Target). En esta aplicacin deberemos implementar todos los algoritmos necesarios para poder realizar el procesado de la seal y conseguir generar los efectos de audio. Por otra parte, deberemos configurar los parmetros bsicos de compilacin para la plataforma DSK6713, adems de la adecuada caracterizacin y programacin de los registros de la DSP encargados de configurar los parmetros del Convertidor (Analgico/ Digital, Digital/Analgico), as como la activacin de los distintos perifricos y dispositivos habilitados en la placa de desarrollo de Texas Instruments DSK6713.

3- Una vez se hayan completado las dos tareas anteriores, ser necesario
implementar los mtodos y funciones suministrados por la clase RTDX, tanto en la aplicacin Host, como en la Target, ya que la mencionada clase posee dos tipos de interfaces: Una para la aplicacin host (RTDX Exported Interface), y otra para la aplicacin Target ( RTDX Interface). Por lo consiguiente deberemos programar en los eventos necesarios, en el caso de la aplicacin Host, para que la comunicacin se realice de forma eficiente, ya que como se muestra en la seccin 5 de este proyecto, la programacin entre aplicaciones orientadas a objetos eventos, y la programacin secuencial en C, difieren en ciertos aspectos.

4- Por si no fuera poco, adems tendremos la necesidad de crear un pequeo


protocolo de comunicacin a travs de RTDX, con el fin de optimizar la comunicacin, ya que debemos tener en cuenta que el procesado de la seal se debe realizar en tiempo real, y un exceso de informacin enviada o recibida, crear problemas de continuidad en el sistema, por lo que se opta, por la creacin de este pequeo protocolo de comunicacin entre las aplicaciones, consiguiendo as maximizar la eficiencia en nuestro desarrollo.

I.T.T esp. Sonido e Imagen

- 13 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Cabe sealar que lo mencionado en este apartado se implementar, en parte en la aplicacin del Host (Grijotech DSP1), y en parte en el archivo fuente de la aplicacin Target (CCS). Ambas Soluciones son comentadas pormenorizadamente en posteriores captulos de esta memoria.

4. Plataforma Hardware. Placa DSK TMS320C6713.


4.1 Introduccin Hasta ahora simplemente nos hemos basado en describir el software que compondrn las dos aplicaciones que corrern en las distintas plataformas con el fin de comunicarse. Sin embargo, en el sistema existe un dispositivo fsico

(Hardware) que contendr fsicamente la DSP, junto con el cdec y dems perifricos (Entrada de Lnea, Salida de Lnea, Leds, etc..). Este dispositivo se denomina DSK6713. El fabricante es Texas Instruments, y se distribuye juntamente con una versin del Code Composer Studio (CCS). La Dsp por lo tanto ser la encargada de realizar el procesado de seal, y generar una seal de audio a la salida de sta.

I.T.T esp. Sonido e Imagen

- 14 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

La comunicacin entre DSP y PC se realiza va USB, el cual est conectado al perifrico JTAG de la DSP, esta conexin se utilizar para cargar el cdigo compilado en CCS en la DSP, adems de comunicar el dispositivo con el PC. Tal y como podemos observar, se conectar la guitarra elctrica a la entrada de lnea de la DSP y por otro lado se conectarn los Altavoces del PC a la Salida de Lnea del Procesador digital de seales (DSP), con lo cual el sistema recibir una seal de entrada de la guitarra electroacstica, y se activar el convertidor A/D, el cual se encuentra configurado para trabajar a una frecuencia de X kHz. Por otro lado una vez adquirida la seal se procesa sta mediante los algoritmos implementados en la DSP, claro sta, previamente parametrizados gracias al envo de los parmetros desde la Aplicacin Host del Pc, donde el usuario ha configurado los efectos deseados por ste. Finalmente el resultado de la muestra de salida es enviado al convertido D / A que convierte el valor de la muestra en un determinado nivel elctrico excitando as al altavoz y produciendo el sonido del efecto deseado. A continuacin se presentan un esquema que representa lo anterior:

Fig.3 Esquema de Adquisicin y reproduccin del sistema.

4.2 Conversin Analgico / Digital (ADC). Podemos dividir este proceso en tres partes fundamentales:

Fig.4 Ejemplo de muestreo en un convertidor A/D

I.T.T esp. Sonido e Imagen

- 15 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera -

Procesador Digital de efectos mediante DSP TMS320C6713

1.Muestreo:Dada una seal analgica, se van tomando valores discretos de su amplitud a intervalos de tiempo pequeos, evidentemente ser ms fiable la reproduccin cuantas ms muestras por segundo se tomen; a este proceso se le denomina muestreo y no es ms que la conversin de una seal en tiempo continuo en su equivalente en tiempo discreto. As si xa(t) es la entrada al muestreador, la salida es xa(nT) donde T es el intervalo de muestreo. 2. Cuantificacin. Este proceso consiste en la conversin de una seal en tiempo discreto con valores continuos en otra en tiempo discreto con valores discretos (seal digital). Esto es, el valor de cada muestra de la seal se representa mediante un valor seleccionado de un Conjunto finito de valores posibles. La diferencia entre la muestra sin cuantificar x(n) y la salida cuantificada xq(n) se denomina error de cuantificacin. 3Codificacin. En el proceso de codificacin, cada valor discreto xq(n) se representa mediante una secuencia binaria de b bits. A cada muestra obtenida se le asigna un equivalente binario. Por esta razn y dependiendo de la fidelidad con que queramos trabajar podemos utilizar palabras de 8 o 16 bits pudiendo obtener as 256 o 65536 combinaciones distintas y obtener mayor resolucin. Palabras mayores son por supuesto posibles siempre que los conversores las soporten y se posea la suficiente memoria como para almacenar las muestras.

Debe decirse que aunque se modele el conversor ADC con un muestreador seguido de un cuantificador, en la prctica la conversin A/D se efecta en un nico dispositivo que toma xa(t) y produce un nmero codificado en binario . Las operaciones de muestreo y cuantificacin pueden realizarse en cualquier orden, pero en la prctica, el muestreo siempre tiene lugar antes que la cuantificacin.

Fig. 5 Ejemplos de muestreo.

I.T.T esp. Sonido e Imagen

- 16 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

4.3 Conversin Digital- Analgica (DAC)

El proceso inverso es mucho menos complejo ya que solo se trata de ir poniendo los valores de las muestras en el mismo orden que fueron tomadas una vez que se hayan procesado numricamente de acuerdo con el algoritmo adecuado, y los filtros de recomposicin a la salida del DAC se encargan de convertir esa seal resultante de valores discretos (digital) en una seal analgica. Debe mencionarse que el muestreo no da lugar a una prdida de informacin ni introduce distorsin en la seal si su ancho de banda es finito. En principio, la seal analgica puede reconstruirse a partir de sus muestras, siempre que la tasa de muestreo sea lo bastante alta como para evitar el problema comnmente denominado aliasing. Por otra parte, la cuantificacin es un proceso no invertible o irreversible que resulta en la distorsin de la seal. 4.3.1 Muestreo: Velocidad y Tamao de la muestra.

La exactitud en la rplica de la msica original del sonido de audio digital depende de la seleccin de la correcta frecuencia de muestreo y del correcto tamao de muestra, siendo este ltimo el nmero de bytes utilizados para almacenar cada muestra. 1. Frecuencia de Muestreo( Fs) : La frecuencia de muestreo Fs debe ser lo suficientemente alta para que los sonidos de alta frecuencia, como el sonido del cristal de una copa de vino o el del arqueo de un violn, puedan recogerse con precisin. Segn el teorema de Nyquist o teorema del muestreo es posible repetir con exactitud una forma de onda si la frecuencia de muestreo es como mnimo el doble de la frecuencia de la mayor componente espectral de la seal analgica a muestrear, de forma que se evita la aparicin de las muestras ambiguas y repetidas originadas por el fenmeno de aliasing. As, la frecuencia ms alta que puede percibir el odo humano est cercana a los 20 kHz, de modo que la frecuencia de muestreo de 44.1 kHz de las tarjetas de sonido es ms que suficiente para grabar fielmente cualquier tipo de sonido audible. Este valor es el utilizado hoy en da por los reproductores de audio CD. Los archivos de audio digital pueden grabarse seleccionando la frecuencia de muestreo. A medida que aumenta la frecuencia de muestreo, aumenta la calidad del sonido. Por ejemplo, una velocidad de 6.000 Hz (6.000 muestras por segundo) es buena para una voz masculina tpica, pero no lo es para una voz femenina tpica, que tiene componentes con una frecuencia ms alta. Una frecuencia de muestreo de 8.000 Hz proporciona una grabacin de la voz femenina de mayor calidad. As mismo, una seal procedente de una guitarra elctrica contendr frecuencias hasta los 10KHz aproximadamente lo que hace I.T.T esp. Sonido e Imagen - 17 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

que la frecuencia de muestreo deba tomarse a partir de los 20kHz, para satisfacer el teorema de Nyquist. En nuestro caso, nuestra frecuencia de muestreo ser de 44100 muestras/seg. segn describe el standard para Audio Digital en formato CD. Es tpico en el proceso de muestreo, el uso del denominado filtro antialiasing para la seales analgicas de entrada, filtro paso bajo muy selectivo con una frecuencia de corte igual a la mitad de la frecuencia de muestreo Fs. As mismo a la salida del DAC se colocar un paso bajo igual de selectivo y con la misma frecuencia de corte denominado de aliasing como parte del grupo de filtros de reconstruccin.

2. Tamao de Muestra: El tamao de muestra es la otra componente de mayor influencia en la fidelidad del audio digital. Las tarjetas de sonido de 16 bits ofrecen la posibilidad de elegir entre un tamao de muestra de audio digital de 8 bits (1 byte) o de 16 bits (2 bytes) y los conversores ADC existentes para aplicaciones DSP permiten muestras de 14, 16, 24 e incluso 32 bits. El tamao de muestra controla el rango dinmico que puede grabarse. Por ejemplo, las muestras de 8 bits limitan el rango dinmico a 256 pasos (rango de 50 dB). Por el contrario, una muestra de 16 bits tiene un rango dinmico de 65.536 pasos (rango de 90 dB), una mejora sustancial. El odo humano percibe todo un mundo de diferencias entre estos dos tamaos de muestra. Los odos humanos, que estn acostumbrados a detectar sonidos con variaciones de varios rdenes de magnitud en la fuerza, perciben el sonido de 8 bits en un tono apagado o desafinado si se compara con el sonido de audio digital de 16 bits. 3. Compromisos en el Muestreo: Se podra asumir que todo lo que hay que hacer para obtener buen sonido es muestrear a la velocidad lmite de 44,1 kHz con muestras de 16 bits (2 bytes). El nico problema que aparece es que si se muestrea en estreo, tomando muestras simultneamente en los canales izquierdo y derecho a 44,1 kHz, una muestra de sonido de un minuto necesita para almacenarse un espacio de 10,58MB. Lo aconsejable es usar la frecuencia de muestreo ms baja posible. Por ejemplo, supongamos que planeamos procesar la seal procedente de una guitarra elctrica ( aproximadamente 10Khz de mxima componente espectral considerable) de acuerdo con el teorema de Nyquist, la grabacin ser acertada si la frecuencia de muestreo es de 22 kHz si se quiere obtener una buena calidad. Cuando se elige la frecuencia de muestreo, tambin hay que considerar el ancho de banda de todo el sistema. Por ejemplo, no existe ningn problema en la grabacin de audio digital a 44,1 kHz si el micrfono utilizado funciona a 12 kHz y la fuente de sonido es una voz masculina grave que no supera los 7 kHz.

I.T.T esp. Sonido e Imagen

- 18 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

4.4 Anlisis de la Tecnologa de Procesadores Digital de seales (DSP).


En esta seccin de la memoria se pasar a describir las posibilidades que los DSP nos brindan para llevar a cabo el procesado de seal en tiempo Real as como sus capacidades, ventajas e inconvenientes con respecto a los procesadores de inters general. Tipo PC.

4.4.1. Diferencias entre un DSP y un Procesador de Propsito General. Los DSPs se diferencian de los microprocesadores en muchos aspectos. Los microprocesadores se construyen para un conjunto de funciones de propsito general y normalmente ejecutan grandes bloques de software, como sistemas operativos. Los microprocesadores a menudo no estn indicados para operaciones en tiempo real. A menudo, tienen la libertad de organizar sus cargas de trabajo y elegir su propio curso de accin, esperando acabar un trabajo de impresin por ejemplo antes de responder a un comando de usuario. Y aunque los procesadores tienen algunas capacidades numricas, en absoluto son lo suficientemente capaces para la mayora de las aplicaciones DSP. Mientras que un procesador es verstil y apto para muchas aplicaciones, el DSP es un especialista, que realiza a gran velocidad un menor nmero de funciones. A menudo se utiliza a los DSPs como una especie de controlador incrustado, un procesador que, acompaado del software necesario, se incluye dentro de una parte del equipo y se dedica a un nico conjunto de tareas. En los sistemas de ordenadores, los DSPs a menudo se emplean como procesadores incluidos, asistiendo a un microprocesador host de propsito general. He aqu un resumen de las principales diferencias entre ambos: - Los DSPs est especializados en aplicaciones de procesamiento de seal/control incrustado en tiempo real, no para procesado de propsito general. - Los DSPs son estrictamente no programables por el usuario (sin gestin de memoria, sin sistema operativo, sin cach, sin variables compartidas, orientados a un nico proceso). - Los DSPs generalmente emplean algn tipo de "arquitectura Harvard" para permitir bsquedas de cdigo y datos simultneas. - La mayora de los DSPs realizan una operacin MAC (multiply-accumulate) en un solo ciclo de reloj. I.T.T esp. Sonido e Imagen - 19 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

- Los programas DSP a menudo residen en ROM y/o RAM rpidas integradas (aunque a menudo es posible la expansin de bus fuera del chip). - La mayora de los DSPs tienen al menos dos RAMs integradas multipuerto para almacenar operandos. - La gestin de interrupciones de los DSPs es sencilla, rpida y eficiente. - Muchas aplicaciones DSP estn escritas en ensamblador, debido a las restricciones de procesamiento en tiempo real (aunque existen compiladores de C para la mayora de los DSPs). - Las previsiones de l/O para los DSPs a menudo son bastante simples. - Los anchos de bus de direcciones de los DSPs a menudo son ms pequeos que los de los procesadores de propsito general (el tamao del cdigo suele ser pequeo ). - Los DSPs de punto fijo utilizan aritmtica de saturacin (mejor que permitir que el desbordamiento de complemento a 2 tenga lugar). - Los modos de direccionamiento de los DSPs estn orientados a las aplicaciones de procesamiento de seales ( buffers circulares, esquemas de acceso de "mariposa" ). - Los DSPs a menudo proporcionan apoyo de hardware directo para la implementacin de bucles "do". Muchos DSPs emplean una pila de hardware integrada para facilitar el enlace de subrutinas. - La mayora de los DSPs cuentan con ROM de programa integrada y RAM para permitir soluciones en un nico chip. La mayora de los DSPs no tienen ADCs o DACs integrados, dichos perifricos se implementan a menudo externamente. - Conjunto de puntos de referencia utilizados para comparar los DSPs son totalmente diferentes de los usados para comparar procesadores de propsito general (RISC/CISC) 4.4.2. DSP y Efectos de Audio. Una DSP es la herramienta ms til a la hora de implementar un efecto para guitarra, habiendo elaborado prestigiosas empresas como Yamaha o Creative procesadores de efectos basados en esta tecnologa. As, una vez comentados los aspectos generales sobre audio necesarios y algunas caractersticas tecnolgicas de los DSP a nivel general y en contraposicin con los microprocesadores genricos, se pasa a describir los efectos de audio para guitarra en el marco del tratamiento digital de seales, lo que nos dejar en condiciones ptimas para pasar a la implementacin sobre dicha plataforma, pues todas las descripciones que se realizarn se efectuarn

I.T.T esp. Sonido e Imagen

- 20 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

en forma de ecuaciones idneas para su implementacin muestra a muestra en una DSP.

5. Anlisis de Herramientas (Software) utilizadas y criterios de diseo


Se ha intentado realizar este proyecto desde un punto de vista modular, es decir, se han dividido las tareas para la consecucin de ste, en distintos mdulos, en nuestro caso, programas realizados bajo distintas plataformas. En primer lugar debamos programar una aplicacin que fuese capaz de gestionar los parmetros de configuracin del software programado en C que corre sobre la DSP, adems de funcionar en tiempo real y procesar la seal de entrada desde la Entrada de lnea (Line Input) de la Placa de la DSP hasta la salida de lnea de la DSP, para posteriormente ser enviada hacia los Altavoces del PC. Tras la bsqueda de informacin sobre la posible comunicacin, entre el PC y la Placa en cuestin, surge la posibilidad de realizar el interfaz del sistema mediante Hardware o Software. En primera instancia se opta por un Interfaz Software, ya que ste nos proporciona ms flexibilidad sobre la implementacin del sistema, debido a que se puede gestionar ms cantidad de informacin, parmetros de configuracin, o modos de empleo que la versin Hardware, que por el contrario se encontrara limitada a un mximo de cuatro potencimetros, y varios switches de la placa. Limitaciones ofrecidas por la cantidad de canales disponibles en el cdec, que se encargara de convertir los valores analgicos de los potencimetros a digitales para posteriormente ser enviados a la DSP como parmetros de configuracin del efecto. Adems tendramos que el sistema sera poco intuitivo y por lo tanto, poco usable, lo que comportara un esfuerzo el uso de ste. De esta manera, nuestro sistema debera disponer de 2 Convertidores A/D, uno encargado de la adquisicin de datos, y el otro encargado del control de los valores de los potencimetros que nos daran el valor de configuracin de los distintos parmetros de los efectos. Finalmente se descarta esta opcin ya que, debido a la poca flexibilidad del sistema, nos incapacitara para realizar segn que efectos, adems de que sera poco intuitivo y difcilmente usable para el guitarrista. As, que se decide que el Interfaz de la Aplicacin se realizar mediante Software. Tras las indagaciones acerca de la tecnologa a utilizar, se extrae que se podra comunicar la DSP con el PC, almenos mediante dos aplicaciones, las cuales son relatadas a continuacin:

I.T.T esp. Sonido e Imagen

- 21 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

- Labview: Entorno de Programacin grfico, utilizado sobre todo para comunicaciones de SCADA , o sistemas de control Industrial. Es una herramienta fcil de programar, ya que dispone de un entorno de programacin grfico, y segn National Instruments, intuitivo, aunque desde nuestro punto de vista no lo sea tanto. - Microsoft Visual C++: Herramienta de programacin grfica de alto Nivel. Proporciona un Interfaz grfico con componentes tales como Edit Box, Sliders, y dems tipos, que son capaces de manejar datos para finalmente ser enviados a la DSP y procesados por sta. Tras un primer anlisis de la situacin, y tras sopesar el volumen de la informacin adquirida sobre las distintas tecnologas, optamos por la implementacin en Labview, ya que este entorno, en primera instancia nos parece amigable a la hora de la facilitarnos las tareas de programacin de la comunicacin entre los sistemas, y sobre todo, por la gran cantidad de informacin y tutoriales de uso del programa que existen, y que por el contrario, para la aplicacin en VC++, no se ha dispuesto de ellos. Se implementa un Interfaz grfico en Labview, el cual ser el encargado de gestionar los parmetros necesarios a enviar a la DSP, adems dentro de este mismo entorno se generan los algoritmos de procesado de la Seal, (uno de los motivos por el que se opta por esta tecnologa). En primer lugar, realizamos un pequeo programa en Labview con el que no procesamos la seal, simplemente adquirimos las muestras de seal de entrada por el convertidor A/D y las reproducimos por los altavoces del PC mediante el convertidor D/A. El resultado del ensayo es correcto, ya que tras conectar la guitarra a la entrada de Lnea de la Tarjeta, la reproduccin del sonido por los altavoces es correcta. Tras esta prueba, se procede a la implementacin del efecto de puerta de Ruido, Amplificacin, Compresor/Expansor. Una vez en este punto, nos disponemos a probar nuestra aplicacin. Y esta vez tras nuestra desilusin, nos percatamos que el procesado de la seal se entrecorta y tiene graves problemas de continuidad. Finalmente descubrimos en un Technical Rapport de National Instruments, que para que la comunicacin entre el PC y la DSP sea eficiente, son necesarias unas libreras en Labview, cuyo precio es excesivamente alto, y por lo que nos imposibilita para realizar una comunicacin eficiente entre los distintos dispositivos durante el procesado en tiempo real. Este contratiempo, nos hace replantear el problema desde otro punto de vista, ya que a priori se nos presenta como imposible la realizacin con Labview. Tras la lectura de infinidad de artculos tcnicos de National Instruments y Texas Instruments, nos percatamos que la comunicacin que se produce entre el interfaz de la aplicacin en Labview y la DSP, no es transparente para el programador, es decir, que existen capas intermedias de software que la I.T.T esp. Sonido e Imagen - 22 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

realiza, por lo que la posiblemente se realice un intercambio de datos innecesario, que imposibilite la comunicacin en tiempo real, ya que la reproduccin del efecto procesado es audible, pero de forma entrecortada, y con poca resolucin. La optimizacin de los recursos e interrupciones, que son las encargadas de que la comunicacin entre los dispositivos sea fluida, y no interfiera con los tiempos de proceso a las tasas de muestreo de los convertidores A/D D/A, de la DSP. Esto ltimo se puede conseguir mediante las libreras antes mencionadas, pero se opta por una solucin ms econmica, a pesar de que la implementacin a priori parece ms factible con Labview. Finalmente se descarta la implementacin con Labview a pesar de haber realizado gran cantidad de Algoritmos de Procesado de Seal, creacin de rutinas y subrutinas de procesado, Interfaz grfica, y un sinfn de horas de aprendizaje sobre la plataforma en cuestin. En los Anexos y el CD aparece toda la documentacin adjunta, los archivos, simulaciones y aplicacin, realizados en esta parte del proyecto. Una vez en este punto, se replantea el curso del proyecto, y se propone realizar la implementacin de la interfaz va Hardware. Aunque esta solucin no nos satisface ya que sino el sistema ser poco flexible e intuitivo. Tras el infortunio de nuestras acciones nos planteamos crear el interfaz en lenguaje C++, mediante Visual C++, y as comunicar nuestra DSP con el PC, mediante el uso de objetos COM y OLE, del API de Windows. Dichos objetos son clases que se encarga de la interconexin de distintos softwares que pretendan comunicarse entre s. Finalmente, tras infinidad de horas de bsqueda damos con el libro Digital Signal Processing and Applications with the C6713 and C6416 DSK de Rulph Chassaing (el libro se encuentra debidamente referenciado en la seccin de bibliografa). Este libro muestra unos pequeos ejemplos sobre el uso de las libreras RTDX mediante Visual C++. En primera instancia result un alivio la adquisicin del antes mencionado material, pero tras examinarlo detenidamente, nos percatamos que los ejemplos de ste son de una mera simplicidad, que a todas luces se muestran como insuficientes para el alcance de nuestro proyecto. As despus de esto, se opta por intentar implementar el nuestro sistema de comunicacin mediante RTDX, aunque esto ha supuesto un gran esfuerzo tanto en aprendizaje de sus dos API (en el Host y en la aplicacin Target), s como en la comprensin y utilizacin correctas de las funcionalidades que las antes mencionadas libreras poseen. Debido a la falta de informacin al respecto se ha apostando por el auto didactismo a la hora de implementar la comunicacin mediante dichos Interfaces.

I.T.T esp. Sonido e Imagen

- 23 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

No debemos pasar por alto, que la complejidad del sistema requiere de una comunicacin fiable y rpida, adems de la utilizacin de un pequeo protocolo que nos facilite la labor de comunicar ambas aplicaciones y stas a la vez trabajen de una forma sincrnica, intercambindose los datos necesarios para que cada operacin o cambio de parmetros produzca el efecto deseado por el usuario en tiempo real, y sean debidamente procesados por la aplicacin requerida. Una vez recopilamos la informacin necesaria para la implementacin de nuestro proyecto, optamos por el diseo de la Interfaz grfica mediante MS Visual C++, el cual nos proporcionar una aplicacin grfica capaz de gestionar los parmetros necesarios de configuracin para nuestros efectos. Adems ser capaz de comunicarse con la DSP y transmitir los Datos necesarios para el procesado de la Seal de Audio. Desde el punto de vista del usuario, se presenta una interfaz amigable con ste, adems de crear funcionalidades para la configuracin y parametrizacin de los efectos, consiguiendo as una mezcla de efectos o un efecto con unos parmetros caractersticos, y a la vez generando un sonido procesado digitalmente que corresponder al efecto digital, debidamente parametrizado. Por otro lado, dicha comunicacin se realiza mediante las libreras RTDX suministradas por Texas Instruments. Cabe decir, que esta comunicacin es solamente factible si se realiza mediante el uso e inicializacin de Componentes COM y OLE, propios del API de Windows y propietarios de Microsoft Corporation. Esta ltima referencia determinar que la programacin se realice con MS Visual C++, ya que tambin se tuvo en cuenta la implementacin de la Interfaz con el Compilador de Borland Builder VC++, pero a priori nos pareci una posible opcin de implementacin en el futuro, ya que no se dispona del tiempo necesario, ni de la certeza de que se pudiesen comunicar las plataformas PC y DSP mediante dicho compilador. As, finalmente se implementa nuestra aplicacin GRIJOTECH DSP1 bajo la plataforma Windows XP. Su implementacin y compilacin se realizar mediante el Compilador MS VISUAL C++ 6.0 A pesar de todo esto, a continuacin se hace referencia al trabajo realizado para implementar nuestra aplicacin sobre la Plataforma Labview, ya que esto nos ha comportado el trabajo de prcticamente 2 meses, por lo que en ltima instancia, nos ha llevado al conocimiento ms profundo de esta herramienta de trabajo, ya que si bien no es adecuada para este proyecto en concreto, nos servir como herramienta para otro tipo de comunicaciones, donde la velocidad de transmisin de datos no sea tan exigente en cuanto a velocidad de procesado de audio. Cabe mencionar que en primera instancia Labview, es una herramienta imprescindible sobre todo en entornos de control Industrial y SCADA, donde las velocidades de transmisin son bajas, y por lo tanto, la comunicacin no est I.T.T esp. Sonido e Imagen - 24 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

supeditada a altas tasas de transmisin de datos, por lo que se supone como imprescindible en este tipo de entornos. En nuestro caso, que es el del procesado de seales de audio, se nos presenta como insuficiente a todas luces, ya que la imposibilidad de la utilizacin de las libreras existentes para el procesado en tiempo real (precio exorbitante), nos impide su utilizacin en el diseo de nuestra aplicacin.

5.1. Implementacin en Labview


LabView de la multinacional National Instruments. Labview permite recoger, analizar y monitorizar los datos dentro de un entorno de programacin grfico en el que se ensamblan objetos llamados instrumentos virtuales (Vis) para formar el programa de aplicacin con el que interactuar el usuario y que se denomina instrumento virtual. Adems de lo que es la propia representacin de los datos en los paneles interactivos que funcionan como si se tratara de instrumentacin real, permite mltiples opciones de manejo de datos, como su almacenamiento en disco y compartirlos en red o con otras aplicaciones. La interaccin con otras aplicaciones se podr realizar mediante llamadas a libreras de enlace dinmico (DLL: Dinamic Link Library) e intercambio dinmico de datos (DDE: Dynamic Data Exchange) en modo local o mediante TCP/IP en conexiones remotas. Siempre buscando independencia de la plataforma en la que hayamos realizado nuestra aplicacin. A diferencia de un instrumento real, que podemos tener en cualquier laboratorio o planta de procesos, y que queda perfectamente definido por unos mandos de control y unos elementos de representacin, un instrumento virtual estar ligado al concepto de software. Este software se ejecutar en un ordenador que tendr alojado unos elementos hardware concretos, tarjetas de adquisicin de datos (analgicos y digitales), tarjetas de interfaz con los buses de instrumentacin y unos canales de control tambin analgicos y digitales. Nuestro instrumento virtual permitir manejar ese hardware mediante una interfaz grfica de usuario (IGU) que se asemejar al panel de mandos de los aparatos habituales (Osciloscopio, multmetro, etc.). Mediante le representacin en pantalla de los elementos grficos de visualizacin y control que servirn de interfaz con el usuario, este observar los estados de las entradas seleccionadas en la pantalla e interactuar con las salidas directamente, o mediante la ejecucin de las rutinas que se programen. Bsicamente, el software se encargar de comunicar la interfaz de usuario del ordenador con el hardware de adquisicin de datos dotando a la aplicacin de la funcionalidad requerida.

I.T.T esp. Sonido e Imagen

- 25 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Podemos realizar una separacin de las capas o partes del software: Programa de aplicacin, controladores de dispositivo (drivers) y libreras de aplicacin (API s).

5.2 Programa de Aplicacin


El programa de aplicacin, tambin llamado instrumento virtual, consta de dos partes: interfaz de usuario y funcionalidad de la aplicacin: 5.2.1 IGU (Interfaz Grfica de usuario) Permite la interaccin de la aplicacin con el usuario. Bsicamente consta de controles e indicadores para visualizacin e introduccin de datos. La mayora de entornos de programacin disponen de libreras de controles e indicadores creados que evitan una gran cantidad de trabajo al usuario. 5.2.2. Funcionalidad de la aplicacin Una de las funciones bsicas ser la de obtener datos del hardware de forma transparente al usuario. La funcionalidad del programa incluye tratamiento de seal, control del flujo de programa, control de errores, etc Puede implementarse en lenguajes basados en texto (Visual Basic, C++, LabWindows/CVI, etc.) o puede utilizar lenguaje grfico como LabWiew, Snap Master, DasyLab, HP-VEE, Visual Designer de Burr Brown, etc.. Nuestro estudio se centrar en la programacin bajo el entorno de programacin grfica LabView.

5.3 Programacin Grfica


Los procesos programables se definirn mediante un lenguaje grfico en vez de un lenguaje orientado a lneas de cdigo como estamos acostumbrados normalmente. En este tipo de programacin las funciones son bloques que se interconectan entre s, intercambiando la informacin.

I.T.T esp. Sonido e Imagen

- 26 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Fig.6. Ejemplo de aplicacin en LabView.

5.3.1 Software Controlador de Dispositivo El acceso al hardware ya no se realiza mediante llamadas directas a sus registros, si no que los fabricantes proporcionan una capa intermedia que asla al programador de detalles hardware. Esta capa intermedia facilita la comunicacin entre el hardware y nuestro entorno de programacin. Suele implementarse mediante DLL por lo que se necesita una versin especfica s, para cada sistema operativo. (p. ej. Win16 y Win32). Todos los VIs tienen un panel frontal y un diagrama de bloques. Las paletas contienen las opciones que se emplean para crear y modificar los VIs. A continuacin se proceder a realizar una somera descripcin de estos conceptos. A) Panel Frontal Se trata de la interfaz grfica del VI con el usuario. Esta interfaz recoge las entradas procedentes del usuario y representa las salidas proporcionadas por el programa. Un panel frontal est formado por una serie de botones, pulsadores, potencimetros, grficos, etc.

Fig.7 Interfaz grfica de nuestro Procesador de efectos en LabView embedded edition.

Cada uno de ellos puede estar definido como un control (a) o un indicador (b). Los primeros sirven para introducir parmetros al VI, mientras que los indicadores se emplean para mostrar los resultados producidos, ya sean datos adquiridos o resultados de alguna operacin. B) Diagrama de bloques

El diagrama de bloques constituye el cdigo fuente del VI. En el diagrama de bloques es donde se realiza la implementacin del programa del VI para

I.T.T esp. Sonido e Imagen

- 27 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

controlar o realizar cualquier procesado de las entradas y salidas que se crearon en el panel frontal. El diagrama de bloques incluye funciones y estructuras integradas en las libreras que incorpora LabVIEW. En el lenguaje G las funciones y las estructuras son nodos elementales. Son anlogas a los operadores o libreras de funciones de los lenguajes convencionales. Los controles e indicadores que se colocaron previamente en el Panel Frontal, se materializan en el diagrama de bloques mediante los terminales. A continuacin se presenta un ejemplo de lo recin citado:

Fig. 8 . Diagrama de bloques de la Aplicacin diseada en Labview

El diagrama de bloques se construye conectando los distintos objetos entre s, como si de un circuito se tratara. Los cables unen terminales de entrada y salida con los objetos correspondientes, y por ellos fluyen los datos. LabVIEW posee una extensa biblioteca de funciones, entre ellas, aritmticas, comparaciones, conversiones, funciones de entrada/salida, de anlisis, etc. Las estructuras, similares a las declaraciones causales y a los bucles en lenguajes convencionales, ejecutan el cdigo que contienen de forma condicional o repetitiva (bucle for, while, case,...). Los cables son las trayectorias que siguen los datos desde su origen hasta su destino, ya sea una funcin, una estructura, un terminal, etc. Cada cable tiene un color o un estilo diferente, lo que diferencia unos tipos de datos de otros. I.T.T esp. Sonido e Imagen - 28 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

C) Paletas

Fig. 9 . En la figura se muestran las diversas Paletas de Controles de Labview

Las paletas de LabVIEW proporcionan las herramientas que se requieren para crear y modificar tanto el panel frontal como el diagrama de bloques. Con el entorno grfico de programacin de LabVIEW se comienza a programar a partir del panel frontal.

En primer lugar se definirn y seleccionarn de la paleta de controles todos los controles (entradas que dar el usuario) e indicadores (salidas que presentar en pantalla el VI) que se emplearn para introducir los datos por parte del usuario y presentar en pantalla los resultados. Una vez colocados en la ventana correspondiente al panel frontal todos los objetos necesarios, debe pasarse a la ventana Diagram (men Windows > Show Diagram), que es donde se realiza la programacin propiamente dicha (diagrama de bloques). Al abrir esta ventana, en ella se encuentran los terminales correspondientes a los objetos situados en el panel frontal, dispuestos automticamente por LabVIEW. Se deben ir situando las funciones, estructuras, etc. que se requieran para el desarrollo del programa, las cuales se unen a los terminales mediante cables.

I.T.T esp. Sonido e Imagen

- 29 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Para facilitar la tarea de conexin de todos los terminales, en el men Help puede elegirse la opcin Show Help con lo que al colocar el cursor del ratn , sobre un elemento aparece una ventana con informacin relativa a ste (parmetros de entrada y salida). Adems, si se tiene seleccionado el cursor de cableado, al situar ste sobre un elemento se muestran los terminales de forma intermitente. 5.3.2 Descripcin de VI y SubVI s s Para el desarrollo de nuestra aplicacin, nos basamos en la filosofa de creacin de aplicaciones con Labview, ya que aqu las clases, tal y como se entienden, se trasladan al concepto de Instrumento Virtual, y por lo tanto, las funciones lo harn como objetos SubVI (SubInstrumentos Virtuales). Que a la s vez pueden tener funcionalidad grfica. (Ventanas de dilogo de conf. de efecto).

Fig. 10 . En la figura se muestran las distintas Sub Vis que componen la aplicacin

La implementacin de este tipo de objetos se nos presenta sencilla, una vez se ha comprendido el funcionamiento de la aplicacin LabView, as como su metodologa de programacin y ejecucin.

I.T.T esp. Sonido e Imagen

- 30 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Nuestra aplicacin o VI Embedded 5.VI ser el Instrumento Virtual que contendr la aplicacin. Refirindonos con el trmino aplicacin, en cuanto nos referimos a los SubVI y VI que integran el total de sta, y contenidos en el s s VI mencionado. Por una parte tenemos los SubVI principales de la aplicacin, que a la vez s stos contendrn otros SubVI consiguiendo con esto que la programacin s, sea ms estructurada, y que existan diversos niveles de complejidad, ya que se resuelven los problemas en SubVI que despus pueden ser llamadas por s, otros VI o SubVI s s. A continuacin se lista el nombre de cada uno de los VI o SubVI creados s s en nuestra aplicacin o Instrumento Virtual:

5.3.2.1 Diagrama de conexin entre VI y SubVI s s

Para la correcta comprensin de la interconexin entre los distintos VI a s continuacin se muestra un esquema donde se simplifica, y enlazan los distintos Instrumentos Virtuales con el fin de realizar el procesado de la seal, tal como si se llamase a distintas funciones dentro de un cdigo fuente estndar.

Fig. 11 . rbol de VI y SubVIs que integran la aplicacin en LabView Embedded 5.VI s

I.T.T esp. Sonido e Imagen

- 31 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera 5.3.2.2Descripcin de VI On_Off

Procesador Digital de efectos mediante DSP TMS320C6713

Este objeto virtual nos permitir encender y apagar el Led de la aplicacin, as como habilitar la seal para que se procese en el resto de SubVI Adems s. habilitar o deshabilitar segn su estado la activacin de los convertidores A/D, D/A.

Fig. 12 . En la figura se muestra la SubVI On_Off

5.3.2.3 Descripcin del VI P_Ruido

Este VI se comportar como una puerta de ruido, prefijada por los controles del Panel Frontal Umbral PR. Para una comprensin ms exhaustiva de la implementacin de ste y otro Instrumento Virtual, debe revisarse los archivos *.VI que se suministran en el CD del Proyecto. Este Objeto virtual se encargar de manejar el efecto Puerta de Ruido, donde se programarn los componentes necesarios para conseguir implementar dicho efecto. Cabe decir que la implementacin se realiza mediante el uso de logaritmos, ya que as, asemejaremos el comportamiento de nuestra aplicacin a la respuesta en amplitud que realiza nuestro sentido de la audicin. I.T.T esp. Sonido e Imagen - 32 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Fig. 13 . En la figura se muestra la SubVI P_Ruido

Por otro lado, nuestro VI adems incorpora el SubVI Threehold, el cual nos s permitir detectar si la seal sobrepasa un umbral o no. En el primer caso, se deja pasar la seal al siguiente bloque de proceso, y en el segundo, se pone el valor de sta a 0, siendo ste el comportamiento que sigue el efecto Puerta de Ruido. Esto ltimo se pone de relieve en la figura siguiente, donde se muestra el Diagrama de bloques de dicho Instrumento Virtual.

I.T.T esp. Sonido e Imagen

- 33 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Fig. 14 . En la figura se muestra el diagrama de Bloques de la SubVI P_ruidof

5.3.2.4 Descripcin del VI Compresor_Expansor

Este Objeto virtual se encargar de manejar el efecto Compresor_Expansor, donde se programarn los componentes necesarios para conseguir implementar dicho efecto. Cabe decir que la implementacin se realiza mediante el uso de logaritmos, ya que as, asemejaremos el comportamiento de nuestra aplicacin a la respuesta en amplitud que realiza nuestro sentido de la audicin. Por otro lado, nuestro VI adems incorpora infinidad de SubVI las cuales s pueden revisarse en el rbol de Funciones (Apartado 4.3.2.1 de esta memoria).

I.T.T esp. Sonido e Imagen

- 34 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Fig. 15 . En la figura se muestra la SubVI Compresor/Expansor

Esta VI nos permitir realizar la compresin Expansin del rango dinmico de la seal de entrada del bloque, (Salida del bloque de Puerta de Ruido). Dicha compresin se realizar segn la posicin del smitter del Panel Frontal correspondiente a la seccin Comp/Exp. Cabe decir tambin que dicha compresin se realizar segn una tasa de compresin o expansin definida por el usuario.

5.3.2.5 Descripcin del VI CajaEfectos.Vi

Este VI es el componente que entraa mayor complejidad a la hora de implementarlo, ya que una vez llegada la seal a este bloque se debe comprobar que efecto es el seleccionado en el Panel Frontal de la aplicacin. Una vez determinado este efecto, se debe abrir un SubVI, correspondiente a una ventana de dialogo de configuracin de efecto, cuya funcin es la de contener los controles necesarios para manejar el efecto adems de las operaciones a realizar en la seal mediante los parmetros de configuracin de sta. I.T.T esp. Sonido e Imagen - 35 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Podemos observar que en esta estructura se implementa mediante un componente Case, el cual contendr todos los SubVI que contendrn las s Ventanas de Dilogos de controles de configuracin de efecto.

Fig. 16 En la figura se muestra la SubVI CajaEfectos2

Tal y como Indica el nombre del Instrumento virtual, se trata de una caja de efectos, donde contiene todos los efectos disponibles en la aplicacin excepto los efectos: Amplificacin, Puerta de Ruido y Compresor / Expansor. Como se ha apuntado anteriormente, la programacin de este Instrumento Virtual, ha comportado una gran complejidad, ya que por un lado, se pretenda la programacin de una forma amena y sencilla. A pesar de todo esto, se ha implementado, mediante el uso de una gran cantidad de Sub Instrumentos Virtuales. Una vez la seal es procesada en este bloque sale hacia el ltimo bloque, que es el de Amplificacin, explicado con ms detenimiento en el siguiente punto.

I.T.T esp. Sonido e Imagen

- 36 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

5.3.2.6 Descripcin del VI Amplificacin.Vi

Fig. 17 . En la figura se muestra la SubVI Amplificacin

Este Instrumento Virtual ser el encargado de amplificar la seal de salida despus del procesado total de sta, y cuya seal de audio proporcionar un sonido con el efecto/s deseado/s. La implementacin de este bloque es sencilla, ya que nicamente escalaremos la seal de salida mediante la multiplicacin del valor digital de salida por un valor seleccionado en el Interfaz de la aplicacin que ir de 0 a 5. As tenemos que nuestra aplicacin parece estar en disposicin de realizar el procesado de la seal, segn los efectos implementados, en nuestro caso solamente se han implementado los efectos de distorsin1, distorsin2, Compresor/Expansor, Puerta de Ruidos y Amplificacin.

I.T.T esp. Sonido e Imagen

- 37 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

5.4.- Ejecucin de un VI
Una vez se ha concluido la programacin del VI se debe proceder a su ejecucin. Para ello la ventana activa debe ser el panel frontal (si se est en la ventana del diagrama de bloques, se debe seleccionar la opcin Show Panel del men Windows). Una vez situados en el panel frontal, se pulsar el botn de Run, situado en la barra de herramientas. El programa comenzar a ejecutarse. Mientras dura la ejecucin del mismo, la apariencia del botn de Run es la que se muestra a continuacin:

Fig. 18. En la figura se muestra en la ventana de la Izquierda, las clases que componen nuestra aplicacin, as como las diferentes ventanas del compilador MS VC++ 6.0

Nota: Los Archivos Labview se incluyen en el CD, junto con VI y SubVi Adems se s s. adjuntan demostraciones numricas del funcionamiento de los algoritmos, ya que al implementarlos con los convertidores A/D D/A, el instrumento virtual tiene problemas de reproduccin en tiempo real.

5.5.- Conclusiones y resultados sobre el uso de Labview


Una vez en este punto, nos disponemos a realizar pruebas de procesado con la aplicacin programada en la Embedded Edition de Labview. En primer lugar tenemos problemas con la visualizacin de los Leds de activacin de efectos, en el panel frontal. Esto se produce, ya que debemos seleccionar la casilla Disconnect Pane la cual nos inhabilitar de poder , actualizar el valor de las variables en el panel central. Esta accin se realiza ya que si no se encuentra seleccionada esta opcin, la aplicacin reproduce un ruido, el cual no permite la reproduccin del audio correctamente. Por lo tanto, un primer condicionante es el expuesto. Despus de esto, y tras realizar varios ensayos introduciendo el instrumento musical en la entrada de Lnea de la DSP y realizando los ensayos oportunos, observamos que si solamente se aplica un efecto de procesado ligero como Puerta de Ruido, la seal se reproduce, pero no lo hace de una forma correcta. I.T.T esp. Sonido e Imagen - 38 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

En el momento que se aplican ms efectos al procesado, la seal de audio es incapaz de ser procesada en tiempo real, y el resultado es nefasto. Una vez en este punto, optamos por descartar la implementacin de nuestro dispositivo mediante la plataforma Labview Embedded Edition, ya que los resultados obtenidos en el procesado de seales en tiempo real no son favorables, ni de buen grado, y a todas luces infructfero para la consecucin de los objetivos sealados en este proyecto.

6. Programacin en Visual C++ ( POO, Programacin orientada a Objetos) 6.1 Introduccin


La programacin para entornos grficos difiere sustancialmente de la programacin orientada a interfaz de tipo texto (modo consola). Mientras que en modo consola el programador organiza de forma secuencial tanto las instrucciones de clculo como la de interaccin con el usuario (printf, scanf, getchar, etc), en un entorno grfico, no est definido el orden exacto en que el usuario interactuar con el programa (ej: pulsar una u otra opcin de men, maximizar la ventana, pulsar un botn, cambiar un texto, etc).

Fig. 19 . Diagrama de flujo para entorno grfico y modo consola, de derecha a Izquierda

Por ello, la forma de organizar un programa para ambos entornos es bastante distinta. (ver Fig. 19). En modo consola se van intercalando las sentencias de clculo y las de interaccin con el usuario en el orden que desea el programador. Sin embargo, en modo grfico se ejecuta un bucle permanentemente, se espera por un evento (del usuario o del sistema), se ejecuta el cdigo asociado a ese evento, y se vuelve a esperar el siguiente. Los eventos pueden ser variados: se ha pulsado un botn del ratn, se ha pulsado una tecla, se ha seleccionado una opcin de men, se ha creado una ventana, se ha cambiado el tamao de ventana, etc. Adems, no se puede definir a priori el orden de los eventos sino que depende del usuario.

I.T.T esp. Sonido e Imagen

- 39 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Dentro de los diferentes eventos en modo grfico, es importante comprender los asociados al dibujo de la ventana. A diferencia del modo consola, en que se manda escribir algo en la consola (printf) y esa escritura es permanente (no es necesario refrescarla), en modo grfico ser necesario redibujar la ventana completa o parte de ella cuando sea requerido, y este requerimiento puede provenir del programa o del sistema (p. ej la ventana estaba siendo tapada por otra y lo que ha dejado de estar), lo cual es indicado mediante un evento. Por ello, en modo grfico es necesario que el programa tenga almacenado todos los datos necesarios para poder redibujar todo el contenido de la ventana en cualquier momento en que sea recibido el evento redibujar . Para realizar la programacin de las ventanas y de sus eventos, el Sistema Operativo con entorno grfico (en nuestro caso Windows) proporciona una serie de funciones en unas libreras. Ese conjunto de funciones se suele denominar API(Application Programming Interface), que en Windows se llama SDK(Software Development Kit). Las funciones ah contenidas servirn para gestionar ventanas(crear, redimensionar, cerrar, etc.) de diferentes tipos (normal, men, botn, cuadro de dilogo, cuadro de texto, lista de seleccin, etc..), obtener eventos, realizar acciones de dibujo, etc. Un API es un conjunto de funciones muy extenso, ya que son necesarias muchas y muy variadas funciones para gestionar el entorno de ventanas. Adems muchas de las funcionalidades son muy repetitivas a lo largo de los programas (ej. Crear ventana principal con opciones de men), requiriendo un conjunto de llamas al API relativamente complejo y pesado incluso para el programa ms sencillo. Para facilitar este trabajo, muchos entornos de desarrollo (en nuestro caso Visual C++) proporcionan un API, mediante una librera de clases que encapsula la mayor parte de la complejidad, y slo deja como tarea al programador, la realizacin de las partes especficas de su programa. La librera de clases en Visual C++ se llama MFC (Microsoft Foundation Classes). As, por ejemplo, la creacin de la ventana principal estar encapsulada en una serie de objetos que hacen que se pueda crear el marco del programa Sin aadir ni una sola lnea de cdigo adicional a las clases ya disponibles! Para ayudar an ms, los entornos de desarrollo suelen disponer de utilidades que permiten situar de forma grfica los elementos de interfaz (mens, botones, cuadros de texto, etc.) e incluso enlazados con las funciones de servicio de sus eventos de una forma grfica e intuitiva. De esta manera, el programador se ahorra de escribir gran cantidad de cdigo (Se ahorra no slo tiempo, sino tambin errores) y, adems, la parte la vista de su programa es a muy clara y concisa.

I.T.T esp. Sonido e Imagen

- 40 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Fig. 20 . En la figura se muestra la Interfaz grfica de la aplicacin Grijotech_DSP1

Dado que los elementos de interfaz grfico se pueden describir y utilizar mucho ms fcilmente como objetos, lo habitual es que se utilice la programacin orientada a objetos para la programacin de estos interfaces.

6.2 Descripcin del proyecto en Visual C++

El proyecto en VC++ consta de un total de 13 Clases, las cuales representan las distintas ventanas de dilogo adems de la clase encargada de realizar la comunicacin entre nuestra aplicacin host y la aplicacin target de la DSP. Por otro lado tenemos la clase CGRIJOTECH_DSP1App que representa la aplicacin, en ella se debe declarar la declaracin de uso de objetos OLE, para el intercambio de datos entre nuestra aplicacin y la DSP. Esto ltimo se realiza ejecutando la funcin: AfxOleInit();. Adems existe la clase CGRIJOTECH_DSP1Dlg que modela la ventana principal de la aplicacin, y la clase CAboutDlg que modelar la ventana de Ayuda en el men Principal / Help.

I.T.T esp. Sonido e Imagen

- 41 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Fig. 21 . En la figura se muestra en la ventana de la Izquierda, las clases que componen nuestra aplicacin, as como las diferentes ventanas del compilador MS VC++ 6.0

Cabe destacar la declaracin de la Clase IrtdxExp, que representa un puntero a la clase RTDX y mediante la variable global pRTDX, se obtienen un API para la manipulacin y programacin de la comunicacin entre la aplicacin host (Grijotech DSP1), y la aplicacin Target (Procesador de efectos.cpp). Por ultimo, es importante sealar que el resto de clases modelan cada ventana de dilogo que se abre al configurar los efectos. A continuacin se listan todas las clases pertenecientes a nuestra Aplicacin. - Clase CaboutDlg: Ser la clase encargada de contener la ventana de Dialogo que aparece al pulsar el Men principal / Help / About GrijotechDSP1. - Clase CChorus: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Chorus.

- Clase CDelay: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Delay.

I.T.T esp. Sonido e Imagen

- 42 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

- Clase Cdistorsion1: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Distorsion1. - Clase Cdistorsion2: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Distorsion2. - Clase CFlanger: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Flanger. - Clase CFPAltos: Ser la clase que contendr la ventana del dilogo de configuracin del Filtro Pasa Altos. - Clase CFPBajos: Ser la clase que contendr la ventana del dilogo de configuracin del Filtro Pasa Bajos. - Clase CFPBanda: Ser la clase que contendr la ventana del dilogo de configuracin del Filtro Pasa Banda. - CGRIJOTECH_DSP1App: Esta clase se crea por defecto al Utilizar el Class Wizard de VC++. Representa la aplicacin en s, y es necesaria para la compilacin del programa. - CGRIJOTECH_DSP1Dlg: Esta es la clase principal del Programa. Representa la ventana del Dilogo principal donde aparecen los controles, botones, listas y dems funcionalidades de la aplicacin. Esta clase por lo tanto, ser la que contendr todo el peso de la aplicacin, ya que el resto de clases, se crean como Instancias de esta misma clase, con el fin de poder realizar el intercambio de valores entre las distintas clases, o ventanas de dilogo en MS VC++. - Clase CReverb: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Reverb. - Clase IrtdxExp: Ser la clase encargada de la comunicacin mediante la inicializacin de objetos COM y OLE y las libreras para la comunicacin con Code Composer Studio, de Texas Instruments, donde este ltimo nos servir de servidor entre las dos aplicaciones con el fin de realizar la comunicacin entre ambas aplicaciones. La librera en cuestin se denominan RTDX (Real Time Date Exchange) y se cargan en nuestra aplicacin mediante el ClassWizard, donde se importar la Dll RTDXint. Dll y esta se asociar la Clase IrtdxExp, la cual mediante un puntero a un objeto de la clase, nos permitir el uso y programacin de las distintas funcionalidades que nos ofrece la librera RTDX, para el intercambio de datos entre las aplicaciones.

I.T.T esp. Sonido e Imagen

- 43 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

6.3. Descripcin del Interfaz de usuario de Grijotech DSP1


El Interfaz es una de las tareas que nos han llevado ms tiempo implementar, ya que se debe partir de la base que se ha debido de aprender el funcionamiento del Compilador de VC++, en nuestro caso, mediante tutoriales, referenciados en la seccin de bibliografa, se ha conseguido programar este Interfaz, junto con el resto de funcionalidades que brinda la aplicacin, tales como: carga de Archivos de configuracin, Guardar Archivos de Configuracin de efectos, Efectos en Tiempo real, y como no, la posibilidad de configuracin de los parmetros esenciales del efecto.

Fig.22 En la figura se muestra el Interfaz Visual de la aplicacin Grijotech DSP1

Por defecto, el programa carga una configuracin predeterminada, con unos efectos y parmetros de stos. Cabe la posibilidad de cambiar dicha configuracin, mediante este Interfaz grfico, ya que mediante los diferentes controles y botones se brinda la oportunidad al usuario de realizar la configuracin adecuada de sus propios efectos. Todo esto desde un entorno sencillo de usar, donde la situacin de los controles y la informacin del interfaz, hace que el uso de la aplicacin sea sencillo e intuitivo, para cualquier persona que desee utilizar el programa. Esto ltimo, es un parmetro muy importante a tener en cuenta, ya que la usabilidad de una aplicacin informtica, garantiza el xito y la aceptacin del usuario. Por ello, se ha prestado especial atencin a la caracterizacin de este Interfaz, adecuando el espacio de ste, a las funcionalidades ofrecidas, I.T.T esp. Sonido e Imagen - 44 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

adems de agrupando los controles e instrumentos de control de la aplicacin en espacios donde se realizan un determinado uso de las funcionalidades. Entrando ms a fondo en el tema anterior, podemos decir que el Interfaz grfico se puede dividir en 3 grandes categoras, o espacios.

6.4. Descripcin de las reas de efecto en la Aplicacin


6.4.1 rea de efectos de Rango Dinmico:

Corresponde al rea superior de la aplicacin. Consiste en 3 subreas, cuyo contenido es el de varios Sliders, junto con sus EditBox correspondientes. Estas subreas se activan mediante una casilla de verificacin, la cual al activarse enciende el Led de color verde correspondiente, adems de habilitar los controles predeterminados de esta rea, para que el usuario pueda configurar el efecto en cuestin.

Fig. 23 rea Funcional de la aplicacin para efectos de Rango dinmico

I.T.T esp. Sonido e Imagen

- 45 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

El rea de efectos de Rango Dinmico se divide en 3 Subreas o efectos:

- Amplificacin: Esta rea corresponde al efecto de Amplificacin de la Seal de Salida, despus de ser procesados los diferentes efectos. Consta de 2 Sliders, que representan la amplificacin proporcionada a cada canal de Audio Izquierdo y derecho. Junto a estos Slider tambin tenemos unos EditBox los cuales actualizan el valor de la posicin del slider dentro del rango definido para su uso, y a la vez, sern los parmetros de configuracin enviados a la DSP para la multiplicacin de la seal de entrada por el valor del efecto, en cada canal. - Puerta de Ruido: Esta rea corresponde a la Puerta de Ruidos del Sistema. Est compuesta por 2 Sliders, Umbral y %Atenuacin, respectivamente, y corresponden a los parmetros de configuracin de una puerta de ruidos en el sistema - Comprensor / Expansor: Este efecto al igual que en el caso de los anteriores, se aplica para el cambio del rango dinmico de la seal, en nuestro caso tendremos controles que nos permitirn en primer lugar expandir o comprimir la seal, segn un cierto ratio de compresin/Expansin. Adems tendremos la posibilidad de poder determinar cual ser nuestro umbral para aplicar el efecto, adems adicionalmente se provee de dos controles ms que regularn el tiempo de ataque del efecto, adems del tiempo de relajacin de ste.

6.4.2 rea de Seleccin de efectos:

El rea de Seleccin de efectos est situada en la parte central de la aplicacin, y est compuesta bsicamente por una casilla de Verificacin, un Led de Activacin o desactivacin, una lista con los efectos disponibles y otra con los efectos seleccionados, cuatro botones para el manejo y seleccin de efectos y una casilla de verificacin. En esta rea de la aplicacin se seleccionarn los efectos necesarios para nuestra interpretacin, si se utiliza el modo configuracin. A continuacin se muestra una figura del rea en cuestin:

I.T.T esp. Sonido e Imagen

- 46 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Fig. 24 rea Funcional de la aplicacin para seleccin en lista de efectos

Debemos tener en cuenta que la activacin de esta rea de la aplicacin activa automticamente el rea de Configuracin de Efectos, relatada a continuacin. Que aunque se trate de un rea autnoma, ya que posee su propia casilla de verificacin est estrechamente vinculada tanto el modo de reproduccin del efecto mediante configuracin, como en el modo de reproduccin del efecto en modo Tiempo real. Ms adelante se relata pormenorizadamente todo este entresijo de funcionalidades y grupos de stas: - Lista Efectos Disponibles: Se trata de una lista insertada en un ListBox, donde se pueden seleccionar los efectos a Disponibles en la Aplicacin (Lista de la Izquierda). - Lista de Efectos Seleccionados: Es un ListBox donde aparece el nombre de los efectos seleccionados mediante doble click en la lista de Disponibles, o mediante los botones de Insercin/Borrado, que se describen a continuacin.

I.T.T esp. Sonido e Imagen

- 47 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

- Botones de Insercin/ Borrado: Se trata de cuatro botones cuyas funcionalidades se describen a continuacin: - Botn >> Inserta todos los efectos disponibles en la lista de Seleccin. - Botn > Inserta el efecto seleccionado mediante el cursor de la lista de Efectos disponibles. - Botn < Borra el efecto seleccionado mediante el cursor en la Lista de Efectos Seleccionados. - Botn << Borra todos los efectos de la Lista de Efectos Seleccionados. 6.4.3 rea de Configuracin de efectos: Esta rea corresponde a nuestra tercera gran agrupacin de controles. sta prcticamente se encarga de la configuracin de los efectos seleccionados, la carga de Archivos de Configuracin (*.gri), Guardar Archivos de Configuracin con la extensin antes mencionada, cargar el archivo de configuracin por defecto, Activar el procesador de efectos para la interpretacin de con los efectos deseados, y la desactivacin de los efectos mediante el botn Stop. Todas estas funcionalidades son propias del manejo de los datos y la reproduccin de stos, por lo que se les ha dado una zona de Aplicacin para ellos. Por otro lado, cabe destacar la ambivalencia de esta rea, ya que interactuar realizando unos procesos en el caso de que se active la zona de Configuracin o la de Efectos en Tiempo real. Esto es debido a que estos son los dos modos de configuracin que permite la aplicacin, ya que por un lado tenemos que podemos utilizar unos patrones de configuracin previamente guardados en un archivo, o dispuestos por defecto, los cuales podemos parametrizar, y acto seguido reproducir. Podramos decir, que esta funcionalidad permitira la reproduccin de patrones previamente guardados de configuracin de efectos para ciertas partes de la interpretacin, y por otro lado, nos asegurar no tener que estar reconfigurando constantemente los parmetros de la aplicacin para ejecutar un efecto predefinido por el usuario. De este modo, obtendremos, la reproduccin de efectos en tiempo real, que quizs sea el modelo de reproduccin ms cotidiano en los ambientes musicales, ya que se dispone de un Array de efectos disponibles en el momento, y que pueden haber sido previamente configurados, no. Este es el caso de la configuracin de Efectos en tiempo real. Para el comienzo de la reproduccin en ambos modos de configuracin es necesaria la pulsacin del Botn Play. La aplicacin posee los mecanismos

I.T.T esp. Sonido e Imagen

- 48 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

necesarios para la distincin entre ambos modos de configuracin y la reproduccin correcta en los dos casos.

Fig. 25 rea Funcional de la aplicacin para control de configuracin

A continuacin se describen los botones y funcionalidades propias de esta rea de la Aplicacin: - Botn Configurar Efecto: Al pulsar este botn aparecer el dilogo de configuracin propio del efecto seleccionado en la lista de Efectos Seleccionados. En el caso de que no se haya seleccionado ninguno de ellos aparecer un mensaje por pantalla indicndolo. - Botn Cargar Archivo Configuracin: Este botn Abre un OpenFileBox para indicarle la ruta donde se encuentra el archivo de configuracin deseado, para posteriormente cargarlo en la configuracin de los efectos y asignar los valores a los controles de la aplicacin. - Botn Guardar Archivo Configuracin: Este botn Abre un SaveFileBox para asignarle la ruta y el nombre del archivo de configuracin, con los valores actuales de la aplicacin. - Botn Restaurar Valores: Vuelve a recargar con los valores por defecto de la Aplicacin cargados en primera instancia sobre esta.

I.T.T esp. Sonido e Imagen

- 49 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Botn Play: Este control tiene 2 funcionalidades, descritas a continuacin: - 1 - Activacin y envo de los parmetros de configuracin de los efectos de la Lista de Efectos deseados. (solamente si est activada la casilla de verificacin del rea de Configuracin de efecto). - 2- Activacin y envo de los parmetros de configuracin y efectos seleccionados en el rea de aplicacin Efectos en Tiempo Real . Donde se encargar de enviar las seales de control y valores por defectos en primera instancia y despus pasar a inactividad, mientras otros eventos activen la comunicacin en tiempo real entre la aplicacin y la DSP (Eventos OnButton nEfecto ). - Botn Stop: Este botn ser el encargado de interrumpir la ejecucin de efectos en la DSP, al igual que cerrar la comunicacin entre la aplicacin y sta.

6.4.4 rea de Efectos en tiempo Real: Esta rea se nos presenta separada en dos subreas distintas, aunque no delimitadas por ninguna casilla de verificacin asociada a stas. En primer lugar disponemos de un smitter, el cual nos indicar el nivel de seal con el que se reproduce la seal de salida de nuestro sistema. Esta parte est implementada a base de Leds, que van desde el color verde, pasando por el amarillo, hasta el rojo. El cdigo de colores no se ha seleccionado al azar, sino que corresponder la activacin de dichos Leds en proporcin al nivel de salida de la seal, por lo que si sobrepasamos el nivel de Leds verdes, estaremos cerca del nivel ptimo (color amarillo), y si la energa de la trama procesada es superior a este umbral estaremos en la zona de activacin de los Leds rojos, donde se llega a la saturacin del sistema. La segunda gran regin es la zona de botones, donde se dispone de un botn junto con un Led de color verde, que al activarse se encender provocando que aparezca el dilogo de configuracin del efecto, cuyo botn ha sido pulsado por el usuario en la zona de Efectos en Tiempo Real. Una vez se pulse a aceptar, y siempre habiendo pulsado previamente el botn play, cambiarn los parmetros de configuracin del efecto, y con ste el propio sonido de nuestra seal. En la pgina siguiente se muestra en la figura el rea que nos acontece.

I.T.T esp. Sonido e Imagen

- 50 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Fig.26 Aparece sealada el rea de la aplicacin correspondiente, debe notarse que aparece una ventana de Dilogo propia de botn pulsado. En este caso Distorsin 1.

La zona propiamente asociada a la Activacin y/o configuracin de efectos en tiempo real consta bsicamente de los siguientes elementos: Botn Distors.1 + Led Activacin: Activa la ejecucin del efecto Distorsin 1, una vez pulsado este botn aparece la ventana del dilogo de Configuracin del efecto, Una vez pulsado el botn Aceptar del Dilogo los valores de configuracin sern enviados a la DSP y sta comenzar a procesar la seal junto con los parmetros enviados. Se debe notar que esta funcionalidad ser activada si previamente se ha pulsado el Botn Play de la ventana Parmetros de configuracin. Botn Distors.2 + Led Activacin: Activa la ejecucin del efecto Distorsin 2, una vez pulsado este botn aparece la ventana del dilogo de Configuracin del efecto, Una vez pulsado el botn Aceptar del Dilogo los valores de configuracin sern enviados a la DSP y sta comenzar a procesar la seal junto con los parmetros enviados. Se debe notar que esta funcionalidad ser activada si previamente se ha pulsado el Botn Play de la ventana Parmetros de configuracin.

I.T.T esp. Sonido e Imagen

- 51 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Botn Distors. Anillo + Led Activacin: Activa la ejecucin del efecto Distorsin Anillo, una vez pulsado este botn aparece la ventana del dilogo de Configuracin del efecto, Una vez pulsado el botn Aceptar del Dilogo los valores de configuracin sern enviados a la DSP y sta comenzar a procesar la seal junto con los parmetros enviados. Se debe notar que esta funcionalidad ser activada si previamente se ha pulsado el Botn Play de la ventana Parmetros de configuracin. Botn Delay + Led Activacin: Activa la ejecucin del efecto Delay, una vez pulsado este botn aparece la ventana del dilogo de Configuracin del efecto. Una vez pulsado el botn Aceptar del Dilogo los valores de configuracin sern enviados a la DSP y sta comenzar a procesar la seal junto con los parmetros enviados. Se debe notar que esta funcionalidad ser activada si previamente se ha pulsado el Botn Play de la ventana Parmetros de configuracin. Botn Chorus + Led Activacin: Activa la ejecucin del efecto Chorus, una vez pulsado este botn aparece la ventana del dilogo de Configuracin del efecto. Una vez pulsado el botn Aceptar del Dilogo los valores de configuracin sern enviados a la DSP y sta comenzar a procesar la seal junto con los parmetros enviados. Se debe notar que esta funcionalidad ser activada si previamente se ha pulsado el Botn Play de la ventana Parmetros de configuracin. Botn Reverb + Led Activacin: Activa la ejecucin del efecto Reverb, una vez pulsado este botn aparece la ventana del dilogo de Configuracin del efecto. Una vez pulsado el botn Aceptar del Dilogo los valores de configuracin sern enviados a la DSP y sta comenzar a procesar la seal junto con los parmetros enviados. Se debe notar que esta funcionalidad ser activada si previamente se ha pulsado el Botn Play de la ventana Parmetros de configuracin. Botn Flanger + Led Activacin: Activa la ejecucin del efecto Flanger, una vez pulsado este botn aparece la ventana del dilogo de Configuracin del efecto. Una vez pulsado el botn Aceptar del Dilogo los valores de configuracin sern enviados a la DSP y sta comenzar a procesar la seal junto con los parmetros enviados. Se debe notar que esta funcionalidad ser activada si previamente se ha pulsado el Botn Play de la ventana Parmetros de configuracin. Botn FPBajos + Led Activacin: Activa la ejecucin del efecto Filtro Pasa Bajos, una vez pulsado este botn aparece la ventana del dilogo de Configuracin del efecto. Una vez pulsado el botn Aceptar del Dilogo los valores de configuracin sern enviados a la DSP y sta comenzar a procesar la seal junto con los parmetros enviados. Se debe notar que esta funcionalidad ser activada si previamente se ha pulsado el Botn Play de la ventana Parmetros de configuracin.

I.T.T esp. Sonido e Imagen

- 52 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Botn FPBanda + Led Activacin: Activa la ejecucin del efecto Filtro Pasa Banda, una vez pulsado este botn aparece la ventana del dilogo de Configuracin del efecto. Una vez pulsado el botn Aceptar del Dilogo los valores de configuracin sern enviados a la DSP y sta comenzar a procesar la seal junto con los parmetros enviados. Se debe notar que esta funcionalidad ser activada si previamente se ha pulsado el Botn Play de la ventana Parmetros de configuracin. Botn FPAltos + Led Activacin: Activa la ejecucin del efecto Filtro Pasa Altos, una vez pulsado este botn aparece la ventana del dilogo de Configuracin del efecto. Una vez pulsado el botn Aceptar del Dilogo los valores de configuracin sern enviados a la DSP y sta comenzar a procesar la seal junto con los parmetros enviados. Se debe notar que esta funcionalidad ser activada si previamente se ha pulsado el Botn Play de la ventana Parmetros de configuracin. Botn OtrosEfectos1 + Led Activacin: Botn desactivado, se propone como posible funcionalidad en la implementacin de prximos efectos. Botn OtrosEfectos2 + Led Activacin: Botn desactivado, se propone como posible funcionalidad en la implementacin de prximos efectos. Botn OtrosEfectos3 + Led Activacin: Botn desactivado, se propone como posible funcionalidad en la implementacin de prximos efectos.

6.5 La Clase CGRIJOTECH_DSP1Dlg


Tal y como hemos comentado anteriormente, la Clase CGRIJOTECH_DSP1Dlg es la clase principal de nuestro proyecto, ya que sta contiene la ventana del dilogo principal de nuestra aplicacin. Adems contiene un amplio abanico de funciones que se han implementado con el fin de realizar una programacin ordenada y bien estructurada, donde los niveles de abstraccin se encuentran encapsulados en las clases, pero a la vez, la solucin de los problemas se realiza mediante Nuevas funciones Miembro, creadas con el fin de optimizar nuestro cdigo, a la vez que facilitar la comprensin de ste. Esta clase posee todas las funcionalidades propias de la aplicacin ya que por ella han de pasar todos los valores de las variables y distintas modificaciones que se realicen a lo largo del uso de la aplicacin. Esto es, que el resto de clases implementadas para realizar la funcin de contenedores de Ventanas de dilogo de configuracin de Efectos, se derivan desde la propia clase CGRIJOTECH _DSP1Dlg, ya que as, si declaramos una variable como puntero a dichas clases hijas, podremos realizar un intercambio de datos entre los controles de los dilogos hijos hacia variables en la Clase Principal. La declaracin de Dilogos hijos de la Clase CGRIJOTECH_DSP1Dlg, se realiza mediante el propio constructor de la Clase del Dilogo, por lo que, hemos modificado el constructor de las clases hijas, para que stas deriven de I.T.T esp. Sonido e Imagen - 53 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

la clase CGRIJOTECH_DSP1Dlg, en vez de la clase CWnd. La cual crea una ventana de Dilogo nueva. A continuacin se muestra un fragmento de cdigo que muestra lo anterior, junto con una explicacin de los pasos a seguir para realizar la construccin de los dilogos hijos, a partir de una instancia a la clase CGRIJOTECH_DSP1Dlg : //Originalmente, el constructor de la clase tendra este aspecto: CDatosDlg::CDatosDlg(CWnd* pParent /*=NULL*/) : CDialog(Cdistorsion1::IDD, pParent) El parmetro pParent es un puntero a la clase CWnd (ventana) y efectivamente es una referencia a la ventana predecesora, pero lo que nos interesa a nosotros es pasar un puntero a CGRIJOTECH_DSPDlg entonces donde CWnd escribimos CGRIJOTECH_DSPDlg. Y adems agregamos M_pPrincipal(pParent). El constructor quedara de la siguiente manera:

// Constructor del Dialogo Distorsin 1 mediante modificacin en el //constructor CDistorsion1::CDistorsion1(CGRIJOTECH_DSP1Dlg* pParent /*=NULL*/) : CDialog(CDistorsion1::IDD, pParent), m_pPrincipal(pParent)

6.5.1 Funciones Miembro Implementadas y Programacin de Eventos Tal y como se ha expuesto anteriormente, para poder realizar una programacin estructurada con distintos niveles de complejidad debemos declarar funciones miembro de la Clase, que nos permitirn la programacin desde un punto de vista ms estructurado, permitiendo as, una mejor inteligibilidad del cdigo fuente de la Aplicacin. Por otro lado, nos permitirn eliminar redundancias de cdigo, que nos comportaran mayor tiempo de computacin, por lo que su uso se hace necesario a todas luces, en nuestra aplicacin. Adems de dichas funciones, la programacin basada en eventos, nos permitir que mediante la captura de mensajes enviados por el API de Windows, podamos controlar la activacin de los procesos a realizar, ya que se declaran manejadores para los eventos que se quieran controlar, (como es el caso de ONHScroll, ONVScroll, OnInitDialog, OnButton, etc..). Estos manejadores de eventos activarn la ejecucin del cdigo asociado a estos eventos, nicamente cuando sean recibidos, dejando as libre la aplicacin, para que se puedan recibir otros eventos, o cambios en la Aplicacin.

I.T.T esp. Sonido e Imagen

- 54 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

A continuacin se relatan una a una las funciones Miembro Implementadas en la clase CGRIJOTECH_DSP1Dlg. - Abrir_GuardarDialogBox() Funcin para abrir un Archivo mediante un OpenDialogBox que devuelve el path del archivo seleccionado, en caso de que no se haya seleccionado ninguno, un mensaje de Error. CString CGRIJOTECH_DSP1Dlg::Abrir_GuardarDialogBox(bool Ab_Guar) - ActualizarLeds() Esta funcin se encarga de la sincronizacin as como de la visualizacin de los correspondientes Leds que integran el mdulo de Reproduccin de efectos en tiempo real. Tiene 2 parmetros de entrada, index es un entero que corresponde al Array de ndices ( 1 ndice por cada botn pulsado). El segundo parmetro var es de tipo CStatic y corresponde a la variable asignada al Bmp(Led) que controla la carga del Led apagado o encendido, segn su estado (1 0) del entero correspondiente almacenado en el Array de ndices (MostrarBmp[]); void CGRIJOTECH_DSP1Dlg::ActualizarLed(int index, CStatic *var) - ActualizaTodosLeds() Funcin para Cargar un Dialogo correspondiente a un String que indica el nombre del dialogo asociado. Tiene un parmetro de entrada que es de tipo (CString Sefecto).que indica el nombre del efecto a cargar void CGRIJOTECH_DSP1Dlg::ActualizaTodosLeds() - AsignaParametro() Esta funcin nos permite guardar en el array de la estructura Coms los valores de los controles que estn en la lista de efectos seleccionados para posteriormente ser enviados a la DSP mediante RTDX. La funcin tiene un parmetro de entrada que indica el efecto correspondiente codificado previamente mediante la funcin CodificaEfecto(). void CGRIJOTECH_DSP1Dlg::AsignaParametro(int nefecto) - CargaArchivo() Funcin para Cargar un Archivo de configuracin en la aplicacin. Tiene un parmetro de entrada que es de tpo CString donde se le asigna la ruta del archivo de carga. void CGRIJOTECH_DSP1Dlg::CargaArchivo(CString ruta)

I.T.T esp. Sonido e Imagen

- 55 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

- CargaDialogo() Funcin para Cargar un Dialogo correspondiente a un String que indica el nombre del dialogo asociado. Tiene un parmetro de entrada que es de tipo (CString Sefecto), que indica el nombre del efecto a cargar void CGRIJOTECH_DSP1Dlg::CargaDialogo(CString Sefecto) - CodificaEfecto() Funcin que retorna un entero con el valor codificado de un Efecto. La funcin tiene un parmetro de entrada de tipo CString donde se enva la cadena de caracteres a codificar. int CGRIJOTECH_DSP1Dlg::CodificaEfecto(CString ef) - ConvertirEnRatio() Funcin que convierte un valor de posicin de un Slider en Un valor de ratio entre (1 y 20). CString CGRIJOTECH_DSP1Dlg::ConvertirEnRatio(int pos) - CrearTramaTres() Funcin que nos permite Rellenar un Array para posteriormente enviarlo a la DSP (Trama de tipo 3). La trama enviada est compuesta por los campos, tipo de trama, //el numero de efecto codificado, el nmero de parmetros que tiene el efecto, y la posicin de inicio del efecto en el Array de Valores de efecto, que contendr los valores actualizados de configuracin del efecto dado. Los parmetros de entrada son de tipo entero (Consultar Tabla de codificacin). void CGRIJOTECH_DSP1Dlg::CrearTramaTres(int Ttrama, int nEfecto, int nParametros, int InicioParam) - DescodificaEfecto() Funcin que retorna un String mediante un entero introducido con el valor codificado de un Efecto. CString CGRIJOTECH_DSP1Dlg::DescodificaEfecto(int nef)

I.T.T esp. Sonido e Imagen

- 56 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

- EnviaArray() Funcin que nos permite enviar a la DSP un array. Indicndole como parmetros de entrada un entero con el nmero de elementos del Array, y un Array de enteros con el array a enviar. La funcin enva este array convirtindolo en un Tipo Variant y configurado mediante un SAFEARRAYBOUND que se encargar de activar las propiedades del array para enviarlo en el Variant. void CGRIJOTECH_DSP1Dlg::EnviaArray(int nElementos, int Array[ ]) - EnviarTramaTres( ) Funcin que nos permite enviar una Trama de Tipo 3 ( Trama de Actualizacin de Efecto). En primer lugar se activa el canal de salida, despus se enva un entero con el tipo de trama, despus se enva la trama. Finalmente se deshabilita el canal de salida. void CGRIJOTECH_DSP1Dlg::EnviarTramaTres() - ExisteEnLista2() Esta funcin retorna un boleano.{cierto} si el efecto seleccionado est repetido en la Lista 2 y {falso} si el efecto no esta cargado en la lista 2 bool CGRIJOTECH_DSP1Dlg::ExisteEnLista2(CString str) - GuardaEfectoDialogos() Esta funcin nos permitir Guardar los valores en la estructura de Coms de los efectos que se muestran en los diferentes Dilogos de configuracin de efectos, antes de ser enviados en la trama de comunicacin hacia la DSP. void CGRIJOTECH_DSP1Dlg::GuardaEfectoDialogos() - GuardaEfectoInterficie() Esta funcin nos permitir Guardar los valores en la estructura de Coms de los efectos que se muestran en la Aplicacin Principal que son : Amplificacin, puerta de Ruido y Compresor/Expansor, antes de ser enviados en la trama de comunicacin hacia la DSP void CGRIJOTECH_DSP1Dlg::GuardaEfectoInterficie()

I.T.T esp. Sonido e Imagen

- 57 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

- InicializaComunicacion() Esta funcin nos permite la inicializacin a 0 de la estructura de comunicacin para posteriormente ser enviada a la DSP mediante RTDX. void CGRIJOTECH_DSP1Dlg::InicializaComunicacion() - OnButton1() Manejador para el Botn " > "(Aade un nuevo elemento de la Lista1 a la Lista2) si no esta repetido. void CGRIJOTECH_DSP1Dlg::OnButton1()

- OnButton10() Manejador para el botn " < < " (Elimina todos los elementos de la lista de seleccin de Efecto void CGRIJOTECH_DSP1Dlg::OnButton10()

- OnButton11() Manejador de botn (Restaurar Valores). Restaura los valores de configuracin de los controles mediante la carga del archivo de configuracin por Defecto "ConfDefault.gri"/Directorio de la aplicacin. void CGRIJOTECH_DSP1Dlg::OnButton11() - OnButton2() Manejador para el Botn " < " (Quita el elemento seleccionado de la Lista2) void CGRIJOTECH_DSP1Dlg::OnButton2() - OnButton3() Manejador para el Botn Configurar Efecto. Comprobamos los efectos cargados en la Lista 2. Una vez realizado esto se carga en pantalla el dialogo correspondiente al efecto void CGRIJOTECH_DSP1Dlg::OnButton3()

I.T.T esp. Sonido e Imagen

- 58 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

- OnButton6() Manejador para el botn " > >" Copia todos los elementos de la Lista1 en la Lista2 void CGRIJOTECH_DSP1Dlg::OnButton6() - OnButtonDist1() Manejador de botn (Distorsion1). Actualiza el valor del Led del botn adems de cargar el Dialogo de Configuracin del efecto mediante las funciones ActualizarLed() y CargarDialogo() void CGRIJOTECH_DSP1Dlg::OnButtonDist1() - OnButtonDist2() Manejador de boton(Distorsion2). Actualiza el valor del Led del botn adems de cargar el Dialogo de Configuracin del efecto mediante las funciones ActualizarLed() y CargarDialogo() void CGRIJOTECH_DSP1Dlg::OnButtonDist2() - OnButtonDistAnillo() Manejador de botn (DistorsionAnillo). Actualiza el valor del Led del botn adems de cargar el Dialogo de Configuracin del efecto mediante las funciones ActualizarLed() y CargarDialogo() void CGRIJOTECH_DSP1Dlg::OnButtonDistAnillo() - OnButtonF2_1() Manejador de botn (Efecto en tiempo real Fila / Columna). Actualiza el valor del Led. Carga el dialogo asociado al botn. void CGRIJOTECH_DSP1Dlg::OnButtonF2_1() - OnButtonF2_2() Manejador de botn(Efecto en tiempo real Fila / Columna). Actualiza el valor del Led.//Carga el dialogo asociado al botn void CGRIJOTECH_DSP1Dlg::OnButtonF2_2()

I.T.T esp. Sonido e Imagen

- 59 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

- OnButtonF2_3() Manejador de botn(Efecto en tiempo real Fila / Columna). Actualiza el valor del Led. Carga el dialogo asociado al botn void CGRIJOTECH_DSP1Dlg::OnButtonF2_3() - OnButtonF3_1() Manejador de botn(Efecto en tiempo real Fila / Columna). Actualiza el valor del Led. Carga el dialogo asociado al botn void CGRIJOTECH_DSP1Dlg::OnButtonF3_1() - OnButtonF3_2() Manejador de botn(Efecto en tiempo real Fila / Columna). Actualiza el valor del Led. Carga el dialogo asociado al botn void CGRIJOTECH_DSP1Dlg::OnButtonF3_2() - OnButtonF3_3() Manejador de botn(Efecto en tiempo real Fila / Columna). Actualiza el valor del Led. Carga el dialogo asociado al botn void CGRIJOTECH_DSP1Dlg::OnButtonF3_3() - OnButtonF4_1() Manejador de botn(Efecto en tiempo real Fila / Columna). Actualiza el valor del Led. Carga el dialogo asociado al botn void CGRIJOTECH_DSP1Dlg::OnButtonF4_1() - OnButtonF4_2() Manejador de botn(Efecto en tiempo real Fila / Columna). Actualiza el valor del Led. Carga el dialogo asociado al botn. void CGRIJOTECH_DSP1Dlg::OnButtonF4_2() - OnButtonF4_3() Manejador de botn(Efecto en tiempo real Fila / Columna). Actualiza el valor del Led. Carga el dialogo asociado al botn void CGRIJOTECH_DSP1Dlg::OnButtonF4_3() I.T.T esp. Sonido e Imagen - 60 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

- OnButtonF5_1() Manejador de botn(Efecto en tiempo real Fila / Columna). Actualiza el valor del Led. Carga el dialogo asociado al botn void CGRIJOTECH_DSP1Dlg::OnButtonF5_1() - OnButtonF5_2() Manejador de botn(Efecto en tiempo real Fila / Columna). Actualiza el valor del Led. Carga el dialogo asociado al botn void CGRIJOTECH_DSP1Dlg::OnButtonF5_2() - OnButtonF5_3() Manejador de botn(Efecto en tiempo real Fila / Columna). Actualiza el valor del Led. Carga el dialogo asociado al botn void CGRIJOTECH_DSP1Dlg::OnButtonF5_3() - OnButtonPlay() Manejador del Botn play. Esta funcin comprueba que casilla de verificacin est activada y en caso de que no est ni "Configuracin de Efecto", ni "Efecto en Tiempo Real" activado, muestra por pantalla un mensaje de aviso. Una vez comprobados los condicionales se enva un array de enteros a la DSP con el estado de activacin de los efectos y otro array con el valor de cada Slider (parmetros del efecto) void CGRIJOTECH_DSP1Dlg::OnButtonPlay() - OnButtonStop() Manejador del Botn Stop. Esta funcin comprueba que casilla de verificacin est activada y en caso de que no est ni "Configuracin de Efecto", ni "Efecto en Tiempo Real" activado saca por pantalla Un mensaje de aviso. Una vez comprobados los condicionales se enva un array de enteros a la DSP con el estado de activacin de los efectos y otro array con el valor de cada Slider (parmetros del efecto, en nuestro caso 0). void CGRIJOTECH_DSP1Dlg::OnButtonStop()

I.T.T esp. Sonido e Imagen

- 61 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera - OnCargarArchivo()

Procesador Digital de efectos mediante DSP TMS320C6713

Manejador de botn (Cargar Configuracin)para Cargar un Archivo de configuracin mediante un OpenDialogBox. Selecciona un archivo y lo abre, para despus cargar el valor de los parmetros del archivo en el programa. void CGRIJOTECH_DSP1Dlg::OnCargarArchivo() - OnCheck1() Funcin que verifica el valor de la Casilla de Verificacin "Amplificacin". Activa los controles si esta verificada la casilla y en caso contrario los desactiva. void CGRIJOTECH_DSP1Dlg::OnCheck1()

- OnCheck2() Funcin que verifica el valor de la Casilla de Verificacin "Puerta de Ruido" Activa los controles si esta verificada la casilla y en caso contrario los desactiva. void CGRIJOTECH_DSP1Dlg::OnCheck2() - OnCheck3() Funcin que verifica el valor de la Casillas de Verificacin Compresor/Expansor". Activa los controles si esta verificada la casilla y en caso contrario los desactiva void CGRIJOTECH_DSP1Dlg::OnCheck3() - OnCheck4() Funcin que verifica el valor de la Casilla de Verificacin "Configuracin de Efectos". Activa los controles si esta verificada la casilla y en caso contrario los desactiva. void CGRIJOTECH_DSP1Dlg::OnCheck4() - OnCheck5() Funcin que verifica el valor de la Casilla de Verificacin "Efectos en T.Real". Activa los controles si esta verificada la casilla y en caso contrario los desactiva. Adems activa el "modulo Controles de Configuracin" void CGRIJOTECH_DSP1Dlg::OnCheck5()

I.T.T esp. Sonido e Imagen

- 62 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera - OnCheck6()

Procesador Digital de efectos mediante DSP TMS320C6713

Funcin que verifica el valor de la Casilla de Verificacin "Configuracin de Efectos". Activa los controles si esta verificada la casilla y en caso contrario los desactiva. void CGRIJOTECH_DSP1Dlg::OnCheck6() - OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) Manejador para eventos de desplazamiento de los sliders horizontales void CGRIJOTECH_DSP1Dlg::OnHScroll(UINT CScrollBar* pScrollBar) - OnClose() manejador para enviar un mensaje de aviso cuando se cierra la aplicacin void CGRIJOTECH_DSP1Dlg::OnClose() - OnDblcklList1() Manejador para la doble pulsacin del Ratn sobre la Lista 1. void CGRIJOTECH_DSP1Dlg::OnDblclkList1() - OnDblcklList2() Manejador para la doble Pulsacin del ratn sobre la Lista 2 (ver CGRIJOTECH_DSP1Dlg::OnButton3(). void CGRIJOTECH_DSP1Dlg::OnDblclkList2() - OnFileAbrirarchivo() Manejador de botn(Men->Abrir Archivo). Carga los valores contenidos en un archivo *.gri en la aplicacin void CGRIJOTECH_DSP1Dlg::OnFileAbrirarchivo() - OnFileCerrar() Manejador de botn(Men->Files->Cerrar). Guarda la configuracin del archivo y cierra la Aplicacin. void CGRIJOTECH_DSP1Dlg::OnFileCerrar() nSBCode, UINT nPos,

I.T.T esp. Sonido e Imagen

- 63 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera - OnFileSalvarconfiguracion() Manejador de botn (Men->Files->Salvar configuracin del archivo

Procesador Digital de efectos mediante DSP TMS320C6713

Configuracin).

Guarda

la

void CGRIJOTECH_DSP1Dlg::OnFileSalvarconfiguracion() - OnGuardarArchivo() Manejador de botn (Guardar Archivo). Guarda los Archivos de configuracin *.gri. Guarda los valores de configuracin de la aplicacin en un archivo, mediante la asignacin de un path gracias a un dialogCloseBox. void CGRIJOTECH_DSP1Dlg::OnGuardarArchivo()

- OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) Manejador para detectar los eventos donde se arrastre un Slider horizontal void CGRIJOTECH_DSP1Dlg::OnHScroll(UINT CScrollBar* pScrollBar) - OnInitDialog() Manejador que enva un mensaje al Iniciar la construccin del Dialogo Principal de la Aplicacin. En ste se encuentra la inicializacin de los controles mostrados en la ventana principal. BOOL CGRIJOTECH_DSP1Dlg::OnInitDialog() - OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) Manejador para detectar los eventos donde se arrastre un Slider vertical void CGRIJOTECH_DSP1Dlg::OnVScroll(UINT CScrollBar* pScrollBar) - SalvaConfiguracion() Esta funcin nos permite guardar los valores actuales de la aplicacin en un Archivo. void CGRIJOTECH_DSP1Dlg::SalvaConfiguracion(CString ruta) nSBCode, UINT nPos, nSBCode, UINT nPos,

Nota: Los cdigos fuente, as como las declaraciones de las funciones, y el resto de documentacin, se encuentra en la Seccin Anexos, adems de debidamente incluidos en el CD. I.T.T esp. Sonido e Imagen - 64 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

6.6 Las Clases derivadas de CGRIJOTECH_DSP1Dlg


Tal y como se comenta en el apartado 4.3 de esta memoria, las distintas clases que contendrn los objetos ventana de dilogo para la configuracin de efectos, deben declararse como derivadas de la clase principal CGRIJOTECH_DSP1Dlg, ya que todas stas, debern compartir el valor de sus variables con la clase principal. As nicamente necesitaremos declarar una variable como puntero a dichos dilogos, para as poder compartir la informacin de los controles de configuracin de efectos con la clase principal, y posteriormente ser enviados a la DSP para realizar el procesado de la seal. A Continuacin se Listan las clases derivadas de CGRIJOTECH_DSP1Dlg: - Clase CChorus: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Chorus. Su constructor es el siguiente: CChorus(CGRIJOTECH_DSP1Dlg* pParent = NULL)

Figura 27. Dilogo de la Clase CChorus programada en Visual C++ ( GRIJOTECH DSP1 )

- Clase CDelay: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Delay. CDelay(CGRIJOTECH_DSP1Dlg* pParent = NULL)

I.T.T esp. Sonido e Imagen

- 65 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 28 Dilogo de la Clase Cdelay programada en Visual C++ ( GRIJOTECH DSP1 )

- Clase Cdistorsion1: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Distorsion1. Cdistorsion1(CGRIJOTECH_DSP1Dlg* pParent = NULL)

Figura 29 Dilogo de la Clase Cdistorsion1 programada en Visual C++ ( GRIJOTECH DSP1 )

- Clase Cdistorsion2: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Distorsion2. Cdistorsion2(CGRIJOTECH_DSP1Dlg* pParent = NULL) I.T.T esp. Sonido e Imagen - 66 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 30 Dilogo de la Clase Cdistorsion2 programada en Visual C++ ( GRIJOTECH DSP1 )

- Clase CFlanger: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Flanger. CFlanger(CGRIJOTECH_DSP1Dlg* pParent = NULL)

Figura 31 Dilogo de la Clase CFlanger programada en Visual C++ ( GRIJOTECH DSP1 )

- Clase CFPAltos: Ser la clase que contendr la ventana del dilogo de configuracin del Filtro Pasa Altos. CFPAltos(CGRIJOTECH_DSP1Dlg* pParent = NULL) I.T.T esp. Sonido e Imagen - 67 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 32 Dilogo de la Clase CFPAltos programada en Visual C++ ( GRIJOTECH DSP1 )

- Clase CFPBajos: Ser la clase que contendr la ventana del dilogo de configuracin del Filtro Pasa Bajos. CFPBajos(CGRIJOTECH_DSP1Dlg* pParent = NULL)

Figura 33 Dilogo de la Clase CFPBajos programada en Visual C++ ( GRIJOTECH DSP1 )

- Clase CFPBanda: Ser la clase que contendr la ventana del dilogo de configuracin del Filtro Pasa Banda. CFPAltos(CGRIJOTECH_DSP1Dlg* pParent = NULL) I.T.T esp. Sonido e Imagen - 68 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 34 Dilogo de la Clase CFPBanda programada en Visual C++ ( GRIJOTECH DSP1 )

- Clase CReverb: Ser la clase que contendr la ventana del dilogo de configuracin del efecto Reverb. CReverb(CGRIJOTECH_DSP1Dlg* pParent = NULL)

Figura 35 Dilogo de la Clase Creverb programada en Visual C++ ( GRIJOTECH DSP1 )

Tal y como se ha mostrado, todos los constructores por defecto, al crear el dilogo, crean un objeto Dilogo que hereda de la clase principal de la aplicacin, por lo que se permitir el manejo de estas clases adems de la manipulacin de sus variables. I.T.T esp. Sonido e Imagen - 69 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

No debemos olvidar que el fin ltimo de estas clases, o ventanas de dilogo es permitir la configuracin del valor de los efectos seleccionados. Estos dilogos se abrirn como modales, as que hasta que stos no son cerrados, la aplicacin se interrumpe, dejando inactiva la Interfaz, hasta que el dilogo sea cerrado. Ms adelante, podramos pensar en cambiar este tipo de configuracin por la apertura de los dilogos de forma No Modal, ya que as permitiramos la configuracin de varios efectos a la vez en el modo de Reproduccin en Tiempo real.

6.7 La Clase IrtdxExp

La clase IrtdxExp, ser la encargada de gestionar la comunicacin mediante las Libreras RTDX (Real Time Data Exchange), entre nuestra aplicacin y el cdigo en C compilado mediante la Herramienta propietaria de Texas Instruments, Code Composer Studio. Esta clase se crea a partir de la importacin de la Dll Rtdxint.dll suministrada por Texas Instruments en las Carpetas del CCS. Las Libreras RTDX sern entonces el vehculo necesario para poder comunicar las dos aplicaciones, ya que la misin fundamental de nuestra Interfaz grfica, es el envo y configuracin de los parmetros de procesado, para que as, una vez configurados debidamente, sean enviados a la DSP, a travs del Code Composer Studio (Servidor de datos), que nos suministrar las variables necesarias para poder pasar el valor de los efectos a configurar, as como su activacin o no, y mediante estos parmetros poder realizar el procesado de la seal, gracias a los algoritmos previamente implementados, compilados y enviados a la Dsp, con el CCS. As, tenemos que la complejidad est encapsulada en la Clase, proveniente de la librera dinmica (dll). Por lo tanto, RTDX, posee dos Interfaces: El primero corresponde a la parte de Host, en nuestro caso nuestra aplicacin en VC++, y la segunda, a la parte de Target ( Cdigo en C, con la implementacin de los algoritmos de procesado de la seal en la DSP). As, que debemos utilizar en este caso el Interfaz para la Parte de Host. El Interfaz RTDX de Exportacin permite el acceso a las funcionalidades desde el Cliente en el host. Usando estas funciones, la aplicacin cliente puede obtener datos desde la librera RTDX del Host o enviar datos hacia la Librera RTDX del Host. Las funciones en este interfaz pueden ser usadas con clientes Host escritos en Visual Basic, C++ , o Labview. I.T.T esp. Sonido e Imagen - 70 por: J.M.Grijota Delgado

Proyecto Fin de Carrera Activacin del Procesador:

Procesador Digital de efectos mediante DSP TMS320C6713

Set processor() , Selecciona placa y tipo de CPU Funciones de Configuracin: (La configuracin de RTDX tambin puede ser realizada va interfaz grfica de RTDX, (Visualizada con el software Code Composer Studio.) ConfigureRTDX ConfigureLogFile EnableRtdx, DisableRtdx EnableChannel, DisableChannel Funciones de Apertura/Cierre de Canales: Open Close Funciones de Lectura de los Canales: ReadSAI1, ReadSAI2, ReadSAI4, ReadSAF4, ReadSAF8 ReadSAI2V, ReadSAI4V Read ReadI1, ReadI2, ReadI4, ReadF4, ReadF8

Funciones de Escritura en los Canales: Write WriteI1, WriteI2, WriteI4, WriteF4, WriteF8 StatusOfWrite Funciones de Bsqueda en los canales: Seek SeekData Funciones de Flujo de los Canales: Flush Funcin de Rewind: Rewind Funciones para obtencin de parmetros: GetChannelID GetMsgID GetMsgLength GetMsgNumber

I.T.T esp. Sonido e Imagen

- 71 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera GetNumMsgs GotoNextMsg Funciones de Diagnstico: GetChannelStatus GetRTDXRev GetStatusString GetCapability RunDiagnostics GetDiagFilePath

Procesador Digital de efectos mediante DSP TMS320C6713

Mediante los mtodos y funciones anteriormente expuestos, tendremos la posibilidad de enviar y recibir datos, y por lo tanto, hacer factible la comunicacin entre la plataforma Pc y la Plataforma DSP. Cumpliendo as con el objetivo de comunicar los dispositivos para poder disponer de un generador de efectos digitales que corra sobre un PC y procesado por la DSP, ya que as aprovechamos las capacidades de clculo de esta ltima, liberando al procesador del PC de realizar tareas de procesado, cuyo rendimiento no es tan ptimo como el de la DSP. Para poder utilizar la clase IrtdxExp en nuestra aplicacin se declara una variable puntero a esta clase y con ella podemos acceder a los mtodos de sta. Para poder realizar la comunicacin debemos distinguir entre los dos tipos de canales disponibles: - Canales de Entrada: Permiten la comunicacin desde la Aplicacin Target hacia la aplicacin host. Estos canales son por definicin de entrada de Datos, y por lo tanto, para poder acceder a stos se debe utilizar la funcin Read(), aunque previamente se debe haber definido dicho canal de entrada como una variable global de la Clase. - Canales de Salida: Permiten la comunicacin desde la Aplicacin Host hacia la Target. Estos canales nos proporcionarn la posibilidad de enviar datos de configuracin al cdigo que se est ejecutando en la aplicacin Target que correr sobre la DSP. Para poder utilizar estos canales de Salida, se deben declarar previamente y despus acceder al envo de informacin mediante la funcin Write() y sus derivados. Adems no debemos olvidar que los canales no se pueden declarar como bidireccionales, por esto, un canal ser de entrada o salida , exclusivamente. Adems debemos tener en cuenta, que nuestro proyecto se basa en la comunicacin de ambas interficies, ya que stas se conectan a travs del USB, comportndose la DSP como una tarjeta externa conectada mediante el protocolo antes mencionado, cuyo propsito ser el de procesar seales de audio y generar efectos digitales, mediante dichas seales y la parametrizacin de los valores de configuracin de los correspondientes I.T.T esp. Sonido e Imagen - 72 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

efectos, con el fin de generar sonidos nuevos, que enriquezcan nuestras composiciones musicales. A continuacin se exponen fragmentos de cdigo como ejemplo del uso de la Interfaz Rtdx:

void CGRIJOTECH_DSP1Dlg::EnviaArray(int nElementos, int Array[]) {


long status; // mostrara el status de la llamada a la API de RTDX HRESULT hr; // manejara el status de la API de los objetos COM VARIANT sa; // almacenara el valor a un puntero SAFEARRAY SAFEARRAYBOUND rgsabound[1]; // Inicializa la dimensin de un SAFEARRAY long bufferstate; // Almacenara el estado del buffer de escritura de la aplicacin ::CoInitialize( NULL ); // Inicializacin del objeto COM ::VariantInit( &sa ); // Inicializacin del objeto VARIANT sa.vt = VT_ARRAY | VT_I4; // Inicializamos el objeto Variant para que sea de // enteros de 4 bytes (32 bits) rgsabound[0].lLbound = 0; // Inicializamos el valor mnimo de salto del // SAFEARRAY rgsabound[0].cElements = nElementos; // Inicializamos el numero mximo // de elementos del SAFEARRAY sa.parray = SafeArrayCreate( VT_I4, 1, rgsabound );// Creamos el // SAFEARRAY con los valores inicializados anteriormente for (int i = 0; i < (signed)sa.parray->rgsabound[0].cElements; i++) // Insertamos en el SAFEARRAY los valores del Array pasado como parmetro hr = ::SafeArrayPutElement( sa.parray, (long*)&i, (long*)&Array[i]); status = pRTDX->Write(sa, &bufferstate);// Enviamos el array hacia la DSP

::VariantClear(&sa); ::CoUninitialize();

// Limpiamos el valor del objeto VARIANT // Destruimos el objeto COM

void CGRIJOTECH_DSP1Dlg::EnviarTramaTres() { long buffer; pRTDX->EnableChannel("control_channel");// Habilitamos el canal control_channel

I.T.T esp. Sonido e Imagen

- 73 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

pRTDX->WriteI4((long)3, &buffer); // escribimos el tipo de trama a enviar EnviaArray(10,InOut.ArrayActEfect); // Enviamos la trama a la aplicacin Target pRTDX->DisableChannel("control_channel"); // Deshabilitamos el canal }

Estas funciones dan un claro ejemplo de la implementacin realizada en Visual C++, mediante el uso de RTDX. La primera funcin se encarga de Enviar un Array de Tipo Variant, que encapsular los valores a retrasmitir hacia la dsp. La segunda funcin se encarga de enviar las tramas de Tipo 3 hacia la DSP, al igual que en el caso anterior, tenemos que la comunicacin se realiza mediante los mtodos y funciones proporcionadas por la clase IrtdxExp importada mediante la dll RTDXint.dll . Se debe notar que en la aplicacin no se utiliza la directiva #Import NombreDll .Dll, ya que en nuestro caso, se importa directamente con el ClassWizard de VC++, crendose automticamente un archivo RTDXint.h y otro RTDXint.cpp, los cuales son incluidos directamente en la aplicacin por el classWizard, a la vez que aparece en la Pestaa ClassView, la Clase tal y como se ha declarado IrtdxExp. Slamente nos quedar declarar una variable global como un puntero a la clase, para poder manejar las funcionalidades que aporta el API de RTDX. El nombre de nuestra variable es pRTDX.

6.8 Declaracin de Estructuras Pblicas y Tipos Definidos

Con el fin de mantener agrupados los datos, se opta por declarar dos estructuras en la Clase Principal CGRIJOTECH_DSP1Dlg. Estas son: struct Efectos // { Amplif Ampli; P_Ruido PRuido; Com_Exp ComExp; Distor Distorsion[2]; Choruses Chorus; Delays Delay; Flan Flanger; Rev Reverb; TiposFiltro Filtro; int contaEfecto; int Lefectos[20]; } I.T.T esp. Sonido e Imagen - 74 por: J.M.Grijota Delgado //Definicin de la estructura efectos. El ndice de los miembros indica el numero de efectos

Proyecto Fin de Carrera struct Com // Definicin de la estructura Com. { int ArrayControl[20]; int VControl[50]; int ContaControl; int ContaValor; int ArrayActEfect[10]; }; Los tipos definidos son los siguientes:

Procesador Digital de efectos mediante DSP TMS320C6713

typedef int Amplif[2]; //Tipos definidos para la estructura efectos, el indice //indica el numero de parmetros typedef int P_Ruido[2]; typedef int Com_Exp[4]; typedef int Distor[4]; typedef int Delays[5]; typedef int Choruses[8]; typedef int Filter[5]; typedef int Rev[5]; typedef int Flan[7]; typedef int TiposFiltro[3];

6.8.1 Estructura Efectos La estructura Efectos ser la encargada de almacenar los datos de configuracin de los efectos. Adems se cargarn aqu en primera instancia los valores de configuracin por defecto que lee la aplicacin del fichero configuracionDefecto.gri (Archivo de configuracin Por Defecto). A continuacin se describen todos los campos que integran dicha estructura: - Amplif Ampli: Se declara un tipo definido Amplif, el cual consta de un array de dos elementos, y posteriormente se declara la variable Ampli del tipo Amplif. En dicha variable se almacenar el valor de Amplificacin de Ambos canales (Canal Izquierdo, Canal Derecho). - P_Ruido Pruido: Se declara un tipo definido P_Ruido, el cual est compuesto de un Array de enteros, compuesto de dos elementos, posteriormente se declara la variable Pruido, de este mismo tipo, en la estructura. En este array de enteros se almacenarn los valores de configuracin para el efecto Puerta de Ruido. - Com_Exp ComExp: Se declara un tipo definido Com_Exp que consta de un array de enteros, con cuatro elementos, posteriormente se declara la variable CompExp, de este mimo tipo, en la estructura. En este Array de I.T.T esp. Sonido e Imagen - 75 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

enteros se almacenarn los valores de configuracin para los diferentes Sliders que componen el efecto Compresor/Expansor. - Distor Distorsion[2]: Se declara un tipo definido Distor que consta de un array de enteros, con cuatro elementos, posteriormente se declara la variable Distorsin que contendr [4][2] posiciones para almacenar los datos de los valores de configuracin del efecto Distorsin1 y los valores del efecto, Distorsion2. - Choruses Chorus: Se declara un tipo definido Choruses que consta de un array de enteros, con cuatro elementos, posteriormente se declara la variable Chorus de este mismo tipo, en la estructura. En este array de enteros se almacenarn los valores de configuracin para el efecto Chorus. - Delays Delay: Se declara un tipo definido Delays que consta de un Array con 5 elementos. Finalmente, en la estructura se declara un entero del tipo Delay es decir Delay[5] posiciones, para controlar 1 efectos de Delay con 5 parmetros por efecto. En esta variable se almacenar el valor de configuracin para los distintos componentes que controlan los efectos de Delay. - Flan Flanger: Se declara un tipo definido Flan que consta de un Array con 7 elementos. Finalmente, en la estructura se declara un entero del tipo Flan es decir Flanger[7] posiciones, para controlar 1 efectos de Flanger con 7 parmetros por efecto. En esta variable se almacenar el valor de configuracin para los distintos componentes que controlan los efectos de Flanger. - Rev Reverb: Se declara un tipo definido Rev que consta de un Array con 5 elementos. Finalmente, en la estructura se declara un entero del tipo Rev es decir Reverb[5] posiciones, para controlar 1 efectos de Reverb con 5 parmetros por efecto. En esta variable se almacenar el valor de configuracin para los distintos componentes que controlan los efectos de Reverb. - TiposFiltro Filtro: Se declara un tipo definido TiposFiltro que consta de un Array con 3 elementos. Finalmente, en la estructura se declara un entero del tipo TiposFiltro, es decir Filtro[3] posiciones, para controlar 3 efectos de Filtrado de la seal con 1 parmetros por efecto. En esta variable se almacenar el valor de configuracin para los distintos componentes que controlan los efectos de Filtro Pasa Altos, Filtro Pasa Bajos y Filtro PasaBanda. - int contaEfecto: Se declara un entero que almacenar el nmero de efectos seleccionados en la lista de Seleccin de efecto. - int Lefectos[20]: Este campo de la estructura est declarado como un Array de 20 elementos. Esta variable contendr los efectos seleccionados en la Lista de efectos seleccionados, debidamente codificados mediante la funcin CodificaEfecto(), miembro de la clase CGRIJOTECH_DSP1Dlg. I.T.T esp. Sonido e Imagen - 76 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

6.8.2 Estructura Com La estructura Com ser la encargada de guardar los valores y variables necesarias para ser enviados a la DSP. La estructura almacenar en dos Arrays, tanto un Canal de Control de Efecto { ArrayControl[20] } que determina qu efectos estn activados, y cules no), y un Canal de Valor de Configuracin {Vcontrol[50]} (Que almacenar los valores de configuracin de los efectos deseados). Adems se declaran 2 enteros, los cuales almacenarn los ndices de cada Array. A continuacin se realiza una descripcin de todos los campos de la Estructura Coms: - int ArrayControl[20]: Este Array se encargar de almacenar los efectos activados para ser procesados posteriormente por la DSP. El valor de cada posicin de memoria ser 0 o 1, en el caso de que el efecto est activado desactivado. - int VControl[50]: En este Array se almacenarn los valores de configuracin de los efectos a procesar por la DSP. Cada posicin de memoria est predefinida como la correspondiente a un control Slider por , lo que almacenar el valor de configuracin de dicho Slider, para posteriormente ser procesadas en la aplicacin Target. - int ArrayActEfect[10]: Este Array se encargar de almacenar los valores de Actualizacin de un efecto en concreto. El valor de cada posicin del Array corresponder a una trama definida en el apartado 4.7 (Protocolo de Codificacin y Comunicacin entre aplicaciones). int ContaControl: Se declara este entero como ndice para el arrayControl[20], esta variable nos indicar el nmero total de efectos seleccionados a procesar por la DSP. - int ContaValor: Se declara este entero como ndice para el Array Vcontrol[50]. Indica el nmero mximo de parmetros a configurar en la DSP. Despus de declarar las estructuras y tipos definidos, debemos declarar una variable del tipo estructura para cada una de stas en nuestra aplicacin, para poder utilizarlas desde cualquier funcin o handler de la clase, adems se declaran como pblicas para poder atender a la llamada de stas desde cualquier funcin de la clase.

En nuestra aplicacin se declaran las siguientes variables:

I.T.T esp. Sonido e Imagen

- 77 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera struct Efectos p; struct Com InOut;

Procesador Digital de efectos mediante DSP TMS320C6713

De esta manera, se declara un objeto Struct Efectos llamado p que contendr los campos de la estructura Efectos para poder guardar en ella los datos necesarios para el programa. El mismo caso se da para la variable InOut, que ser la encargada de almacenar los datos de control y valores de configuracin de los efectos, para posteriormente ser enviados a la DSP, y que sta realice el procesado de la seal segn el efecto/s a emplear.

6.9 Protocolo

de aplicaciones.

Codificacin

Comunicacin

entre

Con el fin de optimizar recursos y eficiencia en el procesado debemos utilizar un nico canal de Salida para enviar los datos necesarios a la DSP, sin necesidad de ralentizar el procesado de la seal, por lo que debemos enviar el mnimo de datos posible, para no dificultar la tarea de la DSP. Sin embargo, en nuestra aplicacin tenemos Cadenas de Caracteres, enteros, valores de posicin, elementos insertados en Listas, etc. Con el fin de unificar y simplificar la comunicacin se opta por el envo de 3 Arrays, el primero se encargar del Control de los efectos seleccionados. Es decir, que si asociamos una posicin del Array a un efecto, Si marcamos esta posicin con un entero, siendo sus posibles valores {0 1} podremos determinar si un efecto en cuestin est activado o no. Por otro lado, tambin debemos enviar el valor de configuracin de cada control de la aplicacin hacia la DSP, esto tambin se realiza siguiendo el principio antes expuesto, ya que si se asocia una posicin del Array a un Control, y guardamos en sta el valor de configuracin de dicho elemento, podemos asociar dicho valor a su correspondiente control. Es importante mencionar que el envo de estos arrays se realizar una nica vez (Al pulsar el botn Play), ya que posteriormente, simplemente ser necesario actualizar el valor del efecto que se configure, y por lo tanto, nos bastara enviar un Array con 10 elementos: El primero, un entero con el valor codificado del efecto, el segundo, un entero con el numero de efecto codificado (en Vcontrol [ ]), el tercero con un contador de parmetros a configurar, y desde el cuarto elementos hasta el noveno con los posibles valores de los parmetros configurados. Por lo tanto deberemos distinguir entre los distintos tipos de tramas que debemos enviar a la DSP. La posicin 0 estar codificada con los nmeros 1, 2, 3 segn se trate de una trama de control, una de Valor de configuracin una trama de Actualizacin de Efecto.

I.T.T esp. Sonido e Imagen

- 78 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

A continuacin, se describen las tramas. as como sus posibles valores y asignacin de posicin segn efecto. Este tipo de codificacin sencilla nos servir para optimizar la transmisin de datos. Por lo consiguiente deberemos enviar tres tipos diferentes de tramas: 6.9.1 Trama Tipo 1

Int ArrayControl [ 20 ] ; Valor de la Posicin Posicin en el Array 1 X X X X X X X X X X X X X X X X X X X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 X=01 0= Reservado.Activacin a 1(trama Control) 1 = Efecto Amplificacin 3 = Efecto Compresor/Expansor 5 = Efecto Distorsion2 7 = Efecto Chorus 9 = Efecto Flanger 11 = Filtro Paso Bajo 13 = Z 15 = Z iltr Paso Bajo 17 = Z Filtro Paso Bajo 19 = Z Filtr 2 = Efecto Puerta de Ruido 4 = Efecto Distorsion1 6 = Efecto Delay 8 = Efecto Reverb 10 = Filtro Paso Alto 12 = Filtro Paso Banda 14 = Z 16 = Z Filtro Paso Banda 18 = Z Filtro Paso Banda

nota: Se marca con Z las posiciones para futuros efectos no implementados

I.T.T esp. Sonido e Imagen

- 79 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

6.9.2 Trama Tipo 2 int Vcontrol[50];

2 0

X X X X X X X X X X X X X X X X X X X 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

X X X X X X X X X X X X X X X X X X 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 X X X X X X X X X X X X Valor Posicin 38 39 40 41 42 43 44 45 46 47 48 49 Posicin Array

X = Cualquier valor entero 0 = Reservado. Activacin a 2 (trama valor Configuracin)

1 = Canal.Izq Amplificacin 3 = % Atenuacin P.Ruido 5 = Ratio Compresor/Exp 7 = Tataque 9 = Nivel Distorsion1 11 = Nivel Distorsin2 13 = T.Ataque Distorsin2 15 = T.Retardo Delay 17 = T.Retraso Chorus 19 = Numero de Voces Chorus 21 = Amplitud Chorus 23 = Profundidad barrido Chorus 25 = T Primeras Reflexiones Reverb 27 = Atenuacin C.Reverb Reverb 29 = Densidad R.tardas Reverb 31 = Retraso Flanger 33 = Amplitud Flanger 35 = Profundidad Barrido Flanger 37 = Filtro Paso Alto 39 = Filtro Paso Banda 41 = Z 43 = Z 45 = Z 47 = Z 49 = Z

2 = Canal.Der Amplificacin 4 = Umbral P.Ruido 6 = Umbral Compresor/Exp 8 = T.Relajacin Compresor/Exp 10 = Umbral Distorsin1. 12 = Umbral Distorsin2. 14 = T.Relajacion Distorsin2. 16 = Mix Delay 18 = Mix Chorus 20 = Desfase entre voces Chorus 22 = Frecuencia Chorus 24 = Tipo de Onda Chorus 26 = Rtmid Reverb 28 = Nivel C.Reverberante Reverb 30 = Gan.Retroalimentacin Flanger 32 = Mezcla Seal Flanger 34 = Frecuencia Flanger 36 = Tipo de Onda Flanger 38 = Filtro Paso Bajo 40 = Z 42 = Z 44 = Z 46 = Z 48 = Z

nota: Se marca con Z las posiciones para futuros efectos no implementados

I.T.T esp. Sonido e Imagen

- 80 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

6.9.3 Trama Tipo 3

Int ArrayActEfect [ 10 ];

3 0

X 1

X 2

X 3

X 4

X 5

X 6

X 7

X 8

01 9

Valor de la posicin Posicin en el Array

X = Cualquier valor entero

0 = Reservado. Activacin a 3 (trama Actualizacin de Efecto) 1 = Efecto codificado en ArrayControl [ ] 3= Numero parmetro Inicio en Vcontrol[ ] 5= Valor Parmetro 2 7= Valor Parmetro 4 9= Efecto (Desactivado / Activado) (0 1) 2 = Contador Parmetros 4 = Valor Parmetro 1 6 = Valor Parmetro 3 8 = Valor Parmetro 5

Mediante la codificacin del primer elemento del array con los valores 1, 2 3, el receptor tiene la capacidad de poder detectar que tipo de trama se ha enviado desde el emisor, en nuestro caso, la aplicacin en VC++. As estaremos en disposicin de determinar acciones a realizar segn la trama sea de tipo 1, 2 3. De esta manera optimizamos la comunicacin, ya que as, no ser necesario enviar todos los valores de configuracin, sino que, se deberan enviar las dos primeras opciones de tipo de trama, al inicializar la comunicacin para transferir los datos de configuracin inicial, y despus de esto, simplemente se enviar una trama de tipo 3 cada vez que se actualice el valor de un efecto, tanto en la Zona 1 de la aplicacin, como para cualquier dilogo de efecto que necesitemos configurar. El resto de elementos de los arrays codifican el valor de un efecto asociando a ste con la posicin del Array, tal y como se ha mostrado en las tramas de configuracin para la comunicacin entre las aplicaciones Host y Target. Por ltimo, la posicin 9 del Array indica con un entero (0 1), si el efecto est apagado o encendido.

I.T.T esp. Sonido e Imagen

- 81 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

6.10 Diagramas de Flujo y Esquemas de comunicacin

Tal y como dice el dicho, ms vale una imagen que mil palabras y haciendo , analoga de este proverbio, nos apresuramos a mostrar un diagrama de flujo, donde se muestra la interconexin y modo de funcionamiento de nuestra aplicacin, adems de dar un esquema general de conexionado e interrelacin entre las distintas plataformas comunicadas. Cabe recordar que este diagrama representa slamente la aplicacin creada en Visual C++.

Figura 36 Diagrama de Flujo de la aplicacin programada en Visual C++ ( GRIJOTECH DSP1 )

I.T.T esp. Sonido e Imagen

- 82 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

7. Programacin en C/ C++ ( Code Composer Studio)


El Software Code Composer Studio, es suministrado por el fabricante Texas Instruments, se trata de un compilador de C/ C++, pero adems ofrece funcionalidades como Servidor para objetos RTDX, por lo que se hace imprescindible para la ejecucin de la comunicacin entre la DSP y la aplicacin en el host. Adems es el encargado de gestionar y definir las interrupciones tanto por software, como por hardware que se produzcan en nuestra DSP Por otro lado, Code Composer Studio, a partir de ahora referenciado como CCS, es un potente software que nos permitir compilar nuestro programas, y cargarlos posteriormente en nuestra DSP, para su ejecucin en tiempo real, adems de monitorizar el intercambio de variables, generar Interrupciones de hardware o software, o simplemente como servidor de objetos COM y OLE , facilitando as, la comunicacin de la aplicacin que corre sobre la DSP y cualquier dispositivo que intente conectarse con ste, mediante las libreras RTDX (Real Time Data Exchange), que sern las encargadas en ltima instancia de que dicha comunicacin se lleve a cabo. El uso de este software no es demasiado intuitivo, por lo que se debe hacer un estudio pormenorizado de sus funcionalidades, y parmetros de configuracin. Deberemos crear interrupciones para adquirir datos en el convertidor A/D , D/A , adems debemos tener en cuenta, que mediante esta plataforma, se implementarn los algoritmos de procesado de seal para cada efecto. As, se hace necesario el breve relato de los parmetros ms importantes de configuracin de este Software, as como ms adelante se comentarn los algoritmos utilizados para procesar la seal.

7.1 Metodologa y configuracin de la Aplicacin (CCS)


Code Composer Studio, ser el encargado de compilar los algoritmos para posteriormente, ensamblarlos y enviarlos a la DSP mediante cdigo Assembler *.asm. Adems crear archivos de configuracin y control del sistema, tales como gestin de interrupciones y activacin de parmetros predefinidos para un tipo de plataforma. Debemos tener en cuenta que el compilador posee capacidad para interactuar con un sinfn de formatos y diferentes dispositivos, por lo que se har necesaria, la correcta configuracin de la aplicacin para obtener el cdigo compilado, que posteriormente se enva a la DSP para que se ejecute en sta. A continuacin se muestra la metodologa seguida para la configuracin inicial del Software Code Composer Studio. I.T.T esp. Sonido e Imagen - 83 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

7.1.1. Creacin de un Proyecto en CCS Tal y como ocurre con otras plataformas el primer paso a dar ser la creacin de un proyecto, mediante la opcin del men Project =>New. Aparecer una nueva ventana (figura X), donde deberemos introducir el nombre del proyecto. Automticamente se generar (en la carpeta MyProjects una carpeta donde se guardarn los archivos del proyecto. A ), continuacin deberemos seleccionar la Tarjeta con la que se va a trabajar. En nuestro caso TMS320C67XX.

Figura 37. Ventana de creacin de un nuevo proyecto en Code Composer Studio

7.1.2.

Generacin de un (Procesador_efectoscfg.cbd)

archivo

de

configuracin

Con el fin de simplificar el desarrollo de la aplicacin, tenemos la posibilidad de utilizar las libreras DSP/BIOS. A partir de estas libreras es posible especificar el mapa de memoria donde residir nuestra aplicacin, as como los vectores de interrupcin. El uso de esta librera se puede simplificar en gran medida, gracias al uso de la herramienta de configuracin grfica que posee el CCS. Para ello es necesario crear un fichero de base de datos de configuracin CDB. Esto se realizar gracias a una plantilla especfica de la plataforma para la cual se va a compilar la aplicacin. Por lo tanto deberemos activar las opciones del men File =>New=>DSP/Bios Configuration, eligiendo en la ventana emergente la plantilla correspondiente a la tarjeta DSK6713 (dsk6713.cdb), tal y como se muestra en la figura:

I.T.T esp. Sonido e Imagen

- 84 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 38 Asignacin de la plantilla DSK6713.cdb

La operacin anterior se limita a crear una nueva base de datos de configuracin, a partir de una plantilla genrica que posteriormente se podr modificar para adecuarla a las necesidades de la aplicacin, aunque en nuestro caso, no ser preciso modificarla, por lo que la guardaremos en el disco. Por cuestiones de claridad y forma, es recomendable asignar al fichero *.CDB el mismo nombre que el del proyecto. Adems este fichero debe almacenarse en la misma carpeta que el proyecto. Al guardar el archivo CDB automticamente se generan varios ficheros que se utilizarn durante el proceso de compilacin de la aplicacin. Estos ficheros son: - Nombrearchivo.cdb: Base de datos de configuracin.

- Nombrearchivocfg_c.c: Cdigo C creado por la herramienta de configuracin. - Nombrearchivocfg.s62 : Cdigo asm creado por la herramienta de configuracin. - Nombrearchivocfg.cmd: Fichero de comandos del linker.

- Nombrearchivocfg.h: Fichero de cabecera para *cfg_c.c.

- Nombrearchivocfg.h62: Fichero de cabecera para *cfg_s.s62.

I.T.T esp. Sonido e Imagen

- 85 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera 7.1.3. Aadir ficheros al proyecto

Procesador Digital de efectos mediante DSP TMS320C6713

Una vez creado el fichero CDB es necesario aadirlo de forma explcita al proyecto, al igual que los ficheros fuentes especficos de la aplicacin. En este caso ser preciso aadir un nico fichero fuente Procesador_efectos.c Este . fichero, contendr todos los algoritmos necesarios para el procesado de los efectos. Ms adelante se dedicar un captulo exclusivamente para la explicacin pormenorizada de cada uno de stos efectos, as como su implementacin en la Placa de Desarrollo de Texas Instruments DSK 6713. Para aadir al proyecto, tanto el fichero *.CDB, com el fichero fuente, deberemos seleccionar la opcin del men Project => AddFiles to Project Despus de aadir el fichero CDB en nuestro proyecto, se incluirn automticamente todos los fichero anteriormente citados en el apartado anterior. Debido a esto ltimo, el proyecto deber mostrar una estructura parecida a la que se muestra en la siguiente figura:

Figura 39. Estructura de rbol para los Archivos de nuestro proyecto.

7.1.4. Desarrollo de la aplicacin

Para el desarrollo de nuestra aplicacin ser necesario aadir las libreras propias del Chip Support de la dsk6713. Adems de realizar los archivos de configuracin de interrupciones, as como la inclusin de las libreras utilizadas en nuestro proyecto. Una vez se dipone del fichero fuente Procesador_efectos.c el siguiente , paso a seguir ser la configuracin de la XINT1_HWI() como rutina de I.T.T esp. Sonido e Imagen - 86 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

tratamiento de la interrupcin de transmisin del McBSP1. Par ello se utilizar la herramienta de configuracin grfica. Para mostrar esta herramienta, haga doble click sobre el icono correspondiente al fichero Procesardor_efectos.cdb que se ha creado y , aadido al proyecto con anterioridad. Dicho fichero debe aparecer en el rbol de la estructura del proyecto. Ahora en la pantalla aparecer la ventana de la herramienta de configuracin grfica, tal y como se muestra en la figura.

Figura 40 Ventana de Configuracin de Interrupciones

La asignacin de la funcin XINT1_HWI() como RSI se realiza mediante el gestor de interrupciones hardware del planificador de tareas (Scheduling). La DSP/BIOS utiliza varios objetos (conceptualmente similar a un proceso) para tratar eventos de distinta naturaleza. Para el caso de las interrupciones hardware se dispone de varios objetos HWI para procesar este tipo de eventos. La fuente de interrupcin que procesa cada uno de estos objetos es configurable. En este caso se utilizar el objeto HWI_INT12, aunque se puede seleccionar cualquier objeto desde HWI_INT4 A HWI_INT15. Para configurar el objeto HWI_INT12 se ha de seleccionar pulsar el botn derecho del ratn para elegir a continuacin la opcin Properties (Fig. X). En el campo Interrupt Source se ha de seleccionar la fuente MCSO_1_Transmit. En la lnea de entrada function se ha de especificar la funcin que realizar el procesado de dicha interrupcin, en nuestro caso, _XINT1_HWI. Debemos tener en cuenta que el nombre de la funcin debe ir precedido por el carcter ya que esta es _ la forma en que se representan en ensamblador las etiquetas asociadas a una I.T.T esp. Sonido e Imagen - 87 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

funcin. Para finalizar seleccione la opcin Use dispacher de la pestaa Dispatcher. Esta opcin permite salvar el contexto del sistema y restaurarlo una vez se hayan ejecutado las instrucciones referentes a la RSO. Por ltimo deberemos guardar el fichero Procesador_efectos.cdb .

Figura 41. Ventana de Propiedades de Interrupcin HWI_INT12

Antes de compilar la aplicacin es necesario configurar las opciones de compilacin. Para ello deberemos seleccionar la opcin del men principal Project => Build Options, entonces aparecer la pantalla que se muestra en la figura 6. Con la pestaa Compiler seleccionada, deberemos marcar Preprocessor. En el campo Pre-Defined Symbols (-d) deberemos aadir CHIP_6713 utilizando como elemento separador el punto y coma . ;

En el campo Include Search Path (-i) deberemos aadir separados entre ; (puntos y coma), las siguientes rutas, pertenecientes a los diferentes ficheros.h necesarios por la aplicacin para compilar el archivo fuente. - C:\ CCStudio\C6000\C6xCSL\include - C:\ CCStudio\C6000\DSK6713\include - C:\ CCStudio\MyProjects\Procesador_efectos

I.T.T esp. Sonido e Imagen

- 88 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 42. Ventana de Configuracin de las opciones de Compilacin

7.1.5. Compilacin y carga del cdigo ejecutable

Despus de crear la estructura del proyecto, se debe compilar para obtener un archivo ejecutable *.out, que ser cargado en la memoria de la placa. Para ello se emplea la opcin Project => Rebuild All. Tras comprobar que no se han producido errores ni warnings se proceder a cargar el archivo ejecutable. La carga de dicho archivo se realizar mediante la opcin del men File => Load Program y escoja el archivo pertinente Procesador_efectos Out que se crear en la Carpeta debug. .

I.T.T esp. Sonido e Imagen

- 89 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

7.2 Descripcin de las libreras incluidas en la aplicacin.


Adems del cdigo fuente de nuestra aplicacin ser necesaria la inclusin de diversas libreras, ya que stas sern las encargadas de llamar a las clases o mtodos necesarios para que nuestro cdigo sea compilable en la DSP, adems de proveernos de los mtodos y funciones necesarias para gestionar los dispositivos de la Placa, registros del Chip, Cdec convertidor Analgico/Digital, Digital / Analgico, libreras RTDX (Real Time Data Exchage) para la comunicacin con la aplicacin Host (Programada en VC++), etc. A continuacin se relatan las libreras incluidas en nuestra aplicacin : #include <dsk6713.h> // Incluimos las libreras para el manejo de la placa #include "dsk6713_aic23.h" //Incluimos las libreras para el manejo de // Codec #include <rtdx.h> // Incluimos la librera rtdx para la comunicacin #include <math.h> // Incluimos la librera de funciones matemticas #include <paso_alto.h> #include <paso_bajo.h> #include <paso_banda.h> // Coeficientes del filtro paso alto a utilizar // Coeficientes del filtro paso bajo a utilizar // Coeficientes del filtro paso banda a utilizar

La primera librera <dsk6713.h> es la encargada de controlar los perifricos y registros principales de la placa de desarrollo. La librera "dsk6713_aic23.h" es la que contiene las funciones para la configuracin del cdec de audio. Ms adelante se relata la configuracin expresa de ste en nuestro proyecto. La librera <rtdx.h> es la encargada de proporcionar los API tanto en la s, aplicacin host (PC) como en la Target (DSP), por tal de comunicar dichas aplicaciones para realizar el intercambio de datos entre las anteriores. La librera <math.h> es la encargada de proporcionarnos las funciones matemticas para realizar los clculos en el procesado de la seal. Un ejemplo de ello es la utilizacin de la funcin abs(int n), que nos devuelve el valor absoluto del entero n, o la funcin cos(float x), que en su caso, nos retorna el valor del cosino del nmero x. Las libreras <paso_x.h> son la encargada de proporcionarnos los coeficientes de los filtros Fir para poder realizar el filtrado de la seal en frecuencia.

I.T.T esp. Sonido e Imagen

- 90 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

7.3 La Clase RTDX en Code Composer Studio.


Al igual que ocurre en el caso de la aplicacin en Visual C++, la Clase RTDX nos proporciona un API, (User Interface) para poder manipular los objetos que contiene. De esta forma seremos capaces de gestionar la comunicacin que se producir entre la DSP y la aplicacin Host. A continuacin se exponen los mtodos y funciones proporcionadas por el API de RTDX: La Interfaz User Interface provee de tipos de datos y funciones para: - Enviar datos desde la aplicacin Target al Host. - Enviar datos desde el Host hasta la aplicacin Target - Enviar datos de eventos desde la aplicacin Target hacia la aplicacin Host Los siguientes tipos de datos y funciones estn definidas en el archivo de cabecera rtdx.h: Macros para las declaraciones: RTDX_CreateInputChannel RTDX_CreateOutputChannel Funciones: RTDX_disableInput RTDX_disableOutput RTDX_enableInput RTDX_enableOutput RTDX_read RTDX_readNB RTDX_sizeofInput RTDX_write Macros: RTDX_channelBusy RTDX_isInputEnabled RTDX_isOutputEnabled Variable: RTDX_writing I.T.T esp. Sonido e Imagen - 91 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Mediante los mtodos y funciones anteriormente expuestos, tendremos la posibilidad de enviar y recibir datos, y por lo tanto, hacer factible la comunicacin entre la plataforma Pc y la Plataforma DSP. Cumpliendo as con el objetivo de comunicar los dispositivos para poder disponer de un generador de efectos digitales que corra sobre un PC y procesado por la DSP, ya que as aprovechamos las capacidades de clculo de esta ltima, liberando al procesador del PC de realizar tareas de procesado, cuyo rendimiento no es tan ptimo como el de la DSP. A continuacin se muestran unos fragmentos de cdigo en C para mostrar el uso de dichas libreras en nuestro cdigo fuente Procesador_efectos.c struct CanalEntr InChannel; // Declaramos una estructura global para guardar // los parmetros de conf de efectos DSK6713_AIC23_CodecHandle hCodec; // Declaracin de un manejador BSL //para el codec AIC23 RTDX_CreateInputChannel(control_channel); //Creamos un Canal de Entrada //para la comunicacin void LeerTramaPc(void) { while(1) //Comprobamos constantemente si se ha actualizado el buffer de // entrada desde VC++. { if(!RTDX_channelBusy(&control_channel)) //Si el canal no est ocupado { // este entero leer el tipo de trama enviado(Trama1,Trama2,Trama3) RTDX_read(&control_channel,&TTrama,sizeof(TTrama));//leemos //desde el pc if (TTrama == 1) { RTDX_read(&control_channel,&InChannel.AControl,sizeof(InChannel.AC ontrol)); //leemos tipo 1 } else if (TTrama == 2) { RTDX_read(&control_channel,&InChannel.AValores,sizeof(InChannel.A Valores));//leemos tipo 2 } else if (TTrama == 3) { int i; RTDX_read(&control_channel,&InChannel.EModifi,sizeof(InChannel.EM odifi)); //leemos tipo 3 I.T.T esp. Sonido e Imagen - 92 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

InChannel.AControl[InChannel.EModifi[1]]=InChannel.EModifi[9]; //Activamos/Desactivamos efecto deseado. for (i=0; i<InChannel.EModifi[2];i++) { InChannel.AValores[InChannel.EModifi[3+i]]=InChannel.EModifi[4+i]; // Actualizamos los valores con la trama recibida. } } } } }

Tal y como se puede apreciar, esta funcin se encargar de averiguar que tipo de trama es enviado por el emisor (Aplicacin Host), mediante el uso de las funciones del API de RTDX para el intercambio de informacin entre el valor de configuracin del efecto en la interficie y la actualizacin del nuevo valor en la DSP. Estos valores sern los parmetros utilizados por la DSP para realizar el procesado de la seal de entrada proveniente de la guitarra electro-acstica y la transformacin del sonido original de sta mediante el procesado del efecto a configurar.

7.4 Funciones y Tipos declarados en Procesador_efectos.c


Con el fin de abstraer la complejidad de los algoritmos y hacer los Cdigos Fuente, ms intuitivos e inteligibles deberemos implementar funciones, que nos ayuden a solventar pequeos problemas, para as simplificar la comprensin del cdigo, adems de optimizar recursos, evitando la redundancia de cdigo en la aplicacin. Bsicamente se puede distinguir entre los 2 tipos ms importantes: Funciones de manipulacin y retorno de datos: Funciones encargadas de realizar una accin o devolver un valor despus de ser procesado. - Funciones o subrutinas de interrupciones: Estas funciones se encargarn del manejo de las interrupciones en la DSP. Por otro lado, nos encontramos que necesitaremos definir una estructura de datos en la aplicacin, con el fin de agrupar a stos ms intuitivamente, para realizar una programacin ordenada, y fcilmente inteligible. A continuacin se detalla la implementacin de las funciones principales, as como la definicin de las estructuras de la aplicacin.

I.T.T esp. Sonido e Imagen

- 93 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

7.4.1 Estructuras del Programa 7.4.1.1 Estructura Datos

La estructura Datos ser la encargada de almacenar los datos de configuracin de los efectos, as como sus datos de activacin. struct CanalEntr // Declaramos una estructura para el Canal de Entrada de //datos. { int AControl[20];// Contendr el numero de efectos activados para procesarlos int AValores[50]; // Contendr los parmetros de configuracin de los efectos. int EModifi[10]; // Contendr el valor del ultimo efecto configurado. }; A continuacin se describen todos los campos que integran dicha estructura: - int Acontrol[20]: Se declara un array con 20 elementos, para almacenar con el valor 0 1 si un determinado efecto se encuentra activado. - Int Avalores[50]: Se declara un array con 50 elementos, para almacenar los valores de los parmetros de configuracin de los efectos de Audio. - Int EModifi[10]: Se declara un array con 10 elementos, para almacenar los valores de los parmetros de configuracin de un efecto a configurar. Finalmente, declaramos una variable local de tipo struct con el nombre InChannel, que se encargar de almacenar los valores que sean modificados previamente en el interface de la aplicacin host (GRIJOTECH DSP1). struct CanalEntr InChannel; // Declaramos una estructura global para // guardar los parmetros de conf de efectos

7.4.1.2

Estructura Delay

struct Delay // Declaramos una estructura para el Canal de Entrada de datos. { int flag =0; // Estado de la funcin int TotalRetraso=0; // contador de total de muestras retrasadas; int ActualRetraso=0; // posicion actual de retraso de muestras; Delay3seg CDel[2]; // Valor de las muestras con delay c.izq, c.der int nveces=0; // Valor que almacenara el numero de veces que se repite el eco. }; struct Delay Dely; // Declaramos una estructura global para guardar los // parametros de conf de efectos I.T.T esp. Sonido e Imagen - 94 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

7.4.1.3

Estructura Chorus

struct Chorus // Declaramos una estructura para el Canal de Entrada de datos. { int nVoces; // nmero de voces de Chorus int DesfVoces; // Desfase entre las Voces (Cambio de tono) int Amplitud; // Amplitud de pico de la profundidad de barrido int Frecuencia;// frecuencia del oscilardor de baja frecuencia.(LFO) int Profundidad;// profundidad de barrido int Tipo Onda; // Tipo de onda para el LFO Delay MChorus; // Array con los valores de chorus int pendiente; // Tipo de pendiente (Para seales triangulares) }; struct Chorus Chor; // Declaramos una estructura global para guardar los //parametros de conf de efectos 7.4.1.4 Estructura Reverb

struct Reverb // Declaramos una estructura para el Canal de Entrada de datos. { int Taps[]; // valor de Delay para cada tap Delay MRev; // Array con los valores de Delay int nTapRev; // numero total de Taps utilizados; float gTap; //Ganancia de mezcla del tap; }; struct Reverb Revb; // Declaramos una estructura global para guardar los //parametros de conf de efectos 7.4.1.5 Tipos Definidos

Se declara el siguiente tipo definido. Se trata de un vector de shorts con 2 canales de audio llamado Delay typedef short Delay3seg[132300]; // Declaramos un canal de muestras para 3 seg de Delay. 7.4.2 Funciones implementadas Tal y como se comenta anteriormente, realizaremos una programacin modular, es decir, se descompondr la aplicacin en distintos niveles de complejidad, o lo que es lo mismo, se realizarn funciones que sean capaces de solventar pequeos problemas, para as hacer que la complejidad y la inteligibilidad del cdigo sea mayor.

I.T.T esp. Sonido e Imagen

- 95 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

A continuacin se realiza una descripcin de las funciones y algoritmos implementados en nuestra aplicacin. - main() Esta es la funcin principal de nuestra aplicacin. Contendr todas las funciones previamente declaradas e implementadas. En primera instancia Se configuran los parmetros del cdec, as como la inicializacin de variables para el manejo de ste y otras funcionalidades de la Placa. - Amplificacion() Esta funcin se encargar de amplificar la seal de salida de la aplicacin //hacia los altavoces. Se amplificarn los dos canales, Izquierdo y Derecho, segn los valores actuales de configuracin del efecto enviado desde la aplicacin Host hacia la nuestra (Target). void Amplificacion(void) - PRuido() Esta funcin se encargar de realizar el efecto Puerta de Ruido. Eliminar la seal que se encuentre por debajo de un umbral prefijado. Adems se puede configurar la atenuacin que se le aplica a la seal (en tanto por cierto %) void PRuido(void) - Comp_Exp() Esta funcin se encargar de realizar el efecto Compresor/Expansor, dependiendo del ratio y del umbral de expansin/Compresin que se desee. void Comp_Exp(void) - Distorsion1() Esta funcin se encargar de realizar el efecto Distorsin. Si la seal sobrepasa un umbral el valor de sta se actualiza al valor de Saturacin introducido por el usuario. void Distorsion1(void) - filtro_FIR() Esta funcin se encargar de calcular los Filtros para dejar pasar una banda de frecuencias short filtro_FIR(int N, short *secuencia, int *coef)

I.T.T esp. Sonido e Imagen

- 96 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera - Delay()

Procesador Digital de efectos mediante DSP TMS320C6713

Esta funcin se encargar de realizar el efecto Delay si se pasa como parmetro "0". Se almacenan los valores de seal retrasada en la estructura Delay hasta que pasa el tiempo de //Retraso, una vez este transcurra se reproduce la seal actual ms la copia retrasada de la seal //de audio, hasta 3 veces. Si se le pasa el tiempo de retraso devuelve una linea de Delay en la estructura Reverb con el retraso(mseg), pasado como parmetro. void Delay(int Tretraso) - Chorus() Esta funcin se encargar de realizar el efecto Chorus. Se almacenan los valores de seal retrasada en la estructura Chorus, para finalmente sumarla a la seal actual desfasndola con un Oscilador de baja frecuencia (senoidal, triangular o logartmico), creando el efecto. Se puede elegir el nmero de voces y el desfase entre ellas. void Chorus(void) - Reverb() Esta funcin se encargar de realizar el efecto Reverb. Simular el sonido como si se estuviera tocando en un tipo de sala u otra. void Reverb(void) - Flanger() Esta funcin se encargar de realizar el efecto Flanger. Como el efecto Flanger es similar al Chorus, pero con variaciones en el tiempo de retraso y en la profundidad de barrido llamaremos a la funcion Chorus, y cambiaremos los parmetros en la aplicacin en VC++. void Flanger(void) - F_Pasa_Altos() Esta funcin se encargar de realizar el Filtrado Paso alto de la seal de Audio. void F_Pasa_Altos() - F_Pasa_Bajos() Esta funcin se encargar de realizar el Filtrado Paso alto de la seal de Audio void F_Pasa_Bajos()

I.T.T esp. Sonido e Imagen

- 97 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera - F_Pasa_Banda()

Procesador Digital de efectos mediante DSP TMS320C6713

Esta funcin se encargar de realizar el Filtrado Paso Banda de la seal de Audio. void F_Pasa_Bajos()

- LeerTramaPc() Esta funcin se encargar de leer las tramas del canal de entrada para posteriormente guardar los valores de esta en los correspondientes campos de la Estructura InChannel. La funcin selecciona el tipo de trama enviada por el Pc y la guarda en el campo correspondiente. void LeerTramaPc(void) - XINT1_HWI() Esta funcin ser la encargada de generar las interrupciones, para leer y escribir en el cdec. Leer el valor de la muestra de entrada y despus segn el efecto/s que se haya/n configurado, se procesar la seal, llamando a las funciones denominadas con el nombre del efecto.

7.5 Protocolo de comunicacin en la DSP


Tal y como se anticipaba en la seccin 6.7 (Protocolo de Codificacin y Comunicacin entre aplicaciones), ser necesario implementar un protocolo de comunicacin mediante el cual las 2 aplicaciones (host y Target), interacten y se intercambien informacin entre s. Por lo tanto deberemos programar mecanismos para poder detectar el tipo de trama que es enviada desde la Aplicacin Host, y una vez determinada su naturaleza procesar los datos, segn el tipo de trama recibido. As tendremos que al recibir una trama de tipo 1 ArrayControl[20], se guardar en el campo ArrayOnEfecto[20] de la estructura CanalEntr, declarando la variable global struct CanalEntr InChannel; El acceso a los datos de la estructura en la aplicacin se realizar mediante el acceso a los campo de la variable declarada InChanel. Ejemplo: InChannel.AControl[ i ] En el caso de recibir una trama del tipo 2 Vcontrol[50], se almacenar el valor de este en el campo de la estructura ArrayValores[50] de la estructura I.T.T esp. Sonido e Imagen - 98 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

CanalEntr, y cuyo acceso se obtiene de la variable l struct CanalEntr InChannel; El acceso a los datos de la estructura en la aplicacin se realizar mediante el acceso a los campo de la variable declarada InChanel. Ejemplo: InChannel.AValores[ i ] Finalmente, si se recibe una trama de tipo 3 ArrayActEfec[ 4 ] , se descodificar el contenido del Array y seguidamente se actualizarn los valores del campo ArrayOnEfecto[ ArrayActEfec[1] ], y el campo/s ArrayValores[ ArrayActEfec[3] * ArrayActEfec[1] ] Debemos notar que el valor de los ndices de ambos campos de la estructura sern actualizados con la posicin 1 del Array perteneciente el numero de efecto codificado y la posicin inicial del valor de configuracin, respectivamente, teniendo en cuenta que la trama puede tener tantos valores a actualizar, como el valor del contador de efectos ArrayActEfec[2] posea. InChannel.Emodifi[j] Como podemos observar, nuestra estructura de Datos de Entrada contiene 3 Arrays, ya que simplemente con stos se puede realizar el procesado de la seal en la DSP.

7.6 Parmetros de configuracin de la DSP


No debemos olvidar que deberemos configurar el valor de los registros necesarios en el DSP, con el fin de activar y configurar dispositivos tan importantes para la captacin de seal, como son los convertidores A/D , D/A que son manejados por la Placa mediante un cdec, y el cual debe ser configurado.( TLV320AIC23B ) Para la configuracin de estos registros se debe tomar la documentacin tcnica que proporciona Texas Instruments, y de sta extraemos los valores en Hexadecimal, necesario para la puesta a punto de nuestro sistema. A continuacin se exponen los distintos registros a configurar as como los valores que toman stos, adems de las diferentes posibilidades que de funcionamiento que se ofrecen, y la justificacin sobre la eleccin de unos sobre otros. Uno de los parmetros fundamentales en la adquisicin es la frecuencia de Muestreo. Este parmetro debe ser configurado desde el cdigo en C de la Aplicacin implementada en la DSP.

I.T.T esp. Sonido e Imagen

- 99 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 43. Mapa de memoria de Registros del Cdec TLV320AIC23B

A continuacin se muestran las posiciones de memoria donde se ubican los registros de configuracin proporcionados por el fabricante del Cdec. Esta informacin se encuentra debidamente referenciada en la seccin de bibliografa.
Nota: Valores determinados mediante el documento Tcnico tlv320aic23b.pdf suministrado por Texas Instruments. En el modo USB, se encuentran disponibles las siguientes tasas de muestreo para los ADC DAC.

I.T.T esp. Sonido e Imagen

- 100 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 44 Tabla de configuracin de Tasa de Muestreo del Cdec TLV320AIC23B

En nuestra aplicacin estos valores se configurarn mediante las funciones implementadas en el archivo Procesador_efectos.c y que se muestran a continuacin: DSK6713_AIC23_Config config = // Parametros de configuracin del Codec { 0x0017, /* 0 DSK6713_AIC23_LEFTINVOL Left line input channel volume*/ 0x0017, // 1 DSK6713_AIC23_RIGHTINVOL Right line input channel volume 0x00F9, /* 2 DSK6713_AIC23_LEFTHPVOL Left channel headphone vol*/ 0x00F9, /* 3 DSK6713_AIC23_RIGHTHPVOL Right channel headphone vol*/ 0x0012, /* 4 DSK6713_AIC23_ANAPATH Analog audio path control*/ 0x0000, // 5 DSK6713_AIC23_DIGPATH Digital audio path control 0x0000, // 6 DSK6713_AIC23_POWERDOWN Power down control 0x0043, // 7 DSK6713_AIC23_DIGIF Digital audio interface format 0x00CD, /* 8 DSK6713_AIC23_SAMPLERATE Sample rate control*/ 0x0001, // 9 DSK6713_AIC23_DIGACT Digital interface activation };
Nota: En la seccin Anexos, se adjunta toda la informacin correspondiente a la configuracin de los Registros del cdec conectado a nuestra DSP, y proporcionada por Texas Instruments.

7.7 Diagrama de Flujo y funcionamiento de la aplicacin


A continuacin se muestra un diagrama de Flujos que ilustra grficamente el funcionamiento de la aplicacin que correr sobre nuestra DSP. Dichos Diagramas muestran de una forma sencilla el funcionamiento e interconexin de los distintos mdulos y clases que tenemos en cada una de las aplicaciones implementadas en este proyecto. 7.7.1 Diagrama de Flujo y funcionamiento de la aplicacin Target A continuacin se muestra el diagrama de Flujo de la aplicacin programada en C/C++ mediante Code Composer Studio. En el esquema se muestra de forma grfica las diferentes etapas de procesado as como los distintos algoritmos necesarios para poder realizar la intercomunicacin y el procesado de la seal de Audio, segn los parmetros enviados desde el PC hacia la DSP.

I.T.T esp. Sonido e Imagen

- 101 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 45 Diagrama de Flujo de la aplicacin programada en C/C++ (Code Composser Studio)

7.7.2 Diagrama de Flujo y funcionamiento global del sistema

En este apartado se muestra el diagrama de Bloques Global para todo el sistema, es decir, la parte de host y la parte Target de las aplicaciones comunicadas, as como las interfaces de entrada/Salida que poseer nuestro sistema. Cabe notar, el gran esfuerzo que ha supuesto la sincronizacin, as como la asignacin de todos los parmetros a comunicar entre nuestras aplicaciones, debido al gran nmero de variables que se han de controlar, a la vez que es necesaria una relacin entre los distintos objetos que forman el interfaz y los algoritmos de procesado que corren sobre la DSP. Por otro lado, podemos notar que tenemos una seal de Audio analgica a la entrada de la DSP, proveniente de la guitarra. Esta seal es muestreada por el I.T.T esp. Sonido e Imagen - 102 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

convertidor A/D, discretizando los valores de dicha seal y finalmente digitalizndolos. Estos valores digitales, correspondern al valor de una muestra de la seal de entrada. En la pgina siguiente se encuentra un diagrama de bloques donde se muestra el funcionamiento global de las dos aplicaciones diseadas, junto con la DSP y una guitarra, donde esta ltima nos proporcionar la seal de Audio de entrada al sistema. En el otro extremo tenemos el PC con el Interfaz de Usuario GRIJOTECH DSP1. Dicho interfaz se encargar de la interaccin del usuario con la DSP. En la Figura se muestran algunos de los eventos programados en la aplicacin y su gestin y comunicacin mediante los Interfaces de RTDX de ambas aplicaciones. s Es importante mencionar, que este diagrama solamente pretende ilustrar a grosso modo el funcionamiento global de la aplicacin, en ningn caso, se trata del funcionamiento y definicin de todos los eventos programados en la aplicacin, ya que la creacin de dichos Diagramas de Bloques conllevara una cantidad de tiempo enorme, adems de precisar un espacio fsico, que a priori se nos presenta como imposible debido al formato de dicha memoria y a la infinidad de eventos programados en la aplicacin.

I.T.T esp. Sonido e Imagen

- 103 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 46 Diagrama de Flujo del Sistema (Aplicacin Host + Aplicacin Target)

I.T.T esp. Sonido e Imagen

- 104 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

8. Efectos digitales de Audio.


En nuestro proyecto se asociarn los efectos a dos grandes grupos, los descritos en la seccin 8.1 Efectos que acta sobre el Rango dinmico de la seal, y los de la seccin 8.2 Efectos Temporales (efectos que se producen al introducir muestras retardadas de la propia seal). Cabe decir que la implementacin de dichos efectos se realiza en lenguaje de programacin C, mediante el Compilador del CCS. En los siguientes apartados se realizar una descripcin pormenorizada de todos los efectos implementados, as como las tcnicas de procesado de la seal y parmetros fundamentales que procesar. Debemos tener en cuenta, que dichos parmetros sern los enviados desde la aplicacin Host programada en Visual C++, mediante su interfaz grfica y la comunicacin con la DSP, mediante las libreras RTDX. 8.1. Efectos de Rango Dinmico Este grupo de efectos se basa en las variaciones que producirn en el volumen o amplitud de la seal a tratar. Estas variaciones generarn el efecto en cuestin. Los efectos ms importantes que componen este apartado son los siguientes: Distorsin. Puerta de ruido. Compresor Expansor.

8.1.1. Efecto Distorsin


8.1.1.1. Introduccin .

Se entiende por distorsin en general, la modificacin de un sonido original. De esta forma, cualquier efecto de audio podra ser calificado como distorsin. Aparte de esta definicin generalista, se conoce como distorsin, aquel efecto que modifica la amplitud de un sonido sin el uso para ello de ninguna informacin temporal (de esta forma cualquier procesado de la seal en el dominio dinmico puede ser considerado como distorsin). Como no se usa ningn tipo de informacin temporal, cada muestra puede ser independientemente modificada. I.T.T esp. Sonido e Imagen - 105 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

La distorsin se utiliza normalmente para simular los efectos de un amplificador que est saturado, y se empleo se da principalmente, con guitarras, aunque tambin se puede incorporar a teclados, samples, bajos, etc.
8.1.1.2. Principios y Modelado.

La distorsin que producen los amplificadores para guitarra consiste sencillamente en comprobar si la seal de entrada est por encima de +umbral o por debajo de umbral, y si es as, se convierte inmediatamente en el nivel de saturacin prefijado (positivo o negativo segn el umbral que sea superado). Si dicho umbral no es superado, la seal original no se modificar. Este modelo es muy sencillo y su accin se muestra en la figura 47 donde umbral= 10 y nivel de saturacin=20.

Figura 47 Forma de Onda tras utilizar el Efecto Distorsin1

Un segundo modelo ms completo que comprender al anterior, consiste en tomar un porcentaje de la seal original de entrada que se suma con un porcentaje del nivel de saturacin elegido, para generar el efecto. As, la seal distorsionada es idntica a la seal original, salvo si se supera el umbral prefijado. Cuando la seal supera este umbral, se modifica la seal segn la ecuacin en diferencia: Si x(n) > |umbral | (1) y(n) = a x(n)+ b (nivel de saturacin) (2) Si no se cumple (1): y(n)=x(n) (3)

Donde a es la cantidad de seal original que se aade ( en tanto por uno) y b es la cantidad de nivel prefijado de saturacin que se usa en la mezcla (en tanto por uno tambin) . I.T.T esp. Sonido e Imagen - 106 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Obsrvese que este modelo comprende al anterior para a= 0 y b=1, caso en el que la salida se convierte directamente en el nivel de saturacin prefijado. En la figura 48 se muestra el diagrama de sistema del distorsionador si se supera el umbral prefijado.

Figura 48 Diagrama de Bloques del sistema

8.1.1.3. Implementacin

Como podemos observar la implementacin en C del algoritmo para el efecto de distorsin es realmente sencilla, reducindose todo a una comparacin con el valor absoluto del parmetro |umbral |, un par de productos numricos y una adicin por muestra, en caso de que algn umbral se superase. Los parmetros a introducir por el usuario para controlar el efecto son: - umbral. - saturacin. - a = la cantidad de seal original que se aade ( en tanto por uno) - b= cantidad de nivel prefijado de saturacin que se aade (en tanto por uno)

8.1.2. Puerta de Ruido (Noise Gate).


8.1.2.1 Principios y Modelado

Otra manera de generar distorsin es la denominada Puerta de Ruido. As este efecto consiste en ignorar todos los valores de una forma de onda que se encuentren por debajo de un umbral especificado. Esto permite que las muestras con valores ms altos (partes con mayor nivel de sonoridad), no se procesen y por el contrario las que queden por debajo del umbral igualarlas a 0. Se consigue un efecto interesante con aquellos sonidos cuya forma de onda cruza frecuentemente el umbral prefijado, tal y como se aprecia en la figura 50.

I.T.T esp. Sonido e Imagen

- 107 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 49. Se recorta la seal por debajo del umbral

Figura 50 Las seales de baja amplitud, desaparecen

Procedemos a realizar el modelo de la funcin a implementar mediante pseudo cdigo: Si |umbral | > x(n) (4) entonces: y(n) = 0 (5) Si la condicin (4) no se cumpliera: y(n) = x(n) (6)

Esta atenuacin total por debajo del umbral se emplea para eliminar los niveles de ruido en partes silenciosas de una grabacin. Este efecto es usado ms bien como herramienta de edicin y refinamiento de grabaciones, aunque como ya se dijo anteriormente, se consigue un resultado interesante desde el punto de vista creativo para el msico, con sonidos que crucen el umbral prefijado frecuentemente tal y como se muestra en la figura 50.

8.1.2.2. Implementacin

El procesado por muestra de este efecto se reducir a una comparacin con el valor absoluto del parmetro umbral, y en caso de que no se supere, se pone a 0 la seal de salida. Si esto no es as, la seal queda intacta a la salida. Los parmetros de control por parte del usuario sern umbral y % atenuacin Es importante sealar, que la puerta de ruido queda comprendida como caso particular del expansor, que se explicar ms adelante. No obstante por claridad, se exponen separadamente.

I.T.T esp. Sonido e Imagen

- 108 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

8.1.3. Compresor.
8.1.3.1 Introduccin Como su nombre indica, la compresin reduce el rango dinmico de una seal. Se usa extensivamente en trabajos de produccin, reduccin de ruido y para grabaciones en directo, pero debe usarse con cuidado. Comnmente se ha dicho que los compresores hacen los sonidos fuertes, dbiles y los dbiles ms fuertes, pero esto en realidad es correcto slo a medias. 8.1.3.2. Principios y modelado. Un compresor es un dispositivo de ganancia variable, donde el nivel de ganancia usada depender del nivel alcanzado por la seal de entrada As, la ganancia ser reducida cuando la seal de entrada est por encima de un umbral fijado y no ser modificada cuando est por debajo. La figura 51 muestra el diagrama del sistema de funcionamiento del compresor:

Figura 51 Diagrama de funcionamiento del Compresor

La relacin entre la entrada y la salida del compresor queda descrita en trminos e Nivel de presin sonora (dB) en la figura 52 donde se muestra su funcin de transferencia.

Los 45 de pendiente corresponden a una ganancia unidad, y el sistema es completamente transparente aqu. As , el compresor cambiar la pendiente hacindola menor que 1 e igual a la nueva pendiente prefijada en la funcin de transferencia, si la intensidad de la entrada supera un valor igualmente prefijado ( umbral ).
Figura 52 Funcin de Transferencia del Compresor

I.T.T esp. Sonido e Imagen

- 109 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Obsrvese que llevando la compresin al lmite, esto es fijando una pendiente de cero para cuando el umbral es superado, se obtiene un Limitador , con el que se obtendr un efecto de distorsin aprovechable desde el punto de vista creativo. As, observando la figura 15, se puede apreciar que un compresor hace ms dbiles las seales fuertes pero no hace las seales dbiles ms fuertes (aunque pueda percibirse de esta manera). De esta forma, la mayora de los compresores tienen un control de ganancia adicional independiente al automtico expuesto, que sirve para prevenir una compresin excesiva que pueda causar que el volumen del instrumento sea insuficiente. Pues bien, es esta ganancia extra la que produce el efecto de amplificar los sonidos ms dbiles. Otro parmetro caracterstico es la cantidad de tiempo que el compresor tarda en responder una vez que se ha superado el umbral para la entrada; esto se denomina tiempo de ataque, y es usualmente alrededor de 100mseg. Igualmente, cuando la entrada est por encima del nivel umbral y cae por debajo de l, al compresor le llevar algo de tiempo el incrementar la ganancia a 1 de nuevo. Este es el denominado tiempo de relajacin que es , generalmente mayor que el tiempo de ataque (alrededor de 1 o 2 segundos). En la figura 53 se muestra cmo trabaja el efecto con todos los parmetros. A veces puede ser deseable tener un tiempo de ataque o de relajacin muy corto lo que ocasiona un cambio en la ganancia muy brusco, que puede ser incluso odo como lo que se conoce como breathingo pumpimg Cuando el . nivel de sonido cae por debajo del umbral, la ganancia se incrementa a uno y la seal de entrada est ahora ms prxima al nivel de ruido del sistema pudiendo ser audible.

Figura 53 Funcin de Transferencia del Compresor

I.T.T esp. Sonido e Imagen

- 110 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

A partir de estos parmetros podemos modelar nuestro efecto de la siguiente forma: Si x(n) > |umbral| y(n) = (umbral) + m* [ x(n)-( umbral)] (7) Sino y(n) = x(n) (9) Donde debe hacerse notar que m es la nueva pendiente y es menor que 1. La diferenciacin entre +umbral y -umbral se hace debido a que trabajamos con la funcin de transferencia, pero en trminos numricos relativos al valor de las muestras tal y como se haca en los dos efectos anteriores debido a la simetra de las seales a tratar.

Esto se muestra en la figura 54 .

Los umbrales debern darse en tanto por uno del fondo de escala del ADC.
Figura 54 Funcin de Transferencia del Compresor

Un uso frecuente de la compresin es el de incrementar el sustainde un instrumento. As, el compresor tratar de mantener un nivel constante en la salida amplificando la seal de salida y manteniendo constante su nivel. De este modo, despus de que una cuerda haya sido rasgada, el voltaje producido por las pastillas y muestreado por el sistema digital va atenundose gradualmente hasta desaparecer. Un poco de compresin evitar que el instrumento cambie radicalmente despus de haber sido pulsada la cuerda en cuestin, lo que es percibido como un incremento del sustaindel instrumento. Un tiempo de relajacin mayor que la propia cadencia del instrumento preservar el sonido del mismo. Ntese que esta aplicacin tiene un doble filo. Se puede ajustar el compresor para obtener el mximo sustainposible, pero en el proceso se est eliminando la posibilidad por parte del guitarrista de acentuar ciertas frases o notas de la forma en que podra hacerlo sin ningn tipo de compresin. Desde luego, el msico puede experimentar con valores extremos en los parmetros del compresor para obtener sonidos inusuales.

I.T.T esp. Sonido e Imagen

- 111 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

8.1.4. Expansor
8.1.4.1 Introduccin El expansor es un tipo de efecto basado en el rango dinmico. Como su nombre indica, expande el rango dinmico de la seal de manera que las seales dbiles son atenuadas mientras que las porciones ms fuertes no son ni atenuadas ni amplificadas. Este comportamiento es opuesto al del compresor. La puerta de ruido ya descrita anteriormente no es otra cosa que la expansin llevada al extremo, de manera que la atenuacin de las seales dbiles sea total, dejando en su lugar nicamente silencio. 8.1.4.2. Principios y modelado Al igual que el compresor, el expansor es esencialmente un amplificador con ganancia variable. La ganancia nunca es mayor que uno, y es controlada por el nivel de la seal de entrada. Cuando el nivel de la seal de entrada es alto, el expansor presenta ganancia unidad, y cuando el nivel de sta cae, la ganancia decrece, haciendo a la seal de entrada aparecer a la salida atenuada. El diagrama de sistema que presenta este dispositivo es idntico al del compresor (figura 54). Razonando de forma anloga a como lo hemos hecho con el compresor, la relacin entre la entrada y la salida del expansor queda descrita en trminos de fuerza del sonido (dB) en la figura 55 donde se muestra su funcin de transferencia. Los 45 de pendiente corresponden a una ganancia unidad, y el sistema es completamente transparente aqu. As, el compresor cambiar la pendiente hacindola menor que 1 e igual a la nueva pendiente prefijada en la funcin de transferencia, si la intensidad de la entrada est por debajo de un valor prefijado denominado umbral. Este decremento de la ganancia expande el rango dinmico de la seal, de ah el nombre de expansor. Cuando un expansor es llevado a su extremo, esto es la ganancia por debajo del umbral prefijado es prcticamente cero, se obtiene la puerta de ruido o Noise Gate. En este caso la seal es casi completamente eliminada o eliminada del todo. Como se describe previamente, la puerta de ruido acta como una especie de interruptor sonoro. Cuando la seal es lo suficientemente fuerte, el interruptor est encendido y la salida es igual a la entrada en cada momento, pero cuando la seal de entrada tiene un valor pequeo, la salida del expansor es cero. El parmetro fundamental en una puerta de ruido es por tanto el umbral que se use para por debajo de l hacer la atenuacin completa de la seal.

I.T.T esp. Sonido e Imagen

- 112 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 55. Funcin de Transferencia del Expansor

Al igual que ocurra con el compresor , el expansor se caracterizar por sus tiempos de ataque y relajacin respectivamente. El tiempo de ataque es el tiempo requerido por el expansor para restaurar la ganancia a uno, una vez que la seal de entrada ha superado el umbral prefijado. Anlogamente, el tiempo que tarda el expansor en reducir su ganancia una vez que la entrada cae por debajo del umbral se denomina tiempo de relajacin. Ambos tiempos proporcionan al expansor un cambio ms suave en la ganancia. La figura X muestra como opera un expansor con todos sus parmetros.

Figura 56 Parmetros caractersticos del Expansor

I.T.T esp. Sonido e Imagen

- 113 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

El expansor queda caracterizado digitalmente en su modelo ms simple, esto es teniendo slo en cuenta umbral y nueva pendiente como sigue: Si +umbral>x(n) >-umbral y x(n) >0 y(n) = m* x(n) (10) Si +umbral>x(n) >-umbral y x(n) <0 y(n) = m* x(n) (11) Si no se aplic (10) ni (11) y(n) = x(n) (12) Notemos que m es la nueva pendiente y es menor que 1. La diferenciacin entre +umbral y -umbral se hace debido a que trabajamos con la funcin de transferencia pero en trminos numricos relativos al valor de las muestras tal y como se haca en los efectos anteriores debido a la simetra de las seales a tratar. Esto se muestra en la figura 57.
Figura 57 Funcin de Transferencia del Expansor

En cuanto a las aplicaciones de los expansores se refiere, stos son usados para aumentar el rango dinmico en grabaciones procedentes de discos de vinilo o cassettes, soportes que poseen un rango dinmico muy limitado. Pero la aplicacin ms caracterstica de los expansores es probablemente la reduccin de ruido. Ayudan a reducir el efecto de realimentacin indeseado. Las puertas de ruido son comnmente utilizadas para eliminar ruido que puede ser sin ellas amplificado y odo cuando el msico est tocando su instrumento. Es importante sealar que el umbral debe ser lo suficientemente alto como para que el ruido ambiente caiga por debajo de l, pero no tan alto que el sonido del instrumento se vea perjudicado. Implementar un expansor que contemple los parmetros bsicos de umbral y nueva pendiente a aplicar si no se supera el umbral, es sencillo en el microprocesador. Como se muestra en las ecuaciones (10), (11) y (12) el procesado por muestra consistir en hacer un par de comparaciones y en funcin del resultado de las mismas, bien no hacer nada, bien efectuar un producto correspondiente a la ecuacin de la recta.

I.T.T esp. Sonido e Imagen

- 114 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Los parmetros de control sobre los que podr interactuar el usuario sern: - Umbral. - Nueva pendiente a aplicar por debajo del umbral. Modelos ms complejos pueden ser desarrollados para tener en cuenta parmetros como el tiempo de ataque y el tiempo de relajacin para obtener un efecto ms realista.

8.2. Efectos basados en el uso de muestras retardadas


Este tipo de efectos estn basados en el uso de muestras y/o salidas pasadas para generar la salida en el momento actual. Es necesario, por tanto, el uso de memorias, concretamente de tablas circulares o colas para su implementacin digital. Son de un gran inters para el msico pues los resultados creativos son muy buenos. A continuacin se describen los ms usados. 8.2.1 Delay 8.2.1.1. Introduccin El delay es uno de los efectos ms simples de los que usan retardos pero es tremendamente valioso usado adecuadamente. As, un poco de delay puede dar vida a mezclas apagadas, ampliar el sonido de un instrumento e incluso permite tocar un solo sobre uno mismo. La unidad de delay es tambin un elemento constructivo bsico para la elaboracin de otros efectos ms complejos como reverb, chorus y flanger. 8.2.1.2. Principios y Modelado. En su formulacin ms simple, la unidad de delay toma una seal de audio y la reproduce de nuevo, despus del tiempo de delay, escalada y mezclada con la seal actual. Este tiempo de retraso puede oscilar en el rango de varios milisegundos (efecto parecido a un coro) hasta varios segundos (producindose una repeticin del sonido bien definida y apreciable de forma separada a la reproduccin del sonido original). La figura 58 presenta el diagrama de sistema de la unidad de delay en su modelo bsico.

Figura 58 Unidad de Delay bsica

I.T.T esp. Sonido e Imagen

- 115 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Este modelo produce nicamente una copia del sonido original, de modo que este dispositivo es tambin denominado de eco discreto. La ecuacin en diferencia que define el modelo es: y(n) = x(n)+ Mix x(n-m) (15) Donde Mix controla la cantidad de eco que se percibe y m representa el nmero de muestras de retraso para el eco. Recurdese que el tiempo correspondiente a m samples de retraso es tdelay = m* Ts , donde Ts es el perodo de muestreo. Este modelo presenta dos utilidades fundamentales: - 1. Como slapback delay :Se debe fijar un tiempo de delay muy pequeo (entre 40 y 120 milisegundos). Con ello se consigue un efecto de coro poco elaborado, como si dos instrumentos estuvieran tocando al unsono. Para que el efecto sea enteramente realista, el tiempo de delay deber ser variable, para producir una modulacin en tono que diferencie a los dos instrumentos que tocan a la vez (ver chorus ms adelante). - 2 Eco discreto : Tenemos este efecto cuando el retardo es de 100-120 milisegundos en adelante. Tiempos de retardo de 1 segundo o mayores pueden usarse para tocar encima de notas pasadas, de manera que el tiempo de delay se haga corresponder con el comps de una cancin, de forma que las copias retrasadas del sonido entren en dicho comps. Delays de 1 segundo o mayores dan por tanto, la posibilidad al msico de tocar sobre s mismo y desarrollar armonas de otro modo imposibles. Tener un sencillo eco es ms bien un efecto pobre en s, as que muchas unidades de delay incorporan realimentacin ( regeneracin), que toma la salida del delay y la enva de vuelta a la entrada. Ahora, el dispositivo tiene la habilidad de repetir el sonido una y otra vez (efecto parecido a la reverberacin), de forma que las copias del original se van atenuando cada vez que se repiten, si la ganancia de realimentacin es menor que uno, condicin que muchas unidades imponen por diseo para garantizar la estabilidad. Con este lazo de realimentacin, el sonido es tericamente repetido eternamente ( al menos hasta que se apague la unidad). No obstante, despus de un tiempo ste ser tan tenue que estar por debajo del ruido ambiente, y por lo tanto, inaudible. Para sintetizar esta nueva unidad, son posibles dos modelos equivalentes, tal y como se muestran en la figura 59 y figura 60):

Figura 59. Delay Realimentado A

I.T.T esp. Sonido e Imagen

- 116 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 60. Delay Realimentado B

Ambos modelos son equivalentes y pueden reducirse a esta expresin: y(n)= x(n)+ g y(n-m) (16) g= La ganancia de realimentacin para el primer modelo g=[mix*(x(n-m)+a(n-m)*ganancia de realimentacin)]/[x(n-m)+a(n-m)*mix] para el segundo, donde m es el retraso de la copia en samples y Mix controla la cantidad de eco que se percibe. A la vista de (16) se aprecia que estamos tratando con un filtro recursivo (pues se usan salidas pasadas) para cuya estabilidad la ganancia de realimentacin debe ser menor que uno tal y como se indica en la introduccin terica . La diferencia entre ambos modelos reside en los distintos valores que toma la constante g, y se resume en que el modelo de delay realimentado 2 comprende al dispositivo de eco inicial con Ganancia de realimentacin = 0 y permite ms posibilidades sonoras mediante las combinaciones de valores de Mix y Ganancia de realimentacin , mientras que el modelo de delay realimentado 1 es una unidad que no comprende al modelo bsico y que slo podr funcionar como reverberador, pues si Ganancia de realimentacin es igual a 0, el dispositivo simplemente se reduce a y(n) = x(n). As, el modelo realimentado 1 se usa para la simulacin de reverberacin sencilla, que consiste en repeticiones sucesivamente atenuadas de un sonido original y uniformemente espaciadas en el tiempo tal y como se muestra en la respuesta al impulso unitario para este filtro en la figura 61 .

Figura 61 Respuesta al impulso unitario de la unidad de delay realimentada para g=0.9 y m=1.

I.T.T esp. Sonido e Imagen

- 117 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Por otra parte, el modelo realimentado 2 se usa para unidades en las que se desee simular reverberacin de forma anloga a la producida por el modelo 1. De esta forma, el reverberador quedar activado si Ganancia de realimentacin = 0. 8.2.1.3. Otros tipos de Delay s. Se resean a continuacin otros tipos de delays que pueden ser de inters. - 1. Multi-Tap Delay. En algunos casos se puede desear mayor flexibilidad en una unidad de delay, y un multi-tap la ofrece. Este tipo de dispositivo es interesante porque permite crear patrones ms complejos de ecos que pueden aadir una cualidad rtmica al instrumento. En las lneas de delay tradicionales, la salida es tomada despus de que la seal haya sido retrasada el tiempo total de delay prefijado, pero tambin se puede tomar la salida de forma que la seal haya sido retrasada tan slo una porcin del tiempo total de delay. Tomar la salida de puntos de dentro de la lnea de retraso es lo que se denomina tapping como si fuera un grifo en una , caera que permite obtener agua en varios puntos a lo largo de la misma. Los distintos puntos se etiquetan normalmente con el nmero de punto y . As, tap los tapsno deseados pueden ser eliminados fijando el factor de ganancia del tap en cuestin a cero. La cantidad de delay entre varios taps puede ser diferente. Por tanto, una unidad multi-tap (TDL, tapped delay line) es una lnea de retraso con al menos un , de manera que en dicha lnea se puede extraer tap una seal en determinados puntos la misma. As, cada tap implementa un delay ms corto dentro de una lnea de retraso mayor. Un ejemplo de multi-tap delay de un nico tap se muestra en la figura 62, donde bM1 es la ganancia del nico . tap

Figura 62. TDL con un nico Tap

Las unidades multi-tap simulan eficientemente mltiples ecos. Es por ello por lo que se usan extensivamente en la reverberacin artificial ms realista. - 2. Ping-Pon delays. Como su nombre indica, estas unidades producen un sonido balanceante, tpicamente rebotando entre los canales derecho e izquierdo del estreo. La figura 63 muestra el diagrama de sistema de una unidad de estas caractersticas.

I.T.T esp. Sonido e Imagen

- 118 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 63. Unida de Ping Pong Delay

8.2.1.4. Implementacin

Gracias al precio asequible de las memorias, las unidades digitales de delay resultan econmicas a la hora de ser implementadas. El algoritmo a realizar es relativamente sencillo. As en cada perodo de muestreo se lee un valor previamente almacenado en la memoria y se guarda en sta el valor actual de la seal de entrada en otra posicin. El prximo perodo de muestreo se efecta la misma operacin pero leyendo de la posicin siguiente a la que se ley anteriormente y escribiendo en la siguiente a la que se escribi antes. De esta forma, cuando se alcance el final de la memoria, se realiza el mismo proceso pero volviendo a la primera posicin de la misma. En el mbito del procesado de la seal, esto es lo que se denomina una tabla circular o cola circular, y es una estructura muy eficiente para este segundo gran bloque de efectos. As, la DSP manejar tpicamente un puntero de lectura y un puntero de escritura que ir marcando la posicin en la que se almacenar la muestra actual o la salida actual segn el modelo implementado y que servir de pivote para desde l, retrasar el puntero de lectura las muestras correspondientes al tiempo de retraso requerido en cada perodo de muestreo. Estos punteros se incrementarn en cada perodo de muestreo. En caso de implementar un multi-tap delay se requerirn algunos punteros de lectura adicionales. Los parmetros a controlar por el usuario sern: - Tiempo de retardo. - Mix.

I.T.T esp. Sonido e Imagen

- 119 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

8.2.2. Chorus.
8.2.2.1 Introduccin. El efecto de chorus consigue hacer que un nico instrumento suene como si hubiese dos instrumentos sonando al unsono. Aade por tanto, algo de grosor al sonido, que se describe comnmente como exhuberanciao riqueza . El modelo del efecto, no es realmente espectacular. As pues, plantemonos qu sucede si dos personas tocan dos instrumentos juntos o bien cantan juntos. No lograrn una precisa sincronizacin, y al sumarse los sonidos procedentes de ambos instrumentos, se detectarn algunos retardos entre un instrumento y el otro. Adems, los tonos de ambos instrumentos diferirn algo. Pues bien, estos sern los efectos que el chorus tratar de simular tal y como se explica a continuacin. As, el leve retraso puede ser fcilmente modelado con una lnea de delay, con el modelo bsico sin realimentacin ya conocido. Por otra parte, crear el efecto de leve desafinacin, no parece tan simple a primera vista, pero puede lograrse transformando la lnea de delay bsica en una lnea de retraso variable. De este modo, la longitud del retraso cambiar con el tiempo para crear la modulacin de tono. Para comprender como el tono es modificado, pensemos que el bloque de delay es un dispositivo de grabacin. ste almacena una copia exacta de la seal de entrada conforme llega, y despus lleva a la salida la misma copia un tiempo despus. Para incrementar la cantidad de retraso, se precisa un segmento mayor de la seal que est almacenada en la unidad antes de que se reproduzca. Para lograr esto, leemos la seal retrasada de la lnea de la lnea de retraso a una tasa menor que la de escritura ( la tasa de escrituragrabacin no se altera). As, leer a una tasa menor es como arrastrar los dedos en las ruedas del cassette, que como se sabe, produce una bajada del tono. En la otra cara de la moneda, para reducir el tiempo de delay, podemos leer a una tasa mayor que la escritura, efecto similar al de aumentar la velocidad del cassette, cuyo resultado es un aumento del tono en la grabacin. Si ambos procesos son efectuados lo suficientemente rpido y secuencialmente, tenemos las ligeras variaciones de tono que se persiguen para implementar el efecto de chorus. Pasemos pues, al modelado del efecto. As, mezclando esta copia retrasada y modulada en tono con la original, tenemos el efecto de chorus. El diagrama de sistema que modela este efecto se muestra en la figura 64.

I.T.T esp. Sonido e Imagen

- 120 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 64. Diagrama de bloques del efecto Chorus

Obsrvese que la base del modelo, es la misma estructura del delay bsico sin realimentacin, pero con un tiempo de retraso tpicamente entre 20-30 milisegundos, para lograr la superposicin del sonido consigo mismo. El modelo de delay bsico no produce las variaciones de tono que el efecto requiere pues el tiempo de delay es fijo, por lo que es necesario aadir un segundo elemento. Este segundo elemento que completa el modelo de chorus es el encargado de que cambie el tiempo de retardo, para as conseguir la modulacin del tono. Para la modulacin de tono se podra usar, cualquier tipo de onda, por ejemplo una senoidal. Esta forma de onda debe cambiar lentamente (3Hz o menor frecuencia) y nos referiremos a ella como un LFO (oscilador de baja frecuencia). Se puede controlar el efecto, cambiando la frecuencia de la forma onda, su amplitud y su forma. La ecuacin en diferencia que caracteriza al modelo es: y(n) = x(n) +Mix x(n-m) (17) Donde Mix controla la cantidad de coro que se percibe y m representa el nmero de muestras de retraso para el eco. Recordemos que el tiempo correspondiente a una muestra de retraso corresponde a tdelay = m* Ts , donde Ts es el perodo de muestreo. Este tiempo de retraso es el que vara ahora de acuerdo con el LFO, de forma que podemos escribir: m= f(Base,Barrido, Frecuencia, Forma)LFO (18)

Es posible establecer variaciones en el modelo del efecto, como por ejemplo, en vez de usar un LFO se podra usar un generador de tiempos de retraso, variables y aleatorios.

I.T.T esp. Sonido e Imagen

- 121 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera 8.2.2.2. Parmetros Comunes

Procesador Digital de efectos mediante DSP TMS320C6713

1. Delay. Este parmetro controla la cantidad de retraso usado, ms especficamente en realidad controla el mnimo tiempo de retraso que se usa. 2 Profundidad de Barrido. Este parmetro controla cunto vara el retraso total en el tiempo. Usualmente se expresa en milisegundos. As: Delay+ Profundidad de Barrido = Mximo delay usado (19) Este control puede ser visto tambin como la amplitud pico a pico del LFO. En la figura 65 se ilustra la relacin entre los dos parmetros anteriores y su significado.

Figura 65 Descripcin de la profundidad de barrido en la seal

3. Forma de onda del LFO. La forma de onda del LFO muestra como cambia el tiempo de retraso. Cuando la forma de onda alcanza su mximo, entonces el retraso es mayor. Cuando la forma de onda del LFO se incrementa (aumenta el retraso), el tono es menor (disminuye la frecuencia), y cuando se decrementa (menor tiempo de retardo), el tono se incrementa. Las formas de onda ms usadas para el LFO se muestran en la figura 66, siendo la comnmente ms empleada para el chorus, la senoidal.

Figura 66. Tipos distintos de forma de Onda

Para comprender como afecta la profundidad de barrido y la forma de onda del LFO a la modulacin de tono, debe tenerse en cuenta que la cantidad de modulacin de tono introducida por el chorus, se relaciona con cmo cambia la forma de onda del LFO. Las partes ms abruptas de la forma de onda I.T.T esp. Sonido e Imagen - 122 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

producen una gran cantidad de modulacin de tono, mientras que las partes relativamente llanas tienen un efecto muy tenue o casi nulo en la modulacin de tono. Podemos usar este razonamiento para comprender cmo la profundidad de barrido vara el tono. Si se incrementa la profundidad de barrido se est estirando verticalmente la forma de onda, lo que la hace ms abrupta. De ah que el tono se altere ms. En cuanto a la forma de la onda usada en el LFO diremos: - El seno es una funcin muy suave que est continuamente cambiando, as que el tono est tambin continuamente cambiando. Es la opcin ms usada en el chorus. - La triangular por su parte, slo produce dos tonos apreciables, porque la pendiente slo tiene dos valores diferentes y el cambio entre los dos tonos es repentino. - La logartmica es suave en la mayor parte de su ciclo, pero presenta un salto al final del mismo. Debido a que la pendiente al principio y al final es diferente, existe un cambio abrupto tambin. 4. Frecuencia de oscilacin. Este parmetro es realmente intuitivo. Se refiere a la frecuencia de repeticin de la forma de onda peridica usada por el LFO. Siguiendo una lnea de razonamiento anloga al caso de la forma y la profundidad de barrido, se llega a la conclusin de que incrementando la frecuencia se consigue una compresin en el tiempo de la forma de onda del LFO, lo que ocasiona una mayor modulacin de tono. 8.8.2.3. Resumen. Todo lo expuesto hasta el momento se basa a una sencilla voz en chorus, ello significa que slo tenemos una copia de la entrada. Pero no hay razn por la cual no se puedan sacar mltiples copias del sonido, modelando la situacin con ms de dos instrumentos en coro. Algunas unidades de chorus permiten hacer esto e incluso elegir cuntas voces usar. Tpicamente, un chorus multivoz usa un LFO nico para todas las voces, pero cada voz tiene una fase diferente. Esto quiere decir que en un punto del tiempo cada voz est en un punto distinto de su forma de onda, de manera que tendran distintos tiempos de delay. Si todas las voces estuvieran en fase, tendra el mismo efecto de una simple voz con el nivel incrementado. Tambin es posible que cada voz tenga su propio LFO e incluso frecuencia. El modelo para un chorus multivoz se muestra en la figura 67

I.T.T esp. Sonido e Imagen

- 123 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 67 Modelo de Chorus multivoz

8.2.2.4. Implementacin Las unidades de delay bsicas son fciles de implementar en el dominio digital, tal y como se describi anteriormente. De cualquier forma, un delay con tiempo de retraso variable segn el modelo de chorus bsico, conlleva ms trabajo. As, adems de sintetizar el oscilador, el cambio en el tiempo de retraso requerir tiempos que no son mltiplos enteros del periodo de muestreo. As, es frecuente el efectuar una estimacin del valor de la seal entre dos de los valores que tenemos almacenados. Con estos valores contiguos, podemos tomar una estimacin del valor deseado, esto es una interpolacin. La posibilidad ms extendida es la de conectar estos dos valores por una lnea recta y efectuar una interpolacin lineal. Este mtodo es simple, pero muy efectivo a la hora de anular el zipper noise que se producira sin interpolacin. No obstante, otros mtodos ms complejos de interpolacin suavizan an ms este ruido perjudicial y podran ser usados para optimizar an ms la calidad del sonido. Los parmetros tpicos de control por parte del usuario sern: Mix. Delay Profundidad de Barrido Frecuencia Forma de onda.

I.T.T esp. Sonido e Imagen

- 124 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

8.2.3 Flanger
8.2.3.1. Introduccin El efecto de flanger produce un sonido muy caracterstico, al que mucha gente se refiere con el trmino ingls whoosing, o lo que es lo mismo, un sonido muy similar al del vuelo de un avin de motor a reaccin volando sobre la cabeza del oyente. El efecto de flanger se caracteriza porque crea un grupo de muescas igualmente espaciadas en el espectro de audio que se desplazarn armnicamente por l filtrando la seal de forma que se produce tal efecto. 8.2.3.2. Principios y Modelado Se cree que el efecto Flanger fue descubierto por accidente, se dice que los Beatles lo descubrieron mientras grababan. As, un magnetfono estaba siendo usado como unidad de delay y alguien toc el borde de una bobina de la cinta cambiando el tono. Con alguna mezcla ms de seales, el efecto caracterstico del flanger fue creado. El borde de una cinta magntica se designa en ingls por la palabra flange de ah el nombre del efecto. , El modelado del efecto de flanger es muy similar al del chorus, pero con tiempos de retardo menores y con el uso de una forma de onda tpicamente triangular para el LFO. As, este efecto se modela mezclando una seal con una copia levemente retrasada de s misma, donde la longitud del retardo est constantemente cambiando. Por tanto, para la construccin del modelo definitivo, partimos del modelo de delay bsico sin realimentar. Esta unidad no es otra cosa que un filtro digital en peine (CombFilter) que produce una serie de muescas en la respuesta frecuencial de una seal. Para producirlas, basta con mezclar la muestra retardada con la entrada actual, porque para algunas frecuencias el retraso de fase introducido ser de 180 grados, lo que es equivalente a aadir exactamente la entrada pero negativa. As cuando se mezcla esta seal con la entrada, las frecuencias que experimentaron el retraso de 180 grados se cancelarn exactamente con las componentes originales de la entrada para tales frecuencias, interferencia destructiva, originando las muescas para dichas frecuencias. El caso contrario se dar cuando el desfase producido sea de 360 en cuyo caso las seales original y retrasada se sumarn doblando su valor, interferencia constructiva. Pues bien, con un retraso tan corto como el caracterstico del flanger, ni se

I.T.T esp. Sonido e Imagen

- 125 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

escucha un eco , ni una superposicin de sonidos. Lo que sucede es que las muescas propias de la respuesta en frecuencia de este filtro estn muy espaciadas, produciendo un efecto de filtrado frecuencial apreciable. El efecto completo se consigue cuando se vara este retraso en el rango tpico de 1 milisegundo a 10 milisegundos, lo que da lugar a la compresin y expansin de las muescas de la respuesta en frecuencia del modelo, precisamente lo que caracteriza al sonido del flanger. El las figuras 68 y 69 podemos ver el diagrama de sistema correspondiente al modelo definitivo de flanger.

Figura 68.Flanger bsico

.
Figura 69. Representacin frecuencial del efecto Flanger

El sonido caracterstico del flanger es generado cuando las muescas frecuenciales recorren el eje de frecuencial a lo largo del tiempo como resultado de la variacin del retraso con un LFO a frecuencia de aproximadamente 0,5 Hz. As, cuando el retraso se incrementa, las muescas se comprimen hacia las bajas frecuencias y cuando ste disminuye, dichas muescas se expanden hacia las altas frecuencias. La forma de onda del LFO ser triangular preferiblemente o senoidal. Como ocurra en el chorus, el cambio del tiempo de retraso del flanger produce modulacin de tono en la copia del sonido original; copia que luego ser mezclada con la seal sin alterar. La ecuacin en diferencia que caracteriza al modelo es: y(n) = x(n) +Mix * x(n-m) (20) Donde Mix controla la cantidad de efecto que se percibe y m representa el

I.T.T esp. Sonido e Imagen

- 126 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

nmero de samples de retraso para la copia. Recurdese que el tiempo correspondiente a m samples de retraso es tdelay = m* Ts , donde Ts es el perodo de muestreo. Este tiempo de retraso es el que vara de acuerdo con el LFO, de forma que podemos escribir: m= f(Base,Barrido, Frecuencia, Forma)LFO (21)

8.2.3.3 Parmetros comunes 1. Mix. Cuando este parmetro es cero, la respuesta en frecuencia es plana (ganancia unidad), pero a medida que se incrementa acercndose a uno, las muescas empiezan a aparecer, extendindose hacia cero, alcanzndolo cuando Mix=1. Incluso cuando las muescas estn cerca de ser cero, el efecto de flanger es audible, siendo mximo cuando mix es igual a la unidad. 2. Delay. Especifica el mnimo retraso usada en la copia de la seal de entrada. Razonando sobre la respuesta en frecuencia, este valor determina cmo de lejos (derecha en el eje de frecuencias) ir la primera muesca. Recurdese que a menor tiempo de retraso, menor compresin de las muescas). 3. Profundidad de Barrido. Este parmetro determina cmo de amplio es el barrido en trminos del tiempo de retraso, esto es la amplitud de pico a pico del LFO. Es el delay mximo adicional que se le aade al base para buscar la copia retrasada segn la ecuacin: Delay+ Profundidad de Barrido = Mximo delay usado (22)

As, este parmetro fija el delay mximo, que a su vez determina cmo de cerca en el eje de frecuencias, (recurdese que a mayor retraso mayor compresin de las muescas), llegar la primera muesca. Un valor pequeo para este parmetro mantendr una pequea variacin en el tiempo de retraso, causando una compresin/expansin de la respuesta en frecuencia menos acusada, mientras que un valor elevado causar que las muescas se compriman y expandan a lo largo de un rea mayor. As mismo, a medida que la profundidad de barrido se incrementa, la modulacin en el tono se vuelve ms notable. La figura 65 ilustra la relacin entre los parmetros 2 y 3 y es perfectamente vlida aqu. 4. Forma de onda del LFO. Algunas unidades de flanger permiten elegir la forma de onda usada por el LFO. Esta forma de onda determina como vara el retraso para generar el efecto. La ms usada y caracterstica por el matiz que aade al efecto es la triangular, aunque puede usarse tambin la senosoidal.

I.T.T esp. Sonido e Imagen

- 127 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

5. Frecuencia. Controla la frecuencia de repeticin de la forma de onda usada por el LFO. Afecta directamente a la modulacin de tono producida, a mayor frecuencia, mayor modulacin de tono en la copia.

6 Realimentacin. Algunas unidades permiten tomar una porcin de la salida del flanger y llevarla a la entrada. Una gran cantidad de realimentacin puede crear un sonido muy metlico e intenso, con eco. Es importante sealar que si este parmetro es mayor que uno , el sistema puede volverse inestable y resultar peligroso para la integridad del equipo. De esta forma, incluyendo este lazo, el Flanger completo queda modelado de acuerdo con la figura 70. Para desactivar el lazo, basta con fijar Ganancia de realimentacin= 0.

Figura 70 Modelo del efecto Flanger Completo

Todo lo dicho en el apartado sobre la implementacin del chorus es aplicable a este apartado, incluida la necesidad de interpolar. La nica diferencia ser la implementacin del lazo de realimentacin. Los parmetros tpicos de control por parte del usuario sern: - Mix. - Ganancia de Realimentacin. - Todos los parmetros del LFO: Delay, profundidad de Barrido, frecuencia y forma de onda.

De esta forma, en una nica unidad general segn el modelo de la figura 35, se pueden implementar ambos efectos. La actuacin de uno u otro efecto depender de los parmetros introducidos. As, se tendr chorus si Ganancia de Realimentacin=0 , delay =20 milisegundos y barrido =10 milisegundos I.T.T esp. Sonido e Imagen - 128 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

(parmetros tpicos) y un Flanger si delay=1 milisegundo y barrido=9 milisegundos para cualquier Ganancia de Realimentacin menor que uno.

8.2.4 Reverb
8.2.4.1. Introduccin La reverberacin es probablemente uno de los efectos ms utilizados en la msica. Muchas personas no comprenden la importancia de la reverberacin y sin embargo escuchan reverberacin de forma natural continuamente a su alrededor y sin la ayuda de ningn tipo de procesador especial. 8.2.4.2. Principios y Modelado La reverberacin es el resultado de varias reflexiones del sonido que ocurren dentro de una habitacin. As, desde cualquier fuente de sonido, como por ejemplo los altavoces de un equipo de msica, hay un camino directo que la msica recorre para alcanzar los odos. El sonido puede tambin tomar un camino ms largo a travs del rebote en las paredes o el techo, previamente a su llegada a los odos, tal y como se ilustra en la figura 71.

Figura 71 Camino recorrido por los haces sonoros

La onda de sonora reflejada llegar al odo con cierto retardo respecto al rayo directo, pues viaja una mayor distancia. Adems, es generalmente ms dbil, ya que las paredes y otras superficies de la habitacin, as como el propio aire, absorben parte de la energa del sonido. La onda reflejada puede rebotar varias veces en distintas paredes antes de llegar a nuestros odos. Esta serie de atenuaciones y retardos es lo que se denomina reverberacin, y es el efecto que produce la sensacin de espacio en una habitacin. En la reverberacin, cada onda de sonido retardada llega en un perodo de tiempo tan corto que la onda reflejada no es percibida como una copia del original. As, a pesar de no poder distinguir a cada onda reflejada, si podemos escuchar el efecto generado por toda la serie de reflexiones. Aparentemente un modelo realimentado de delay como el ya explicado podra producir reverberacin. No obstante, una unidad de este tipo puede causar un efecto similar, pero no tiene en cuenta una serie de caractersticas fundamentales para realizar un modelado realista de la reverberacin. I.T.T esp. Sonido e Imagen - 129 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

En primer lugar, no se podr modelar el hecho de que la tasa de llegadas de las ondas reflejadas que llega al oyente vara con el tiempo, pues este modelo slo puede simular reflexiones con un intervalo fijo entre ellas (ver respuesta al impulso unitario del delay realimentado). Ms concretamente, en una simulacin realista de la reverberacin, deben existir reflexiones tempranas y reflexiones tardas. As, tras la llegada del rayo directo, aparece un corto espacio de tiempo en el que las reflexiones se caracterizan por ser bien definidas y direccionadas. Estas reflexiones estn directamente relacionadas con la forma y tamao de la habitacin, as como con la posicin de la fuente del sonido y del oyente. Son las denominadas reflexiones tempranas. Despus de estas reflexiones, la tasa de ondas reflejadas que llegan al odo aumenta considerablemente. En este segundo perodo, las reflexiones son ms aleatorias y difcilmente relacionables con las caractersticas fsicas de la habitacin. Esto es lo que se denomina reverberacin difusa o reflexiones tardas. La figura 72 muestra la respuesta al impulso unitario de un simulador de reverberacin realista.

Figura 72. Camino recorrido por los haces sonoros

Otra caracterstica importante de la reverberacin realista es la correlacin de las seales que llegan al odo. Para darle al oyente una verdadera sensacin de ambiente espacioso, el sonido que llega a cada odo debe ser en cierta forma incoherente. Esta es una de las razones por la que una sala de conciertos tiene techos altos. As, al usar techos altos, las primeras reflexiones que llegan al odo sern las procedentes del rebote de las paredes, y como stas estn situadas a diferentes distancias una de otra respecto al oyente, el sonido que llega a cada odo lo har en momentos distintos. Una medida utilizada para caracterizar la reverberacin de una habitacin es el denominado tiempo de reverberacin. Tcnicamente, es el tiempo que le toma al nivel de presin del sonido o intensidad del mismo en decaer 60 dB de su valor original. Tiempos de reverberacin largos indican que la energa del sonido se mantiene dentro de la habitacin por mayor tiempo, antes de ser absorbida. I.T.T esp. Sonido e Imagen - 130 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Las salas de conciertos tienen un tiempo de reverberacin entre 1,5 y 2 segundos. El tiempo de reverberacin se encuentra fuertemente ligado a dos factores, las superficies de la habitacin y el tamao de la misma. As, las superficies de la habitacin determinan cunta energa se pierde en cada reflexin. De este modo, los materiales altamente reflectantes como ladrillos y ventanas o cermica, incrementan el tiempo de reflexin, pues no absorben mucha energa debido a que son muy rgidos. Por su parte, los materiales absorbentes tales como cortinas, reducirn el tiempo de reverberacin. Hay que sealar aqu que la capacidad de absorcin de los materiales vara adems con la frecuencia. Por otro lado, las habitaciones grandes tienen mayores tiempos de reverberacin, ya que en promedio las ondas de sonido viajan distancias ms largas entre reflexiones. As mismo, el propio aire de la habitacin atena las ondas de sonido (sobre todo las altas frecuencias), reduciendo el tiempo de reverberacin. Esta atenuacin vara adems con la humedad y la temperatura. Es frecuente por ello, incorporar filtros paso bajo en los simuladores de reverberacin realista. Centrando ya nuestra atencin sobre el modelado de las reflexiones tempranas y tardas, se debe sealar que las primeras estn relativamente dispersas y abarcan poco tiempo y se implementan frecuentemente usando lneas de retraso multi-tap. Al final de la lneas multi-tap se puede incluir un filtro paso-bajo para filtrar la seal y simular el efecto de absorcin del aire. A continuacin se simularn las reflexiones tardas. La figura 73 muestra este esquema.

Figura 73 Esquema de un dispositivo Reverb

En cuanto a las reflexiones tardas se refiere, debe indicarse que desde un punto de vista perceptual, las principales cualidades de una buena respuesta al impulso unitario en cuanto a reflexiones tardas se refiere, se caracterizar por: 1. Una suave cadencia 2. Una suave, aunque no demasiado regular, respuesta en frecuencia. Proporcionar una cadencia de la repuesta al impulso de forma exponencial no es problema, ya que todos los sistemas lineales estables poseen una respuesta al impulso exponencialmente decreciente. La tarea ms difcil es hacerla I.T.T esp. Sonido e Imagen - 131 por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

decaer de forma suave. En general, una cadencia suave resultar cuando la densidad del eco es suficientemente alta.

Una suave respuesta en frecuencia no debe exhibir largos huecos o impulsos. Esto se consigue igualmente, cuando la densidad del eco es suficientemente alta. Por lo tanto, para conseguir la deseada densidad de eco se puede usar una cadena serie de filtros allpass, ya que como se apreciaba en su respuesta al impulso unitario , estos filtros tienen la propiedad de afectar a la fase de la seal, permitiendo dar forma a los desvanecimientos. Teniendo en cuenta todo lo expuesto, en la figura 74 se presenta el modelo completo del reverberador realista, donde se ha sustituido la cadena serie de allpass por un filtro Butterworth que cumple la doble funcin de modelar la atenuacin de las altas frecuencias debida al aire, e introducir el cambio de fase caracterstico de los allpass, a fin de conseguir la densidad de eco buscada . Este modelo tambin es denominado reberberador de Schroeder.

Figura 74. Esquema del dispositivo Reverb implementado

El filtro IIR es un pasabajos de tercer orden de Butterworth . Su funcin de transferencia es la siguiente: y[n] = 0.4 y[n-1] 0.2499 y[n-2] + 0.0441 y[n-3] + 0.5814 x[n-1] + 0.2142 x[n-2] (25) Es importante sealar que modelos ms avanzados pueden desarrollarse para habitaciones con geometras concretas, posicin de la fuente especfica, etc, a partir del trabajo directo con funciones de transferencia. As pues, el diseo de reverberaciones especficas es todo un campo de desarrollo en el campo dedicado a la fabricacin y diseo de procesadores de efectos. No es la pretensin de este Proyecto Fin de Carrera profundizar ms en el diseo de los reverberadores, por ser ste el objeto de otro trabajo en s mismo, sino facilitar las nociones fundamentales y caracterizar un modelo vlido para la posterior implementacin.

I.T.T esp. Sonido e Imagen

- 132 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Ahora bien, cabra preguntarse cul es la utilidad de aadir reverberacin a los instrumentos o a los sonidos grabados?. Pues muchas veces cuando se est escuchando msica o se est tocando un instrumento, se est haciendo en ambientes con muy poca o muy pobre reverberacin. Por ejemplo, dentro de un coche o en un local con malas condiciones de reverberacin, donde no es posible recrear el sonido majestuoso de una orquesta. As, una seal sin nada o muy poca reverberacin puede sonar poco natural. Ya que no siempre es posible escuchar msica, o hacerla, en una sala de conciertos, es por lo que se le agrega reverberacin a las grabaciones y a los instrumentos. 8.2.4.3. Diferentes tipos de Reverb.

1. Gated Reverb. Una reverberacin de este tipo es creada truncando simplemente la respuesta al impulso del reverberador clsico, lo cual consistir en slo permitir al sonido el efectuar un nmero concreto de reflexiones. La cantidad de tiempo que transcurre hasta que la respuesta queda truncada se denomina Gate time , como se ilustra en la figura 75. Algunas unidades permiten adems obtener una cadencia ms gradual en el truncamiento, en vez de un silencio abrupto.

Figura 75 .Respuesta al impulso unitario del efecto Gate Reverb

2. Reversed Reverb. Este tipo de reverberacin se consigue girando la respuesta al impulso unitario de la figura 76. As, en vez de simular reflexiones que se van atenuando gradualmente hasta desaparecer, se consiguen reflexiones en las cuales el sonido se vuelve ms fuerte con el tiempo y despus se corta abruptamente. La cantidad de tiempo que el sonido en la cual el sonido se va armando se denomina reverse time o al igual que antes gate time, pues no es ms que una gated reverb pero invertida en el tiempo. En la figura 77 podemos ver su respuesta al impulso unitario.

I.T.T esp. Sonido e Imagen

- 133 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 76 Respuesta al impulso unitario del efecto Gate Reverb

Figura 77.Respuesta al impulso unitario del efecto Reversed Reverb

Esta forma de reverberacin tiene un sonido muy parecido al que se consigue con el slapback delay ya explicado, porque termina de repente. No obstante, si se escucha detenidamente, se puede apreciar el sonido tomando forma.

8.2.4.4 Parmetros comunes

1. Predelay: Se define como la cantidad de tiempo que las primeras reflexiones tardan en ser odas. En algunas ocasiones se puede definir como el tiempo que tardan en aparecer las reflexiones tardas. Para la simulacin de ambientes reales usando los dos tipos de predelays, el predelay para las primeras reflexiones debe ser siempre menor que el correspondiente a las tardas como se aprecia en la figura 78.

Figura 78. Explicacin del parmetro Predelay

I.T.T esp. Sonido e Imagen

- 134 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

2. Reverb Decay. Este parmetro indica durante cunto tiempo la reverberacin puede ser oda despus de que la entrada se detenga. Se fija tpicamente en milisegundos y no es otra cosa que el RT 3. Gate Reverb. Se aplica a las gated reverb. Es el tiempo que se permite sonar a la unidad. Es vlido tambin para las reversed reverbs. 3. Gate Reverb. Se aplica a las gated reverb. Es el tiempo que se permite sonar a la unidad. Es vlido tambin para las reversed reverbs. 4. Gate decay time. Algunas unidades gated reverb permiten tambin manejar este parmetro. As, con l se controla la forma en que la gated reverb corta. Un valor pequeo conllevar que la unidad corte abruptamente. Valores mayores para este parmetro, ocasionan que a la unidad se le conceda ms tiempo para extinguirse gradualmente las reflexiones. 5. Gate Threshold. En vez de aplicar una gated reverb a una seal completa, se podra slo aplicar los valores que sobrepasen este umbral dependiendo de los niveles de seal de entrada. Tpicamente, por encima de este umbral usamos una reverberacin normal sin truncamiento alguno, pero cuando la seal cae por debajo de l, la puerta cierra y el nmero de reflexiones se reduce. Se abrir de nuevo la puerta cuando la seal supere de nuevo el umbral gate threshold. 8.2.4.5. Implementacin La reverberacin es un efecto muy adecuado para su implementacin en DSP s. La unidad multitap se implementar usando una tabla circular al igual que se haca en todos los efectos anteriores. Mediante varios punteros se extraern las muestras correspondientes a los diferentes tiempos de retraso. El filtro Butterworth se implementar digitalmente de forma directa a partir de la ecuacin (25). Se debern guardar tambin dos muestras procedentes de la suma de la lnea multi-tap, que denotaremos por x(n). Igualmente se guardarn tres muestras correspondientes a la salida del filtro IIR que denotaremos como y(n). Por ltimo, sealar que el usuario controlar los parmetros correspondientes a los cuatro tiempos de retardo de la lnea multi-tap, Las cuatro ganancias de cada tap y las dos ganancias G5 y G6 que controlan cunta seal tratada y original se mezcla respectivamente.

I.T.T esp. Sonido e Imagen

- 135 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

9. Conexionado e imgenes
Una vez descrito el funcionamiento del esquema presentamos diversas imgenes acompaadas de comentarios que mostrarn de una forma visual tanto las conexiones y montaje fsico de los dispositivos, como los distintos objetos que compondrn nuestro proyecto. Tales como guitarra acstica, Placa de Desarrollo, Altavoces de PC, Ordenador con el software correspondiente. El Montaje realizado est comprendido de los siguientes elementos: a) Guitarra acstica Vanity. b) Altavoces Tec sound modelo 707. c) Placa de desarrollo DSK 6713 (Development System Kit) Texas Instruments d) Adaptador Jack 5/4 < - > 3,5 e) PC y software adecuado para el manejo de la Placa (GRIJOTECH DSP1, Aplicacin Grfica programada en VC++ v.6), proc_efectos.out (Archivo compilado con CCS, cargado en la DSP), Code Composer Studio (Debe estar encendido para que pueda funcionar el RTDX). A continuacin se muestran algunas fotografas de los elementos y el montaje final completo. a) Guitarra acstica Vanity

Figura 79.Guitarra electroacstica Vanity

I.T.T esp. Sonido e Imagen

- 136 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

b) Altavoces Tec sound modelo 707.

Figura 80. Altavoces de PC

c) Placa de desarrollo DSK 6713 (Development System Kit) Texas Instruments

Figura 81.

I.T.T esp. Sonido e Imagen

- 137 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera d) Adaptador Jack 5/4 < - > 3,5

Procesador Digital de efectos mediante DSP TMS320C6713

Figura 82. Jack Adaptador 3,5-5,1/4

e) PC y software adecuado para el manejo de la Placa (GRIJOTECH DSP1, Aplicacin Grfica programada en VC++ v.6), proc_efectos.out (Archivo compilado con CCS, cargado en la DSP), Code Composer Studio (Debe estar encendido para que pueda funcionar el RTDX).

Figura 73. PC+Software Grijotech DSP1 para Procesador de efectos.

I.T.T esp. Sonido e Imagen

- 138 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

10. Conclusiones y futuros desarrollos


10.1 Conclusiones Las pruebas realizadas mediante nuestra Interficie y la DSP han resultado correctas, en la medida en que se ha podido realizar por la escasez de tiempo. Se han obtenido la mayora de los resultados esperados en todos los algoritmos, por lo que se relatan ms adelante algunas particularidades de stos. A continuacin se realiza una descripcin efecto por efecto de los resultados obtenidos: - Distorsion1-> Efecto esperado. Distorsin para solos de elctrica. - Puerta de Ruido-> El algoritmo funciona correctamente, si bien no tiene mucho inters como efecto, ya que se suele utilizar como herramienta de edicin. - Compresor-> Buen efecto, parecido a distorsin1 pero ms compacto, que es precisamente lo que se espera de la compresin. - Expansor-> El algoritmo funciona correctamente, si bien no tiene mucho inters como efecto, sino ms bien como herramienta de edicin tal y como suceda con la Puerta de Ruidos. - Delay-> Efecto muy llamativo y muy usado. Funcionamiento correcto. - Delay realimentado-> Modificacin del anterior efecto, con respuesta al impulso atenuada de forma progresiva, consiguindose un realzado del sonido an ms llamativo. Funcionamiento correcto. - Chorus->Efecto de coro con modulacin del instrumento en coro ciertamente conseguido. Funciona correctamente. - Flanger-> Efecto muy espectacular con las mismas propiedades que las del efecto implementado en teora. . Reberb-> Efecto de eco parecido al de delay realimentado. No obstante, una detenida audicin del mismo nos muestra las particularidades propias de la reverb, en contraposicin con la de Delay. De este modo, el efecto de reverberacin realista implementado presenta un sonido ms natural de lo que sera el eco dentro de una habitacin. As mismo se hace notar la atenuacin de las altas frecuencias que reverberan menos que las notas graves, todo lo cual dota al efecto de mayor realismo, que es justo lo que se buscaba.

I.T.T esp. Sonido e Imagen

- 139 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

En general todos los algoritmos han funcionado segn lo esperado, por lo que la implementacin puede considerarse un xito.

10.2 Futuros desarrollos. Una vez detallados los contenidos esenciales y fundamentales del proyecto, en este apartado se comentan posibles desarrollos futuros o posibles ampliaciones del mismo. Una primera ampliacin evidente sera el desarrollo de nuevos efectos o la modificacin de algunos ya existentes que podran admitir una mayor complejidad con el objetivo de lograr sonidos an ms conseguidos, como por ejemplo crear el efecto de phaser, o bien implementar condiciones acsticas concretas de una sala en el efecto de reverberacin, con el fin de reproducir el sonido en el interior de la misma, incluyendo las caractersticas especiales de ella, tales como las atenuaciones o amplificaciones de ciertos materiales, dimensiones y geometras especficas, etc. Tambin sera factible la realizacin en un futuro de un sistema de comunicacin mucho ms robusto, del que se ha implementado en este proyecto, ya que la mayora de transmisiones, no poseen verificacin de recepcin, ni de envo, por lo que podra ser interesante investigar acerca de este campo, lo conciso del tiempo de ejecucin de nuestro proyecto, ha hecho imposible una implementacin ms adecuada y confiable, aunque cabe decir, que no se aprecian fallos en la comunicacin. Otra lnea de investigacin, podra crearse, si se intentase desarrollar un sistema de comunicacin independiente de RTDX, quizs mediante la apertura y cierre de archivos y flujos de Datos, ya que el CCS hace las veces de servidor de comunicacin, por lo que es indispensable la activacin de ste durante la ejecucin del programa. Cabe decir, que sera interesante terminar de implementar pequeos detalles en la interficie de comunicacin, como el uso del smitter, para poder conocer visualmente, los valores de Energa de una trama sonora, Creacin de Archivos help para ayuda, etc... Finalmente, cabe decir que la implementacin de nuestro sistema ha sido dura, ya que no se dispona de informacin adecuada, por lo que se han empleado infinidad de horas de consulta y pruebas sobre el compilador con el fin de implementar ciertas funcionalidades. A pesar de todo ello, tengo el profundo convencimiento que este novedoso sistema tendra una gran acogida en la mayora de hogares, donde exista un msico, ya que su sencillez de uso y sus capacidades, logran simular bastante bien el funcionamiento de cualquier pedal de efectos profesional.

I.T.T esp. Sonido e Imagen

- 140 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

11. Compromiso medioambiental


Un objetivo a asolir, adems de seguir buenas pautas y compromiso medioambiental, es el diseo de los dispositivos para que stos sean ms precisos y considerados con el medio ambiente, se ha determinado la configuracin de los dispositivos en modo de bajo consumo, ya que esto optimizar el gasto de energa del dispositivo. Es necesario mencionar, que nuestro proyecto a priori, causara los mnimos daos medioambientales, ya que no produce residuos, adems como la comunicacin se realiza mediante cableado fsico, ni siquiera produce EMI s (Interferencias electromagnticas). nicamente se puede tomar en cuenta el consumo elctrico del dispositivo, para mitigar este efecto y ser consecuentes con la preservacin de los recursos y formas de vida de la tierra, se configura el dispositivo en modo de bajo consumo. Cuando la DSP funciona en este modo, nicamente se alimenta con corriente, en el caso que llegue una muestra al cdec, desde los convertidores A/D D/A, en caso contrario, permanece en el estado de sleep (reposo).

I.T.T esp. Sonido e Imagen

- 141 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

12. Bibliografa

[1] Chassaing, Rulph. Digital signal processing and applications with the C6713 and C6416 DSK / by Rulph Chassaing. Published by John Wiley & Sons, Inc., Hoboken, New Jersey. Copyright 2005 [2] RULPH CHASSAING: DSP APPLICATIONS USING C AND THE TMS320C6x DSK. Published by John Wiley & Sons, Inc., Hoboken, New Jersey. [3] JULIUS O.SMITH III (jos@ccrma.stanford.edu) . Digital Waveguide. Center for Computer Research in Music and Acoustics (CCRMA) . Department of Music, Stanford University Stanford, California 94305. [4] Proyectos DSP. Universidad de repblica. Informe sobre tecologa DSP aplicada a efectos de sonido. [5] ngel Prez Rodrguez. Estudio de efectos de Audio para guitarra e implantacin mediante DSP. Feb/2006. Escuela Tcnica Superior de Ingeniera (ICAI). [6] Processador d efectes d udio virtual. David Muoz Jimnez. UPC EUETIT. Enero de 2006. [7] Archana Shrotriya. Writing Win32 Dynamic Link Libraries (DLLs) and Calling Them from LabVIEW. Copyright 1996 National Instruments Corporation. [8] http://www.dcp.com.ar/mfc/pagina1.htm#WorkSpace Demian C. Panello. Apunte de Visual C++ [9] Dahnoun Nai. DSP implementation using TMSC6713 Texas Instruments DSP and C/C++. 1996. [10] Ignacio Moreno Velasco y Pedro L. Snchez Ortega. Introduccin a la Instrumentacin Virtual. Programacin en LabVIEW (Ver. 5.5) [11] Ruben Trejo Almraz. Gua de LabView. Programacin general y uso en Control. SACRAMENTO. Universidad Estatal de California. 1997. Facultad de Ingenieras . [12] William Luis Terry .Implementacin de efectos de audio y herramientas de composicin musical en DSP. Universidad Peruana de Ciencias Aplicadas. [13] The TLV320AIC23B.pdf. Texas Instrumenst. Febrero 2004. [14] The SPRU741A CSL.pdf.CSL (Chip Support Library). Texas Instrumenst. September 2004 [15] The TMS320C6000 Chip Support Library API Reference Guide. Texas Instruments
SPRU401J. August 2004

I.T.T esp. Sonido e Imagen

- 142 -

por: J.M.Grijota Delgado

Proyecto Fin de Carrera

Procesador Digital de efectos mediante DSP TMS320C6713

Nota: Para una revisin pormenorizada de los documentos utilizados en la Referencia.


Revisar el contenido del CD, en la Seccin Documentacin.

I.T.T esp. Sonido e Imagen

- 143 -

por: J.M.Grijota Delgado

You might also like