Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
1. TIPO DE DOCUMENTO: Trabajo de grado para optar por el título de INGENIERO DE SONIDO. 2. TÍTULO: DISEÑO DEL ACORDEÓN ITALIANO FIROTTI PARA DISPOSITIVO MÓVIL TABLET 3. AUTORES: Camilo Zambrano y Gildardo David Rubio. 4. LUGAR: Bogotá, D.C. 5. FECHA: Noviembre 2013 6. PALABRAS CLAVES: Dispositivo móvil, aplicaciones, Xcode, iOS, Audio units, motor de audio, interfaz gráfica, algoritmo, librería de audio, simulación. 7. DESCRIPCIÓN DE TRABAJO: El objetivo principal de este proyecto es el diseño de una aplicación para un dispositivo móvil iPad mediante la implementación de un algoritmo de programación, que simule el comportamiento del acordeón italiano FIROTTI a través de una interfaz gráfica y sea posible interpretarlo en tiempo real. 8. LÍNEAS DE INVESTIGACIÓN: Línea de investigación USB: Tecnologías actuales y sociedad -> Análisis y procesamiento de señales -> Acústica y audio. 9. FUENTES CONSULTADAS: App, Developers. ”XcodeUser Guide”, App, Developers. ” iOSTechnologyOverview, App, Developers.” Core Animation Programming GuideSeptiembre “, App, Developers. ” Core Audio Overview“, App, Developers. ” Audio QueueServicesProgramming, App, Developers.” Audio Unit Hosting Guide for iOSGuide“. 10. CONTENIDOS: Se diseña una aplicación para un dispositivo móvil iPad que simule el comportamiento de un acordeón Italiano Firotti. Se implementa a través de X-Code, software para el desarrollo de Aplicaciones en dispositivos móviles Apple. Se requiere lograr reproducir los archivos de audio de una librería previamente capturada en estudios de grabación, de manera instantánea, es decir, con los más bajos niveles de latencia posibles, además, relacionar este proceso con la interfaz gráfica diseñada, de tal forma que se perciba visualmente la interacción con el instrumento digital. El usuario podrá interactuar mediante una interfaz gráfica que contiene las partes más importantes del instrumento: teclas y botones, los cuales accionarán los sonidos del instrumento que fueron garbados previamente, al tener contacto “Touch” con la superficie del dispositivo. Un problema adicional es la reproducción simultánea de dos o más archivos de audio, lo que comúnmente se conoce como el número de voces. 11. METODOLOGÍA: El desarrollar una aplicación por medio del software X-Code para sistemas operativo iOS es haciendo uso de la herramienta que ofrece Core Audio; Audio Units, motor de audio especializado para realizar aplicaciones que demandan procesamiento de audio avanzado, con bajos niveles de latencia. 12. CONCLUSIONES: La respuesta de la aplicación en las simulaciones y prueba de funcionalidad cumple con los objetivos planteados, se requiere la optimización de la aplicación con el uso del multigestual del dispositivo. DISEÑO DEL ACORDEÓN ITALIANO FIROTTI PARA DISPOSITIVO MÓVIL TABLET CAMILO ZAMBRANO GILDARDO DAVID RUBIO M. UNIVERSIDAD DE SAN BUENAVENTURA FACULTAD DE INGENIERÍA PROGRAMA DE INGENIERÍA DE SONIDO BOGOTÁ, DC - 2013 DISEÑO DEL ACORDEÓN ITALIANO FIROTTI PARA DISPOSITIVO MÓVIL TABLET CAMILO ZAMBRANO GILDARDO DAVID RUBIO M. Trabajo presentado como requisito parcial para optar al título de profesional en Ingeniería de Sonido Asesor: Ingeniero Shimmy García UNIVERSIDAD DE SAN BUENAVENTURA FACULTAD DE INGENIERÍA INGENIERÍA DE SONIDO BOGOTÁ, D.C. - 2013 Índice Pág. Introducción 1. Capítulo 1. Formulación del Problema 1.1. Antecedentes……………………………………………………….……………………………………………….1 1.2. Descripción y Formulación del Problema…………….…………………………………………………2 1.3. Justificación….…………………………………………………………………………………………………..…..3 1.4. Objetivos 1.4.1. Objetivo General………………………………………………………………………………..…………..…3 1.4.2. Objetivos Específicos………………………………………………………………………..…………….…4 1.5. Alcances y Limitaciones 1.5.1. Alcances…………………………………………………………………………………………………………….4 1.5.2. Limitaciones……………………………………………………………………………………………………...4 2. Capítulo 2. Marco de Referencia 2.1. Marco Teórico 2.1.1. Dispositivos Móviles.……………………………………………………………………………………..…5 2.1.2. Phonegap………………………………….…………………………………………………………………..…5 2.1.3. Herramientas de desarrollo de Aple………………….…………………………………………..…6 2.1.3.1. X-Code……..……………………………………………………………………………………..…7 2.1.3.2. Estructura de X-Code………………………………………………………..……………….8 2.1.3.3. iOS…………………………………………………………………………………..……………….14 2.1.3.4. CocoTouch……………………………………………………………………………………….15 2.1.3.4.1. CoreAnimation…………………………………………………………………….17 2.1.3.4.2. Core Audio…………………………………………………………………..………20 2.1.3.4.2.1. Audio Queue…………………………………………………………………24 2.1.3.4.2.2. Audio Units……………………………………………………………………29 2.1.3.4.2.3. Av Fundation…………………………………………………………………35 2.1.4. Acordeón 2.1.4.1. Tipos de acordeón……………………………………………………………………………36 2.1.4.1.1. Acordeón cromático piano…………………………………………………..36 2.1.4.1.2. Acordeón cromático de botones………………………………………….37 2.1.4.1.3. Acordeón diatónico……………………………………………………………..37 2.1.5. Grabación de librería de audio 2.1.5.1. Señal de audio………………………………………………………………………………….38 2.1.5.2. Muestreo…………………………………………………………………………………………39 2.1.5.3. Técnico de Captura…………………………………………………………………………..40 2.1.5.4. Micrófono………………………………………………………………………………………..41 2.1.5.4.1. Patrón de directividad 2.1.5.4.1.1. Cardiode…………………….…………………………………………………41 2.1.5.4.1.2. Bidireccional…………………………………………………………..……..42 2.1.5.5. Ecualización 2.1.5.5.1. Ecualizador grafico……………………………………………………………...43 2.1.5.5.2. Ecualizador semiparametrico………………………………………………43 2.1.5.5.3. Ecualizador paramétrico………………………………………………………44 2.1.6. Conceptos dentro del algoritmo de desarrollo……………………………………………….44 2.2. Marco legal…………………………………………………………………………………………………………46 3. Capítulo 3. Metodología. 3.1. Líneas de Investigación………………………………………………………………………………………47 3.2. Hipótesis……………………………………………………………………………………………………………47 3.3. Variables 3.3.1. Variables Independientes……………………………………………………………..…48 3.3.2. Variables dependientes…………………………………………………………………..48 4. Capítulo 4. Desarrollo Ingenieril 4.1. Grabación librería de audio…………………………………………………………………………………………49 4.2. Algoritmo…………………………………………………………………………………………………………………….56 4.3. Desarrollo interface……………………………………………………………………………………………………..63 5. Capítulo 5. Presentación y análisis de resultados 5.1. Librería de Audio………………………………………………………………………………………………………….67 5.2. Algoritmo…………………………………………………………………………………………………………………….70 5.3. Simulador iOS………………………………………………………………………………………………………………72 5.4. Prueba de funcionalidad………………………………………………………………………………………………74 5.5. Recomendaciones………………………………………………………………………………………………………..76 6. Capítulo 6. Conclusiones…………………………………………………………………………………………………….77 7. Capítulo 7. Bibliografía.……………………………………………………………………………………………………..79 8. Capítulo 8. Anexos 8.1. Anexo A………………………………………………………………………………………………………………………83 8.2. Anexo B………………………………………………………………………………………………………………………84 Índice de Tablas Figuras y cuadros Figuras. Pag. Figura 1.1. Acordeón Alex Komartov Inc.……………………………………..…………………………………………………1 Figura 1.2. Acordeón Hohner……………………………………….…………………………………………………………………2 Figura 2.1.Dispositivos Móviles……………………………………………………………………………………………………...5 Figura 2.2. Visualización Estructura Plataforma X-Code.…………………………………………………………………9 Figura 2.3. Estructura del navegador……………………………………………………………………………………….……10 Figura 2.4.InterfaceBuilder.…………………………………………………………………………………………………………11 Figura 2.5.Storyboards.………………………………………………………………………………………………………………..11 Figura 2.6. Editor de código………………………………………………………………………………………………………….12 Figura 2.7.Área de inspección.……………………………………………………………………………………………………..12 Figura 2.8.Área de biblioteca………………………………………………………………………………………………………..13 Figura 2.9. Slider……………………………………………………………………………………………………………………..……13 Figura 2.10. IOS en dispositivos móviles……………………………………………………………………………………….15 Figura 2.11. Capas iOS………………………………………………………………………………………………………………….15 Figura 2.12. Estructura CoreAnimation.………………………………………………………………………………………..17 Figura 2.13.Modificación por medio de Propiedades……………………………………………………………………18 Figura 2.14. Capas CoreAnimation en iOS………………….…………………………………………………………………20 Figura 2.15. Arquitectura Core Audio…………………………………………………………………………………………..21 Figura 2.16.Arquitectura Core Audio en Sistema operativo IOS……………………………………………………23 Figura 2.17. Esquema Audio Queue………………………………………………………………………………………………28 Figura 2.18. Ejemplo flujo de señal Audio Units……………………………………………………………………………30 Figura 2.19. Estructura Unidad I/O……………………………………………………………………………………………….33 Figura 2.20. Ejemplo Audio Graph………………………………………………………………………………………………..34 Figura 2.21.AV Fundation……………………………………………………………………………………………………………..35 Figura 2.22. Acordeón Cromático de Piano…………………………………………………………………………………..36 Figura 2.23.Acordeón Cromático de botones……………………………………………………………………………….37 Figura 2.24. Acordeón Diatónico…………………………………………………………………………………………………..38 Figura 2.23.Acordeón Firotti..……………………………………………………………………………………………………….39 Figura 2.24. Diagrama Lengüetas Acordeón. ………………………………………………………………..………………40 Figura 2.25. Lengüetas Acordeón. ………………………………………………………………………………..………………40 Figura 2.26. Cardiode……………………………………………………………………………………………………………………42 Figura 2.27.Bidireccional………………………………………………………………………………………………………………42 Figura 2.28. Ecualizador Grafico……………………………………………………………………………………………………43 Figura2.29. Ecualizador Paramétric………………………………………………………………………………………………44 Figura 4.1. Estructura acordeón cromático…………………………………………………………………………………..50 Figura 4.2. Rengo del espectro en frecuencia de los Bajos. …………………………………………………………51 Figura 4.3. Rengo del espectro en frecuencia de las altas…………………………………………………………….52 Figura 4.4. Micrófono AT 4050……..………………………………………………………………………………………………53 Figura 4.5. Técnica MS………………….………………………………………………………………………………………………54 Figura 4.6. Plano de planta Estudio B USB.……………………………………………………………………………………55 Figura 4.7. Ubicación Paneles acústicos Live Room.……………………………………………………………..………55 Figura 4.8 Ubicación micrófono Live Room…………………………………………………………………………………..56 Figura 4.9. Diagrama de bloque flujo de señal………………………………………………………………………………56 Figura 4.10. Funcionamiento de la aplicación..……………………………………………………………………………………58 Figura 4.11.Diagrama de bloques funcionamiento del algoritmo..………………………………………………..59 Figura 4.12. Diagramas de bloques de las clases. ……………………………………………………………………………….62 Figura 4.12. Interface gráfica………..………………………………………………………………………………………………66 Tabla 5.1. Espectro Técnica de grabación M-S..……………………………………………………………………………69 Figura 5.2. Diagrama del funcionamiento en tiempo real..……………………………………………………………71 Figura 5.3.Menú Principal. …………………………………………………………………………………………………………..72 Figura 5.4.Créditos. ……………………………………………………………………………………………………………………..73 Figura 5.5. Interfaz Gráfica..………………………………………………………………………………………………………….73 Figura 5.6.Diagrama StoryBoard de la aplicación.………………………………………………………………….……..76 Figura 5.7. Menú…………………………………………………………………………………………………………………………..75 Figura 5.8. Prueba de funcionalidad……………………………………………………………………………………………..75 Figura 5.9. Créditos………………………………………………………………………………………………………………………75 Tabla 2.1 Unidades de Audio Units.………………………………………………………………………………………………31 Tabla 4.1. Analogía instrumento musical y aplicación..…………………………………………………………………49 Tabla 4.2 Java Fx y Cocoa Touch……………………………………………………………………………………………………64 Tabla 4.3.Capas Interfaz Gráfica……………………………………………………………………………………………………65 Tabla 5.1. Normalización intensidad y tiempo de las muestras…………………………………………………….68 Tabla 5.2. Descripción proceso Post Producción…………………………………………………………………………..68 Tabla 5.3. Tiempo e intensidad muestras finales………………………………………………………………………….69 Introducción. Dentro de la historia, la evolución tecnológica ha traído consigo el desarrollo de innumerables instrumentos, desde computadoras de escritorio pasando por computadoras portátiles, hasta la invención de dispositivos de mano capaces de suplir necesidades de tipo ingenieril, entre muchas otras. La implementación del internet es sin duda una necesidad diaria de la humanidad, evidenciando el avance en el campo de las telecomunicaciones, razón por la cual la gama de productos que integran diversas herramientas en un solo dispositivo hoy en día es bastante amplia. El gran auge de los dispositivos móviles ha llevado a las compañías que compiten en dicho mercado a pensar en el mañana, generando continuamente avances e innovaciones que impactan a favor del crecimiento cuantitativo de sus usuarios. Un ejemplo claro es la empresa Apple, quienes han desarrollado dispositivos móviles con una evidente innovación tecnológica en su funcionamiento, su apariencia y su interacción con el usuario. El concepto vanguardista de interacción táctil en iPod, iPhone y iPad, cuyo funcionamiento se basa en la tecnología “Touch”, ha revolucionado el uso de los móviles y ha generado un concepto de software llamado aplicaciones, dando a los desarrolladores y programadores una cabida amplia a nivel mundial . Las aplicaciones pueden ser herramientas tan básicas como complejas, desde calculadoras, juegos, aplicaciones de comunicación, redes sociales y miles mas que cubren gran cantidad de áreas investigativas como electrónica, economía, idiomas, producción musical, etcétera; desencadenado un mundo infinito de conocimiento e investigación que forja altas demandas en el mercado. En consecuencia, el permanente desarrollo de aplicaciones para estos dispositivos, representa un campo de acción apto para la creación de nuevas herramientas tecnológicas. 1 1. Formulación del problema. 1.1. Antecedentes. En la universidad de San Buenaventura, sede Bogotá, se han realizado aplicaciones para el sistema operativo Mac OSX y dispositivos Andriod, sin embargo, no existen antecedentes o referencia sobre aplicaciones para dispositivos móviles como iPad. A nivel nacional existen diferentes empresas que desarrollan aplicaciones que relacionan audio para dispositivos móviles (Android & Apple) como por ejemplo juegos. A nivel internacional, dentro del mercado para dispositivos móviles, se destacan dos desarrollos que cumplen con las características principales de este proyecto; reproduce una librería de muestras de audio en tiempo real con baja latencia y además cuenta con una interfaz gráfica que recrea la forma original del instrumento. Alex Komartov Inc.[1 ] Desarrolló un acordeón diatónico con un máximo de 3 voces musicales, compatible con tecnología iOS y Android, consta de 19 teclas y 8 botones llamado ACORDEÓN. El objetivo principal de la aplicación es brindar al usuario la experiencia de poder interpretar los sonidos del acordeón a través del contacto “Touch” con las teclas de la interface gráfica. En el mercado esta aplicación tiene un valor aproximado de 4 dólares. Figura 1.1.[1] Acordeón Alex Komartov Inc. 1 Alex, Komarov Inc.” Accordéon” Copyright 2010 Alex Komarov Inc. y Sergeyrachok disponible en http://accordion.akomarov.com/ http://accordion.akomarov.com/ 2 THE HONNER SQUEEZ BOX.[2]Es otra aplicación que desarrolla laempresa Honner, consta de cinco clases de acordeón HohnerBbebAb, Hohner ADG, Hohner GCF, Hohner FBbeb y Hohner EAD, están basados en su clásico acordeón diatónico Corona. El intérprete puede implementar un máximo de tres voces musicales, consta de 31 botones y fue desarrollada para tecnología Apple y Android, estos acordeones están diseñados como un juego y suena como el instrumento tradicional. Es muy sensible y contiene un diapasón de tres filas. También se puede utilizar con fines educativos donde el usuario puede practicar acordes, escalas y canciones. Además facilita el aprendizaje al mostrar los nombres de las notas que corresponde cada botón. Figura 1.2. [3] Acordeón Hohner. 1.2. Descripción y formulación del problema. Se quiere crear una aplicación para un dispositivo móvil iPad que simule el comportamiento de un acordeón Italiano Firotti. Se implementara a través de X-Code, software para el desarrollo de Aplicaciones en dispositivos móviles Apple. Se requiere lograr reproducir los archivos de audio de una librería previamente capturada en estudios de grabación, de manera instantánea, es decir, con los más bajos niveles de latencia posibles, además, relacionar este proceso con la interfaz 2 Apple Inc.” La HohnerSqueezeBox”, [En línea]. 2013, [10 de Mayo del 2013]. Disponible en http://www.tradlessons.com/HohnerSqueezeBox.html 3 Apple Inc.,” Hohner-GCF”. Copyright © 2013 Apple Inc, Disponible en https://itunes.apple.com/us/app/hohner-gcf- squeezebox/id418689935?mt=8 http://www.tradlessons.com/HohnerSqueezeBox.html https://itunes.apple.com/us/app/hohner-gcf-squeezebox/id418689935?mt=8 https://itunes.apple.com/us/app/hohner-gcf-squeezebox/id418689935?mt=8 3 gráfica diseñada, de tal forma que se perciba visualmente la interacción con el instrumento digital. El usuario podrá interactuar mediante una interfaz gráfica que contiene las partes más importantes del instrumento: teclas y botones, los cuales accionarán los sonidos del instrumento que fueron garbados previamente, al tener contacto “Touch” con la superficie del dispositivo. Un problema adicional es la reproducción simultánea de dos o más archivos de audio, lo que comúnmente se conoce como el número de voces. Todo esto nos lleva a formular una pregunta: ¿Cómo desarrollar una aplicación por medio de la plataforma X-code para lograr la reproducción de archivos de audio en tiempo real en un dispositivo iPad? 1.3. Justificación. Este proyecto nace al ver nuestra necesidad como estudiantes y futuros ingenieros de sonido de la Universidad de San Buenaventura, de incurrir en disciplinas como el desarrollo de software para trabajar con tecnología de vanguardia y nuevos lenguajes de programación, en este caso las aplicaciones para dispositivos móviles. Esta industria representa un campo laboral importante que puede integrar diferentes ramas de la carrera como por ejemplo: técnicas de grabación, síntesis electrónica de sonido, programación y DSP, entre otras, para generar software aplicado al audio. Al hacer una breve investigación en los proyectos de la Universidad de San Buenaventura sede Bogotá, se encontró que la gran mayoría se desarrollan para tecnología Android, por esto motivo se decidió incursionar en el desarrollo de aplicaciones para dispositivos móviles iPad con sistema operativo iOS. 1.4. Objetivos. Objetivo General Diseñar una aplicación para un dispositivo móvil iPad mediante la implementación de un algoritmo de programación, que simule el comportamiento del acordeón italiano FIROTTI a través de una interfaz gráfica y sea posible interpretarlo en tiempo real. 4 Objetivos Específicos Crear una librería de audio que contenga un banco de grabaciones del acordeón italiano Firotti, realizando capturas del instrumento dentro de un estudio de producción a través de técnicas de grabación, edición de las tomas y procesamiento dinámico como compresión y ecualización paramétricas. Crear el algoritmo de programación dentro de la plataforma X-Code compatible con el sistema operativo iOS para dispositivos móviles de la empresa Apple, en el cual se relacionen los controles con los archivos de audio finalizados y donde intervenga el motor ROM de la aplicación. Crear la interfaz gráfica de la aplicación mediante CocoaTouch o Java FX, la cual será enlazada con el algoritmo realizado en X-Code. Realizar la simulación de la aplicación en la plataforma de simulación de iOS del sistema operativo Mac OSX dentro de X-Code. Realizar la prueba de funcionalidad dentro del dispositivo móvil iPad de tercera generación. 1.5. Alcances y limitaciones. Alcances. Uno de los grandes propósitos a futuro es hacer parte del mercado dentro de AppStore, empresa desarrolladora de aplicaciones para dispositivos móviles. Generar y fomentar el campo investigativo de sistemas de DSP para dispositivos móviles, como consecuencia de la formación académica de ingenieros en la Universidad de San Buenaventura, sede Bogotá. Generar reconocimiento a la Universidad de San Buenaventura dentro del campo de diseño de software para dispositivos móviles. Limitaciones. Las tomas que se utilizan en la aplicación del acordeón, se limitan a la cantidad que se necesitan realmente para hacer viable ingenierilmente el desarrollo del proyecto. El número de botones y teclas del instrumento dependerá del tamaño de la interfaz gráfica y de la organización de los controles. 5 2. Marco de Referencia. 2.1. Marco Teórico. 2.1.1. Dispositivos Móviles. En el documento de “Dispositivos móviles” [4] de la Universidad de Oviedo define a un dispositivo móvil como cualquier aparato de pequeño tamaño, con algunas capacidades de procesamiento, con conexión permanente o intermitente a una red, con memoria limitada, diseñados específicamente para una función, pero que pueden llevar a cabo otras funciones más generales. Hoy en día podemos encontrar una multitud de dispositivos móviles, donde los teléfonos y tablets son los tipos de dispositivos más utilizados y conocidos en la actualidad que ofrecen una variedad de aplicaciones multimedia y presentan un continuo campo de evolución. Figura 2.1.Dispositivos Móviles.[5] 2.1.2. Phonegap. BeginningPhoneGap[6] define a phongap como una plataforma para desarrollar aplicaciones para dispositivos móviles, compatible con eclipse y X- Code, permitiendo crear aplicaciones para dispositivos iPhone, iPad, Androids, BlackBerries y dispositivos web´s. 4Arturo, Baz .” Dispositivos móviles “,[10 de Mayo del 2013], pág. (1-10) 5Sinónimo, “Dispositivos móviles”, disponible en http://blog.antevenio.com/2012/05/espana-lidera-tasas-apertura-emailing- dispositivos-moviles/ 6Tomas Myer, ”Beginning Phongap “,[10 de Mayo del 2013], pág.(2-17) 6 PhoneGap se basa en lenguaje web HTML y JavaScript, significa que se utiliza tecnología web implementada previamente, obteniendo acceso a muchos de las características nativas del dispositivo: brújula, cámara, la lista de contactos y mucho más. También se puede exportar el código web para varios dispositivos diferentes con simples cambios en su programación. PhoneGap resuelve dos problemas para los desarrolladores: Utiliza un lenguaje familiar como lo es el HTML y JavaScript. El código puede ser exportado en otra plataforma de forma rápida y sencilla. PhoneGap es un framework para el desarrollo de aplicaciones móviles producido por Nitobi y comprado posteriormente por Adobe Systems.1 2. Principalmente, PhoneGap permite a los programadores desarrollar aplicaciones para dispositivos móviles utilizando herramientas genéricas talescomo JavaScript, HTML5 y CSS3. Las aplicaciones resultantes son híbridas, es decir que no son realmente aplicaciones nativas al dispositivo, ya que el renderizado es realizado mediante vistas web y no con interfaces gráficas específicas a cada sistema; pero tampoco se trata de aplicaciones web. PhoneGap maneja APIs que permiten acceder a elementos como el acelerómetro, cámara, contactos en el dispositivo, red, almacenamiento, notificaciones, etc. PhoneGap además permite el desarrollo ya sea ejecutando las aplicaciones desde un navegador web, sin tener que utilizar un simulador dedicado a esta tarea y, además, brinda la posibilidad de soportar funciones sobre frameworks como SenchaTouch o JQuery Mobile. PhoneGap puede ser considerado como una distribución de Apache Cordova 3, la aplicación fue llamada primero "PhoneGap" y luego "Apache Callback", Apache Cordova es un software de código abierto. 2.1.3. Herramientas de desarrollo de Apple. La información de X-Code que se suministra a continuación fue consultada en los documentos de App Developers suministrados por AppleDevelopers[7]. 7 App, Developers. ”XcodeUser Guide”, 4 de Abril del, [10 de Mayo del 2013], pag.(12-138) 7 2.1.3.1. X-Code. Plataforma diseñada por Apple para el desarrollo de aplicaciones en sistemas operativos iOS y Mac OSX. Interfaz integrada que incluye editores para diseñar e implementar el código de la aplicación y una interfaz de usuario. X-Code puede mostrar errores en la sintaxis en tiempo real e incluso proponer soluciones. Tiene una sola ventana, denominada ventana de trabajo, que contiene la mayor parte de la información que necesita. El conjunto de herramientas X-Code incluye el IDE de X-Code, el generador de interfaz y el compilador Apple LLVM. X-Code ID: Interfaz donde el usuario y el programador puede digitar el código fuente para la depuración e incluso el código que interactúa con la interfaz gráfica de usuario. Al presentarse un error en el código que se está digitando, el software inmediatamente pondrá en alerta al programador sobre una inconsistencia dentro de su código y aparecerán iconos indicando su ubicación y el acceso a la descripción del mismo. LLVM compilador: Tecnología que integra lenguajes de programación como C, C++ y Objective-C, proporcionando versatilidad y calidad al programador para el desarrollo del algoritmo. A medida que se digita o implementa el código, Apple LLVM identifica posibles errores y una posible solución. Simulador de iOS: Permite simular el funcionamiento de la aplicación dentro de cualquier dispositivo iOS para poder visualizar el comportamiento. X-Code 4 es la última versión de X-Code. Ofrece una nueva interfaz con herramientas rediseñadas con el objetivo de facilitar el desarrollo de aplicaciones para iOS y Mac OSX. Además de una nueva interfaz visual, Apple implementa mejoras notables dentro de sus componentes principales, permitiendo una mayor flexibilidad para programar. Dentro de las mejoras de X-Code 4 se destaca la optimización de: Apple LLVM compilador: Compilador que trabaja a partir de un conjunto de librerías optimizadas. Mejoras en su sintaxis, resaltado de funciones, opciones de completar la digitación, métodos y clases, entre otras, hacen parte de las nuevas características del compilador. 8 Nuevo Depurador: Introduce LLDB, nuevo motor de depuración desarrollado por Apple. Fue diseñado para consumir menos memoria y mayor rapidez en su rendimiento. Cuando una aplicación se está ejecutando, el navegador podrá mostrar un seguimiento paso a paso de lo que pasa en la depuración del programa. Instrumentos de Xcode 4: Interfaz optimizada que facilita la creación de una aplicación. La implementación de OpenGl mejora el rendimiento gráfico en cuanto a la asignación de memoria; existen opciones de automanejo ARC (Automatic Reference Counting) y ya no se requiere liberar la memoria. 2.1.3.2. Estructura de la plataforma X-Code. Según X-codeUserGuide[11]un proyecto de X-Code tiene una gran cantidad de información acerca de qué archivos constituyen el proyecto y la forma en que se van a utilizar en la complementación de la aplicación, como por ejemplo: Archivos de código fuente. Recursos como íconos, imágenes o archivos de sonido. Instrucciones al compilador para determinar sucesivamente lo que la aplicación va necesitando a medida de su depuración. La interfaz de X-Code está conformada por: Izquierda: está el panel navegador. Centro: se encuentra el editor. Derecha: está el panel de utilidades. Parte inferior: se encuentra el panel depurador. La ventana de X-Code puede variar dependiendo del gusto del programador. En la figura 2.2 se puede observar un ejemplo de la estructura de la plataforma extraída del documento X-CodeUserGuide[8]. 8 App, Developers. ”XcodeUser Guide”, 4 de Abril del, [10 de Mayo del 2013], pag.(12) 9 Figura 2.2. Visualización Estructura Plataforma X-Code.[9] En el navegador de proyectos el usuario puede visualizar proyectos, grupos, carpetas y archivos: El proyecto: contiene los grupos, carpetas y archivos del proyecto. Un grupo: ícono de un proyecto. Recopila archivos del proyecto pero no representa una carpeta en el disco (capeta amarilla figura 2.3). Una carpeta: ícono de un proyecto. El contenido de la carpeta refleja el contenido de la carpeta en el disco (carpeta azul figura 2.3). Un Archivo: referencia a un archivo. En la figura 2.3 extraída del documento de X-CodeUserGuide [9] se puede observar la distribución del navegador. 9 App, Developers. ”XcodeUser Guide”, 4 de Abril del, [10 de Mayo del 2013], pag.(19) 10 Figura 2.3. Estructura del navegador.[10] El navegador tiene una ventana en la parte superior que ofrece las siguientes opciones: Navegador del Proyecto. Jerarquía de clases. Navegador de búsqueda. Navegador de errores Navegador de BreakPoints. El desarrollo de aplicaciones en X-Code se implementa a través de dos ventanas: una donde se realiza la digitalización del código y otra donde se gestiona la interfaz gráfica. La figura 2.4 extraída del documento X-CodeUserGhide[10] ilustra la Interface Builde, ventana de edición que se utiliza para el diseño la interfaz gráfica de usuario; contiene una biblioteca de controles con características únicas para la interfaz de usuario. Se integra completamente en el IDE de X-Code por lo que se puede escribir y editar código ligado directamente a la interfaz de usuario. Los archivos que componen la interfaz gráfica son llamados archivos nib. Para aplicaciones de iOS se puede utilizar los storyboards en lugar de archivos nib, como se muestra en la figura 2.5. 10 App, Developers. ”XcodeUser Guide”, 4 de Abril del, [10 de Mayo del 2013], pag.(34) 11 Figura 2.4.Interface Builder.[11] En aplicaciones iOS se utiliza Storyboards (figura 2.5[11]), que consiste en escenas o vistas que conforman la interfaz de usuario. El programador puede diseñar cada camino posible gráficamente a través de su aplicación, lo que reduce la cantidad de código. Figura 2.5.Storyboards.[12] La figura 2.6 extraída del documento X-CodeUserGhide[12] ilustra el editor de código, ventana por la cual el programador puede implementar el código fuente. Es flexible, permite establecer puntos de depuración, autocorrección de código y diferentes formas de configurar su visual atribuyéndoles los colores que el usuario desee.11 App, Developers. ”XcodeUser Guide”, 4 de Abril del, [10 de Mayo del 2013], pag.(92) 12 App, Developers. ”XcodeUser Guide”, 4 de Abril del, [10 de Mayo del 2013], pag.(35) 12 Figura 2.6. Editor de código.[13] De acuerdo a la figura 2.2, UtilityAre está compuesta por dos áreas: Área de inspección: como se observa en la figura 2.7 [13], en esta zona se puede visualizar las propiedades de los contenidos que se estén ejecutando en el editor principal. Figura 2.7.Área de inspección.[14] Área de biblioteca: como lo muestra la figura 2.8.[14], contiene plantillas de archivos o controles de interfaz de usuario que se pueden utilizar en el desarrollo de la aplicación; por cada plantilla que se utilice se adhieren fragmentos de código al código que se esté implementando. 13 App, Developers. ”XcodeUser Guide”, 4 de Abril del, [10 de Mayo del 2013], pag.(47) 14 App, Developers. ”XcodeUser Guide”, 4 de Abril del, [10 de Mayo del 2013], pag.(48) 13 Figura 2.8.Área de biblioteca.[15] Tipos de botón: X-Code ofrece una librería nativa de botones para implementar la interfaz gráfica dentro de la plataforma X-Code. Cada botón tiene características únicas e importantes. UISlide: un control deslizante (UISlider) representa un valor continuamente ajustable entre un mínimo y un máximo. A medida que el usuario realice cambios de posición, el regulador informa un valor modificado de eventos de control. Figura 2.9. Slider.[16] Tipos de ejecución de botón: existen diferentes maneras de ejecución para los botones de la librería de x- que componen la interfaz gráfica de usuario. A continuación se explica los estados que se implementaron en las imágenes .png (teclas-botones) para generar la sensación Tocuh que se requiere para el desarrollo de la aplicación: touchUpinside: el evento touch se ejecuta al presionar el botón. touchDown: el evento touch se ejecuta después de haber presionado el botón. 15 App, Developers. ”XcodeUser Guide”, 4 de Abril del, [10 de Mayo del 2013], pag.(50) 16 App, Developers. ”XcodeUser Guide”, 4 de Abril del, [10 de Mayo del 2013], pag.(54) 14 TouchEvent: representa la ejecución de un evento cuando hay un contacto entre tacto y pantalla touch del dispositivo móvil. Cada toque es descrito por la posición, el tamaño y la forma, la cantidad de presión y el elemento de destino. Image View: en español “Vista de objetos de imagen”, proporciona un contenedor basado en vistas para mostrar ya sea una sola imagen o la animación de una serie de imágenes. Para la animación de las imágenes, la clase UIImageView proporciona controles para ajustar la duración y la frecuencia de la animación. También puede iniciar y detener la animación libremente. Imágenes PNG: es un formato gráfico compatible con la plataforma X- Code basado en un algoritmo de compresión sin pérdida de bitmaps. Permite almacenar imágenes con una mayor profundidad de contraste y otros importantes datos. ViewController: controlador de vistas en una aplicación. Una aplicación puede contener varias vistas, asociadas a diferentes clases, mediante la implementación de un storyboard. Action: una “action” o acción es un mensaje emitido por una instancia de una subclaseUIControl. Las subclases UIControlson todos los objetos de interfaz por los cuales el usuario puede interactuar directamente, como un botón, un interruptor, una corredera. (UISlidero un campo de texto) 2.1.3.3. iOS. iOS es el sistema operativo que se ejecuta en dispositivo iPhone, iPod touch, y iPad. Gestiona el hardware del dispositivo y proporciona las tecnologías necesarias para implementar las aplicaciones; incluye varias aplicaciones nativas de Apple como teléfono y safari. iOS cuenta con la denominada biblioteca del desarrollador, un recurso útil en el desarrollo de aplicaciones pues contiene guías de programación, código de ejemplo, observaciones de las versiones de iOS entre un grupo bastante amplio de recursos que ofrecen consejos y orientación al momento de crear sus aplicaciones. Se accede a la biblioteca para desarrolladores desde el sitio web para desarrolladores o desde Xcode. 15 Figura 2.10. IOS en dispositivos móviles.[ 17] 2.1.3.4. CocoaTouch. De acuerdo al documento “iOSTechnologyOverview”[18],la capa de CocoaTouch contiene los marcos necesarios para la creación de aplicaciones para iOS. Se define la infraestructura básica de las aplicaciones, como la entrada basada en el contacto, oficios multitarea y muchos servicios del sistema de alto nivel. iOS actúa como intermediario entre el hardware y las aplicaciones que aparecen en la pantalla del dispositivo. La implementación de las tecnologías iOS puede ser vista como un conjunto de capas como lo muestra la Figura 2.11[19]extraída del documento iOS Technology Owerview. Las capas más bajas contienen los servicios y las tecnologías fundamentales en los que se basan todas las aplicaciones; las capas de nivel superior (CocoaTouch) contienen servicios y tecnologías más sofisticadas. Figura 2.11. Capas iOS.[19] 17 Apple Inc.,”Sin titulo”. Copyright © 2013 Apple Inc, disponible en https://developer.apple.com/technologies/ios/ 18 App, Developers. ” iOSTechnologyOverview”,Septiembre 9 del 2012, [10 de Mayo del 2013], pag.(7-11) 19 App, Developers. ” iOSTechnologyOverview”,Septiembre 9 del 2012, [10 de Mayo del 2013], pag.(8) https://developer.apple.com/technologies/ios/ 16 Frameworks. Un framework[20] es un directorio que contiene una biblioteca dinámica compartida de los recursos necesarios para apoyar bibliotecas tales como archivos de cabecera, imágenes, aplicaciones auxiliares, etcétera. Para utilizar un Framework, se debe vincular dentro del proyecto o aplicación que se está desarrollando, tal y como se haría con cualquier otra biblioteca compartida. Al hacer esto es posible tener acceso a las características del mismo y a sus herramientas de desarrollo, permitiendo saber dónde se encuentran los archivos de cabecera y otros recursos. La capa de CocoaTouch contiene los Frameworks fundamentales para la creación de aplicaciones de iOS. Esta capa define la infraestructura básica de la aplicación y el apoyo a tecnologías importantes como la multitarea, la entrada basada en el contacto (Touch) y muchos servicios del sistema de alto nivel. FrameworksUIKIT. Un Framework contiene la infraestructura fundamental para el desarrollo de interfaz gráficas en aplicaciones con sistema operativo iOS. Todas las aplicaciones que tienen sistema operativo iOS utiliza este marco para poner en práctica las siguientes características: Gestión de aplicaciones. Gestión de la interfaz de usuario, incluyendo soporte para guiones gráficos y archivos nib. Gráficos y ventanas, incluyendo soporte para múltiples pantallas Apoyo a la personalización de la apariencia de los controles UIKit. Apoyo a la implementación de controladores de vista que incorporan contenido de otros controladores de vista (iOS 5 más tarde) Soporte para el manejo táctil y eventos basados en movimiento Los objetos que representan los puntos de vista del sistema estándar y controles Soporte para el texto y el contenido web Soporte para la animación de contenido de interfaz de usuario Integración con otras aplicaciones en el sistema a través de esquemas de URL e interfaces marco 20 App, Developers. ” iOSTechnologyOverview”,Septiembre 9 del 2012, [10 de Mayo del 2013], pag.(17) 17 El soporte de accesibilidadpara usuarios con discapacidades Además de proporcionar el código fundamental para la construcción de su aplicación, UIKit también incorpora soporte para algunas de las características específicas del dispositivo como: Acelerómetro. Cámara. Biblioteca de imágenes. Estado de batería. Sensor de proximidad. 2.1.3.4.1. CoreAnimation. De acuerdo al documento de CoreAnimation[21], es Infraestructura para la composición y la manipulación del contenido gráfico de Apple que funciona por medio de capas. En una gran parte de las Aplicaciones, las capas son utilizadas para administrar el contenido de la vista, también puede crear capas independientes en función de las necesidades requeridas. La Mayoría de las animaciones creadas en Core Animation requieren modificación de las propiedades de la capa. Se pueden manipular aspectos de la imagen como puntos de vista, posición en pantalla, opacidad y transformación entre otros aspectos. Figura 2.12. Estructura Core Animation. [22] La figura 2.12[22] extraída del documento “Core Animation” ilustra la estructura de Core Animation. 21 App, Developers.” Core Animation Programming GuideSeptiembre “.Enero 28 del 2013 [10 de Mayo del 2013], pag(12-22) 22 App, Developers. ” CoreAnimationProgrammingGuideSeptiembre “. Enero 28 del 2013 [10 de Mayo del 2013], pag(9) 18 Las capas proveen la base para el dibujo y animaciones en superficies 2D organizadas en un espacio 3D; en una aplicación se pueden tener diferentes tipos de capas orientadas a un desempeño. Las capas son almacenadas en la memoria caché en un mapa de bits, cuando cambia una propiedad de la capa, lo único que está haciendo es cambiar la información de estado asociada al objeto capa. La geometría visual hace referencia al posicionamiento de los gráficos que se hace a través de coordenadas, se puede tratar una imagen realizando diferentes tipos de modificaciones en sus propiedades como lo ilustra la figura 2.13. Figura 2.13Modificación por medio de Propiedades. [23] En el transcurso de la animación, Core Animation procesa el dibujo cuadro a cuadro; todo lo que hay que hacer es indicar los puntos de inicio y fin de la animación. También se puede especificar la información de temporización y parámetros de animación según sea necesario. Las capas pueden usar dos tipos de coordenadas: (1) una basada en puntos y (2) otra basada en sistemas de coordenadas de unidad con el fin de especificar la ubicación del contenido en el espacio de animación. 23 App, Developers. ” CoreAnimationProgrammingGuideSeptiembre “. Enero 28 del 2013 [10 de Mayo del 2013], pag(14-22) 19 Las capas son objetos de datos que gestionan los contenidos proporcionados por su aplicación. El contenido de una capa se compone por un mapa de bits que contiene los datos visuales que se desean mostrar. Las capas se pueden eliminar modificar y crear, para estas últimas se debe proporcionar el contenido de la animación. Core Animation contiene tres conjuntos de objetos con características únicas que hacen que el contenido de su aplicación aparezca en pantalla: Árbol de capas: objetos que almacenan los atributos de las animaciones. Siempre que cambia la propiedad de una capa, se utiliza uno de estos objetos. Los objetos en el árbol: contienen los valores para el funcionamiento de las animaciones. Los objetos en el árbol de render: Fundamentos básicos de animación, capa de árboles que reflejan diferentes aspectos del estado de animación de cada conjunto de objetos de la capa; está organizado en una estructura jerárquica como los puntos de vista de su aplicación. La figura 2.14[24] muestra el desglose de las capas que se encuentran en una simple aplicación iOS. 24 App, Developers. ” CoreAnimationProgrammingGuideSeptiembre “. Enero 28 del 2013 [10 de Mayo del 2013], pag(22) 20 Figura 2.14. Capas CoreAnimation en iOS. [24] 2.1.3.4.2. Core Audio. Core Audio [25] es una estructura que permite el proceso de audio digital en iOS y Mac OS X, a través de un conjunto de herramientas diseñadas para ser manipuladas y satisfacer las necesidades de audio en las aplicaciones para dispositivos Apple. En la figura2.15[26] se muestran los tres niveles de Core audio por medio de un diagrama extraído del documento de Core Audio: High level contiene las estructuras básicas. Funciones esenciales como reproducción de audio son muy comunes para aplicaciones que no demanden un procesamiento de audio de alto nivel; mid- level estructura media, contiene unidades de conversores de formatos, las cuales son común verlas en aplicaciones y por último, High level, estructura de más alto nivel que contiene herramientas para aplicaciones que demanden un procesamiento de audio de alto nivel, por ejemplo sintetizadores que modifiquen su audio en tiempo real por medio de filtros. 25 App, Developers. ” Core Audio Overview“.Noviembre 11 del 2013[10 de Mayo del 2013], pag(7-60) 26 App, Developers. ” Core Audio Overview“.Noviembre 11 del 2013 [10 de Mayo del 2013], pag(10) 21 Figura 2.15. Arquitectura Core Audio.[26] LowLevel: Hace referencia a las estructuras más bajas u ocultas de Core Audio, se modifican solo cuando el programador esté desarrollando una aplicación que requiera de un procesamiento de audio de alto nivel en tiempo real. Dentro del sistema operativo iOS se permite la reproducción de audio en tiempo real a través de una interfaz. Kit de I/O: Estructuras para entrada y salida de audio que permiten la interconexión con otras unidades, generando el flujo de señal requerido para el desarrollo de la aplicación. (Audio HAL): Provee una interfaz independiente del dispositivo. Core MIDI: Permite trabajar y compatibilidad con corrientes y dispositivos MIDI. Host time services: Proporciona acceso al reloj de la computadora para sincronización entre dispositivos. Mid-Level:la mayoría de estructuras pertenecientes a este nivel son compatibles con el sistema operativo iOS: Audio ConverterServices: Estructura que permite la conversión de formato de audio dentro de las aplicaciones. 22 Audio File Services: Estructura que ejecuta la lectura y escritura de archivos de audio desde una carpeta almacenada en el disco. Audio UnitServices & Audio processgraphservices: Procesamiento digital de las aplicaciones en forma de pluguins, como ecualizadores y mezcladores. Audio File StreamServices: Permite el diseño de aplicaciones que puedan analizar flujos, por ejemplo reproducción de archivos enviados a través de una conexión de red. Core Audio ServicesClock: Permite la sincronización de audio y MIDI, así como conversiones de base de tiempo. Audio ServicesFormat: Manejo de los formatos de datos de audio en la aplicación. High Level: Estructuras que contiene servicios que permiten grabar, reproducir, pausar y sincronizar audio. AVAudioPlayer: Reuniendo las características de los servicios de Audio File y Audio Converter se proporciona una interfaz unificada (en Objective-C) que permite leer y escribir archivos de sonido, reproducción de bucles de audio en aplicaciones para iOS, reconociendo cualquier tipo de formato de audio compatible con el sistema operativo iOS. OpenAL: Código abierto para posicionar audio. Frameworks Existen un sinfín de frameworks para Core audio los cuales se podrán consultar en su totalidad en Apple Developers; sin embargo, a continuación se destacan los que utilizaron para el desarrollode la aplicación: AudioToolbox(AudioToolbox.framework):Proporciona una interfaz para el nivel mediano y alto. En iOS se permite manipular el comportamiento de audio dentro de una aplicación. Fundación AV (AVFoundation.framework): Disponible en iOS, contiene la clase AVAudioPlayer para la reproducción 23 de audio de una manera ágil y sencilla, implementada en lenguaje Objective-C. Algunas características de Core Audio: Utilizado para aplicaciones que requieran mayor rendimiento y baja latencia. Aplicaciones de alto nivel que involucren procesos como grabación, reproducción, pausa y sincronizar audio. Utiliza servicios de archivo de audio, conversores y otros servicios, para leer, escribir desde el disco y también realizar transformaciones de formato sobre el archivo. Utiliza servicios de la unidad de audio y servicios de procesamiento gráfico de audio para alojar las unidades de audio en la aplicación. MusicServices, secuenciador para el control del juego basado en MIDI y datos de música. Core Audio Services reloj para la sincronización entre audio-MIDI, también permite el manejo del formato de hora. Figura 2.16.Arquitectura Core Audio en Sistema operativo IOS.[27] 27 App, Developers. ” Core Audio Overview“.Noviembre 11 del 2013 [10 de Mayo del 2013], pag(11) 24 Como se observa en la figura 2.16. [27], para el sistema operativo iOS, Core Audio implementa dos motores de audio: Audio queue: Motor de audio cuyo funcionamiento se basa en la reutilización de Buffer's de audio. Se recomienda definir tres buffers y se requiere de una función de llamada para ser procesada por el iPhone o iPad. Audio units: Su funcionamiento se basa en unidades de audio como mixer, EQ, unidades de entrada y salida. Permiten procesar la señal a la entrada o salida de cada unidad de audio. En iOS, Audio Units utiliza “Audio ProsessingGraph”, un módulo que contiene las unidades Audio Units que se implementen para el desarrollo del proyecto que se esté diseñando. Dos motores permiten el procesamiento digital de audio para cualquier aplicación que requiera audio dentro de la plataforma iOS. A pesar de ser distintos, poseen características en común: Trabajan con audio digital y permite DSP. Dentro de los atributos de las estructuras ambos motores requieren información del audio como formato, números de canales, frecuencia de muestreo, bits. Al ser motores que realizan procesamiento digital de audio, se requiere de un Buffer de audio. Se necesita de una función de llamada para el Buffer. 2.1.3.4.2.1. Audio Queue. Según el documento de Audio Queue[28] es una estructura para la grabación y reproducción de audio utilizada en Mac OS X y iOS. Consiste en una pila de buffers que se está cargando y descargando continuamente. Los buffers son el medio de transporte para la reproducción de la señal de audio cuando la llamada se ejecuta por una acción establecida por el programador. Audio Queue interactúa con decodificadores para la interacción del código-audio. 28 App, Developers. ” Audio QueueServicesProgramming Guide “.Julio 7 del 2009,[10 de Mayo del 2013], pag (41-61) 25 ¿Por qué utilizar los Audio Queue? Estructura básica que permite el procesamiento directo de audio. Fáciles de manejar. Programación sencilla que permite la reproducción sincronizada de audio. Audio Queue cuenta con deficiencias y limitaciones en el procesamiento que contribuyen en que no sea el motor de audio viable para desarrollar e implementar esta aplicación; las insuficiencias que presenta están ligadas al comportamiento en tiempo real que se quiere lograr, ya que: Presenta mucha latencia. No es versátil como las unidades de audio “Audio Units”. Solo permite la reproducción de un sonido. En el proyecto, limitaría el número de voces instantáneas y sería un impedimento para la interpretación de acordes. Por estas razones el proyecto no se desarrolló utilizando este motor. Para poder programar con facilidad se deben tener conceptos en temas de lenguaje de programación C y X-Code. El almacenamiento del archivo de audio que se desee reproducir puede ser desde un disco, una memoria asignada dentro del programa o cualquier otro medio posible. De acuerdo al documento de Core audio la estructura básica para la reproducción de audio en audio Queue, se describe de manera breve a continuación: Definir una estructura personalizada: Se definen atributos como: Número de cola de buffers de audio que se van a utilizar. (Se recomienda que sean tres) Tamaño en bytes de cada cola de búfer de audio. 26 Formato de audio. Ruta del audio. Función devolución de llamada para el buffer: La función de devolución de llamada se encarga del flujo del audio para la reproducción. Esta función hace tres cosas principales: Lee una cantidad determinada de datos de una señal de audio y los enlista en la cola de búfer de audio para su reproducción, este proceso se repite hasta finalizar la señal de audio. Ordena la secuencia del buffer en la cola que se va a utilizar. Determina cuándo finaliza el archivo de audio para detener la cola de audio. Determinar tamaño de los buffers de colas de audio: Deducir el número de paquetes a leer por cada función de devolución de llamada. Establecer un límite inferior en el tamaño de buffer para evitarle sobre procesamiento al disco. El tamaño depende de factores como formato del audio que está leyendo. Abrir un archivo de audio para la reproducción: Este proceso consta de tres pasos: Obtener un objeto CFURL que representa el archivo de audio que desea reproducir. Abrir el archivo. Obtener formato de datos de audio del archivo. Creación de una cola de reproducción de audio: Estructura que configura la cola de audio para su reproducción: Crea una nueva cola de reproducción de audio. Formato de la cola de audio que se va a crear. Función de devolución de llamada para usarla con la cola de audio de reproducción. 27 Estructura de datos personalizada de la cola de audio para la reproducción de audio. Ajuste de tamaños para una cola de reproducción de audio: A continuación se establecen algunas características de la cola de reproducción de audio. Ajuste de tamaño de búfer y la cantidad de paquetes para leer: Determina el tamaño en bytes de cada cola de búfer de audio, con lo cual se puede determinar el número de paquetes a leer por cada función de llamada para la reproducción del audio. La asignación de memoria para una matriz de paquetes: Se asigna una memoria dentro de una matriz que contenga una descripción del paquete. Asignar buffers y audio: La cola de audio se asigna a un buffers, en este proceso: Se carga el índice de paquetes a 0 para garantizar que en el momento que se ejecute la función de llamada, la carga empiece desde el principio. Se define el número de buffers (se recomiendan 3) Se crea un nuevo búfer. La cola de audio se asigna al búfer. Se determina el tamaño en bytes para el nuevo búfer. A la salida, se agrega el nuevo búfer a la matriz dentro de la estructura personalizada. Ganancia de la reproducción de una cola de Audio: Se puede establecer una ganancia a través de los siguientes mecanismos: Se determina el rango de ganancia entre 0 silencio y 1 por unidad de ganancia. Dentro del ID se puede configurar un atributo que modifica la variable volumen a través de la función “kAudioQueueParam_Volume”que permite establecer la ganancia de una cola de audio.28 Inicio y ejecución de una cola de Audio: Para indicar que la cola se está ejecutando se establece una bandera en la estructura personalizada. La función “AudioQueueStart” ejecuta la cola de audio, utiliza NULL para indicar que la cola de audio debe empezar a ejecutarse inmediatamente si necesidad de una instrucción. “mIsRunning” en la estructura personalizada y sirve para comprobar si la cola de audio se ha detenido. La función “CFRunLoopRunInMode” ejecuta el bucle de ejecución. Limpiar: Cuando haya terminado la reproducción de un archivo, se debe liberar la memoria de la cola de audio de la siguiente manera: La función “AudioQueueDispose” dispone de todos los atributos de la cola de audio. Se referencia la cola de audio que desea eliminar. En el archivo de cabecera “AudioFile.h.” se declara la función “AudioFileClose” encargada del cierre del archivo de audio que se reproduce. Figura 2.17. Esquema Audio Queue.[29] Para información más detallada sobre la estructura y código de Audio Queue puede consultarse el documento PDF acerca de Cora Audio. 29 App, Developers. ” Audio QueueServicesProgramming Guide “.Julio 7 del 2009,[10 de Mayo del 2013], pag (11) 29 2.1.3.4.2.2. Audio Units. De acuerdo al documento de Audio Units[30], son unidades especializadas en audio, utilizadas para el procesamiento de audio en aplicaciones para iOS y Mac OS X. Permiten procesar una señal por diferentes dispositivos; también se puede modificar, crear, reproducir o grabar audio dependiendo de la aplicación. En Mac OS X se pueden crear las unidades de audio. En iOS el programador se tiene que sujetar a unas unidades o pluguins prestablecidos que simulan el comportamiento de mezcladores, ecualizadores y conversores de formato, permitiendo la manipulación del audio en tiempo real. Algunas unidades que componen este motor son para procesamiento de audio de alto nivel. Pertenecen a la capa baja en la estructura de Core Audio (ver numeral 4.3.2.) y se implementan dentro de un “Audio ProcessingGraph” como lo muestra el ejemplo de la figura extraída del documento. Porque usar Audio Units Presenta menor latencia. El procesamiento de la señal se apoya en EQ, mezcladora y diferentes unidades. Permite la manipulación en el tiempo real. Control general e individual del flujo de datos de audio. Como el proyecto implica la reproducción de audio en tiempo real con la menor cantidad de latencia posible, Audio Units es la solución más viable para implementar el código y satisfacer los objetivos propuestos. Estos son los pasos básicos para inicializar la estructura Audio units: 30 App, Developers.” Audio Unit Hosting Guide for iOSGuide“. Spetiembre 1 del 2009,[10 de Mayo del 2013], pag (6-52) 30 Definirla unidad de audio que desea utilizar. Instanciar la unidad de audio. Configurar la unidad de audio de acuerdo a la necesidad. Inicializar la unidad de audio. Iniciar el flujo de audio. Control de la unidad de audio. Cuando haya terminado, desasignar la unidad de audio. Cada unidad de audio tiene características únicas como paneo, mezcla, control de ganancia o medición del nivel de audio. Además,cada unidad de audio tiene características específicas y requerimientos necesarios para el correcto comportamiento. Para generar flujo de señal seentre las unidades, se debe tener un conjunto de conceptos fundamentales, como formatos de transmisión de datos de audio, llamadas de retorno y la arquitectura de la unidad de audio que se desee implementar. Figura 2.18. Ejemplo flujo de señal Audio Units. [31] En el ejemplo de la figura 2.18[31], un audio ingresa a las unidades de EQ que están contenidas dentro de “Audio ProcessingGraph”, objeto que contiene las unidades de Audio Units. Al pasar por los EQ, ingresan al mezclador donde posteriormente pasa a la unidad remota de I/O completando 31 App, Developers.” Audio Unit Hosting Guide for iOSGuide“. Septiembre 1 del 2009,[10 de Mayo del 2013], pag (6) 31 así el ciclo de reproducción del sonido por medio del dispositivo iPhone. Audio Units proporciona para iOS siete unidades de audio clasificadas en cuatro categorías, como se muestra la tabla 2.1. Unidad Audio Units Efecto iPod Eq Mix 3D Mix- Multi-Channel Mix I/O Remote I/O- Voice Processing I/O Generic Output Conversión Formato Conversor de Formato Tabla 2.1 Unidades de Audio Units. A continuación se explica cada unidad, profundizando sobre las unidades que se utilizan para el desarrollo de la aplicación del acordeón Firotti. Unidad de efectos. iOS ofrece una unidad de efectos, el Ecualizador del iPod. Este sistema de audio ofrece un conjunto de curvas de ecualización preestablecidas. Unidades mezcladoras. iOS proporciona dos unidades mezcladoras: La unidad mezcladora 3D(3D Mix): Sirve para modelar o trabajar con audio 3D en aplicaciones para Apple. Si se desea información detallada sobre la unidad mezcladora 3D, lo mas recomendable es buscar códigos fuente o “Sample Code” en la web. En este documento no se profundiza sobre esta unidad. La unidad de mezclador multicanal (MultiChannelMix): Permite manejar el flujo de la señal entrante (mono o estéreo), contra una señal de salida (estéreo). Se puede activar cada entrada dentro o fuera, establecer su nivel de entrada y establecer su posición de panorama estéreo. 32 I / O Unidades. iOS cuenta con tres unidades de I/O. La unidad remota de I/O: Es la más utilizada, se conecta a la entrada y salida de hardware de audio brindando baja latencia al acceder a las muestras de audio. Se considera la conversión de formatos de audio y el formato de audio de la aplicación; para solucionar esto se adiciona una unidad de conversión de formato. La unidad de I/O por procesamiento por voz: Procesamiento que extiende la unidad remota de I/O mediante la adición de cancelación de eco acústico para su uso en una aplicación de voz-chat. También proporciona la corrección automática de ganancia, ajuste de la calidad de procesamiento de voz y el silenciado. La unidad de salida genérica: Normalmente se utiliza la unidad de salida genérica para el procesamiento de audio en línea. Las unidades de I/O son muy comunes en las aplicaciones de audio. Estas unidades tienen dos características esenciales como lo muestra la figura 2.19[32]extraída del libro de Cora Audio: 32 App, Developers.” Audio Unit Hosting Guide for iOSGuide“. Septiembre 1 del 2009,[10 de Mayo del 2013], pag (19) 33 Figura 2.19. Estructura Unidad I/O.[32] Compuestas por dos elementos que parten de una unidad de audio, dentro de la implementación del código se tratan independientes. Elemento 1: Se conectaron el hardware de entrada de audio en un dispositivo, representado en la figura por un micrófono. En este proyecto es una función “Callback” encargada de la llamada de los audios que han sido almacenados en memoria. Elemento 0: Se conecta el hardware de salida de audio en un dispositivo, representado en la figura por el altavoz. Así que asumimos que: El elemento de entrada es el elemento 1 ->"I" El elemento de salida es el elemento 0 ->"O” Cabe anotar que esta estructura es flexible al usuario, es decir, no necesariamente debe entrar o salir un micrófono por un sistema estéreo. Las unidades I/O son las encargadas de iniciar y detener el flujo de audio en una aplicaciónpara Audio Units. UnitConverter Formato. Ofrece una unidad de conversión de formato, que se utiliza normalmente de manera indirecta a través de una unidad de I/O. 34 Audio ProcessingGraph. Audio ProcessingGraph denominado también, AUGraph, se utiliza para la construcción y gestión de una cadena de procesamiento de audio entre unidades Audio Units. Debido a su flexibilidad, permite crear múltiples soluciones de procesamiento de audio. AUGraph utiliza nodos como puntos de unión con sus unidades de audio. Estos puntos de unión son denominados AUNode. También se puede utilizar un AUNode para representar un subGraph de procesamiento de audio, en este caso, la unidad de I/O en la parte final del subGraph debe conectarse a una salida genérica. A grandes rasgos, la construcción de un gráfico de procesamiento de audio implica tres tareas: Adición de nodos de un gráfico. Configurar directamente las unidades de audio representados por los nodos. Interconectar los nodos. Figura 2.20. Ejemplo Audio Graph. En la figura 2.20. se observa cómo por medio de una función de llamada se tiene acceso a un archivo de audio que ingresa a un módulo de I/O, pasa por un mezclador dentro de “Audio ProsessingGraph” y finalmente ingresa a otra unidad remota que permite por medio de su salida, ser amplificada por un sistema de transducción. 35 2.1.3.4.2.3. AV Fundación. El documento AV FoundationProgrammingGuide[33]es uno de los varios marcos que se pueden utilizar para reproducir y crear medios audiovisuales basados en el tiempo real. Proporciona una interfaz Objective-C que se utiliza para trabajar en un nivel de detalle con los datos audiovisuales basados en el tiempo real. El usuario debe normalmente utilizar el más alto nivel disponible que le permite realizar las tareas que desee. En iOS: Si se desea reproducir películas, se puede utilizar el Marco Media Player. Para grabar vídeo cuando sólo se necesita un mínimo control sobre el formato, se utiliza el marco UIKit(UIImagePickerController). Figura 2.21.AV Fundation.[34] 2.1.4. Acordeón. Según el sitio web [35] consultado, el acordeón es un instrumento musical perteneciente a la familia de los instrumentos de viento. Su estructura está conformada por un fuelle que está cerrado en sus extremos por una caja armónica de madera. La parte de la mano derecha tiene un diapasón con un arreglo de teclas, que pueden ser como las de un piano o de forma redonda, 33 App, Developers.” AV Foundation Programming Guide “. Octubre 12 del 2011 ,[10 de Mayo del 2013], pag (4-17) 34 App, Developers.” AV Foundation Programming Guide “. Octubre 12 del 2011 ,[10 de Mayo del 2013], pag (4) 35 Farlex, Inc.”The Free Dictionary”, [En linea]. 2013 [10 de Mayo del 2013]. Disponible en, http://es.thefreedictionary.com/acorde%C3%B3n http://es.thefreedictionary.com/acorde%C3%B3n 36 dependiendo del tipo de acordeón (cromático o diatónico, respectivamente); la parte de la mano izquierda, tiene botones para tocar los tonos bajos o acordes de acompañamiento. 2.1.4.1. Tipos de Acordeón. De acuerdo al libro “Cuaderno de Técnica para Acordeón”[36], dependiendo de la estructura del acordeón se puede encontrar diferentes clases: 2.1.4.1.1. Acordeón cromático de piano. Se caracteriza porque en el costado derecho hay un teclado similar al de un piano. Las teclas determinan el tamaño del acordeón; oscilan entre 24 teclas para los más pequeños hasta 41 teclas para los más grandes. Se denomina cromático porque se pueden reproducir las 12 notas que componen la escala musical cromática. Su funcionalidad se basa en un fuelle ubicado entre dos cajas armónicas de madera que albergan los diapasones, donde están sujetas las lengüetas metálicas que vibran debido a la corriente de aire que se origina por la fuerza del acordeonista al accionar el fuelle. Cada tecla o botón del acordeón cromático emite el mismo sonido al expandir o comprimir el fuelle. Figura 2.22. Acordeón Cromático de Piano. [ 37] 36 Sinonimo, “Cuadreno de Tecnica para Acordeon”. ,[10 de Mayo del 2013]. Disponible en http://www.gorkahermosa.com/web/img/publicaciones/CUADERNO%20DE%20T%C3%89CNICA.pdf 37 Sinonimo, “Cuadreno de Tecnica para Acordeon”.,[10 de Mayo del 2013]. Disponible en http://www.gorkahermosa.com/web/img/publicaciones/CUADERNO%20DE%20T%C3%89CNICA.pdf http://www.gorkahermosa.com/web/img/publicaciones/CUADERNO%20DE%20T%C3%89CNICA.pdf http://www.gorkahermosa.com/web/img/publicaciones/CUADERNO%20DE%20T%C3%89CNICA.pdf 37 2.1.4.1.2. Acordeón Cromático de botones. En este tipo de acordeón, la mano derecha del acordeonista acciona un conjunto de botones; tiene botones en ambas partes del instrumento (derecha e izquierda). Según el tamaño del instrumento, el número de botones puede variar: los más pequeños pueden tener 40 botones y los más grandes oscilan entre 65 y 70 botones. Figura 2.23.Acordeón Cromático de botones.[38] 2.1.4.1.3. Acordeón diatónico. Su nombre se debe a que su estructura musical depende de algunas escalas determinadas. En un costado acciona los tonos bajos y acordes que usualmente se usan para acompañar la melodía que se interpreta en el lado opuesto. La nota del mismo botón varía en un acordeón diatónico porque cambia al expandir o comprimir el fuelle. Del número de escalas que maneja dependerá el número de botones en el diapasón del acordeón. 38 Sinonimo, “Cuadreno de Tecnica para Acordeon”.,[10 de Mayo del 2013]. Disponible en http://www.gorkahermosa.com/web/img/publicaciones/CUADERNO%20DE%20T%C3%89CNICA.pdf http://www.gorkahermosa.com/web/img/publicaciones/CUADERNO%20DE%20T%C3%89CNICA.pdf 38 Figura 2.24. Acordeón Diatónico. [39] 2.1.5. Grabación de librería de audio. 2.1.5.1. Señal de audio. De acuerdo a la definición consultada en la web[40],una señal de audio es una señal analógica eléctricamente exacta a una señal sonora; normalmente está acotada al rango de frecuencias audibles por los seres humanos que está entre los 20 y los 20.000 Hz. Dado que el sonido es una onda de presión, requiere un transductor que convierta las ondas de presión de aire en señales eléctricas. Un sólo micrófono puede captar adecuadamente todo el rango audible de frecuencias. Por el contrario, para reproducir fidedignamente ese mismo rango de frecuencias suelen requerirse de altavoces. Una señal de audio se puede caracterizar, someramente, por su composición espectral. Según el libro de física Serway[41] existen dos características fundamentales en una señal: Amplitud: Medida de la variación máxima del desplazamiento u otra magnitud física que varía periódica o cuasi periódicamente en el tiempo. 39 Sinonimo, “Cuadreno de Tecnica para Acordeon”.,[10 de Mayo del 2013]. Disponible en http://www.gorkahermosa.com/web/img/publicaciones/CUADERNO%20DE%20T%C3%89CNICA.pdf 40 Ramón, Sousa.” La señal de audio, conceptos y medidas”. 2012,[10 de Mayo del 2013], disponible en http://www.tmbroadcast.es/index.php/la-senal- de-audio-conceptos-y-medidas/ 41 Libro de física Serway http://www.gorkahermosa.com/web/img/publicaciones/CUADERNO%20DE%20T%C3%89CNICA.pdf http://www.tmbroadcast.es/index.php/la-senal-de-audio-conceptos-y-medidas/ http://www.tmbroadcast.es/index.php/la-senal-de-audio-conceptos-y-medidas/ 39 Es la distancia máxima entre el punto más alejado de una onda y el puntode equilibrio o medio. Frecuencia: Es una magnitud que mide el número de repeticiones por unidad de tiempo de cualquier fenómeno o suceso periódico, la frecuencia se mide en hercios (Hz). 2.1.5.2. Muestreo. La revista digital Artefacto [42] define sampling o muestreo musical como el acto de tomar una porción o simple muestra de un sonido que ha sido grabado en cualquier medio magnético o electrónico, para posteriormente ser reutilizada como una grabación o instrumento musical. El instrumento musical utilizado para hacer las capturas de las muestras musicales o sampling dentro de la ejecución del proyecto es un acordeón cromático de marca Firotti. Figura 2.23.Acordeón Firotti. Las voces en un acordeón dependen de un juego completo e independiente de lengüetas, cada una con un timbre y octava diferente. Las voces se pueden combinar gracias a un sistema de registros, un mecanismo que selecciona qué voces se activan. El número de voces y sus características tímbricas varía notablemente de un acordeón a otro. 42 Diedrich, Diederichsen. ” Arte y Técnica Montaje, sampling, morphing Sobre la tríada Estética-Técnica-Política”. [En línea] disponible en http://www.revista-artefacto.com.ar/pdf_notas/164.pdf 40 Figura 2.24. Diagrama Lengüetas Acordeón. Figura 2.25. Lengüetas Acordeón. 2.1.5.3. Técnicas de captura. La captura de sonidos del instrumento se realiza mediante un método de grabación dentro de un estudio de producción de audio profesional. Para esto se requieren instrumentos de ingeniería tales como: micrófonos, preamplificadores, cables de transporte de señal comúnmente conocidos como líneas, cables para PatchBay, consola de mezcla y grabación, conversores análogo-digital (A/D) y digital-análogo (D/A) y una estación de trabajo de audio digital (DAW). Durante la captura de las muestras se realiza un proceso de transducción en el cual el mensaje es transformado de vibraciones de aire a variaciones de voltaje a través del micrófono y puede ser capturado implementando diferentes técnicas de grabación. De las distintas técnicas de grabación estéreo que existen, el desarrollo de este proyecto involucra la técnica M- S. 41 2.1.5.4. Micrófono. Según el libro “The Microphone Book”[43],el micrófono se considera como un dispositivo transductor electro-acústico. Su función es transducir las vibraciones de la presión acústica ejercida sobre su cápsula, en energía eléctrica, permitiendo capturar sonidos de cualquier índole. Existen diferentes maneras de clasificar un micrófono. Una de ellas es a partir de características como directividad, tipo de transductor, respuesta en frecuencia, patrón polar, entre otras. Como se especificó en el numeral 2.1.5.3, el método de captura utilizado fue una técnica estéreo M-S, donde se utilizan dos micrófonos, uno de patrón polar cardiode y otro de patrón polar bidireccional. 2.1.5.4.1. Patrón de directividad. La directividad es un fenómeno característico de las ondas sonoras (u ondas electromagnéticas) que nos proporciona información sobre el comportamiento de la radiación de la fuente en función de la dirección. Es un parámetro que se usa en el diseño de los transductores acústico-electros. 2.1.5.4.1.1. Cardiode: Los micrófonos de patrón polar cardioide son micrófonos unidireccionales, con un diagrama polar con forma de corazón, de ahí su nombre. Este patrón representa los rangos de sensibilidad, donde se presenta mayor sensibilidad hacia los sonidos que le llegan por su parte frontal y en una razón mínima a los sonidos que llegan por su parte posterior. Esta forma de corazón se obtiene dejando el diafragma libre en su parte delantera y construyendo laberintos acústicos en su parte posterior. Los micrófonos cardiodes ofrecen mejor respuesta en frecuencias medias. Las frecuencias bajas tienen mayor distancia de dispersión por su longitud de onda, mientras que las altas se tornan más direccionales. 43 Jhon, Eargle. ”The microphone Book”, imprint of Elsevier First published 2005, [10 de Mayo del 2013], pag.(173- 174) 42 Figura 2.26. Cardiode[44] 2.1.5.4.1.2. Bidireccional: Los micrófonos de patrón polar bidireccional tienen un diagrama polar en forma de figura de 8, lo que significa que captan el sonido que llega por su parte frontal como por su parte posterior. Sin embargo, suprimen los sonidos que llegan lateralmente. Un inconveniente del diagrama polar en forma de figura de ocho, son las interferencias destructivas que puedan producirse por efectos de contrafase. Para esto basta una reorientación del micrófono. Esta respuesta polar pierde eficiencia por encima de los 10 Khz, donde ofrecen mayor sensibilidad a los sonidos procedentes del eje horizontal que del eje vertical. Esto se produce porque las frecuencias altas que llegan por encima del micrófono, sufren una cancelación parcial debida la interferencia por fase. Figura 2.27.Bidireccional. [45] 44 Jhon, Eargle. ”The microphone Book”,imprint of Elsevier First published 2005, [10 de Mayo del 2013], pag.(19) 45 Jhon, Eargle. ”The microphone Book”,imprint of Elsevier First published 2005, [10 de Mayo del 2013], pag.(20) 43 2.1.5.5. Ecualización. En el documento de Federico Miyara[46] definen a un ecualizador como un dispositivo electrónico o digital, cuyo funcionamiento tiene como principio aplicar una serie de Fourier a la señal de entrada, permitiendo descomponer la señal en su espectro de frecuencias y ser modificadas de acuerdo a las bandas del ecualizador, dependiendo de la necesidad del usuario. Existen tres importantes clase de ecualizadores: 2.1.5.5.1. Ecualizador gráfico. Son los más comunes y los más usados en grabación profesional dada su versatilidad y facilidad de manejo. El más utilizado es el ecualizador de octava, en el que disponemos de 10 frecuencias de control. Esto es bastante coherente debido a que el ancho de banda audible recorre 10 octavas que son 30 Hz, 60 Hz, 125 Hz, 250 Hz, 500 Hz, 1 KHz, 2 KHz, 4 KHz, 8 KHz, 16 KHz y es en esas frecuencias donde podemos aumentar o reducir la intensidad de la señal de audio. Figura 2.28. Ecualizador Grafico. [47] 2.1.5.5.2. Ecualizador semi-parametrico. Este ecualizador permite seleccionar la frecuencia que queremos ecualizar. De esta manera podemos aumentar o disminuir la ganancia de o la frecuencia que nos convenga. A diferencia de los paramétricos, estos ecualizadores no poseen un control para modificar el ancho de banda. 46 Federico Miyara, “Ecualizadores” [10 de Mayo del 2013]. 47“Dual Channel 15-Band Equalize”,disponible en, http://adn.harmanpro.com/product_attachments/product_attachments/501_1347913274/1215front_lg_original.jpg http://adn.harmanpro.com/product_attachments/product_attachments/501_1347913274/1215front_lg_original.jpg 44 2.1.5.5.3. Ecualizador paramétrico. El ecualizador paramétrico nos permite seleccionar la frecuencia central que queremos ecualizar, el ancho de banda y la ganancia. x También puede ser Multi-Banda, permitiendo seleccionar 4 o más frecuencias. 2.29. Ecualizador Paramétrico.[48] 2.1.6. Conceptos dentro del algoritmo desarrollado. En la programación orientada a objetos es esencial comprender algunos conceptos que hacen más sencillo el planteamiento y diseño del programa. En iOS 6[49] describen estos conceptos como: Clase: Plantillas que agrupan métodos y atributos de objetos instanciados. Objeto: Son instancias de
Compartir