RAE
1. TIPO DE DOCUMENTO: Trabajo de grado para optar por el título de INGENIERO DE SONIDO.2. TÍTULO: DESARROLLO Y CONSTRUCCIÓN DE UN DISPOSITIVO PARA LA RETROALIMENTACIÓN DE SEÑALES DE AUDIO IMPLEMENTANDO UN SISTEMA EMBEBIDO3. AUTORES: Erick Collante González.4. LUGAR: Bogotá, D.C.5. FECHA: Octubre de 2013.6. PALABRAS CLAVE: Loop, Sistemas Embebido, S.O, BeagleBoard-Xm, WandBoard, Señales de Audio, Conectores TRS, Linux, Qt Creator, Compilador.7. DESCRIPCIÓN DEL TRABAJO: El presente documento describe el diseño, desarrollo y construcción de un dispositivo para la grabación, manipulación y reproducción de señales de audio, el cual utiliza en su implementación un sistema embebido. El proyecto fue realizado bajo el sistema operativo Ubuntu 12.04 LTS, con la interfaz gráfica LXDE, el entorno de desarrollo utilizado para la programación y creación de la interfaz gráfica del programa fue Qt 4.8, el dispositivo consiste en la adaptación de un hardware electrónico para la interacción con el software, este tiene la posibilidad de capturar una señal de audio y reproducirla en forma cíclica, creando de esta manera ‘loops’ en tiempo real, también puede guardar bancos de sonido y reproducir audios grabados en sesiones pasadas. El primer S.E utilizado es la BeagleBoard-xM, el cual cuenta con un microprocesador de 1GHz ARM® CortexTM- A8, 512 MB de memoria RAM y dispone de puertos de expansión, USB, entrada y salida de audio Ethernet, HDMI y RS232 entro otros. El segundo S.E fue la Wandboard, esta tiene un procesador Freescale i.MX6 Quad de 1GHz, una memoria RAM de 2GB DDR3, entrada y salida de audio, HDMI, 2 Slot de micro SD, Puerto serial, Puerto USB, USB OTG, entre otros.8. LÍNEAS DE INVESTIGACIÓN: Línea de investigación de la USB: Tecnologías actuales y sociedad. Sub línea de Facultad de Ingeniería: Procesamiento Digital de Señales digitales y/o análogas. Campo temático del programa: Análisis y Procesamiento de Señales.9. FUENTES CONSULTADAS: Sergi Jordà Puig. (1997). Audio digital y MIDI. Madrid: Guías Monográficas Anaya Multimedia. Disponible en internet: http://es.scribd.com/doc/140416530/Sergi-Jorda-Puig-Audio-Digital-y-MIDI-1997-243p. Conexiones balanceadas y no balanceadas. 2013. Disponible en internet: http://www.doctorproaudio.com/doctor/temas/balanceado.htm.Procesamiento Audiovisual 3º II/ITIS”, Sesión 1: Programación Visual con Qt Creator, Disponible en la Web: http://dis.um.es/~ginesgm/files/doc/pav/guion1.pdf10. CONTENIDOS: En un mundo de evolución tecnológica constante, en la cual los procesos son cada día más rápidos, se debe tener a la mano herramientas que faciliten la forma de poder capturar y reproducir señales de audio. Los sistemas embebidos ofrecen las características de un computador la cual está especialmente diseñados para la solución óptima de la tarea o tareas a resolver.
1
A diferencia de un PC, el sistema embebido se dota con los módulos estrictamente necesarios para su función, por esta razón su costo es óptimo.La incorporación de un sistema embebido proporciona solución más precisa y rápida en su especialidad, ofrece un mayor número de opciones en los procesos de la actividad específica, y competitividad del producto por su aplicación definida respecto a otros productos similares.11. METODOLOGÍA: El enfoque de esta investigación es empírico-analítico ya que se pretende mejorar por medio de sistemas de electrónica programable la forma de capturar una señal de audio y reproducirla para obtener como resultado final una retroalimentación de señales.12. CONCLUSIONES: Este trabajo presenta el diseño y construcción de un dispositivo para la retroalimentación de señales de audio implementando un sistema embebido, el cual funciona como una herramienta de grabación y reproducción de audio en tiempo real, este sistema permite el almacenamiento de señales de audio provenientes de instrumentos musicales para ser manipuladas por el usuario y reproducir de forma cíclica las señales almacenadas en el sistema, creando de esta manera ‘loops’, también puede cargar archivos de audio preestablecidos y reproducir, detener y pausar audios desde diferentes carpetas del directorio, esto le permite a un músico poder ensayar un solo instrumental en una base armónica generada por el mismo.
2
DESARROLLO Y CONSTRUCCIÓN DE UN DISPOSITIVO PARA LA
RETROALIMENTACIÓN DE SEÑALES DE AUDIO UTILIZANDO UN SISTEMA
EMBEBIDO
ERICK COLLANTE GONZÁLEZ
UNIVERSIDAD DE SAN BUENAVENTURA - BOGOTÁ
FACULTAD DE INGENIERÍAS
INGENIERÍA DE SONIDO
PROYECTO DE GRADO
BOGOTÁ D.C
2013
3
DESARROLLO Y CONSTRUCCIÓN DE UN DISPOSITIVO PARA LA
RETROALIMENTACIÓN DE SEÑALES DE AUDIO UTILIZANDO UN SISTEMA
EMBEBIDO
ERICK COLLANTE GONZÁLEZ
Anteproyecto presentado para optar al título de Ingeniero de Sonido
Asesor
Ing. Nelson Rosas Jiménez, M. Sc.
UNIVERSIDAD DE SAN BUENAVENTURA - BOGOTÁ
FACULTAD DE INGENIERÍAS
INGENIERIA DE SONIDO
PROYECTO DE GRADO
BOGOTÁ D.C
2013
4
Nota de aceptación
__________________________
__________________________
__________________________
__________________________
__________________________
__________________________
_________________________
Presidente del jurado
__________________________
Firma del jurado
__________________________
Firma del jurado
Ciudad y fecha (dd/mes/año). ________,__/__/______
5
“El siguiente trabajo está dedicado a mi madre y a mi hermana”,
Ellas son mi razón de vivir y salir adelante.
6
AGRADECIMIENTOS
Tengo que agradecer principalmente a Dios el cual me ha dado todo y es quien
hace posible este proyecto, él se encargó de ponerlo todo en su debido momento,
poniendo a las personas indicadas en el lugar y momento exacto.
Gracias Dios por darme esta hermosa familia. Especialmente gracias a mi madre y
a mi tío William, por brindarme la oportunidad de estudiar esta carrera, gracias por
creer y confiar en mi, gracias por todas sus palabras de aliento que en su
momento fueron de gran fortaleza, gracias por darme con tanto cariño y amor todo
lo que necesité para que este sueño fuera realidad. Igualmente debo agradecer a
mis tíos en Bogotá, Fanny González y Nelson Paipa, apoyo incondicional en esta
ciudad, También debo agradecerle con mucho cariño a tía Marina González quien
siempre estuvo ahí cuando lo necesité. Gracias a mis primos Cesar, Karen y Mery
por hacer mi vida más feliz, No existen las palabras para agradecerles a todos,
toda la ayuda y apoyo infinito.
Agradecimientos a mi director de proyecto Ing. Nelson Rosas por darme su
confianza y entusiasmo para desarrollar este proyecto. También debo agradecer a
todas las personas que me colaboraron y que me guiaron en este trabajo,
Especialmente debo extender un total agradecimiento, a mi amigo el matemático
Emmanuel Rosales, su amable y desinteresada ayuda en el proceso de
compilación de programas y librerías para la arquitectura ARM fue indispensable
para que este trabajo saliera adelante.
7
TABLA DE CONTENIDO
pag.
INTRODUCCION....................................................................................................14
1. PLANTEAMIENTO DEL PROBLEMA..........................................................16
1.1 ANTECEDENTES........................................................................................16
1.2 DESCRIPCIÓN Y FORMULACION DEL PROBLEMA….............................26
1.3 JUSTIFICACIÓN..........................................................................................27
1.4 OBJETIVOS DE LA INVESTIGACIÓN.........................................................28
1.4.1 Objetivo General..........................................................................................28
1.4.2 Objetivo Especifico......................................................................................28
1.5 ALCANCES Y LIMITACIONES.....................................................................29
1.5.1 Alcances.......................................................................................................29
1.5.2 Limitaciones.................................................................................................29
2. METODOLOGÍA...........................................................................................30
2.1 ENFOQUE DE LA INVESTIGACIÓN...........................................................30
2.2 LÍNEA INSTITUCIONAL, SUBLÍNEA DE LA FACULTAD Y
CAMPO DE INVESTIGACIÓN. …................................................................30
2.3 HIPOTESIS..................................................................................................31
2.4 VARIABLES..................................................................................................31
2.4.1 Variables Independientes.............................................................................31
2.4.2 Variables Dependientes................................................................................31
1. MARCO TEÓRICO CONCEPTUAL.............................................................32
3.1 MEDIOS DE CONEXIÓN SEÑALES ANÁLOGAS.......................................32
3.1.1 Conectores de Audio....................................................................................33
3.1.2 Conector TRS...............................................................................................33
3.1.3 Conector XLR...............................................................................................33
3.1.4 Conexión tipo Y.............................................................................................34
3.2 MEDIOS DE CONEXIÓN SEÑALES DIGITALES........................................35
3.2.1 Bus Universal Serial (USB)..........................................................................35
8
3.2.2 USB On-The-Go...........................................................................................35
3.2.3 Tasa de Transferencia..................................................................................36
3.2.4 Digital Visual Interface (DVI)........................................................................36
3.2.5 High Definition Multimedia Interface(HDMI).................................................36
3.3 PROCESAMIENTO DIGITAL DE SEÑALES DE AUDIO..............................37
3.3.1 Muestreo.......................................................................................................38
3.3.2 Numero de bits y Rango dinámico................................................................38
3.3.3 Tamaños del audio digital.............................................................................39
3.4 SISTEMAS OPERATIVOS...........................................................................40
3.4.1 GNU/Linux...................................................................................................40
3.4.2 Ubuntu 12.04 LTS........................................................................................41
3.4.3 LXDE (Entorno de Escritorio X11 Ligero)....................................................41
3.5 QT CREATOR..............................................................................................42
3.6 COMPILADOR GCC...................................................................................42
3.7 SISTEMAS EMBEBIDOS............................................................................43
3.7.1 Beagleboard-Xm.........................................................................................45
3.7.2 Wandboard Quad........................................................................................47
4. DESARROLLO INGENIERIL......................................................................48
4.1 DESARROLLO DEL SOFTWARE.............................................................49
4.2 CONSTRUCCIÓN DEL HARDWARE.........................................................59
4.3 INSTALACION Y ADECUACIÓN DEL S.E..................................................61
4.3.1 Instalación de Ubuntu en la BeagleBoard-Xm.............................................62
4.3.2 Compilación del Software en Beagle Board-Xm..........................................63
4.3.3 Compilación del Software en la WandBoard Quad......................................64
4.4 IMPLEMENTACIÓN Y ACOPLAMIENTO DEL S.E
CON EL HARDWARE..................................................................................66
5. MANUAL DE USO........................................................................................70
6. ANÁLISIS DE RESULTADOS......................................................................73
7. CONCLUSIONES.........................................................................................82
8. RECOMENDACIONES................................................................................83
9
BIBLIOGRAFÍA.......................................................................................................84
GLOSARIO Y ABREVIATURAS.............................................................................88
ANEXOS.................................................................................................................90
10
LISTA DE TABLAS
Pag.
Tabla 1. Comparativa de Pedales de Loop en el mercado.....................................23
Tabla 2. Comparativa de otros S.E con arquitectura ARM......................................44
Tabla 3. Características de Hardware BeagleBoard_Xm........................................46
Tabla 4. Especificaciones WandBoards..................................................................47
Tabla 5. Comparativa Beagleboard vs. WandBoard...............................................70
11
LISTA DE GRÁFICAS
pag.
Gráfica 1. Des-balanceado de la señal Análoga.....................................................32
Gráfica 2. Asignación habitual de pines de ¼” TRS...............................................33
Gráfica 3. Asignación habitual de pines conector XLR...........................................34
Gráfica 4. Conexión en “Y” conector XLR...............................................................34
Gráfica 5. Discretización de una Señal continua....................................................37
Gráfica 6. Sistema Embebido BeagleBoard...........................................................45
Gráfica 7. Etapas principales del desarrollo del proyecto.......................................48
Gráfica 8. Vista de la consola alsamixer del PC.....................................................55
Gráfica 9. Interfaz Gráfica del Software en el PC...................................................56
Gráfica 10. Diagrama de Conexiones Prueba del Software en el PC....................57
Gráfica 11. Flujo de señal del dispositivo...............................................................58
Gráfica 12. Vista en perspectiva realizado en sketchup.........................................59
Gráfica 13. Vista desde arriba realizado en sketchup............................................59
Gráfica 14. Fotos del chasis vista lateral (1era Parte)............................................60
Gráfica 15. Fotos del chasis vista Frontal (1era Parte)..........................................60
Gráfica 16. Fotos del chasis Base Blanca..............................................................60
Gráfica 17. Fotos del chasis Laca Verde................................................................60
12
Gráfica 18. Diagrama de bloques interacción periféricos con S.E..........................61
Gráfica 19. Conexión de audio en forma de “Y”.....................................................66
Gráfica 20. Adaptación conector 3.5 mm a Hembra TRS de 1/4”..........................66
Gráfica 21. Adaptación a la tarjeta del teclado USB..............................................67
Gráfica 22. Configuración del Shorcut en Qt Creator.............................................68
Gráfica 23. Fotos del chasis Montaje Final (Frontal)..............................................69
Gráfica 24. Fotos del chasis Montaje Final (Perspectiva).......................................69
Gráfica 25. Fotos del chasis Montaje Final (Respaldo)..........................................69
Gráfica 26. Gráfica frontal del manual realizado en sketchup................................71
Gráfica 27. Gráfica Atrás del Manual realizado en sketchup..................................72
Gráfica 28. Procesamiento en el Portátil con htop..................................................73
Gráfica 29. Procesamiento en el Portátil 10 min después......................................74
Gráfica 30. Procesamiento en la BeagleBoard-Xm …............................................76
Gráfica 31. Procesamiento en la WandBoard reproduciendo 4 Audios..................77
Gráfica 32. Procesamiento en la WandBoard con Audios más livianos.................78
Gráfica 33. Procesamiento en la WandBoard con USB 2.0...................................79
Gráfica 34. Procesamiento en la WandBoard con 2 Audios...................................80
Gráfica 35. Interfaz Gráfica Final del software en la WandBoard...........................81
13
INTRODUCCIÓN
En el mundo actual existe cada día más la necesidad de realizar procesos de
producción mucho más rápidos, por esta razón el interés por los sistemas
embebidos ha sufrido un aumento considerable en la última década.[1]
Los sistemas embebidos se han masificado y expandido de tal modo que es
común encontrar este tipo de arquitecturas ARM en diferentes dispositivos,
equipos reproductores de video, reproductores portátiles de música, televisores
inteligentes y tablets, son algunos de los dispositivos comúnmente
comercializados, los encontramos desde dispositivos móviles (smartphones) hasta
sistemas de automatización en procesos de producción, son dispositivos usados
para controlar equipos, operación de maquinarias o plantas industriales completas.
Los sistemas embebidos son sistemas Hardware/Software de propósito específico,
diseñados para realizar una o más actividades en tiempo real. Esto permite su
optimización, con el objetivo de mejorar el desempeño, eficiencia y confiabilidad,
teniendo la posibilidad de reducir el tamaño y costo de producción.
El presente documento describe el diseño, desarrollo y construcción de un
software y hardware para ser implementado en un S.E embebido, este permite la
reproducción, grabación y manipulación de señales de audio en tiempo real.
El sistema embebido trabaja bajo el sistema operativo Ubuntu 12.04 LTS, la
programación fue realizada mediante el entorno de desarrollo Qt creator 2.4.1
basado en Qt 4.8 C++. El software tiene la posibilidad de capturar una señal de
audio y reproducirla en forma cíclica, creando de esta manera ‘loops’ en tiempo
real, también puede cargar archivos de audio preestablecidos y reproducir, detener
y pausar audios desde diferentes carpetas del directorio.
[1]Enlace de Articulo de soporte, [En Linea], 2000, 26 de julio de 2013, 11:00 a.m; Disponible en la web: http://www.eltiempo.com/tecnologia/telecomunicaciones/ARTICULO-WEB-NEW_NOTA_INTERIOR-12604488.html
14
El dispositivo cuenta con la adaptación de un hardware para la interacción con el
software, es decir, funciona como una superficie de control, la cual por medio de la
implementación de pulsadores permiten activar y desactivar procesos y funciones
del programa. Este dispositivo es un chasis fabricado en acero inoxidable que
provee los conectores de audio para la entrada y salida de la señal.
El S.E utilizado principalmente fue la BeagleBoard-xM, el cual cuenta con un
microprocesador de 1GHz ARM® CortexTM- A8, 512 MB de memoria RAM y
dispone de puertos de expansión, USB, Ethernet, HDMI, RS232, audio y video
para monitores LCD. Debido a que el sistema tuvo problemas con la grabación y
reproducción cíclica de las señales, se implementó la placa Wandboard, esta tiene
un procesador Freescale i.MX6 Quad de 1GHz, una memoria RAM de 2GB
DDR3, entrada y salida de audio, HDMI, 2 Slot de micro SD, Puerto serial, Puerto
USB, USB OTG, entre otros.
En el S.E Wandboard se logró grabar y reproducir audios simultáneamente,
sincronizados con un reloj cíclico modificable. A diferencia de otros pedales de
loops en el mercado, este permite interactuar visualmente con el software por
medio de la interfaz gráfica. Las librerías de audios rítmicos pueden ser
modificadas por el usuario, los pulsadores de la superficie de control pueden ser
configurados de acuerdo a las exigencias del usuario. La relación funcionalidad
precio es óptima.
15
1. PLANTEAMIENTO DEL PROBLEMA
1.1 ANTECEDENTES
La primera clase de equipos embebidos fueron desarrollados por IBM
(International Business Machine) a mediados de los años de 1980. Estos
sistemas han sido implementados para diferentes aplicaciones como sistemas de
telefonía fija y móvil, automatización de procesos de producción, equipos e
instrumentación industrial y sistemas robotizados de todo tipo.
En la Audio Engineering Society (AES), en la afiliación de comunicaciones y
departamento de sistemas embebidos se encuentran diferentes artículos, uno de
estos artículos es una revisión de varios esquemas de controladores inteligentes
de volumen acústico.
• “A Review of Smart Acoustic Volume controllers for consumer
electronics” [1].
Este trabajo evalúa y comprueba esquemas de televisores, sistema estéreo de
autos, reproductores de cd, teléfonos móviles y radio Am/Fm, hay varios ejemplos
de aplicaciones de los controladores de volumen inteligente en dispositivos
electrónicos de consumo, como por ejemplo el sistema estéreo de un automóvil,
en estos sistemas el nivel de volumen automáticamente cae cuando el sistema
detecta que el teléfono suena.
Los móviles inteligentes con un volumen de controlador proporcionan una calidad
de voz mejorada, incluso en presencia de altos niveles de ruidos de fondo[1].
16
• “Acoustic personalization of mobile phones” [2].
Este documento propone la personalización acústica de los teléfonos móviles
basados en los requisitos de audición de un individuo para mejorar la calidad de la
voz. Este propone un sintonizador de acústica inteligente de volumen que utiliza la
lógica difusa para mejorar la calidad de voz basadas en audiogramas. El teléfono
móvil está personalizado con el diseño de la base de reglas difusas para
adaptarse a los requisitos de audiencia de la persona. El sintonizador de volumen
inteligente monitorea continuamente los niveles y clase de ruido de fondo[2].
• “Embedded Controller for audio devices” [3].
En Diciembre de 1994, Barlett, Greg. Expuso un artículo en la cual se trata una
vista general de controladores MIDI la cuales puedes ser fácilmente adaptados
para el uso en productos y sistemas de audio, la intención del artículo es introducir
un simple desarrollo de procedimientos y herramientas para agregar
características a dispositivos de audio controlados por computador[3].
Por otro lado en la IEEE se encuentran varios artículos relacionados con el
procesamiento digital de señales de audio implementando sistemas embebidos.
• “Digital Sound Projector Implementation and Verification within DTV
Embedded System” [4].
En el trabajo de Petrovic, T. y Samardžija, Se propone un sistema embebido para
la separación de la señal de televisión y proyección de sonido digital (DTV) con
procesamiento en tiempo real, esto en base a que el sonido digital ofrece la
tecnología de proyectores de sonido envolvente con un solo parlante mediante la
producción de haces de sonido[4].
17
• “Embedded implementation of acoustic field enhancement for stereo
headphones” [5].
En el artículo postulado por Iwanaga, N. et al. (2002), se expone la aplicación de
sistemas embebidos para la mejora del campo acústico ha sido elaborado con
dedicación para auriculares estéreo. Basándose en el análisis del sentido auditivo
humano, este enfoca con éxito el procesamiento de la señal acústica con el fin de
ampliar un campo acústico generado a través de auriculares estéreo con bajos
costos computacionales.
La implementación del software se evalúa mediante el uso de un DSP integrado y
un procesador RISC con el fin de confirmar la viabilidad del enfoque propuesto[5].
• “3D sound movement system for embedded applications” [6].
Este articulo describe la implementación VLSI de un sistema de sonido en
movimiento es por medio de aplicaciones embebidas. Este sistema se basa en un
método de bajo costo en 3D para la localización del sonido, se intentó la
extracción de características de la cabeza relacionadas con la función de
transferencia a fin de realizar el movimiento del sonido en todas las posiciones en
el espacio 3D por medio de un sistema de coeficiente de almacenamiento
eficiente. El sistema propuesto puede ser implementado por sólo 30.000 com-
puertas, que es lo suficientemente pequeño para aplicaciones embebidas.
Por otra parte, un sistema prototipo se construyó mediante el uso de una tarjeta
FPGA, además se realizaron pruebas subjetivas para evaluar la viabilidad de la
propuesta[6].
18
• “Optimization of AVS Audio Decoder Implemented on RISC Core” [7].
El trabajo realizado por Kwok-Tung Lo y Haijun Lei (2008) proponen la
optimización de un software para la aplicación de AVS-P3 en tiempo real en ARM
9. Esto debido a que la optimización de los sistemas embebidos han sido
reconocidos como un tema clave en la mejora de costos y rendimiento.
El resultado de la prueba muestra que la velocidad de decodificación mejora 10
veces más que el original AVS la señal de audio de onda de decodificación
decodificador estéreo con el bit-rate de 128 kbps y 48 KHz de muestreo. Mientras
tanto, el espacio de memoria se reduce de 130,78 KB a 59.91 KB, y alcanzó el
54,2% de mejora [7].
• “Embedded auditory system for small mobile robots” [8].
Este articulo muestra un sistema capaz de localizar fuentes de sonido por medio
de seguimiento y separación en tiempo real de señales de audio utilizando un
conjunto de 8 micrófonos la cual es procesado en un computador. El sistema es
capaz de localizar y hacer un seguimiento de hasta cuatro fuentes, y hasta tres
fuentes en entornos ruidosos ambas en tiempo real.
Sin embargo el procesamiento de la señal es muy complejo para el equipo, por
esta razón aborda e informa sobre la implementación del sistema integrado en un
DSP (Digital Signal Processor). La implementación de DSP es totalmente
funcional, los resultados demuestran que es factible en plataformas integradas, la
apertura de su uso en aplicaciones de campo, tales como interacción humano-
robot en la vida real[8].
19
• “Design of Embedded Audio and Video Compression System” [9].
Este diseño presenta una estructura ARM + GO7007SB como la solución de audio
integrado y sistema de compresión de vídeo. Esta propuesta de diseño se
caracteriza por la alta velocidad de procesamiento, bajo costo, buena calidad de
imagen y la ejecución en tiempo real. La combinación con la tecnología 3G
próxima, el diseño se podría aplicar a los servicios de vídeo móvil, como sistema
móvil de video vigilancia remota, con la perspectiva del mercado brillante[9].
• “Video collection system based on embedded system and USB
communication” [10].
Este articulo plantea principalmente una solución de implementación del sistema
de videojuegos y colección de audio basado en el microprocesador S3C2410, el
sistema operativo Linux y la comunicación USB. Luego describe el diseño del
hardware del sistema de recolección, además se discute el proceso de
recopilación de datos basados en la plataforma S3C2410. Finalmente se centran
en el método de realización de software de vídeo y recolección de audio[10].
A nivel mundial, diferentes universidades han desarrollado proyectos
implementando sistemas embebidos.
• “Programación de un sistema embebido multimedia” [11].
Este articulo muestra como programar un sistema embebido con aplicaciones
multimedia. La plataforma de desarrollo es un ARM OMAP3530 de Texas
Instruments corriendo un kernel Linux como sistema operativo.
El sistema consta de una placa DevKit8000 de la empresa Embest y un panel
táctil de 7 pulgadas. Se explica cómo utilizar la pantalla táctil, programar una
interfaz gráfica con las librerías Qt de Nokia, reproducir audio a través de la
20
interfaz estándar en audio de Linux denominado ALSA, descodificar MP3 con la
librería open-source MAD, realizar funciones de procesado en un DSP y
programación de un driver completo para un conversor analógico-digital.
• “Diseño de un prototipo embebido para la gestión del padrón
electrónico del T.S.E.” [12].
El documento describe el diseño e implementación de un sistema embebido para
ser empleado como alternativa de búsqueda en el padrón electoral durante los
comicios en Costa Rica. El kit de desarrollo utilizado es el BeagleBoard-xM, el cual
cuenta con un microprocesador de 1GHz ARM® Cortex™- A8, 512 MB de
memoria RAM y dispone de puertos de expansión, USB, Ethernet, HDMI, RS232,
audio y video para paneles LCD.
El sistema trabaja bajo el sistema operativo Ångström, y las aplicaciones fueron
desarrolladas mediante el ambiente Qt 4.7, la cual cuenta con un cross-
compilador. Cuenta además con una pantalla táctil LCD de colores de 7’’, una
impresora de matriz de puntos, teclado externo, y lector de cédulas en formato
PDF417.
• “Transferencia tecnológica y de conocimientos en el diseño de
sistemas embebidos” [13].
Este trabajo pretende ser el punto de partida en el área de diseño de sistemas
embebidos que contribuya a dar soluciones en el problema de atraso y
dependencia tecnológica de la industria electrónica nacional. Para ayudar en el
proceso de aprendizaje y con el fin de facilitar la difusión en la industria, se
diseñaron una serie de plataformas hardware que pueden ser utilizadas como
diseños de referencia en la fabricación de nuevos productos, la información
necesaria para entender, reproducir, modificar y programarlas se encuentra
disponible a quien esté interesado.
21
• “Diseño e Implementación De Un Sistema Embebido Para La
Adquisición Y Transmisión De Señales Biomédicas A Través De La Red
Celular.”[14]
Esta tesis presenta el diseño e implementación de un Sistema Embebido, el cual
captura y transmite por diversos tipos de redes de telecomunicaciones la
información de señales biomédicas, correspondientes a señales de
electrocardiografía, frecuencia cardíaca, saturación de oxígeno en la sangre y
presión arterial.
• “Desarrollo de un controlador midi no convencional, implementado en
un sistema embebido, utilizando el Kinect” [15].
El siguiente proyecto de grado describe y argumenta el desarrollo de un
controlador MIDI[2] no convencional en sistemas embebido utilizando el Kinect. El
dispositivo implementa el protocolo MIDI para controlar hardware y/o software
remoto vía WiFi por medio de la captura de movimientos.
Con la utilización de este tipo de herramientas tecnológicas se puede construir
controladores no convencionales aplicados a la ingeniería de sonido, integrables a
diferentes redes de comunicación de forma práctica, eficaz e innovadora.
En el mercado actual existe diferentes clases de pedales que hacen loops, entre
los más reconocidos están los de la marca Boss, LoopStation RC2, RC3, RC20,
RC20 XL, RC30, RC50, RC300 y el RC 505, Siendo este último uno de los más
completos[3]. De la compañía Digitech existen varios prototipos como el JamMan
Solo Loop Pedal, el DL8, el Digi delay, el JamMan Stereo Loop Pedaly el Jam Man
express XT [4]. Vox tiene a disposición el VDL1 Dynamic Looper Effect Pedal, Lil
[2]Protocolo de comunicación serial que permite la comunicación entre dispositivos electrónicos musicales[3]Enlace de la página en internet; [En Linea], 2000, 1 de julio de 2013, 1:00 p.m; Disponible en la web: http://www.bossus.com/gear/productlist.php?ParentId=251[4]Enlace de la página; [En Linea], 2000, 4 de Septiembre de 2013, 10:00 p.m; Disponible en la web: http://www.digitech.com/en-US/product_families/loopers-delay
22
Looper y el delayLab[5], de Electro Harmonix está disponible el Stereo Memory
Man with Hazarai Looping Pedal y el 45000[6] y La marca line 6 tiene el JM4 Guitar
Looper Effect Pedal[7].
En la siguiente tabla podemos observar una comparativa con las características
principales, tales como conectores de entrada y salida de audio, memoria de
almacenamiento y formatos de grabación de algunos de los pedales de Loop más
usados en el mercado a nivel mundial.
Tabla 1. Comparación Pedales de Loop en el mercado.
Modelo Conectores Efect No. de Tracks
Loops salvados
Max. total Grabación
Sample Rate y
Bits
Precio $US
Boss RC2
USB: No
1 AUX IN 1 INPUT 1 OUTPUT
No 1 11 16 min No se especifica
$189,00
Boss RC3
USB: Si
2 INPUT 1 AUX IN 2 OUTPUT
No 1 99 3 horas aprox.
44.1 kHz, 16-bit, stereo
$199,00
Boss RC20
USB: No
1 AUX IN 1 MIC 1 SHIFT 1 INPUT 1 OUTPUT
Si 1 10 5 min 30s. aprox.
No se especifica
$259,00
Boss RC20XLUSB: No
1 INST 1 MIC 1 AUX IN 1 OUTPUT
Si 1 11 16 min No se especifica
$259,00
Boss RC30
USB:Si
1 MIC IN XLR 1 INST IN 1 AUX IN 1 OUTPUT 1 FOOT SW
Si 2 99 3 horas aproximadamente
44.1 kHz, 16-bit linear stereo
$299,00
[5]Enlace de la página; Enlace de la página; [En Linea], 2000, 4 de Septiembre de 2013, 10:00 p.m; Disponible en la web::http://www.voxamps.com/pedals/[6]Enlace de la página; [En Linea], 2000, 4 de Septiembre de 2013, 10:00 p.m; Disponible en la web:http://www.ehx.com/browse/delay-loopers[7]Enlace de la página; [En Linea], 2000, 4 de Septiembre de 2013, 10:00 p.m; Disponible en la web::http://line6.com/jm4looper/
23
Boss RC50USB
/MIDI: Si
1 INST R (MONO)/L 1 MIC (XLR phantom power).1 AUX 1 MAIN OUTPUT R (MONO)/L 1 PHONES SUB 1 OUTPUT R (MONO)/L 1 EXP/CTL 3, 4 1PEDAL ,1CTL
No 3 99 24 min en stereo Aprox 49 min en mono aprox
44.1 kHz, 24-bit
$499,00
Boss RC300USB
/MIDI: Si
1 INPUT MIC 1 INPUT INST 1 INPUT AUX1 MAIN OUTPUT (L/MONO, R) SUB OUTPUT (L/MONO, R) 1 PHONES CTL 1,2 / EXP
Si 3 99 3 Horas Aprox.
44.1 kHz, 16-bit linear, stereo
$490.00
Digitech JamMan
Solo Loop Pedal
1 INPUT 1 INPUT AUX 1 FOOT SW
No 1 99 35 min. 44.1 kHz, 24-bit
$199,95
Digitech JamMan Stereo Loop Pedal
1 INPUT 1 INPUT MIC 1 INPUT AUX 1 HEADPHON 1 FOOT SW
No 1 99 35min 44.1 kHz, 24-bit
$299,95
Vox VDL1
1 INPUT MIC IN XLR 1 OUTPUT
Si 2 100 1 min 44.1 kHz, 24-bit
$249,99
Electro Harmoni Hazarai
1 INPUT (L/MONO, R) MAIN OUTPUT (L/MONO, R)
Si 1 8 30 SEG 46,88 kHz, 24-bit
$217,50
JM4 Guitar Looper Effect Pedal
1 MIC IMPUT 1 INST 1 AUX INPUT 1 CD INPUT 1 OUT(MONO) 1 OUTPUT (STEREO)
Si 1 36 34 min 44.1 kHz, 24-bit
$329,99
Fuente Propia
24
En la actualidad, la universidad de San Buenaventura desarrolla diversos
proyectos de grado que incursionan en el procesamiento digital de señales que
aplican sistemas embebidos.
Algunos de estos proyectos son:
• Desarrollo de un sistema de adquisición del nivel de presión sonora y
variables ambientales utilizando sistemas embebidos, realizado por Nicolás
Arias.
• Desarrollo de un sistema Tele home Care para la monitorización de un
electrocardiograma y un fono-cardiograma fetal, realizado por María
Fernanda Boscan.
• Desarrollo de una interfaz hardware/software de audio para un sistema
embebido, realizado por Yerson Rojas.
25
1.2 DESCRIPCIÓN Y FORMULACIÓN DEL PROBLEMA
En el ámbito de la ingeniería de sonido se ha presenciado en las últimas décadas
una creciente y rápida evolución en los procesos de grabación de audio, esto
debido a que el mundo actual exige cada vez más, eficiencia y productividad. En
compañías y empresas audiovisuales existe la necesidad de grabar señales de
audio automáticamente en formato digital para luego ser editadas y procesadas
utilizando programas especializados.
Muchas empresas, fábricas y organizaciones industriales transmiten información
constantemente en el día a sus empleados y usuarios, debido a que no cuentan
con un sistema de grabación de audio fácil de usar, estas empresas requieren a
una persona exclusiva para transmitir la misma información en el transcurso de
todo el día, esta es una labor extenuante la cual puede ser realizada una única
vez.
Por otro lado siempre ha existido en el mundo artístico la falta de herramientas
para que un solo músico pueda ensayar, practicar y ensamblar una composición
musical propia con varios elementos rítmicos y melódicos. Productores,
compositores y arreglistas deben tener una idea solida de como sonarán sus
líneas rítmicas y melódicas de los solos instrumentales, fraseos de vientos,
arreglos vocales y armonías de la canción, y esto solo se puede saber hasta que
todos los músicos se encuentren presentes o esto sea grabado.
Las pedaleras actuales especializadas en la grabación y reproducción de audio
‘Loops Station’ manejan muy poca memoria para almacenar audio, por esta misma
no tiene muchos ritmos predeterminados, además no cuenta con la posibilidad de
descargar esta información a dispositivos externos de almacenamiento. ¿Cómo
retro-alimentar señales de audio en tiempo real implementando sistemas
embebidos?
26
1.3 JUSTIFICACIÓN.
En un mundo de evolución tecnológica constante, en la cual los procesos son
cada día más rápidos, se debe tener a la mano herramientas que faciliten la forma
de poder capturar y reproducir señales de audio.
Los sistemas embebidos ofrecen las características de un computador la cual
está especialmente diseñado para la solución óptima de la tarea o tareas a
resolver. A diferencia de un PC, el sistema embebido se dota con los módulos
estrictamente necesarios para su función, por esta razón su costo es óptimo.
La incorporación de un sistema embebido proporciona solución más precisa y
rápida en su especialidad, ofrece un mayor número de opciones en los procesos
de la actividad específica, y competitividad del producto por su aplicación definida
respecto a otros productos similares.
En el ámbito musical este dispositivo es muy útil debido a que músicos,
compositores, arreglistas y productores podrán grabar una secuencia armónica
una sola vez y luego tocar encima de esta pista, se podrá ensayar una
improvisación cuantas veces sea necesario o inventar nuevas melodías. Esta
herramienta ayuda a agilizar el proceso de captura y retroalimentación de señales
de audio, debido a un fácil proceso de captura.
Para presentaciones en vivo un solo músico puede generar una composición
completa comenzando por la parte rítmica hasta la voz. Si no es posible practicar
con otras personas, este pedal es de mucha útil para improvisaciones las cuales
deben ser practicadas una y otra vez. Para grupos con pocos integrantes también
es de mucha ayuda ya que podrá traer por medio de un solo click una secuencia
melódica de vientos, coros y melodías de guitarra o piano.
Con esta herramienta se puede guardar información de audio muy fácilmente para
hacer propaganda continua y repetitiva.
27
1.4 OBJETIVOS DE LA INVESTIGACIÓN
1.4.1 Objetivo General
• Diseñar y construir un dispositivo para la retroalimentación de señales de
audio en tiempo real utilizando sistemas embebidos.
1.4.2 Objetivos específicos
• Diseñar y desarrollar un software para la grabación, reproducción y
repetición continua de una señal de audio en tiempo real.
• Diseñar e implementar en el sistema, 3 bancos de almacenamiento de
audio que puedan ser accedidos por el usuario.
• Implementar en el sistema embebido un banco de memoria con audios
rítmicos pre-establecidos.
• Diseñar y construir un dispositivo el cual permita controlar los procesos de
grabación, reproducción y repetición de señales de audio para el sistema
embebido.
• Implementar un circuito electrónico el cual me permita escuchar a la vez, la
señal proveniente del sistema embebido y la señal directa del instrumento.
28
1.5 ALCANCES Y LIMITACIONES
1.5.1 Alcances
• Realizar procesamiento de tiempo como retardos y reverberaciones a las
señales de entrada en tiempo real.
• Realizar uno o varios procesos dinámicos como lo son compresores y
compuertas a la señal de audio en tiempo real.
1.5.2 Limitaciones
• Las actividades en el sistema embebidos corren a una velocidad
predeterminada, lo que impone una limitación la capacidad de memoria del
sistema para realizar actividades de procesamiento en tiempo real.
• Limite en procesamiento del software utilizado para el desarrollo del
algoritmo.
29
1. METODOLOGIA
2.1 ENFOQUE DE LA INVESTIGACION
El enfoque de esta investigación es empírico-analítico ya que se pretende mejorar
por medio de sistemas de electrónica programable la forma de capturar una señal
de audio y reproducirla para obtener como resultado final una retroalimentación de
señales.
2.2 LÍNEA INSTITUCIONAL, SUBLÍNEA DE LA FACULTAD Y CAMPO DE
INVESTIGACIÓN.
La línea institucional de mi proyecto es TECNOLOGÍAS ACTUALES Y
SOCIEDAD, ya que en los últimos años los sistemas embebidos responden a las
demandas de un mundo en constante crecimiento tecnológico, siendo estos
usados en diferentes dispositivos electrónicos de vanguardia.
La Sub-línea de la facultad es PROCESAMIENTO DIGITAL DE SEÑALES debido
a que el dispositivo que se fabricará graba y reproduce señales de audio para
luego ser manipuladas a voluntad.
El campo temático del programa de Ingeniería de Sonido al cual se suscribe el
proyecto es de ANÁLISIS Y PROCESAMIENTO DE SEÑALES, ya que la
investigación se enfoca en el uso de los sistemas embebidos para la captura y
reproducción de audio.
30
2.3 HIPÓTESIS
Si los sistemas embebidos ofrecen la manera de capturar y reproducir una señal
de audio para realizar una retro-alimentación constante, bajo condiciones de
programación específica debido a su electrónica programable, entonces estos
sistemas pueden ser programados para realizar la función de tarjeta de
adquisición de datos, guardar bancos de sonidos y poder combinar en forma
aleatoria señales de audio con sesiones de audio guardadas con anterioridad.
2.4 VARIABLES
2.4.1 Variables Dependientes
La velocidad de procesamiento del sistema embebido para realizar procesos de
captura y reproducción.
2.4.2 Variables independientes
Las señales de entrada al sistema solo serán controladas por el nivel que se le
asigne desde el instrumento.
31
3. MARCO DE TEÓRICO CONCEPTUAL
Para el desarrollo y construcción del dispositivo se debe tener en cuenta las
siguientes temáticas: Señales Análogas y digitales, formatos de audio digital,
sistemas operativos de código Abierto, sistemas embebidos, y Qt Creator.
3.1 MEDIOS DE CONEXIÓN SEÑALES ANÁLOGAS
Las señales de audio análogo, las cuales son generadas por micrófonos o
instrumentos musicales como guitarras, bajos y teclados, pueden ser
transportadas de dos maneras básicas. La primera es de forma no-balanceada, en
la cual la señal se lleva a través de un cable de dos conductores.
La otra manera es balanceada, la cual implementa conectores de tres pines y
cable de tres conductores, la misma señal se lleva dos veces pero una de ellas
con la polaridad invertida. Esto es conocido como el balanceado de una señal [16]
[17] [18][19][20].
Gráfica 1. Des-balanceado de la señal análogo
Extraído de: “Dopa”, Conexiones balanceadas y no balanceadas, [En Línea], 2000, 26 de mayo
de 2013,8:00 a.m.; Disponible en la web:
http://www.doctorproaudio.com/doctor/temas/balanceado.htm
32
3.1.1 Conectores de Audio.
Los conectores son elemento físicos que permiten adecuar la conexión entre los
dispositivos que se van a comunicar por medio del cable, la conexión debe
acoplarse perfectamente, por eso existen los conectores macho, y los conectores
hembra. El conector macho encaja en el conector hembra. El cable se puede unir
a estos por contacto físico o por soldadura.[16][17][18] [19][20].
3.1.1 Conector TRS
Al conector de 1/4" con tres terminales se le denomina en inglés TRS, abreviatura
de tip-ring-sleeve (punta-anillo-malla), este es un conector balanceado, La parte
positiva siempre van en la punta del conector y la masa o tierra en la parte
interior. [16][17][18] [19][20].
Gráfica 2. Asignación habitual de pines en conector de ¼” TRS
Fuente: [En Línea], 2000, 26 de mayo de 2013,8:00 a.m.; Disponible en la web:
http://www.doctorproaudio.com/doctor/temas/balanceado.htm
3.1.3 Conector XLR
Este tipo de conector de 3 contactos es el estándar para la conexión entre los
dispositivos de audio y los micrófonos. Normalmente usa tres contactos para su
uso con cable coaxial. El indicado como 1 generalmente es la masa, el 2 para la
señal positiva y el 3 para la señal negativa en las conexiones balanceadas.
33
Si no es balanceada, se une el pin 1 y 3 para la masa. Posee una pestaña
especial que hace que quede anclado al equipo para evitar que se suelte por
posibles tirones. [16][17][18] [19][20].
Gráfica 3. Asignación habitual de pines en conector XLR
Fuente: [En Línea], 2000, 26 de mayo de 2013,8:00 a.m.; Disponible en la web:
http://www.doctorproaudio.com/doctor/temas/balanceado.htm
3.1.3 Conexión Tipo Y
Con el propósito de obtener una copia la señal se realiza una conexión en
paralelo, a esto se le conoce como un cable o conexión Y, En la siguiente
ilustración se observa la conexión esquemática en Y, con unos conectores XLR
balanceado de salida a dos XLRs balanceados de entrada [21].
Gráfica 4 . Conexión en “Y”, conectores XLRs.
Fuente: [En Línea], 2000, 26 de mayo de 2013,8:00 a.m.; Disponible en la web:
http://www.doctorproaudio.com/content.php?148-cables-y-puenteo-paralelos
34
3.2 MEDIOS DE CONEXION SEÑALES DIGITALES
3.2.1 Universal Serie Bus USB
El Universal Serial Bus, abreviado comúnmente como USB, es un puerto que sirve
para conectar dispositivos a un computador, este diseño propone mejorar las
capacidades plug-and-play permitiendo a los dispositivos ser conectados o
desconectados al sistema sin necesidad de reiniciar.
El USB puede conectar varios tipos de dispositivos como pueden ser: Mouse,
teclados, escáneres, cámaras digitales, teléfonos móviles, reproductores
multimedia, impresoras, discos duros externos, tarjetas de sonido, sistemas de
adquisición de datos y componentes de red [22] [23].
3.2.2 USB On-The-Go
También conocido como OTG, es una extensión del protocolo USB 2.0, este
permite a los dispositivos USB tener más opciones de conexión entre ellos. Este
tipo de conector habilita a un reproductor de audio o a un teléfono móvil para que
actúe como host, lo que hace posible se les puede conectar una memoria USB, un
ratón, un teclado, un disco duro, etc.
Dichos dispositivos tienen una limitación de consumo, y no permite conectar
dispositivos que consuman en exceso, como, por ejemplo, un disco duro de 2.5” o
un dispositivo USB de gran consumo.
Existen varios tipos de USB OTG, dependiendo de la conexión del dispositivo con
el que lo vayamos a utilizar [47].
35
3.2.3 Tasa de transferencia
El término tasa de bits o tasa de transferencia hace referencia al número de bits
que se transmiten por unidad de tiempo a través de un sistema de transmisión
digital o entre dos dispositivos digitales. La tasa de transferencia del protocolo
USB 2,0 es de hasta 480 Mbit/s (60 MB/s) pero con una tasa real práctica máxima
de 280 Mbit/s (35 MB/s). La Interfaz transferencia de datos SERIAL SATA [8] en la
primera generación es de 150 MB/s. Actualmente se comercializan dispositivos
SATA II, a 300 MB/s, también conocida como Serial ATA-300 y los SATA III con
tasas de transferencias de hasta 600 MB/s [24][25].
3.2.4 Digital Visual Interface
La interfaz visual digital DVI es una interfaz de video diseñada para obtener
mayor calidad de visualización en pantallas digitales, tales como monitores LCD[9],
LED's[10] y proyectores digitales. Fue desarrollada por el consorcio industrial Digital
Display Working Group. El conector usado es tipo DVI [26].
3.2.5 High-Definition Multimedia Interface (HDMI)
La interfaz multimedia de alta definición (HDMI) es un protocolo de audio y vídeo
digital cifrado sin compresión, apoyada por la industria para que sea el sustituto
del euroconector. HDMI provee una interfaz entre cualquier fuente de audio y
vídeo digital como reproductores de Blu-ray[11], Tablets[12] y computadores[27,28].
[8]Serial ATA o SATA (acrónimo de Serial Advanced Technology Attachment) es una interfaz de transferencia de datos entre la placa base y dispositivos de almacenamiento como por ejemplo un disco duro.[9]Pantalla de cristal líquido ó LCD sigla del inglés liquid crystal display es una pantalla delgada y plana formada por un número de píxeles en color.[10]Las pantallas LED están compuestas de paneles o módulos de ledes (diodos emisores de luz) monocromáticos o policromáticos (RGB) que en conjunto forman píxeles, haciendo posible ver video.[11]Blu-ray es un formato de disco óptico de nueva generación, empleado para vídeo de alta definición, con capacidad de almacenamiento de datos mayor que el DVD.[12]Computador portátil un poco mas grande que un teléfono inteligente, integra una pantalla táctil.
36
3.3 PROCESAMIENTO DIGITAL DE SEÑALES
Para poder manipular señales de audio en un computador es necesario la
conversión de señales análogas a señales digitales, esto nos ofrece muchas
ventajas como lo son facilidad para el procesamiento de la señal y la posibilidad
de realizar copias idénticas. Los audios digitales son una señal eléctricamente
exacta a una señal sonora y se encuentra acotada al rango de frecuencias
audibles para los seres humanos que está entre los 20 y los 20KHz,
aproximadamente [29].
Para obtener un audio digital se debe discretizar las señales sonoras continuas en
unas secuencias de números binarios[13]. Este proceso se lleva a cabo en dos
niveles, el temporal y el de la amplitud. En la Gráfica 15 se muestra una señal
continua, discretizada en el tiempo (cuadros blancos) y en la amplitud (puntos
negros). Entre más corta sea la distancia entre puntos, mayor similitud existirá
entre la señal original y la señal digitalizada.”[30].
Gráfica 5. Discretización de una señal continua
Fuente: Sergi Jordà Puig. (1997). Audio digital y MIDI. Madrid: Guías Monográficas Anaya
Multimedia.
[13]Sistema que utilizan los computadores, debido a que trabajan internamente con dos niveles de voltaje, encendido 1 y apagado 0.
37
3.3.1 Muestreo
El muestreo (en inglés, sampling) consiste en tomar muestras periódicas de la
amplitud de onda. La frecuencia de muestreo es la velocidad con que se toma esta
muestra, es decir, el número de muestras por segundo. Según el teorema de
muestreo de Nyquist-Shannon, para cubrir el espectro audible entre 20 y 20KHz
se necesita una tasa de muestreo de más del doble, 44.1KHz es el estándar CD-
Audio [30][31].
3.3.2 Número de bits y Rango dinámico
En cuanto más alto sea el número de bit del archivo de audio, mejor será la
calidad del sonido, este tendrá más parecido al sonido analógico original. El rango
dinámico en decibelios viene dado aproximadamente por la fórmula:
Rango dinámico en dB = 10 x log10 (amplitud máxima2/amplitud mínima2)
Por lo tanto un sistema de conversión de 8 bits posee un rango dinámico de
aproximadamente 48 dB, mientras que uno de 16 bits, tendrá un rango dinámico
de 96 dB.
Cuando no se necesite una calidad de alta fidelidad, se pueden utilizar
especificaciones inferiores. Por ejemplo, una frecuencia de muestreo de 11.025 Hz
y una resolución de 8 bits, ofrecen una calidad comparable a la de una línea
telefónica convencional, por lo que serán suficientes para algunas aplicaciones de
voz[31].
38
3.3.3 Tamaños del Audio Digital
Teniendo en cuenta que un byte son ocho bits, un archivo de audio de 16 bits, en
rango dinámico, ocupará dos bytes por segundo, si la frecuencia de muestreo es
de 44.100 Hz, significa que cada segundo requiere de 44.100 muestras. Si el
sonido es estéreo, utiliza dos canales, las cuales duplican los tamaños de los
archivos de audio.
2 bytes/muestra x 44.100 muestras/segundo x 2 (canales) = 176.400 bytes/segundo o 172,2 Kb/s.
Realizando una multiplicación más, se observa que un minuto de audio digital
estéreo, ocupa un valor muy cercano a los 10 Mb.
Los CD's de Audio por lo general no superan los 70 minutos. Esta duración se
debe a que su capacidad suele ser de 700 Mb.
Cuando los archivos de audio son monofónicos, estos tamaños descienden a la
mitad, y lo mismo sucede si la resolución es de 8 bits en lugar de 16 bits, o la
frecuencia de muestreo es de 22.050 Hz. Por ello, limitando la calidad al mínimo,
el tamaño necesario para un minuto de sonido monofónico de 8 bits y 11.025 Hz,
se reduce aproximadamente a 646 Kb. [29][30][31].
39
3.4 SISTEMAS OPERATIVOS
3.4.1 GNU / Linux
Linux es un sistema operativo multitarea, multiusuario, multiplataforma basado en
Unix[14]. Las características principales es que es un S.O libre, esto significa que no
se tiene que pagar ningún tipo de licencia por el uso del software, la segunda, es
que el sistema viene con el código fuente.
El sistema lo forman el núcleo del sistema (kernel) más la implementación de
bibliotecas que hacen posible su utilización. Muchos de estos programas y
bibliotecas han sido posibles gracias al proyecto GNU [15], por esta razón, muchos
llaman a Linux, GNU/Linux, para resaltar que el sistema lo forman tanto el núcleo
como gran parte del software producido por el proyecto GNU General Public
License, por lo tanto, el código fuente tiene que estar siempre accesible y
cualquier modificación o trabajo derivado tiene que tener esta licencia. [32][33].
Existen varios sistemas operativos basados en el núcleo Linux[16], entre las más
utilizadas encontramos:
• Red Hat Enterprise Linux, su fabricante Red Hat, apoya el desarrollo de
software libre con el proyecto Fedora, del cual se derivan distribuciones
compatibles como Oracle Enterprise Linux, CentOS y Mandriva Linux.
• SUSE Linux de Novell. Originalmente liberado por la compañía alemana
SuSE. Es popular por sus herramientas de administración centralizada. De
manera análoga a RedHat con Fedora, apoya el proyecto openSUSE.
• Debian GNU/Linux. Con una de las comunidades más grandes y antiguas
del movimiento de software libre, es base para distribuciones como
Xandros, Mepis, Linspire y Ubuntu.[33]
[14]UNIX es un sistema operativo portable, multitarea y multiusuario; desarrollado en 1969, por un grupo de empleados de los laboratorios Bell de AT&T[15]En 1983, Richard Stallman fundó el Proyecto GNU, con el proposito crear un sistema similar a Unix, que pudiese ser distribuido libremente.[16]En 1991, Linus Torvalds empezó a proponer el núcleo Linux y a reunir colaboradores
40
3.4.2 Ubuntu 12,04 LTS[17]
Este sistema operativo utiliza el núcleo Linux y tiene sus orígenes en Debian/GNU
Linux, debido a que hace parte del proyecto GNU, es mantenido por una gran
comunidad informática[18]. La distribución de Ubuntu está orientado al usuario
común, su interfaz de usuario Unity[19] creada para el entorno de escritorio
GNOME[20], y desarrollado por Canonical[21], ofrece facilidad de uso, esta tiene un
fuerte enfoque en mejorar la funcionalidad para sus usuarios.
Ubuntu 12.04 está compuesto de múltiples software normalmente distribuido bajo
una licencia libre o de código abierto. Al mantenerse libre y/o gratuito, aprovecha
los desarrolladores de todo el mundo para mejorar los características de su
sistema operativo. La comunidad de desarrolladores proporciona soporte para
otras derivaciones de Ubuntu, con otros entornos gráficos, como Kubuntu,
Xubuntu, Ubuntu Studio, Ubuntu Gnome y Lubuntu[34].
3.4.3 LXDE (Entorno de Escritorio X11 Ligero).
LXDE[22] es una interfaz gráfica ligera de código abierto licenciado bajo la GPL
para Unix y otras plataformas POSIX compatibles, como Linux. El nombre LXDE
significa "Lightweight X11 Desktop Environment". LXDE es la solución para el
ahorro de energía y consumo de recursos de procesamiento. Trabaja bien con
computadoras de bajo rendimiento tales como netbooks de nueva generación y
S.E. Puede ser instalado en varias distribuciones de Linux como Ubuntu o
Debian[35].
[17]Enlace a la pagina web; [En Linea], 2000, 26 de mayo de 2013, 8:00 a.m; Disponible en la web:http://www.ubuntu.com/[19]Enlace a la pagina web; [En Linea], 2000, 26 de mayo de 2013,8:00 a.m; Disponible en la web: https://unity.ubuntu.com/[20]Entorno de escritorio para sistemas operativos GNU/Linux.[21]Empresa que brinda venta de soporte y servicios relacionados con Ubuntu.[22]Enlace a la pagina web; [En Linea], 2000, 26 de mayo de 2013,8:00 a.m; Disponible en la web: http://lxde.org/es
41
3.5 QT CREATOR [23]
Qt es una biblioteca Multi-plataforma usada mundialmente para desarrollar
aplicaciones con interfaz gráfica, así como también para el desarrollo de
programas sin interfaz gráfica.
Qt es un Entorno de Desarrollo Integrado o IDE la cual consta de un editor,
compilador y depurador bastante completo y fácil de manejar, Utiliza el lenguaje de
programación orientado a objetos C++, permite realizar programación visual y
programación dirigida por eventos, es posible el desarrollo rápido de aplicaciones
en entornos MS Windows, Mac OS y Linux.
Qt es desarrollada como un software libre y de código abierto a través de Qt
Project[24], donde participa tanto la comunidad, como desarrolladores de Nokia,
Digia y otras empresas.[36][37]
3.6 COMPILADOR GCC
Un compilador es un programa informático que traduce un programa escrito en un
lenguaje de programación a otro lenguaje de programación, generando un
programa equivalente que la máquina será capaz de interpretar. Usualmente el
segundo lenguaje es lenguaje de máquina, pero también puede ser un código
intermedio (bytecode), o simplemente texto. Este proceso de traducción se conoce
como compilación [38].
El compilador GCC[25] está integrado en el proyecto GNU para C, C++, Objective C
y Fortran; es capaz de recibir un programa fuente en cualquiera de estos
lenguajes y generar un programa ejecutable binario en el lenguaje de la máquina
donde va a correr.
[23]Enlace a la pagina web; [En Linea], 2000, 26 de mayo de 2013,8:00 a.m; Disponible en la web: http://qt.digia.com/[24]Enlace a la pagina web; [En Linea], 2000, 26 de mayo de 2013,8:00 a.m; Disponible en la web:http://qt-project.org/[25] GCC significa "GNU Compiler Collection". Originalmente significaba "GNU C Compiler".
42
3.7 SISTEMAS EMBEBIDOS
Los sistemas embebidos son sistemas Hardware y Software de propósito
específico, están diseñados para realizar una o más actividades, generalmente en
tiempo real. Estos sistemas permite su optimización, mejorando el desempeño,
eficiencia y confiabilidad, teniendo la posibilidad de reducir el tamaño y costo de
producción.
Las principales diferencias de los sistemas embebidos con los computadores personales son [13][46]:
• Pueden ser implementados en diferentes Proyectos con arquitecturas de
procesadores ARM.
• El desarrollo se puede optimizar por medio de un diseño particular de
hardware y software, esto con el objetivo de satisfacer las tareas
específicas que se desea cumplir.
• Poseen recursos limitados de procesamiento, memoria RAM [26], ROM[27]
y al manejo de los dispositivos y periféricos de almacenamiento.
• En los sistemas embebidos el consumo de potencia es muy bajo, por esta
razón permiten implementar soluciones con bajos consumos de energía.
• Generalmente, los sistema embebidos poseen limitaciones de tiempo,
debido a esto, un gran número aplicaciones desarrolladas en estos
sistemas se realizan en tiempo real.
[26] RAM proviene de ("Read Aleatory Memory") ó memoria de lectura aleatoria, esta encarga de almacenar datos e instrucciones de manera temporal.[27] Es un medio de almacenamiento utilizado en ordenadores y dispositivos electrónicos, que permite sólo la lectura de la información y no su escritura,
43
A continuación se presenta una tabla con las características de los sistemas
embebidos RaspBerry[28], Hackberry[29], BeagleBone[30], PandaBoard [31], Cubioard [32]y Odroid U2[33] de arquitectura ARM, la información fue recolectada de las
paginas oficiales de cada distribución.
Tabla 2. Comparativa de otros S.E con arquitectura ARM
Fuente propia.
[28]Enlace a la pagina web; [En Linea], 2000, 8 de Julio de 2013, 9:00 p.m; Disponible en la web: http://www.raspberrypi.org/[29]Enlace a la pagina web; [En Linea], 2000, 8 de Julio de 2013, 9:00 p.m; Disponible en la web: https://www.miniand.com/products/Hackberry%20A10%20Developer%20Board[30]Enlace a la pagina web; [En Linea], 2000, 8 de Julio de 2013, 9:00 p.m; Disponible en la web: http://beagleboard.org/[31]Enlace a la pagina web; [En Linea], 2000, 8 de Julio de 2013, 9:00 p.m; Disponible en la web: http://pandaboard.org/[32]Enlace a la pagina web; [En Linea], 2000, 8 de Julio de 2013, 9:00 p.m; Disponible en la web: http://cubieboard.org/[33]Enlace a la pagina web; [En Linea], 2000, 8 de Julio de 2013, 9:00 p.m; Disponible en la web: http://www.hardkernel.com/renewal_2011/main.php
44
3.7.1 Beagle Board-Xm
El procesador de la BeagleBoard-xm es el OMAP3730 CBP1 de 1 GHz, este es un
procesador de aplicaciones multimedia de Texas Instruments, basado en la
arquitectura de doble núcleo, optimizada para sistemas operativos eficientes y
ejecución de código de multimedia. Contiene en su interior procesadores ARM
(CPU) y procesadores DSP[34], además de puertos de conexión a USB, cámara,
LCD, memoria, y periféricos inalámbricos. Combina el comando y las
características de control de los microprocesadores ARM y DSP de alto
desempeño y bajo consumo de potencia. En la siguiente tabla se muestran las
características principales de la BeagleBoard-xm[39].
Gráfica 6. Sistema embebido BeagleBoard-xm destacando sus principales características
Fuente: [En Línea], 2000, 26 de mayo de 2013,8:00 a.m.; Disponible en la web: http://beagleboard.org/
[34] Un procesador digital de señales o DSP (sigla en inglés de digital signal processor) es un sistema basado en un microprocesador para aplicaciones que requieran operaciones numéricas de muy alta velocidad.
45
Tabla 3 .Características de hardware BeagleBoard
Fuente: BeagleBoard –xM Rev C System Reference Manual, [En Línea], Abril 4 de 2010, 29 de
mayo del 2013,11:00 a.m; Disponible en Web: http://beagleboard.org/static/BBxMSRM_latest.pdf
46
3.7.2 WANDBOARD QUAQ
La WandBoard es un computador completo de bajo consumo de poder con un alto
desenvolvimiento en tareas multimedia basado en un procesador Freescale i.MX6
Quad, Cortex-A9 Quad core y memoria de 2GB DDR3 [40].
Tabla 4. Especificaciones WandBoard
Fuente: WandBoard.org, [En Linea], Abril 4 de 2010, 11:00 a.m ; Disponible en Web:
http://www.wandboard.org
47
4. DESARROLLO INGENIERIL
En esta sección se describe el diseño y construcción de un dispositivo para la
retroalimentación de señales de audio implementado un sistema embebido. A
continuación se describe mediante un diagrama de bloques las 3 etapas de
desarrollo principales del proyecto.
Gráfica 7. Etapas principales del desarrollo del proyecto.
El primer bloque de desarrollo expone en la implementación del código realizado
en Qt Creator, Aquí se explica cómo se adquiere la señal de audio a través del
código y funciones que ofrece el software para la manipulación de los audios.
48
El segundo bloque explica cómo fue fabricado el hardware, se muestra la
construcción del dispositivo la cual permite interactuar con el programa y el
proceso se realiza para la adquisición de la señal.
El tercer y último bloque presenta la adecuación y configuración de los sistemas
operativos y el entorno de desarrollo Qt en los sistemas embebidos, En esta
sección se muestra el acoplamiento de S.E con el hardware y el análisis de
resultados.
4.1 DESARROLLO DEL SOFTWARE
La primera labor realizada fue la instalación de un S.O de código abierto en el
computador portátil, el PC consta de un procesador Intel® Core™ i5-3337U CPU
@ 1.80GHz × 4, memoria RAM de 8GB, gráficos Intel® Ivybridge Mobile ,Disco
duro de 1TB, además consta el dispositivo de audio Intel Corporation 7
Series/C210 Series Chipset Family High Definition Audio Controller.
Se decide trabajar con Ubuntu 12.04 LTS debido a su facilidad de uso, este es un
sistema operativo muy estable y rápido, además cuenta con una amplia
comunidad de desarrolladores en pro de la mejora de los componentes de su
sistema operativo, no tiene problemas de virus y se tiene total acceso a las líneas
de código fuente. La instalación y adecuación de Ubuntu en el PC se puede ver en
Anexo A16.
Luego se instaló nuestro entorno de desarrollo, el software utilizado es Qt Creator
4.8 basado en Qt 2.4.1 descargado desde el Centro de Software de Ubuntu, para
arquitecturas Linux de 64- bits. Qt Creator es un entorno integrado de desarrollo
multiplataforma (IDE) a la medida de las necesidades de los desarrolladores de
Qt. Ver Anexo A17.
49
Qt Creator puede ser ejecutado en los sistemas operativos de escritorio como
Windows, Linux/X11 y Mac OS X y permite a los desarrolladores crear
aplicaciones para múltiples escritorios y plataformas de dispositivos móviles.
Qt Proporciona, un editor de código de C++ y JavaScript, un diseñador de interfaz
de usuario integrado, herramientas de gestión de versiones y proyectos,
Depuradores GDB y CDB, Control de versiones, simulador para las interfaces de
usuario móviles, además ofrece compatibilidad con la creación y ejecución de
aplicaciones Qt para ordenadores de escritorio y sistemas embebidos, la
configuración generada te permite cambiar rápidamente entre los destinos de
generación.
Qt cuenta con la posibilidad de utilizar varios compiladores (toolchains)
previamente instalados en la PC y dispone de la herramienta de diseño Qt Creator
para crear aplicaciones gráficas (GUI, Graphical User Interface).
Para la realización de este proyecto se inició un nuevo proyecto en Qt 4.8 de la
siguiente manera:
• File->New file or Project-> Applications->Qt Gui Application
Luego se nombró con el título provisional LoopStation, el cual generó los archivos.
LoopStatio.pro, loopstation.h, loopstation.cpp, main.cpp y loopstation.ui
La principal librería de audio usada es qtmultimediaKit1, en esta página se
encuentra información acerca de esta:
• http://doc.qt.digia.com/qtmobility/multimedia.html
Estas son las funciones (Apis) que necesite de esta librería.
#include <QtMultimediaKit/qmediarecorder.h>#include <QtMultimediaKit/qmediaplayer.h>#include <QtMultimediaKit/qaudiocapturesource.h>#include <QtMultimediaKit/QAudioFormat>
50
Otra librería usada es phonon, esta cuenta con muchas posibilidades, permite
reproducir un audio desde cualquier carpeta, detener, pausar y borrar el audio de
la memoria del programa. Una de las desventajas más importantes es que no
cuenta con un módulo de grabación de audio, otra desventaja es que al reproducir
el audio en loop este se demoraba en entrar, es decir presentó retraso en la señal
el cual no permite la sincronización perfecta con los demás audio, por esta razón
la librería phonon es usada en el software solo para cargar música, y no realiza
funciones de loop.
Debido a las falencias de la librería phonon se procede a trabajar con la librería
qtmultimediaKit1, también descargada desde el centro de software Ubuntu, esta
librería permite grabar y reproducir audio simultáneamente, también ofrece
posibilidades de play, stop y pause.
Para poder crear un software el cual permita sincronizar la grabación y
reproducción de todos los sample, se creó un reloj llamado timer y un contador
que marca los 4 tiempos del compás [45].
Este software solo trabaja con compases binarios y cuaternarios, (2/4 y 4/4), de
esta forma la porción de tiempo siempre está dividida en cuatro partes. El
numerador indica los tiempos en los que se divide, y el denominador 4 indica que
en cada una de las partes entra una negra [45].
Para poder activar y desactivar este proceso se creó el botón START/STOP BPM,
este botón está configurado como un interruptor de encendido y apagado del reloj
principal (timer). Ver Anexos A.5
El timer se configuró con la siguiente formula:
timer->start(60000/bpm);
Donde el bpm por defecto es 100;
51
Partiendo de que 1 minuto tiene 60 segundos y 1 que un segundo son 1000
milisegundos, un minuto tendrá 60000 segundos, al dividir esto por el número de
bits por minuto (bpm) esto nos arroja como resultado la cantidad de milisegundo
que hay entre cada bit. En Anexos se puede observar el código final de cada
función con las explicaciones detalladas de cada línea.
El reloj contador está alojado en el slot void LoopStation::Contador(), su función es
contar de 0 a 3 de manera cíclica, esto es realizado por medio de la variable t , la
cual se ha configurado como t++ dentro del contador .
Cuando t=0, graba un audio y reproduce todos los sample seleccionados
simultáneamente incluyendo el click del metrónomo.
La variable que activa y desactiva la grabación es r, es decir, cuando r=0 y t=0,
captura audio, y cuando r=1 y t=0, detiene la captura.
Cuando t =1, t=2 y t=3 simplemente reproduce los sample de click del metrónomo.
Ver código en Anexos A.6
Al metrónomo es posible aumentarle o disminuir la velocidad, también puede ser
apagado (Mute). Ver Anexos A.7
También es posible Modificar el metrónomo con el tap tempo, Ver Anexo A.8
El Programa Cuenta Con 3 Bancos para almacenar audios, en cada banco se
crearon 3 canales para la grabación de audios, el programa almacena todos los
audios grabados en la carpeta "Audios".
Para el acceso rápido a los bancos se creó un único botón el cual permite ubicarse
en cada uno de los bancos ascendentemente, cuando llega al banco 3
nuevamente vuelve a 1. Ver código en Anexos A.9
52
Es posible acceder a cada banco directamente por medio de Botones ubicados en
el recuadro Options Bank. Ver Anexos 10.
El programa cuenta con audios pre-establecido con bases de percusión rítmica
para la interacción en tiempo real. Para este proceso se tomó una librería de 20
samples, con diferentes ritmos como Rock, Pop, Salsa, Merengue, Bolero y
Reguetón entre otros. Estos samples fueron creados en el estudio de grabación
Marlon Polo de la ciudad de Barranquilla, fueron donados al proyecto con
posibilidad de ser modificados para su uso comercial, posteriormente cada audio
se editó en Protools 8.0.4 para que fueran muy cortos y que al reproducirse en
loop entrarán en el tiempo fuerte del compás. Cada audio tiene un nombre y se
almacenó en el siguiente directorio:
Music1->setMedia(QUrl::fromLocalFile("/home/erick/Loops/1Pop75.wav"));
Se crearon 2 botones con los cuales se pueda moverse entre los ritmos cargados .
Este código se generó por medio de la variable l++, el cual cada vez que
presionamos el botón aumenta o disminuye esta variable, por ejemplo si l=1, p1=0
y reproduce el primer audio, si l=2 entonces p1=1, detiene el primer audio y p2=0,
reproduce el segundo audio. Ver Anexos A.11
El software permite cargar música desde cualquier directorio, para esto se usó la
librería phonon, en la página siguiente se encuentra la manera correcta de
emplear esta librería:
• http://doc.qt.digia.com/4.7/phonon-overview.htm
En anexos A.12 se muestra la parte del código que trabaja con la librería Phonon.
Esta librería también puede reproducir, pausar y detener audios.
53
Para poder configurar las propiedades de los audios grabados se utilizó la
siguiente configuración.
QAudioEncoderSettings audioSettings; audioSettings.setCodec("audio/PCM"); audioSettings.setSampleRate(44100); audioSettings.setBitRate(16); audioSettings.setQuality(QtMultimediaKit::VeryHighQuality); recorder->setEncodingSettings(audioSettings);
La carpeta audios es creada manualmente en el directorio /home/erick/, aquí es
donde se almacenaran los archivos grabados.
Por medio de la siguiente línea podemos capturar la señal proveniente de la
entrada de micrófono.
recorder->setOutputLocation(QUrl("/home/erick/Audios/1A-3C-2B.wav"));
Este es el Audio 1 grabado en el canal 3 del banco 2, en el Anexo A.13 se
presenta el código de un canal, el código para los otros 2 canales es similar.
La programación cuenta con 2 Modos de Operaciones que son:
• Modo Grabación el cual Permite Grabar y reproducir los audios grabados en
tiempo real.
• Modo Reproducción, diseñado para reproducir y detener los audios
grabados.
Ambos pueden ser accedidos con el botón (RECORD MODE/PLAY MODE),
estando activado se encuentra en Modo grabación, desactivado en modo
reproducción. Ver código en Anexos A.14
En modo grabación, el botón (REC/PLAY) permite grabar y reproducir el audio
grabado en tiempo real, para grabar se debe activar antes del primer tiempo para
iniciar la grabación y desactivar antes del primer tiempo para reproducir el audio
inmediatamente grabado. El primer tiempo es el BIT 1 y este es el tiempo fuerte
del compás de 4 tiempos.
54
El boton (CLEAR) permite borrar el último audio si este no es de nuestro agrado
para volver a grabarlo. Cabe apuntar que esta librería no me permite borrar audios
de la carpeta donde se encuentra, por esta razón se utiliza un archivo en blanco el
cual reemplaza el audio grabado. Ver código del botón Clear en Anexos A.15
En Modo Reproducción el botón (REC/PLAY) permite detener y reproducir el audio
grabado de este canal, el pulsador (CLEAR) permite borrar los audios de los 3
canales del banco seleccionado.
También se configuró las opciones de Entrada y Salida de audio del PC por medio
de alsamixer y se establece la configuración como la predeterminada.
Ejecutamos desde el terminal el siguiente comando:
> root@erick-desktop:/# sudo alsamixer
> root@erick-desktop:/# alsactl store
Gráfica 8: Vista de la consola alsamixer del PC.
Fuente Propia.
55
En la siguiente imagen podemos observar la interfaz gráfica del software
LoopsStation ejecutado en el computador de escritorio, Abajo el reproductor de
audio creado con Phonon.
Gráfica 9. Interfaz Gráfica del software en el PC
Fuente Propia.
56
En el siguiente diagrama podemos observar el diagrama de conexiones para la
prueba del software funcionando en el PC.
Gráfica 10 . Diagrama de Conexiones Prueba del Software en el Portátil.
Fuente propia
El plugin alsamixer instalado para configurar la tarjeta de audio, ofrece las
opciones de pre y post escucha, en pre solo se puede escuchar las señales que
ingresan al sistema pero no se puede escuchar lo que sale de este, En post se
escucha lo que está en el sistema y no lo que ingresa.
Por esta razón se decide construir e implementar un divisor de señal, el propósito
de dividir la señal es tener la opción de poder escuchar lo que se está ejecutando
sin necesidad de estar grabando y escuchar simultáneamente lo que se ha
grabado anteriormente. esto libera recursos de procesamiento al sistema
embebido.
57
En la gráfica siguiente se representa por medio de un diagrama de bloques el flujo
de la señal, se observa que existe una señal directa y una señal procesada la cual
pasa por el sistema embebido.
Gráfica 11. Flujo de señal del dispositivo
Fuente Propia.
58
4.2 CONSTRUCCIÓN DEL HARDWARE
Para la construcción del chasis se realizó un boceto del diseño en sketchup con
las acotaciones, esto fue realizado para tener una idea clara de cómo quedaría el
dispositivo, estas gráficas fueron llevadas a la empresa Impleaceros de la ciudad
de Barranquilla, especializada en la construcción en todo tipo de estructuras de
acero. Este trabajo fue realizado paralelamente con el desarrollo del software en
Qt Creator.
Gráfica 12. Vista en perspectiva, realizado en sketchup
Gráfica 13 . Vista desde arriba, realizado en sketchup
Fuente Propia
59
El material escogido fue el acero inoxidable ya que este nos ofrece mayor
durabilidad y resistencia.
Gráfica 14. Foto vista lateral (1era parte) . Gráfica 15. Foto vista Frontal(1era parte) .
Gráfica 16. Fotos de Chasis Base Blanca. Gráfica 17. Fotos del Chasis Laca Verde
Fuente Propia.
60
4.3 INSTALACIÓN Y ADECUACIÓN DEL SISTEMA EMBEBIDO.
Los sistemas embebidos tienen la capacidad de soportar un sistema operativo
embebido y lograr la comunicación con diferentes periféricos como teclados,
mouse, monitores de vídeo, micrófono y parlantes entre otros.
Estas tarjetas cuentan con un microprocesador dedicado para el procesamiento de
señales de audio, además cuenta con los conectores de entrada y salida de audio
indispensable para poder capturar y reproducir.
En la gráfica a continuación se muestra por medio de un diagrama de bloque la
interacción de los periféricos de control y adquisición de la señal con el sistema
embebido.
Gráfica 18. Diagrama de bloques interacción periféricos con S.E
Fuente Propia
61
Para cumplir con los requisitos planteados, fue necesario probar 2 de los sistemas
embebidos más robustos que existen actualmente en el mercado, Principalmente
se propuso la BeagleBoard-Xm.
4.3.1 Instalación de Ubuntu en la BeagleBoard
Por defecto, el Beagleboard-xM trae pre-instalado el sistema operativo Ångström,
el cual es una distribución basada en el Debian Project y está orientado para ser
utilizado en sistemas embebidos.
Otro sistema operativo evaluado en la BeagleBoard-Xm es el Ubuntu 12.10, el
cual también está basado en Linux, pero está más orientado al uso en
computadoras personales, de escritorio y servidores. Este cuenta con una
cantidad mucho mayor de paquetes de software disponibles en comparación con
el sistema Ångström. Además, existe mayor soporte por parte de la comunidad de
desarrolladores por lo que su estabilidad es muy superior.
Para la instalación de Ubuntu en la BeagleBoard-xM, se realiza el procedimiento
de esta página:
• http://elinux.org/BeagleBoardUbuntu
En estas páginas se encuentran diferentes imágenes pre-compiladas para la
beagleboard-xm :
• http://ynezz.ibawizard.net/beagleboard/
• http://rcn-ee.net/deb/rootfs/
En el Anexo A.18 se encuentra el procedimiento paso a paso realizado para la
instalación de Ubuntu en la BeagleBoard_Xm.
62
4.3.2 Compilación del software en la BeagleBoard-Xm
Para correr el ejecutable que produce Qt Creator en los sistemas embebidos,
existen 2 maneras, la primera forma es realizando una cross-compilación o
colchan, el cual es una aplicación capaz de producir un código ejecutable para
una arquitectura diferente a la que está ejecutándose. Por ejemplo, si el cross-
compilador fue instalado en un computador Intel x86, ahora es posible que este
compile el código para ser ejecutado en el sistema operativo Linux de la
BeagleBoard-xM.
Las paginas disponibles en internet usadas de referencia para la instalación y
configuración son estas:
• http://qt-project.org/doc/qt-4.8/qt-embedded-install.html
• http://treyweaver.blogspot.com/2010/10/setting-up-qt-development-
environment.html
• http://zarzamora.com.mx/archivo-historico/1233
• http://harmattan-dev.nokia.com/docs/library/html/qt4/qt-embedded-
crosscompiling.html
En esta página se encuentran los toolchains de la distribución Armstrong:
• http://www.angstrom-distribution.org/toolchains/
La ventaja de este proceso es que no hay que instalar Qt en el sistema embebido,
para correr el programa solo hay que copiar y pegar el ejecutable.
La desventaja es que no permite saber inmediatamente si el código funciona,
debido a que después de ser compilado en el PC, se debe copiar en una memoria
63
USB y pegarlo en el sistema embebido para verificarlo, además este proceso de
cross-compilación tarda mucho tiempo en arrojar el ejecutable.
La otra forma es instalando Qt en la plataforma ARM, luego crear un nuevo
proyecto para copiar y pegar las líneas de código, esto con el propósito de hacer
la compilación con los compiladores propios de cada arquitectura.
Este procedimiento tiene una desventaja y es que no todos los sistemas
embebidos pueden correr plataformas de desarrollo que exijan demasiado
procesamiento, en este caso, la Beagleboard corre sin ningún problema este
software y compila y compila el códigos en menos de 15 segundos.
La otra desventaja es que se debe instalar Qt en el sistema embebido, agotando
almacenamiento en la SD card, Para evitar esto, se almacenaron los archivos de
audio en el segundo slot que ofrece la Wandboard, además se usaron tarjetas
micro SD de gran capacidad y de alta velocidad de transferencia.
La ventaja más importante de este proceso, es que me permite comprobar si el
código está corriendo bien, inmediatamente hecha alguna modificación en el
código, por esta razón se decide implementar este método.
4.3.3 Compilación del software en la WandBoard Quad
La instalación de Ubuntu en la Wandboard es un proceso mucho más sencillo, ya
que en la página oficial se encuentran diferentes imágenes pre-compiladas con
sistemas operativos para cada tarjeta.
El proceso de instalación se encuentra en un archivo .pdf también ubicado en la
página de descargas[40].
64
La tabla a continuación es una comparativa con las características principales de
cada Sistema.
Tabla 5. Comparativa Beagleboard vs. WandBoard
Fuente Propia.
65
4.4 IMPLEMENTACION Y ACOPLAMIENTO DEL S.E CON EL HARDWARE
Para la adquisición de la señal de audio fue necesario construir un acople de
entrada al S.E.
Debido a que las tarjetas no cuenta con conectores de uso profesional como el
XLR o TS propio de instrumentos musicales, se adaptó una conexión Y
balanceada (Divisor de señal), el cual permita recibir la señal con un conector XLR
hembra (Señal Balanceada), a su vez este fuera al S.E usando el conector de 3.5
mm y al conector hembra TRS para proporcionar una copia de la señal sin
ingresar a la tarjeta.
Para la salida de audio se adaptó un conector de 3.5 mm a un conector hembra
TRS de 1/4”, por medio de un cable balanceado de 15 cm
Gráfica 19. Conexión de audio en forma Y. Gráfica 20 . Adaptación de salida de
audio. Conector 3.5 a TRS de 1/4”
Fuente Propia
Para poder interactuar con el software, se adaptó un circuito electrónico a la tarjeta
interna de un teclado USB. Las tarjetas de los teclados tienen 2 puertos con 13
66
terminales cada uno, las letras números, símbolos y funciones se activan con la
combinación de estos terminales.
En anexos A19 se presenta una lista con las combinaciones de terminales que se
detectaron y el carácter que habilita.
Las terminales usadas son las siguientes:
Q 1+6W 2+6Z 1+10 X 2+10, 6+10A 1+8S 2+8K 6+8L 7+8ENTER 8+8
En una placa se conectaron por medio de cables las terminales de la tarjeta que
se van usar, esto generó una matriz donde se pueden hacer las combinaciones.
Gráfica 21. Adaptación a la tarjeta del teclado USB y Diagrama de Conexiones en la placa matriz
Fuente Propia
67
Por medio de pulsadores conectados a la placa, se hace continuidad, cerrando el
circuito y de esta manera se puede enviar la letra configurada para cada función
del software, en el programa se configuraron los shorcuts para cada Botón.
Al conectar el dispositivo con esta implementación se obtienen unas ventajas
como los son poder conectar y usar inmediatamente (plug and play). El voltaje
necesario para encender el dispositivo es suministrado por el USB. La
configuración por medio de letras asignadas al software, permite modificar las
funciones de los pulsadores a gusto propio.
En la gráfica 25 se observas parte de la interfaz gráfica, en este se encuentra
seleccionado el botón llamado Bank Up, a la derecha se encuentran las
propiedades de este botón, aquí podemos configurar, texto, icono, tamaño del
icono y atajo del teclado(Shorcut), este se ha configurado con la letra Q.
Gráfica 22. Configuración del Shorcut en Qt Creator
En las gráficas siguientes se observa el montaje final del dispositivo con todos sus
entradas y salidas de audio, puerto HDMI ,switch de encendido y apagado, Jack
de alimentación y pulsadores.
68
Gráfica 23. Fotos del chasis Montaje Final (Frontal)
Gráfica 24. Fotos del chasis Montaje Final (Perspectiva)
Gráfica 25. Fotos del chasis Montaje Final (Respaldo)
Fuente Propia
69
5. MANUAL DE USO
La pedalera Loop WorkStation está basada en un sistema embebido. Cada uno de
los tres canales de frase permite ser detenido y reproducido individual o
simultáneamente. La reproducción perfectamente sincronizada y el funcionamiento
intuitivo permiten crear un conjunto de sonidos incluso en actuaciones en vivo y en
directo.
Cuenta con una entrada de micrófono, conector XLR, una salida copia de la señal
de entrada y salida de audio de los loops, conectores TRS, además cuenta con
conectividad USB para el acople del teclado y mouse.
Cuenta con un Tempo modificable (B.p.m) este puede ser accedido por un
interruptor.
Esta pedalera cuenta con 3 bancos de almacenamiento, en cada banco hay 3
canales, con la posibilidad de grabar y borrar hasta que este sea de su agrado.
Reproduce los 3 canales de cada banco simultáneamente, todos sincronizados
por medio de un B.p.m interno. Los canales podrán ser activados y desactivados
con el pie por medio de pulsadores.
Grabación en tiempo real. Para activar la grabación se deberá activar el pulsador
del canal, este se podrá hacer en cualquier tiempo del compás, la grabación
finaliza al pulsar nuevamente el canal, el loop será el audio determinado por estas
dos pulsaciones. este grabará el número de compases deseados.
Este tiene la posibilidad de borrar el último loop grabado o toda la información del
banco si no es de nuestro agrado.
Cuenta con ritmos de percusión en la memoria, La posibilidad de acceder a
diferentes ritmos como Rock, Pop, Hip Hop, Jazz Salsa y Regueton, en diferentes
compases y tiempos. Estos ritmos no podrán ser modificables en tiempo.
Este también tiene la posibilidad de cargar archivos de audio para ser
reproducidos, desde cualquier directorio, contara con puerto USB para realizar
copias de seguridad de datos/audio, importación/exportación de loops como
archivos wav, wma, mp3, ogg, entre otros.
70
Gráfica 26 . Diseño parte frontal realizado en sketchup
Fuente Propia
Parte frontal
1. Channel 1: Este pulsador permite en modo grabación grabar y reproducir
inmediatamente el audio en forma de loop. En modo reproducción permite
reproducir y detener el loop de este canal.
2. Channel 2: Este pulsador permite en modo grabación grabar y reproducir
inmediatamente el audio en forma de loop. En modo reproducción permite
reproducir y detener el loop de este canal.
3. Channel 3: Este pulsador permite en modo grabación, grabar y reproducir
inmediatamente el audio en forma de loop. En modo reproducción permite
reproducir y detener el loop de este canal.
4. Start: Este pulsador activa y desactiva el programa.
5. Clear: Este pulsador en modo grabación permite borrar el ultimo audio
grabado, en modo reproducción permite borrar el banco seleccionado.
6. Mute: Activa y desactiva el mute del metrónomo, si deseas apagar el BPM
debes presionar el Botón (MUTE) o (F10) en teclado.
7. Bank: selecciona entre los bancos 1,2 y 3. Si deseas cambiar de banco
estos pueden ser modificados con los botones (UP/DOWN) BANK o (1,2 y
3) en teclado.
8. Mode: Permite escoger entre el Modo grabación y el modo reproducción.
71
9. Bpm: Si desea cambiar el BPM este puede ser accedido fácilmente por el
switch BPM o los botones (UP/DOWN)BPM, (Arriba/Abajo) en el teclado.
10. RHYTHMS: Si deseas cambiar los ritmos, estos pueden ser accedidos de
forma rápida pulsando este switch o haciendo click en los botones
(LEFT/RIGHT)RHYTHMS o (izquierda/derecha) en teclado.
Gráfica 27. Parte Trasera, realizado en sketchup
Fuente Propia
Parte Trasera
1. On/Off: Activa y corta el flujo de corriente a la Beagle Board.
2. LED: Indica si este esta encendido o apagado
1. AC IN: Permite conectar un adaptador de 5V 1A
2. MIC IN: Entrada de micrófono, la entrada de instrumento debe realizarse
por medio de una caja directa.
3. LINK: Esta es una salida con una copia de la señal de entrada.
4. OUT ST: Salida estéreo de loop , metrónomo y ritmos
5. USB PORT 1: Puerto USB para adaptar teclado o memoria.
6. USB PORT 2: Puerto USB para adaptar mouse o memoria.
7. HDMI: Puerto de conexión pantalla LCD.
72
6. ANÁLISIS DE RESULTADOS
Los resultados del software desarrollado y ejecutado en el procesador del
computador están por encima de los objetivos planteados en el proyecto, este es
capaz de grabar y reproducir en tiempo real 3 audios simultáneamente en perfecta
sincronización con un sample del banco de audios predeterminados.
Posteriormente se creó la opción de almacenar estos 3 audios en un banco y
luego se crearon 2 bancos más con 3 canales cada uno, el reloj de sincronización
de los audios BPM funciona de manera constante reproduciendo los audios click
seleccionados para este metrónomo, también puede cargar los 20 audios del
banco de baterías, sin presentar problemas de retraso de señal en la grabación de
los audios.
A continuación se observa una gráfica generada con la función htop en el terminal
del PC, este muestra el porcentaje de la carga procesal y consumo de memoria
RAM del software reproduciendo simultáneamente 1 sample del banco de ritmos,
3 audios grabados de 1 compás de duración y las aplicaciones que se ejecutan en
paralelo.
Gráfica 28. Visualización de Procesamiento en el PC
Fuente Propia
73
Gráfica 29. Visualización de Procesamiento en el PC 10 min Después.
Fuente Propia.
Se puedo constatar durante un periodo de 10 minutos que el que el consumo de
CPU del computador estuvo entre el 10% y el 20%, generalmente este se mantuvo
por debajo del 15% en el uso de sus procesadores, se notó que el porcentaje de
memoria RAM usada por el software inicio en 0.5%, siendo la carga total del
sistema de 700 MB, pasado 10 minutos de ejecución la cantidad de memoria RAM
usada por el software fue de 2.5 % aumentando la carga total del PC a 854 MB.
Este aumento de memoria no presentó problemas para la reproducción simultánea
y continua de los audios, Cabe resaltar que el computador cuenta con cuenta con
8 GB de memoria RAM y un procesador de audio dedicado para los procesos
grabación y reproducción de audio.
Las características de la tarjeta de sonido permite la grabación de señal de línea,
es decir puedo grabar directamente un instrumento como guitarra, bajo o piano.
También me permite la grabación microfónica utilizando un micrófono tipo electrect
Genius MIC-01A , patrón omnidireccional.
74
Al correr el ejecutable compilado en la BeagleBoard, se observaron varios
problemas. Uno de estos es que después de cierto tiempo de operación la tarjeta
se recalentó demasiado. Por esta razón se decide no introducir la placa dentro del
dispositivo para evitar daños por recalentamiento.
También hubo problemas en la reproducción de los sample del click usados para
el metrónomo, estos tenían mucho retraso en la reproducción de audio, haciendo
muy difícil poder seguir el tiempo o ritmo del compás.
Se procede a quitar los samples clicks del metrónomo y sin embargo sigue
presentando problemas de retraso el contador principal, este no generó un tiempo
constante, imposibilitando los procesos de reproducción simultanea de todos los
audios.
También se observó que cada audio que se carga en el programa es una
aplicación, es decir, los 20 audios cargados por el software, son 20 aplicaciones
del programa que se abren simultáneamente, Por esta razón se realizaron
modificaciones en el software para que solo cargara el audio que se va a
reproducir.
Con el propósito de darle más capacidad de procesamiento al programa se
prosigue a desinstalar aplicaciones y procesos que estén ejecutándose paralelo al
programa. Esto se hace por medio del siguiente código:
> ps -A
> Kill -9 (PID)
También se intentó quitar la interfaz gráfica, pero no fue posible ya que Qt utiliza el
X11, protocolo encargado de la interfaz gráfica en los sistemas Unix.
Debido a esto decide instalar LXDE una interfaz gráfica mucho más ligera.
> sudo apt-get install lxde
75
Al eliminar los procesos paralelos e instalar una interfaz gráfica más ligera no se
observó mejora alguna en la reproducción del Samples. El procesador de la
BeagleBoard se sobresaturó al reproducir un Sample de Batería y un audio
grabado trabajando continuamente en el contador (Metrónomo).
En las Gráficas siguientes se observa la carga en procesamiento de la CPU y
memoria de la Beagle Board a través de la aplicación Monitor del Sistema.
Gráfica 30. Visualización de Procesamiento en la BeagleBoard
Fuente Propia.
Debido a que las necesidades básicas de grabación y reproducción no pudieron
ser implementadas con la BeagleBoard, se adquiere el S.E WandBoard, Esta
tarjeta tiene un disipador de calor en la placa base, la cual la protege de
recalentamiento. Sin embargo, no se instalará la tarjeta dentro del chasis para
evitar algún posible daño. El chasis queda funcionando solo como superficie de
control y se conecta a la tarjeta por el puerto USB OTG de la Wandboard. Las
conexiones de Audio, el suministro de corriente y salida de vídeo también se hace
directamente en la tarjeta.
76
Al correr el programa en la placa Wandboard las mejoras fueron notables. El reloj
central BPM ya reproduce los 2 audios clicks del metrónomo. A pesar de que el
tamaño promedio de cada audio es de 3.5 Kb , se observó que hubo un pequeño
retardo durante esta reproducción. Esto se debe a que el software debe cargar
constantemente estos 2 audios almacenados en la tarjeta Micro SD, la cual hacen
la ejecución de este proceso muy pesado. Por esta razón se eliminan estos audios
disminuyendo la carga en procesamiento del software. Es posible la visualización
del metrónomo por medio de los displays implementados en la interfaz gráfica.
A continuación se muestra por medio de la función htop el consumo de CPU y
memoria del S.E reproduciendo simultáneamente 3 audios grabados y un sample
del banco de baterías.
Gráfica 31. Procesamiento en la WandBoard reproduciendo con 4 Audios
Se Observa que el software está consumiendo entre un 40 y 50% los recursos del
procesador de la CPU, el consumo de memoria RAM total inicio en 298 MB y
pasado 10 minutos este aumento a 300 MB.
77
En un lapso de tiempo de 10 minutos la reproducción de los sample rítmicos se
mantuvo en sincronía con el BPM un 80% del tiempo, estos presentaron retrasos
menores en la reproducción, la cual provoca que al audio sobrepase el primer bit
de inicio de reproducción y entre nuevamente en el primer bit del compás
siguiente, la programación desarrollada en el software permite que el audio se
acople en el siguiente compás.
Con respecto al proceso de grabación, la tarjeta permite grabar los 3 audios en
cada banco de almacenamiento pero no los reproduce constantemente, también
se notó que en este proceso aumenta considerablemente la memoria RAM del
Software.
Con el propósito de mejorar el proceso de grabación se procede a bajar la
resolución de captura de los audios, es decir se disminuye el Sample Rate de 44.1
KHz a 8KHz y se disminuye el bit rate de 16 a 8, también se modifica la cantidad
de canales de grabación, de estero (2 Canales) a monofónico (1 Canal).
En la Gráfica 35 observamos que existe una notable disminución en la carga
procesal de la CPU del sistema cuando hacemos los audios más livianos, El
software consumió aprox. un 10% menos de CPU.
Gráfica 32. Procesamiento en la WandBoard Audios Más livianos
78
Se pudo verificar por medio de la ventana de Application Output de Qt creator que
los audios del banco de baterías predeterminados solo son cargados por el
software la primera vez que son reproducidos y extraídos del directorio de
almacenamiento.
Los audios grabados en los canales son cargados cada vez que se reproducen,
debido a este modo de operación del programa, se tuvo en cuenta es la velocidad
de transferencia de los dispositivos de almacenamiento. Para la instalación del
Sistema operativo se utilizó una tarjeta micro SD HC I de 16 GB, clase 10,
Scandisk ultra. La velocidad de transferencia teórica de esta tarjeta es de 30MB/s.
10 veces mayor a la velocidad de transferencia de una micro sd clase 4. Para
mejorar los procesos de lectura y escritura de los archivos de audio y con el
propósito de disminuir latencias en la reproducción simultanea de estos, se opta
por almacenar estos archivos en una memoria USB 2.0 ya que esta ofrece una
velocidad teórica hasta 60MB/s, el doble de la tarjeta micro SD clase 10.
A continuación observamos el consumo de recursos del sistema una vez realizada
la modificación en el software permitiendo almacenar en una memoria externa.
Gráfica 33. Procesamiento en la WandBoard con USB 2.0
79
Se Observa que el porcentaje de procesamiento por parte del CPU disminuyó un
5%, sin embargo sigue presentando problemas de retraso en la grabación de
audios.
En este punto los procesos de reproducción de los samples predeterminados han
mejorado notoriamente, al reproducir solo una batería con un audio grabado
observamos que el porcentaje de carga la CPU disminuye hasta un 12% aprox.
Gráfica 34. Procesamiento en la WandBoard 2 Audios
Ahora el audio sample se reproduce perfectamente en sincronización con el BPM
central y el audio grabado.
Con el propósito de consumir la menor cantidad de recursos del sistema se instala
la interfaz gráfica ligera LXDE, por medio de la función htop se observó que la
interfaz gráfica Unity aumenta el consumo de procesamiento del sistema
aproximadamente un rango entre 5 y 7% de la carga total de la CPU.
En la Gráfica 37 observa la interfaz gráfica el software ejecutado en la
WandBoard, con las modificaciones de parámetros y funciones para su mejor
procesamiento.
80
Gráfica 35. Interfaz Gráfica software en la WandBoard
Fuente propia
Finalmente se configuró el sistema para que abriera el software sin necesidad de
usar periféricos como mouse o teclado, en Ubuntu 12,04 Buscamos en Inicio,
aplicaciones de Inicio, este muestra una ventana con los programas que se inician
automáticamente.
También puedes ejecutar en el terminal el siguiente código:
> gnome-session-properties
Añadimos el ejecutable y se reinicia el sistema para comprobar la configuración.
81
7. CONCLUSIONES
Debido a las características que posee el procesador de la BeagleBoard Xm no
fue posible la implementación del metrónomo programado en Qt creator en este
sistema, por esta razón, tampoco se pudo reproducir los audios samples del banco
de baterías en forma continua.
La implementación del sistema embebidos WandBoard en proyectos de
procesamiento de audio es una opción fiable, estos permiten la captura,
almacenamiento y reproducción de señales de audio provenientes de instrumentos
musicales electrónicos, sin embargo este proceso funcionando en tiempo real se
ve afectado por los recursos de procesamiento que ofrece el sistema y la
velocidad de transferencia de datos de los dispositivos de almacenamiento.
Este trabajo presenta el diseño y construcción de un dispositivo para la
retroalimentación de señales de audio implementando un sistema embebido, el
cual funciona como una herramienta de grabación y reproducción de audio en
tiempo real, este sistema permite el almacenamiento de señales de audio
provenientes de instrumentos musicales para ser manipuladas por el usuario y
reproducir de forma cíclica, las señales almacenadas en el sistema, creando de
esta manera ‘loops’, también puede cargar archivos de audio preestablecidos, este
dispositivo le permite a un músico poder ensayar un solo instrumental en una base
armónica generada por el mismo.
La portabilidad de hardware y software posicionan a los sistemas embebidos como
una herramienta de desarrollo eficiente, los sistemas operativos GNU/Linux se
encuentran en la capacidad de brindar las herramientas suficientes para el
desarrollo de nuevas tecnologías dentro de los Sistemas Embebidos aplicados a la
Ingeniería de Sonido .
82
8. RECOMENDACIONES
Este dispositivo puede ser mejorado implementando la transferencia de datos a
través del puerto SATA, hubo mejoras notables al cambiar el tipo de
almacenamiento de la micro SD a la memoria USB, Implementar el uso de un
disco duro con transferencia de datos SATA mejoraría la velocidad de
transferencia y bajaría la latencia de reproducción.
Se recomienda utilizar un lenguaje de programación más ligero que no necesite la
previa instalación de un sistema operativo con interfaz gráfica para poder ser
desarrollado, el procesamiento de vídeo en el S.O consume muchos recursos de
memoria y CPU las cuales podrían ser mejor aprovechados por el programa . Este
proyecto puede ser mejorado implementando el lenguaje de programación phyton,
este lenguaje también esta basado en C++, y permite desarrollar aplicaciones de
audio y video, con y sin interfaz gráfica.
83
Bibliografía.
[1] Kumar, S. (2003). Review of Smart Acoustic Volume controllers for consumer
electronics. AES-E Library, 5917.
[2] Kumar, S. (2003) Acoustic personalization of mobile phones. AES-E Library,
5837.
[3] Barlett, Greg. (1994). Embedded Controller for audio devices. AES-E Library,
13-020.
[4] Petrovic, T., & Samardžija, D. (2009.) Digital Sound Projector Implementation
and Verification within DTV Embedded System. IEEE CS Digital library, pp.152-
153.
[5] Iwanaga, N.; Kobayashi, W.; Furuya, K.; Sakamoto, N.; Onoye, T.; Shirakawa, I.
(2002). Embedded implementation of acoustic field enhancement for stereo
headphones. IEEE Xplorer Digital library,(1) 51-54.
[6] Matsumura, T.; Iwanaga, N.; Onoye, T., Kobayashi, W.; Shirakawa, I.;
Arungsrisangchai, I.(2005). 3D sound movement system for embedded
applications, IEEE Xplorer Digital library,(5) 5345-5348.
[7] Kwok-Tung Lo,; & Haijun Lei. (2008). Optimization of AVS Audio Decoder
Implemented on RISC Core. IEEE Xplorer Digital library,(53) 1204 -1210.
[8] Briere, S.; Valin, J.-M.; Michaud, F.; Letourneau, D. (2008)Embedded auditory
system for small mobile robots. IEEE Xplorer Digital library, 3463-3468.
[9] Yongqiang Zhang.; & Bing Zhang. (2007) Design of Embedded Audio and Video
Compression System. IEEE Xplorer Digital library,(53) 116 -119.
[10] Xu Lijun; Gao Guohong; Li Xueyong; Qu Peixin. (2010).Video collection
system based on embedded system and USB communication. IEEE Xplorer Digital
library, 112-114.
[11] Viedma Ponce, Ramón.(2010). Programación de un sistema embedded
multimedia. Escuela técnica superior de Ingeniería de telecomunicaciones de
Barcelona.
[12] Castro Murillo Jorge. (2011). Diseño de un prototipo embebido para la gestión
84
del padrón electrónico del T.S.E.; Instituto tecnológico de Costa Rica.
[13] Camargo Barreño, Carlos Iván. "Transferencia tecnológica y de conocimientos
en el diseño de sistemas embebidos". Universidad Nacional de Colombia. Bogotá,
Colombia. 2011
[14] Rosas Jiménez, Nelson Felipe. Diseño E Implementación De Un Sistema
Embebido Para La Adquisición Y Transmisión De Señales Biomédicas A Través
De La Red Celular. Universidad Nacional De Colombia. Bogotá, Colombia. 2011
[15] Caballero Paz, Andrés.(2012). Desarrollo de un controlador midi no
convencional, implementado en un sistema embebido, utilizando el Kinect.
Universidad de San Buenaventura, Bogotá, Colombia.
[16] “Dopa”, Conexiones balanceadas y no balanceadas, [En Linea], 2000, 26 de
mayo de 2013,8:00 a.m; Disponible en la web:
http://www.doctorproaudio.com/doctor/temas/balanceado.htm
[17] “Wikipedia la Enciclopedia Libre”, [En línea], 2008, 26 de mayo del 2013, 8:00
a.m; Disponible en Web: http://es.wikipedia.org/wiki/Línea_balanceada_de_audio
[18] “D.A.S”, [En línea], 2012, 19 de Octubre de 2013,11:00 p.m.; Disponible en la
Web: http://www.dasaudio.com/soporte/faq/electronica-de-audio/que-es-una-linea-
balanceada/
[19] “Tipo de conexiones Multimedia”, [En Linea], 2000, 26 de mayo de 2013, 8:00
a.m; Disponible en la web:
http://recursostic.educacion.es/observatorio/web/es/equipamiento-
tecnologico/hardware/1002-tipos-de-conexiones-multimedia
[20] “Manual para radialistas analfatecnicos”, [En Linea], 2000, 9 de mayo de
2013,1:00 p.m.; Disponible en la web: http://www.analfatecnicos.net/pregunta.php?
id=33
[21] “Dopa”, Conexiones balanceadas y no balanceadas, [En Linea], 2000, 26 de
mayo de 2013, Disponible en la web: http://www.doctorproaudio.com/content.php?
148-cables-y-puenteo-paralelos
[22] “Wikipedia la Enciclopedia Libre”, [En línea], 2008, 26 de mayo del 2013, 8:00
a.m; Disponible en Web: http
85
[23] “Universal Series Bus”, [En línea], 2008, 27 de mayo del 2013, 9:00 p.m.;
Disponible en Web: http://www.siliconimaging.com/universal_serial_bus.htm
[24] “Wikipedia la Enciclopedia Libre”, [En línea], 2008, 27 de mayo del 2013, 9:00
p.m.; Disponible en Web: http://es.wikipedia.org/wiki/Tasa_de_bits
[25] “Wikipedia la Enciclopedia Libre”, [En línea], 2008, 27 de mayo del 2013, 9:00
p.m.; Disponible en Web: http://es.wikipedia.org/wiki/Serial_ATA
[26] “Wikipedia la Enciclopedia Libre”, [En línea], 2008, 27 de mayo del 2013, 9:00
p.m.; Disponible en Web: http://es.wikipedia.org/wiki/Digital_Visual_Interface
[27] “Wikipedia la Enciclopedia Libre”, [En línea], 2008, 27 de mayo del 2013, 9:00
p.m.; Disponible en Web: http://es.wikipedia.org/wiki/High-
Definition_Multimedia_Interface
[28] “Home Theather Review.com”, [En Linea], 2000, 28 de mayo de 2013, 9:00
p.m.; Disponible en la web: http://hometheaterreview.com/high-definition-
multimedia-interface-hdmi/
[29] “Wikipedia la Enciclopedia Libre”, [En línea], 2008, 28 de mayo del 2013, 9:00
p.m.; Disponible en Web:http://es.wikipedia.org/wiki/Conversi%C3%B3n_anal
%C3%B3gica-digital
[30]Sergi Jordà Puig. (1997). Audio digital y MIDI. Madrid: Guías Monográficas
Anaya Multimedia. <http://es.scribd.com/doc/140416530/Sergi-Jorda-Puig-Audio-
Digital-y-MIDI-1997-243p>
[31] “Wikipedia la Enciclopedia Libre”, [En línea], 2008, 29 de mayo del 2013, 8:00
p.m;Disponible en Web: http://es.wikipedia.org/wiki/Frecuencia_de_muestreo
[32] “El rincón de Linux”, Sobre Linux, [En Linea],1998, 29 de mayo de 2013, 8:00
p.m.; Disponible en la web: http://www.linux-es.org/sobre_linux
[33] “Wikipedia la Enciclopedia Libre”, [En línea], 2008, 29 de mayo del 2013,
Disponible en Web: http://es.wikipedia.org/wiki/GNU/Linux
[34] “Wikipedia la Enciclopedia Libre”, [En línea], 2008, 29 de mayo del 2013,
Disponible en Web: http://es.wikipedia.org/wiki/Ubuntu
[35] “LXDE org”, [En Linea], 29 de mayo del 2013, 9:00 p.m.; Disponible en Web:
http://lxde.org/es/lxde
86
[36] “Wikipedia la Enciclopedia Libre”, [En línea], 2008, 29 de mayo del 2013, 9:00
p.m.; Disponible en Web: http://es.wikipedia.org/wiki/Qt_%28biblioteca%29
[37] “Procesamiento Audiovisual 3º II/ITIS”, Sesión 1: Programación Visual con Qt
Creator, [En Linea],29 de mayo del 2013, 9:00 p.m.; Disponible en Web:
http://dis.um.es/~ginesgm/files/doc/pav/guion1.pdf
[38]“Wikipedia la Enciclopedia Libre”, [En línea], 2008, 29 de mayo del 2013, 9:00
p.m.; Disponible en Web: http://es.wikipedia.org/wiki/Compilador
[39] BeagleBoard –xM Rev C System Reference Manual,[En Linea], Abril 4 de
2010, 29 de mayo del 2013, 10:00 p.m.; Disponible en Web:
http://beagleboard.org/static/BBxMSRM_latest.pdf
[40]”Wandboard.org”,[En Linea],2012, 30 de Mayo de 2013, 10:00 p.m.; Disponible
en la Web: http://www.wandboard.org
[41] “Instalar Ubuntu 12.10 junto a windows 7”,[En Linea],2013, 30 de Mayo de
2012, 10:00 p.m.; Disponible en la Web: http://www.freetux.com.ar/instalar-ubuntu-
12-10-junto-a-windows-7/
[42]”Como Instalar Linux”,[En Linea],2013, 30 de Mayo de 2012, Disponible en la
Web: http://www.comoinstalarlinux.com/como-instalar-ubuntu-12-10/
[43]”[Tutorial] Como instalar Ubuntu 12.10”,[En Linea],2013, 26 de Mayo de 2012,
10:00 p.m.; Disponible en la web:
http://www.taringa.net/posts/linux/15786709/Tutorial-Como-instalar-Ubuntu-12-
10.html
[44]”Ubuntu.com”,[En Linea], 30 de Mayo de 2013, 10:00 p.m.; Disponible en la
Web: http://http://www.ubuntu.com/download/desktop
[45]”Wikipedia la Enciclopedia Libre”,[En Linea],2012, 26 de Mayo de 2013,
Disponible en la Web: http://es.wikipedia.org/wiki/Compas
[46] P Raghavan, Amol Lad, and Sriram Neelakandan. Embedded Linux System
Desing and Development. Auerbach Publications, 2005.
[47]”Wikipedia la Enciclopedia Libre”,[En Linea],2012, 30 de Mayo de 2013, 10:00
p.m.; Disponible en la Web: http://es.wikipedia.org/wiki/USB_On-The-Go
87
GLOSARIO Y ABREVIATURAS
S.E.: Sistema Embebido
S.O.: Sistema Operativo.
S.O.E.: Sistema Operativo Embebido.
P.C: Computador personal.
HW: Hardware.
SW: Software.
INPUT: Entrada de Audio.
OUTPUT: Salida de Audio.
RAM: Random-access memory.
ROM: Read-Only Memory
ARM: Advanced RISC Machines.
LAN: Local Area Network o Redes de Area Local.
Ethernet: Red LAN de mayor utilización a nivel mundial.
TERMINAL: Es una forma de acceder al sistema sin utilizar la interfaz gráfica.
COMPILACIÓN: Proceso de traducción de un código a datos que puedan ser
ejecutados por una computadora.
CROSS COMPILACIÓN: Proceso de traducción de un código de datos de un
sistema a otro.
COMANDOS SHELL: Sistemas de comandos utilizados por el sistema UNIX que
permite administrar el sistema sin entorno gráfico.
KERNEL o Núcleo: Es el encargado de conectar el hardware con el software y
gestionar los recursos de manera adecuada.
ROOT FILE SYSTEM (RFS): Es el conjunto de archivos fundamentales para
ejecutar un sistema operativo.
OMAP: Procesador multinúcleo ARM desarrollado para diferentes aplicaciones
embebidas, fabricado por Texas Instruments.
HDMI (High-Definition Multimedia Interface): Conector de audio y vídeo digital
cifrado sin compresión de alta definición.
88
SAMPLE o Muestra: Sección de audio de corta duración.
LOOP ó Bucle: Repetición continua de un sample.
SAMPLE RATE: Frecuencia de Muestreo. [29][30][31]
BIT RATE: Rango Dinámico.[29][30][31]
89
ANEXOS
A.1 Código de LoopStation.pro
#-------------------------------------------------
## Project created by QtCreator 2013-04-24T10:21:36##-------------------------------------------------QT += core guiTARGET = LoopStationTEMPLATE = appSOURCES += main.cpp\ loopstation.cppHEADERS += loopstation.hFORMS += loopstation.ui
CONFIG += mobilityMOBILITY = multimedia
RESOURCES +=
A.2 Código de loopstation.h
#ifndef LOOPSTATION_H
#define LOOPSTATION_H
#include <QtCore/qurl.h>#include <QtGui/qmainwindow.h>#include <QMainWindow>#include <QtCore>#include <QtGui>#include <QTimer>#include <QtMultimediaKit/qmediarecorder.h>#include <QtMultimediaKit/qmediaplayer.h>#include <QtMultimediaKit/qaudiocapturesource.h>#include <QtMultimediaKit/QAudioFormat>
class QTimer;class QAudioRecorder;class QAudioCaptureSource;
namespace Ui {class LoopStation;}
class LoopStation : public QMainWindow{
90
Q_OBJECT
public: explicit LoopStation(QWidget *parent = 0); ~LoopStation();
private slots:
//Slots del Metronomo void on_Bpm_clicked(); void on_mute_clicked(); void Contador(); void on_up_clicked(); void on_down_clicked();
//Slots de Grabacion void on_rec1_clicked(); void on_rec2_clicked(); void on_rec3_clicked();
//Slots de de borrar void on_Clear1_clicked();
//Slots del Loop de Baterias
void on_loopup_clicked(); void on_loopdown_clicked(); void on_checkBoxMode_clicked();//Slots de bancos de memoria
private:
Ui::LoopStation *ui; //QLCDNumber *timeLcd; QTimer *timer;
QAudioCaptureSource* audioSource; QMediaRecorder* recorder;
QMediaPlayer *playerclick1; QMediaPlayer *playerclick2; QAudioEncoderSettings audioSettings;
QMediaPlayer *Music1; QMediaPlayer *pista1; QMediaPlayer *pista2; QMediaPlayer *pista3;
bool outputLocationSet;// Banco 1;Canal 1;Pista
91
int rec1;
// Banco 1;Canal 2;Pista int rec2;
// Banco 1;Canal 3;Pista int rec3;
int g; int bpm; int t; int ti2; int r; int m; int mo; int mu; int tb; int l; int lu; int x; int b; int c1; int c2; int c3;
int p1;int g1;int g2;int g3;int q1;int q2;int q3;int cg1;int cg2;int cg3;int s1;int s2;int s3;
int pr;
};#endif // LOOPSTATION_H
92
A.3 Código de main.cpp
#include <QApplication>
#include "loopstation.h"
int main(int argc, char *argv[]){ QApplication a(argc, argv); LoopStation w; w.show(); return a.exec();}
A.4 Gráfica de loopstation.ui
93
A.5 Código del PushButton START / STOP BPM
//METRONOMO
/* este es el corazon del programa, es un relog contador (timer), lo tego ajustado al bpm 100 por defecto, pero este puedeser modificable cuando quieres grabar ritmos de acompañamiemnto*/
void LoopStation::on_Bpm_clicked(){ if(tb==0) //la primera vez tb=0y cuando pulso este boton arranca el contador BPM {
// playerclick1->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00Click1.wav")); playerclick1->play(); connect(timer,SIGNAL(timeout()),this,SLOT (Contador())); timer->start(60000/bpm); ti2=(30000/bpm); tb=1; // aqui hago la varible tb= 1 return;
} if(tb==1){// y cuando lo presionapor segunda vez desconecta el contador ui->loopdown->show(); ui->loopup->show(); t=1; timer->stop(); timer->disconnect(SIGNAL(timeout()),this,SLOT (Contador())); tb=0; }}
94
A.6 Código del Slot Contador
void LoopStation::Contador() //Este es un Slot y se encarga de contar de de 1 a 4
repetidamente
{ playerclick1->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00Click1.wav")); playerclick2->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00Click2.wav")); // estos son los click del metronomo
if(r==0){if (ti2==30000/bpm)// Con sta variable le indico q cuando ti2 sea este valor pare la grabacion recorder->stop();}
if (t==4){ t=0;
if(m==1){playerclick1->setVolume(0);} // aqui le bajo el volumen al click if(m==0){playerclick1->setVolume(100);// aqui se lo subo playerclick1->play();}
// Audios de bateria p1, p2, p2,p4............................................................if(p1==1){Music1->setVolume(100); Music1->play();}if(p1==0){Music1->stop();}
//-------------ESTE ES EL GRABADOR----------------------------------- if(r==1) { recorder->record();} //Este me permite grabar a partir del 1er compas (tiempo fuerte) if(r==0) { recorder->stop();}// detiene la grabacion en el 1er compas
//-------------------------CANAL1-------------------------------
// Banco 1; Canal 1; Pistas if(rec1==1) pista1->play(); if (rec1==0)pista1->stop();
//---------------------CANAL2 ------------------------------------- // Banco 1; Canal 2; Pistas if(rec2==1) pista2->play(); if (rec2==0) pista2->stop();
//---------------------------------------------------CANAL3-------------------------------------------- // Banco 1; Canal 3; Pistas
95
if(rec3==1) pista3->play(); if (rec3==0) pista3->stop();
}
//------------------------------------------------------------------------------------------------------//--------------ESTOS SON LOS OTROS 3 TIEMPOS--------------------------------------// Los tiempos solo reproducen click del metronomo if (t==1){ if(m==1){playerclick2->setVolume(0); } if(m==0){playerclick2->setVolume(100); playerclick2->play();} } if (t==2){ if(m==1){playerclick2->setVolume(0); } if(m==0){playerclick2->setVolume(100); playerclick2->play();} } if (t==3){ if(m==1){playerclick2->setVolume(0); } if(m==0){playerclick2->setVolume(100); playerclick2->play();} } t++; ui->lcdNumberNum->display(t);}
96
A.7 Código para aumentar, disminuir o mutear el metrónomo
void LoopStation::on_up_clicked(){
bpm++; // con este push button puede aumetar el BPM t=1; ui->lcdNumberBPM->display(bpm); timer->start(60000/bpm);
if(bpm==251){ bpm=250; t=1; ui->lcdNumberBPM->display(bpm); timer->start(60000/bpm);}}void LoopStation::on_down_clicked(){
bpm--; // con este disminuyo el BPM t=1; ui->lcdNumberBPM->display(bpm); timer->start(60000/bpm); if(bpm==49){ bpm=50; t=1; ui->lcdNumberBPM->display(bpm); timer->start(60000/bpm);}}
//----- BOTON QUE MUTEA EL BPM
void LoopStation::on_mute_clicked(){ if(m==0){ playerclick1->setVolume(0); playerclick2->setVolume(0); m=1; qDebug("Apagado m= %d",m); return; } if (m==1){ playerclick1->setVolume(100); playerclick2->setVolume(100); m=0; qDebug("Encendido m= %d",m);
}}
97
A.8 Código del Tap Tempo
void LoopStation::on_Tap_clicked()
{
if(tap==0){ timer->disconnect(SIGNAL(timeout()),this,SLOT (Contador())); connect(timer,SIGNAL(timeout()),this,SLOT (Contador2())); timer->start(1); tap=1;
qDebug("El ta es de vale %d",ta); qDebug("El tap es de vale %d",tap); return;}
if(tap==1){ tap=2; qDebug("El ta es de vale %d",ta); qDebug("El tap es de vale %d",tap); ta=0; return; }
if(tap==2){ tap=3;
qDebug("El ta es de vale %d",ta); qDebug("El tap es de vale %d",tap); ta=0; return; }
if(tap==3){ timer->stop(); timer->disconnect(SIGNAL(timeout()),this,SLOT (Contador2())); tap=0;
connect(timer,SIGNAL(timeout()),this,SLOT (Contador())); timer->start(ta);
qDebug("El ta es de vale %d",ta); qDebug("El tap es de vale %d",tap);
bpm=(60000/ta); ui->lcdNumberBPM->display(bpm); t=4; ta=0; return; }
}
98
A.9 Código del Pushbutton Bankup
void LoopStation::on_Bankup_clicked()
{ b++;s1=0;s2=0;s3=0; ui->lcdNumberBank->display(b); ui->rec1->show(); ui->rec2->show(); ui->rec3->show();
if(b==4){b=1;ui->lcdNumberBank->display(b); rec311=0; rec321=0; rec331=0; rec111=1; rec121=1; rec131=1;
} if (b==2){ rec111=0; rec121=0; rec131=0; rec211=1; rec221=1; rec231=1;
} if (b==3){ rec211=0; rec221=0; rec231=0; rec311=1; rec321=1; rec331=1;
} }
A.10 Código para cambiar entre bancos directamente
void LoopStation::on_Banco1_clicked()
{ b=1;s1=1;s2=1;s3=1; ui->lcdNumberBank->display(b); rec111=1; rec121=1; rec131=1; rec211=0; rec221=0; rec231=0; rec311=0; rec321=0; rec331=0;
ui->rec1->show(); ui->rec2->show(); ui->rec3->show();}
void LoopStation::on_Banco2_clicked(){ b=2;s1=1;s2=1;s3=1; ui->lcdNumberBank->display(b); rec111=0; rec121=0; rec131=0; rec211=1; rec221=1; rec231=1; rec311=0; rec321=0; rec331=0;
99
ui->rec1->show(); ui->rec2->show(); ui->rec3->show();}
void LoopStation::on_Banco3_clicked(){ b=3;s1=1;s2=1;s3=1; ui->lcdNumberBank->display(b); rec111=0; rec121=0; rec131=0; rec211=0; rec221=0; rec231=0; rec311=1; rec321=1; rec331=1;
ui->rec1->show(); ui->rec2->show(); ui->rec3->show();}
A.11 Código hacia arriba y hacia abajo en Playlist
void LoopStation::on_loopup_clicked()
//Este boton me permite ascender entre los ritmos predeterminados// es un contador q cada q vez q pulso sube al siguiente ritmo{ l++; ui->lcdNumberSound->display(l);
playerclick1->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00Click1.wav")); playerclick1->play();
if (l==1){ p1=1; // para cada uno de ellos defino el BPM y la variable ti2 ui->down->hide(); ui->up->hide(); ui->dialbpm->hide(); bpm= 75; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==2){ p1=0;p2=1; bpm= 82; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==3){p2=0;p3=1;
100
bpm= 90; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==4){ p3=0;p4=1; bpm= 102; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==5){ p4=0;p5=1; bpm= 105; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==6){ p5=0;p6=1; bpm= 108; timer->start(60000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==7){ p6=0;p7=1; bpm= 110; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==8){ p7=0;p8=1; bpm= 60; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==9){ p8=0;p9=1; bpm= 66; timer->start(60000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==10){ p9=0; p10=1; bpm= 84; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
101
if (l==11){ p10=0;p11=1; bpm= 84; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==12){ p11=0;p12=1; bpm= 98; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==13){p12=0;p13=1; bpm= 110; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==14){ p13=0;p14=1; bpm= 110; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==15){ p14=0;p15=1; bpm= 115; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==16){ p15=0;p16=1; bpm= 60; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==17){ p16=0;p17=1; bpm= 73; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==18){ p17=0;p18=1; bpm= 73; timer->start(60000/bpm);
102
ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==19){ p18=0;p19=1; bpm= 81; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==20){ p19=0; p20=1; bpm= 95; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);}
if (l==21){p20=1; bpm= 95; timer->start(60000/bpm); ti2=(30000/bpm); qDebug("El ti2 es de vale %d",ti2); ui->lcdNumberBPM->display(bpm);} if (l==21){ l=20;ui->lcdNumberSound->display(l);}
}
//-------------------------------------BOTON HACIA ABAJO PLAYLIST----------------------------------------------------void LoopStation::on_loopdown_clicked(){ //Este boton me permite descender entre los ritmos predeterminados // es un contador q cada q vez q pulso baja al siguiente ritmo l--; ui->lcdNumberSound->display(l); playerclick1->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00Click1.wav")); playerclick1->play(); if (l==-1){ l=0;ui->lcdNumberSound->display(l);}
if (l==0){ p1=0; ui->down->show(); ui->up->show(); ui->dialbpm->show(); bpm=100; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==1){ p2=0;p1=1; bpm= 75;
103
timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==2){ p3=0;p2=1; bpm= 82; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==3){p4=0;p3=1; bpm= 90; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==4){ p5=0;p4=1; bpm= 102; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==5){ p6=0;p5=1; bpm= 105; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==6){ p7=0;p6=1; bpm= 108; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==7){ p8=0;p7=1; bpm= 110; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==8){ p9=0;p8=1; bpm= 60; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==9){ p10=0;p9=1; bpm= 66; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
104
if (l==10){ p11=0;p10=1; bpm= 84; timer->start(60000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==11){ p12=0;p11=1; bpm= 84; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==12){ p13=0;p12=1; bpm= 98; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==13){p14=0;p13=1; bpm= 110; timer->start(60000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==14){ p15=0;p14=1; bpm= 110; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==15){ p16=0;p15=1; bpm= 115; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==16){ p17=0;p16=1; bpm= 60; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==17){ p18=0;p17=1; bpm= 73; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==18){ p19=0;p18=1; bpm= 73; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
105
if (l==19){ p20=0;p19=1; bpm= 81; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}
if (l==20){ /*p21=0*/ ;p20=1; bpm= 95; timer->start(60000/bpm); ti2=(30000/bpm); ui->lcdNumberBPM->display(bpm);}}
A.12 Codigo Usando la librería Phonon
void LoopStation::on_AddAudio_clicked(){
// Para poder hacer este descargue la libreria Phonon QString file = QFileDialog::getOpenFileName(this,"Chose Audio File",ui->label_2->text()); mediaObject= Phonon::createPlayer(Phonon::MusicCategory,Phonon::MediaSource(file)); mediaObject->play(); // Muestro el nombre del archivo en el label if(!file.isNull()) ui->label_2->setText(file + QString("/")); setFocus();
ui->label->setText("Reproduciendo loop"); e=1; a=1;}void LoopStation::on_Play_clicked(){ mediaObject->play(); a=1;//reproduce // Muestro el mensaje en el label if (e==1){ ui->label->setText("Reproduciendo loop");} if (e==0){ ui->label->setText("Loop Eliminado debes cargar otro audio");}}void LoopStation::on_Stop_clicked(){ mediaObject-> stop(); a=0;// Stop if (e==1) { ui->label->setText("Loop Detenido"); } if (e==0) {ui->label->setText("Loop Eliminado debes cargar otro audio"); }}void LoopStation::on_Pause_clicked(){ mediaObject-> pause(); if (e==1) { ui->label->setText("Loop en pausa");} if (e==0) { ui->label->setText("Loop Eliminado debes cargar otro audio"); }
106
}void LoopStation::on_Clear_clicked(){ mediaObject->clear(); ui->label->setText("Loop Eliminado debes cargar otro audio"); e=0;}
A.13 Código para el canal de grabación
void LoopStation::on_rec1_clicked(){ c1=1;c2=0;c3=0;
if(mo==0){ //cuando m=0 , esta en modo grabacion if(g1==0){ // la primera vez cuando g1=0 comienza la grabacion ui->label_5->setText("Chanel 1 ***RECORDING***"); QAudioEncoderSettings audioSettings; audioSettings.setCodec("audio/PCM"); audioSettings.setSampleRate(44100); audioSettings.setBitRate(16); audioSettings.setQuality(QtMultimediaKit::VeryHighQuality); recorder->setEncodingSettings(audioSettings); // dependiendo del banco me almacena con nombres diferentes if(b==1)recorder->setOutputLocation(QUrl("/home/erick/Audios/1A-1C-1B.wav")); if(b==2)recorder->setOutputLocation(QUrl("/home/erick/Audios/1A-1C-2B.wav")); if(b==3)recorder->setOutputLocation(QUrl("/home/erick/Audios/1A-1C-3B.wav")); r=1; //recorder->record(); g1=1; return; } if (g1==1) //cuando g1=1 le digo q reproduzca el audio { // Con esta vaiable puedo saber si use este canal r=0; //recorder->stop(); ui->label_5->setText("Channel 1 ***PLAYING*** "); ui->rec1->hide();// escondo este boton para q si la persona lo hunde por error no exista conflicto if(b==1){pista111->setMedia(QUrl::fromLocalFile("/home/erick/Audios/1A-1C-1B.wav")); rec111=1; g1=0; return;} if(b==2){pista211->setMedia(QUrl::fromLocalFile("/home/erick/Audios/1A-1C-2B.wav")); rec211=1; g1=0; return;} if(b==3){pista311->setMedia(QUrl::fromLocalFile("/home/erick/Audios/1A-1C-3B.wav")); rec311=1; g1=0; return;} }} if (mo==1){ //MODO REPRODUCCION if (s1==1) { // cuando s1=1 reproduce if(b==1){ ui->label_5->setText("Channel 1 -*- Bank 1
107
***PLAYING*** "); rec111=1; s1=0;return;} if(b==2){ ui->label_5->setText("Channel 1 -*- Bank 2 ***PLAYING*** "); rec211=1; s1=0;return;} if(b==3){ ui->label_5->setText("Channel 1 -*- Bank 3 ***PLAYING*** "); rec311=1; s1=0;return;} } if(s1==0){ // cuando s1=0 para el audio if(b==1){ ui->label_5->setText("Channel 1 -*- Bank 1 ***IN STOP *** "); rec111=0; s1=1;return;} if(b==2){ ui->label_5->setText("Channel 1 -*- Bank 2 ***IN STOP *** "); rec211=0; s1=1;return;} if(b==3){ ui->label_5->setText("Channel 1 -*- Bank 3 ***IN STOP *** "); rec311=0; s1=1;return;} } }}
A.14 Codigo PushButton Mode
//-----CHECHBOX MODE
// este boton me permite escoger entre modo grabación el cual me permite grabr y reproducir// y el modo reproducción q me permite detener y reproducir pistas por independiente en cada banco
void LoopStation::on_checkBoxMode_clicked(){if(mo==1){ ui->label_5->setText(" ***MODE RECORDING*** "); mo=0; return;}if(mo==0){ ui->label_5->setText(" ***MODE PLAYING*** "); ui->rec1->show(); ui->rec2->show(); ui->rec3->show(); mo=1;s1=0;s2=0;s3=0;}}
108
A.15 Codigo PushButton Clear
void LoopStation::on_Clear1_clicked()// la opcion eliminar audio de la carpeta no existe dentro de esta libreria// por eso decidí cargar un audio en blanco para q lo reprodujera{
if(mo==0){ //cuando m=0 , esta en modo grabacion
if(b==1&&c1==1){ ui->label_5->setText("1 Track -*- 1 Channel -*- 1 Bank +++CLEAR LOOP+++"); pista111->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec111=0; ui->rec1->show();return;} if(b==2&&c1==1){ ui->label_5->setText("1 Track -*- 1 Channel -*- 2 Bank +++CLEAR LOOP+++"); pista211->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec211=0; ui->rec1->show();return;} if(b==3&&c1==1){ ui->label_5->setText("1 Track -*- 1 Channel -*- 3 Bank +++CLEAR LOOP+++"); pista311->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec311=0; ui->rec1->show();return;}
if(b==1&&c2==1){ ui->label_5->setText(" Track -*- 2 Channel -*- 1 Bank +++CLEAR LOOP+++"); pista121->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec121=0; ui->rec2->show();return;} if(b==2&&c2==1){ ui->label_5->setText(" Track -*- 2 Channel -*- 2 Bank +++CLEAR LOOP+++"); rec221=0;ui->rec2->show();return;} pista221->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); if(b==3&&c2==1){ ui->label_5->setText(" Track -*- 2 Channel -*- 3 Bank +++CLEAR LOOP+++"); pista321->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec321=0;ui->rec2->show();return;}
if(b==1&&c3==1){ ui->label_5->setText(" Track -*- 3 Channel -*- 1 Bank +++CLEAR LOOP+++"); pista131->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec131=0;ui->rec3->show();return;} if(b==2&&c3==1){ ui->label_5->setText(" Track -*- 3 Channel -*- 2 Bank +++CLEAR LOOP+++"); rec231=0;ui->rec3->show();return;} pista231->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); if(b==3&&c3==1){ ui->label_5->setText(" Track -*- 3 Channel -*- 3
109
Bank +++CLEAR LOOP+++"); pista331->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec331=0;ui->rec3->show();return;}}
if (mo==1){ //MODO REPRODUCCION if(b==1){ ui->label_5->setText("+++CLEAR BANK 1+++"); pista111->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec111=0; ui->rec1->show(); pista121->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec121=0; ui->rec2->show(); pista131->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec131=0; ui->rec3->show();return;}
if(b==2){ ui->label_5->setText("+++CLEAR BANK 2+++"); pista211->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec211=0; ui->rec1->show(); pista221->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec221=0; ui->rec2->show(); pista231->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec231=0;ui->rec3->show();return;}
if(b==3){ ui->label_5->setText("+++CLEAR BANK 3+++"); pista311->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec311=0; ui->rec1->show();
pista321->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec321=0; ui->rec2->show();
pista331->setMedia(QUrl::fromLocalFile("/home/erick/Loops/00AudioFile.wav")); rec331=0; ui->rec3->show();return;}
}}
110
A.16 INSTALACION DE UBUNTU EN EL PC
Este proceso se llevo a cabo con diferentes guías de instalación encontradas en
internet. [41][42][43][44].
La imagen iso fue descargada desde el siguiente enlace en la pagina oficial de
Ubuntu :
• http://www.ubuntu.com/download/desktop
Luego de haber instalado la imagen lo primero que se hizo fue actualizar el
sistema, esto se hizo desde la terminal ingresando las siguientes lineas de código:
> sudo apt-get update && sudo apt-get upgrade
También se Instaló ubuntu-restricted-extras, este es un paquete que incluye todo
el software que por razones de patentes y conflictos con la legislación de ciertos
países, Canonical, la empresa madre de Ubuntu, no puede incluir por defecto en la
distribución.
Este contiene el codec multimedia Gstreamer la cual brinda brinda soporte para
Audio y vídeo en diferentes formatos, decodificadores de MP3, también se
encuentra en este paquete Flash Player, iTunes Music Store, Playing DVDs,
Adobe Shockwave, Streaming Video, Realplayer, Apple Quicktime and RealVideo
y Java.
sudo apt-get install ubuntu-restricted-extras
Para poder usar comandos como "gcc" "make" .Se instaló un software básico de
compilación debido a que algunas veces no encontramos un ejecutable .deb para
111
instalar y sí el código fuente.
sudo apt-get install build-essential
La actualización puede tardar, dependiendo de la velocidad de Internet, y del
numero de paquetes a actualizar.
En la siguiente imagen se observa una imagen del S.O Ubuntu 12.04 LTS con la
ventana de detalles del sistema.
Gráfica 8 . Imagen imagen del S.O Ubuntu 12.04 LTS con la ventana de detalles del sistema.
Fuente Propia.
112
A.17 INSTALCION DE QT CREATOR EN EL PC
Qt Creator está disponible gratuitamente y puede ser descargado de la siguiente
pagina:
• http://qt-project.org/downloads
También se puede instalar con el siguiente código:
> apt-get install qtcreator
Al instalar Qt se instalaron los siguientes paquetes extras:
imagemagick imagemagick-common libcdt4 libdrm-dev libdrm-nouveau2
libgl1-mesa-dev libglu1-mesa-dev libgraph4 libgvc5 libilmbase6 libkms1
liblqr-1-0 libmagickcore4 libmagickcore4-extra libmagickwand4 libnetpbm10
libopenexr6 libpathplan4 libpthread-stubs0 libpthread-stubs0-dev
libqt4-declarative-gestures libqt4-declarative-particles libqt4-dev
libqt4-opengl-dev libqt4-qt3support libqtwebkit-dev libx11-dev libx11-doc
libxau-dev libxcb1-dev libxdmcp-dev libxext-dev mesa-common-dev netpbm
qt4-demos qt4-designer qt4-dev-tools qt4-doc qt4-linguist-tools qt4-qmake
qt4-qmlviewer qtcreator-doc x11proto-core-dev x11proto-input-dev
x11proto-kb-dev x11proto-xext-dev xorg-sgml-doctools xtrans-dev
Estos fueron los paquetes sugeridos:
imagemagick-doc autotrace curl enscript ffmpeg gimp gnuplot grads hp2xx
html2ps libwmf-bin mplayer povray radiance texlive-base-bin transfig
ufraw-batch libmysqlclient-dev libpq-dev libsqlite3-dev unixodbc-dev
libxcb-doc qt4-doc-html cmake git kdelibs5-data subversion
113
Se instalaron los siguientes paquetes nuevos:
imagemagick imagemagick-common libcdt4 libdrm-dev libdrm-nouveau2
libgl1-mesa-dev libglu1-mesa-dev libgraph4 libgvc5 libilmbase6 libkms1
liblqr-1-0 libmagickcore4 libmagickcore4-extra libmagickwand4 libnetpbm10
libopenexr6 libpathplan4 libpthread-stubs0 libpthread-stubs0-dev
libqt4-declarative-gestures libqt4-declarative-particles libqt4-dev
libqt4-opengl-dev libqt4-qt3support libqtwebkit-dev libx11-dev libx11-doc
libxau-dev libxcb1-dev libxdmcp-dev libxext-dev mesa-common-dev netpbm
qt4-demos qt4-designer qt4-dev-tools qt4-doc qt4-linguist-tools qt4-qmake
qt4-qmlviewer qtcreator qtcreator-doc x11proto-core-dev x11proto-input-dev
x11proto-kb-dev x11proto-xext-dev xorg-sgml-doctools xtrans-dev
Luego de este proceso se instalaron las librerías que hacen posible diferentes
funciones de audio en Qt, estas pueden ser descargadas por medio del terminal
con la siguiente linea de código:
> apt-get install libqtmultimediakit1
Estas son algunas de las librerías instaladas:
libphonon4 - multimedia framework from KDE - core library
libphonon-dev - multimedia framework from KDE - development files
libqtmultimediakit1 - Qt Mobility MultimediaKit module
qtmobility-dev - APIs for mobile device functionality - development files
La gráfica siguiente muestra la interfaz gráfica del programa en una de las
ventanas principales, Qt se caracteriza por ser un entorno de desarrollo amigable.
114
Gráfica 9. Qt Creator Instalado en el PC.
Fuente Propia
A.18 Proceso de Instalación Ubuntu 12.10 en la BeagleBoard_xm
1.Insertemos la SD en el Pc: observamos en utilidades de disco con que nombre
aparece, en mi caso se llama sdc.
Abrimos el Terminal y con el siguiente comando descargamos la imagen del OS:
> wget ynezz.ibawizard.net/beagleboard/quantal/ubuntu-12.10-console-armhf-
2013-05-29.tar.xz
2. Verificamos la imagen con:
> md5sum ubuntu-12.10-console-armhf-2013-05-29.tar.xz
Debe arrojar lo siguiente:
c883668c655897ce20bf5fbdc9875f6fubuntu-12.10-console-armhf-2013-05-
29.tar.xz
115
3. Descomprimimos el ubuntu:
> tar xJf ubuntu-12.10-console-armhf-2013-05-29.tar.xz
4. Nos ubicamos en el directorio:
> cd ubuntu-12.10-console-armhf-2013-05-29
5. Para instalar la imagen ejecutamos el siguiente script:
> sudo ./setup_sdcard.sh --mmc /dev/sdb --uboot beagle_xm –swap file 512
6. Ejecutamos la clave de usuario.
Después de la instalación aparecerán 2 particiones en la SD, una contiene los
archivos de arranque (boot) y en la segunda esta el root file system (rootf) donde
el sistema operativo será instalado.
7. Insertamos la SD dentro de la Beagle: conectamos a la Beagleboard_xm el
teclado y mouse en los puertos USB,el cable de red en el puerto RJ45 y el monitor
de video usando el cable HDMI a DVI, por ultimo conectamos el adaptador de 5V
y esperamos a que pregunte usuario y contraseña.
Usuario: ubuntu
Pass: temppwd
8. Una vez ingresamos al sistema desde Minicom, configuramos el internet.
> sudo ifconfig -a
9. miramos las conexiones activas.
> sudo dhclient eth0 -v
10. Completamos la instalación con los siguientes comandos, e instalamos el
Essentials Packages.
116
> sudo apt-get update
> sudo apt-get upgrade
> sudo apt-get install xserver-xorg-video-omap3 network-manager
> sudo apt-get install build-essential libavformat-dev ffmpeg cmake
11. una vez agregados podemos instalar una interfaz gráfica ligera, el gestor de
paquetes synaptic y el automake:
> sudo apt-get install lxde
> sudo apt-get install synaptic
Al finalizar reiniciamos la Beagle y ya tendremos una interfaz gráfica para arrancar
directamente desde la Beagle sin utilizar minicom.
117
A.19 COMBINACIONES DE TERMINALES Y CARACTERES
Con las terminales hacia abajo de frente a esta, la terminal 12 del lado izquierdo y
la terminal 5 en lado derecho activan F11
CARACTER COMBINACIÓN
Q 1+6W 2+6E 3+6R 4+6I 6+6O 7+6+ 8+69 9+68 10+67 11+6
BOTON TAB 1+7BLOQ MAYUSCULA 2+7F3 3+7T 4+7U 5+7+ 6+7, 8+76 9+75 10+74 11+7DEL 13+7
A 1+8S 2+8D 3+8F 4+8J 5+8K 6+8L 7+8ENTER 8+83 9+82 10+81 11+8
< 2+9G 4+9H 5+9FLECHA ARRIBA 8+9, 9+90 10+9
118
CARACTER COMBINACIÓN
Z 1+10X 2+10C 3+10V 4+10M 5+10, 6+10. 7+10* 9+10/ 10+10BLOQ NUM 11+10SUBE VOLUMEN 12+10
F1 2+11B 4+11N 5+11FLECHA IZQUIERD 8+11- 9+11BAJA VOLUMEN 12+11
| 1+12F2 3+125 4+126 5+12¿ 6+12INICIO 8+12
1 1+132 2+133 3+134 4+137 5+138 6+139 7+13FIN 8+13
119