2.! Título:!IMPLEMENTACIÓN!DEL!LEAP

!
RAE!
1.! Tipo!de!documento:!Título!para!optar!por!el!título!de!Ingeniero!de!Sonido.!
2.! Título:! IMPLEMENTACIÓN! DEL! LEAP! MOTION! COMO! CONTROLADOR!
MIDI!
INTERACTIVO!
MEDIANTE!
RECONOCIMIENTO!
GESTUAL!
(DACTILAR)!
3.! Autores:!Jhoana!Paola!Gaitán!Quiasua!!
4.! Lugar:!Bogotá!D.C!!
5.! Fecha:!4!de!Mayo!de!2015!!
6.! Palabras!Clave:!Leap!Motion,!Protocolo!MIDI,!Protocolo!OSC,!Pure!Data,!
Unity,!interacción!humanoTmaquina,!Innovación,!DSP!
7.! Descripción!del!trabajo:!En!este!Documento!se!presenta!el!desarrollo!de!
un! controlador! MIDI! no! convencional! basado! en! reconocimiento! gestual!
(dactilar),! mediante! la! implementación! del! LEAP! MOTION.! Se! describe! el!
procedimiento!para!el!!diseño!y!!programación!de!seis!!gestos!controlados!y!
visualizados! en! tiempo! real! a! través! de! una! interfaz! gráfica,! asignando!
previamente!cambios!de!control!desde!un!software!de!audio.!!
El!proyecto!consta!de!3!fases!significativas^!la!primera!está!conformada!por!
la! adquisición,! interpretación! de! datos! y! asignación! de! gestos! en! tiempo!
real^! esto! ! a! través! ! del! entorno! de! programación! libre! Pure! Data.! La!
segunda! fase! establece! la! comunicación! y! control! del! software! de! audio!
mediante! el! protocolo! MIDI,! en! éste! caso! Ableton! Live.! Por! último! la!
comunicación!a!través!del!protocolo!OSC!con!su!respectiva!interfaz!gráfica!
desarrollada!en!Unity!3D.!
8.! Líneas! de! Investigación:! El! proyecto! está! enfocado! a! la! interactividad!
usuario! máquina! por! lo! cual! la! línea! de! investigación! corresponde! al!
“análisis! y! procesamiento! de! señales”! y! el! campo! temático! del! programa!
está!enfocado!al!Audio!y!la!Acústica.!
1
9.! Contenidos:!Introducción,!planteamiento!del!problema,!metodología,!línea!
de!investigación,!marco!teórico,!desarrollo!ingenieril,!análisis!de!resultados,!
conclusiones,!productos,!limitaciones,!bibliografía,!glosario,!anexos.!
10.!!Metodología:! Debido! a! que! el! desarrollo! del! proyecto! es! un! producto!
tecnológico,! que! emula! el! resultado! de! experiencias! sensitivas! e!
interactivas,! este! enfoque! será! entonces! de! investigación! EmpíricoT
analítico.!
11.!Conclusiones:! El! documento! presenta! el! diseño! y! desarrollo! de! un!
controlador!
MIDI! no! convencional,! basado! en! reconocimiento! dactilar!
implementando! el! dispositivo! Leap! Motion^! el! cual! como! sensor! permite! la!
captura! de! movimientos! y! gestos! previamente! programados,! que! fueron!
asignados! a! cambios! de! control! con! el! fin! de! comunicarlos! al! software! de!
Audio! mediante! Protocolo! MIDI.! Se! visualiza! el! control! en! tiempo! real! a!
través!de!!una!interfaz!gráfica.!!
!
!
!
!
!
!
!
!
!
!
!
2
IMPLEMENTACIÓN!DEL!LEAP!MOTION!COMO!CONTROLADOR!MIDI!
INTERACTIVO!MEDIANTE!RECONOCIMIENTO!GESTUAL!(DACTILAR)!
!
!
!
!
!
!
JHOANA!PAOLA!GAITÁN!QUIASUA!
!
!
!
!
!
!
UNIVERSIDAD!DE!SAN!BUENAVENTURA!!
FACULTAD!DE!INGENIERÍA!DE!SONIDO!!
ÁREA!DE!PROYECTO!DE!GRADO!!
!
!
!
!
!
!
!
!
BOGOTÁ!D.C.!2015!
!
!
!
3
IMPLEMENTACIÓN!DEL!LEAP!MOTION!COMO!CONTROLADOR!MIDI!
INTERACTIVO!MEDIANTE!RECONOCIMIENTO!GESTUAL!(DACTILAR)!
!
!
!
!
!
JHOANA!PAOLA!GAITÁN!QUIASUA!
!
!
!
!
!
Proyecto!de!Grado!presentado!como!requisito!para!optar!por!el!título!de!
Ingeniero!de!Sonido!
!
!
!
!
TUTOR:!!
INGENIERA!DIANA!MARTÍNEZ!
!
!
!
!
!
!
UNIVERSIDAD!DE!SAN!BUENAVENTURA!!
FACULTAD!DE!INGENIERÍA!DE!SONIDO!!
ÁREA!DE!PROYECTO!DE!GRADO!!
!!!!!BOGOTÁ!D.C.!2015!
4
!
Nota!de!Aceptación!!
______________________________________________________!!
______________________________________________________!!
______________________________________________________!!
______________________________________________________!!
______________________________________________________!!
______________________________________________________!!
______________________________________________________!!
______________________________________________________!!
______________________________________________________!!
______________________________________________________!!
______________________________________________________!!
______________________________________________________!!
!
Firma!del!Jurado!
!
!!
______________________________________________________!
!
Firma!del!Jurado!!
!
______________________________________________________!!
!
!
!
Ciudad!y!fecha!(dd/mes/año)!__________,!___/____/________!
!
!
!
!
5
!
A"Dios"por"permitirme"culminar"este"logro"
A"mis"padres"y"Hermana,"Orlando,"Claudia"y"Vanessa"
Las"personas"más"importantes"en"mi"vida"
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
6
!
!
!
Agradecimientos.!
!
A! Dios! Primeramente! por! permitirme! culminar! este! objetivo,! darme! la! fuerza!
suficiente!para!seguir!adelante.!!!!
!
A!las!personas!más!importantes!en!mi!vida,!mis!padres!Luis!Orlando,!Claudia!y!mi!
Hermana!Laura!Vanessa.!Gracias!por!ese!apoyo!incondicional!desde!el!comienzo,!
por!el!esfuerzo!y!sacrificio!para!lograr!el!gran!objetivo!y!ser!un!soporte!día!a!día.!
!
A! mi! guía! en! el! planteamiento! del! proyecto,! la! Ingeniera! Diana! Martínez,! por! su!
paciencia,!apoyo!y!orientación!a!lo!largo!de!este!proyecto.!
!
A! mis! amigos! y! compañeros! de! carrera,! Nicolas! Calderón,! Andres! Caballero,!
Katherine!Herrera,!Dorian!Sánchez,!Wendy!Rodríguez,!Kelly!Díaz!gracias!infinitas!
por!su!apoyo!y!compresión!a!lo!largo!de!esta!etapa.!
!
!
!
!
!
!
!
!
!
!
7
1.!Tabla#de'contenido#
1''PLANTEAMIENTO'DEL'PROBLEMA'................................................................................'17'
1.1#Antecedentes#....................................................................................................................................................#17#
1.2#Descripción#del#problema#...........................................................................................................................#19#
1.3#Pregunta#Problema#........................................................................................................................................#19#
1.4#Justificación#.......................................................................................................................................................#19#
1.5#Objetivos#.............................................................................................................................................................#20#
####1.5.1##Objetivo#General#.....................................................................................................................................#20#
####1.5.2##Objetivo#Específico#................................................................................................................................#20#
#####1.6#Alcances#y#Limitaciones#del#Proyecto#....................................................................................................#20#
####1.6.1##Alcances#.....................................................................................................................................................#20#
#########1.6.2##Limitaciones#.............................................................................................................................................#21#
2''METODOLOGIA'......................................................................................................................'21'
2.1#Enfoque#de#la#Investigación#........................................................................................................................#21#
2.2#Línea#de#la#Investigación#.............................................................................................................................#21#
2.3#Hipótesis#.............................................................................................................................................................#21#
2.4#Variables#.............................................................................................................................................................#21#
####2.4.1##Independientes#.......................................................................................................................................#21#
####2.4.2##Dependientes#...........................................................................................................................................#22#
'3'MARCO'TEORICO'..................................................................................................................'22'
3.1#Sensor#Leap#Motion#.......................................................................................................................................#23#
####3.1.1##Construcción#y#Componentes#...........................................................................................................#23#
####3.1.2##Funcionamiento#......................................................................................................................................#24#
####3.1.3##Información#proporcionada#a#Desarrolladores#........................................................................#27#
########3.1.3.1##Kit#de#Desarrollo#de#Software#(SDK)##....................................................................................#27#
########3.1.3.2#Interfaz#de#Programación#de#Aplicaciones##(API)##............................................................#27#
#####3.2#Entornos#de#Programación#y#DAW#(Digital#Audio#Workspace)##................................................#28#
#########3.2.1#Pure#Data#....................................................................................................................................................#28#
#############3.2.1.1#PD#Vanilla#...........................................................................................................................................#28#
#############3.2.1.2#PD#Extended#......................................................................................................................................#28#
##########3.2.2#Unity#............................................................................................................................................................#29#
##########3.2.3##Ableton#Live#DAW#................................................................................................................................#29#
3.3#Diseño#de#Interfaz#de#Usuario#...................................................................................................................#29#
####3.3.1##Interfaz#de#Usuario##UI#(User#Interface)#.......................................................................................#29#
########3.3.1.1##Tipos#de#Interfaz#de#Usuario#UI#...............................................................................................#30#
########3.3.1.2##Tipos#de#Interfaz#Gráfica#de#Usuario#(GUI)#.........................................................................#30#
########3.3.1.3##Experiencia#de#Usuario##UX##......................................................................................................#31#
3.4#Protocolos#de#Comunicación##.....................................................................................................................#31#
####3.4.1##Protocolo#MIDI##(Interfaz#Digital#de#Instrumentos#Musicales)#..........................................#31#
########3.4.1.1##Transmisión#MIDI#..........................................................................................................................#32#
########3.4.1.2##Mensaje#MIDI#...................................................................................................................................#32#
############3.4.1.2.1##Mensaje#de#Nota#ON/Off#.....................................................................................................#32#
''''''''''''3.4.1.2.2##Mensaje#de#Cambio#de#Programa#....................................................................................#32#
############3.4.1.2.3##Mensaje#de#Cambio#de#Control#.........................................................................................#32#
############3.4.1.2.4##Mensaje#de#Sistema#...............................................................................................................#33####
########3.4.1.3##Controlador#MIDI#...........................................................................................................................#33#
#####3.4.2#Protocolo#OSC#(Open#Sound#Control)#...........................................................................................#34#
#####3.4.3#Protocolo#IP#..............................................................................................................................................#34#
8
4'DESARROLLO'INGENIERIL'.................................................................................................................'35'
####4.1#Requerimientos#................................................................................................................................................#35#
###4.1.1#Funcionales#.................................................................................................................................................#35#
###4.1.2#No#Funcionales#..........................................................................................................................................#35#
4.2#Casos#de#Uso#......................................................................................................................................................#36#
4.3#Arquitectura#de#Software#............................................................................................................................#43#
4.4#Desarrollo#de#Software#.................................................................................................................................#45#
'''4.4.1#Adquisición#e#Interpretación#de#los#Datos#....................................................................................#45#
#######4.4.1.1#Implementación#del#SDK,#API##....................................................................................................#45#
#######4.4.1.2#Funcionamiento#de#la#API#............................................................................................................#46#
#######4.4.1.3#Desarrollo#del#Patch#........................................................................................................................#50#########
###########4.4.1.3.1Calibración#de#Altura#e#Interacción#...................................................................................#50############
###########4.4.1.3.2#Identificación#Mano#Izquierda#Y#Derecha#.....................................................................#51#
#############4.4.1.4#Programación#de#Gestos#..............................................................................................................#51#
############4.4.1.4.1#Gesto#Desplazamiento#en#Ejes#X,Y,Z#...............................................................................#52#
############4.4.1.4.2#Gesto#Puño#Cerrado#en#Eje#Z#..............................................................................................#53#
############4.4.1.4.3#Gesto#–#Rotacional#(KNOB)#.................................................................................................#55#
############4.4.1.4.4#Gesto#i#Selección#y#Ejecución#.............................................................................................#58#
#####4.4.2#Comunicación#..........................................................................................................................................#59#
#########4.4.2.1#Con#Unity##..........................................................................................................................................#59#
#########4.4.2.2#Mediante#UDP##.................................................................................................................................#60#
#########4.4.2.3#Mediante#OSC##..................................................................................................................................#61#
#########4.4.2.4#MIDI##....................................................................................................................................................#62#
######4.4.3#Diseño#Interfaz#Gráfica#UI#.................................................................................................................#63#
##########4.4.3.1#Directrices#UI#y#UX#.......................................................................................................................#63#
##########4.4.3.3#Desarrollo#del#Diseño#..................................................................................................................#66#
######4.4.4#Implementación#Interfaz#de#Usuario#en#Unity##........................................................................#69#
'''''##4.4.4.1#Comunicación#Unity#i#PD#..............................................................................................................#71#
############4.4.4.3#Asignación#MIDI#...............................................................................................................................#73#
#######4.4.4.2#Manual#de#Usuario#...........................................................................................................................#77#
#############
'
5'ANÁLISIS'Y'RESULTADOS'..................................................................................................................'78'
6'CONCLUCIONES'.....................................................................................................................................'80'
7'RECOMENDACIONES'............................................................................................................................'82'
REFERENCIAS'BIBLIOGRAFICAS'.........................................................................................................'82'
ANEXOS'.......................................................................................................................................................'85'
'
'
9
Tabla#de'contenido'De'Imágenes#
Imagen#1#Superficie#de#control#reactable##........................................................................................................#17#
Imagen#2#Dispositivo#sensor#de#entrada#leap#motion##................................................................................#22#
Imagen#3#Componentes#internos#del#dispositivo#leap#motion##...............................................................#23#
Imagen#4#Posición#de#funcionamiento#standart#del#leap#motion###.........................................................#24#
Imagen#5#Modelo#interno#de#la#mano#.................................................................................................................#24#
Imagen#6#Visualizador#leap#motion#más#de#dos#manos#..............................................................................#25#
Imagen#7#Modelo#Segmentación#brazo#de#la#API#...........................................................................................#27#
Imagen#8#Controlador#MIDI#no#convencional#.................................................................................................#33#
Imagen#9#Segmentación#del#brazo#y#la#mano#por#módulos##......................................................................#39#
Imagen#10#Vista#volumétrica#de#la#API#del#Leap#Motion#............................................................................#40#
Imagen#11#Regla#de#la#mano#derecha#.................................................................................................................#41#
Imagen#12#Normal#de#la#Palma#..............................................................................................................................#42#
Imagen#13#Calibración#Altura#de#Interacción#Leap#Motioni#Automática#............................................#43#
Imagen#14#Nomenclatura#Puntos#de#la#mano#sobre#plano#Bidimensional#.........................................#44#
Imagen#15#Diseño#Gráfico#de#la#Interfaz#............................................................................................................#56#
Imagen#16#Retroalimentación#Visual#..................................................................................................................#57#
Imagen#17#Selección#cursor##...................................................................................................................................#57#
Imagen#18#Configuración#MIDI##.............................................................................................................................#63#
Imagen#19#Asignación#Parámetros#MIDI#...........................................................................................................#64#
Imagen#20#Instrucción#1i#Herramienta#Selección#.........................................................................................#65#
Imagen#21Instrucción#2i#Herramienta#Cursor#y#Click#.................................................................................#66#
Imagen#22#Instrucción#3i#Información#...............................................................................................................#67#
Imagen#23#Instrucción#4i#Ejecución#Gestos#Desplazamiento#Eje#Y##......................................................#68#
Imagen#24#Instrucción#5i#Eje#Rotacional##.........................................................................................................#68#
Imagen#25#Instrucción#6i#Ejecución#Gesto#Switch#........................................................................................#69#
Imagen#26#Diagrama#de#clases#desarrollado#para#patch#Pure#Data#......................................................#75#
Imagen#27#Diagrama#de#clases#para#Interfaz#Gráfica#en#Unity#................................................................#76#
Imagen#28#Canvas#–#Imagen#de#fondo#interfaz#Gráfica#Unity#...................................................................#76#
Imagen#29#Implementación#Sliders#en#Unuty##................................................................................................#77#
Imagen#28#Diseño#de#interfaz#Gráfica#.................................................................................................................#77#
Imagen#29#Problema#ocurrido#por#utilizar#mismo#puerto#........................................................................#78#
Imagen#30#Diseño#animación#manos#Interfaz#Gráfica##................................................................................#78#
10
Imagen#31#Retroalimentación#visual##.................................................................................................................#56#
#
#
#
#
#
Tabla#de'contenido'De'Gráficos!
#
Gráfico#1#Secciones#de#desarrollo#del#marco#teórico#...................................................................................#21#
Gráfico#2#Casos#de#uso#...............................................................................................................................................#37#
Gráfico#3#Arquitectura#de#software#del#proyecto#..........................................................................................#42#
Gráfico#4#Diagrama#Plataforma#de#Desarrollo#................................................................................................#43#
Gráfico#5#Diagrama#de#bloques#estructural#del#proyecto#...........................................................................#37#
Gráfico#6#Diagrama#de#clases#UMLiimplementación#del#API#“leap#motion#........................................#38#
Tabla#de'Casos'de'Uso!
#
Tabla#1#(Primer#Caso#de#Uso#para#el#Click)…#...................................................................................................#37#
Tabla#2#(Curso#Normal#de#los#Eventos#para#el#Primer#Caso#de#Uso)#....................................................#37#
Tabla#3#(Segundo#Caso#de#Uso#para#el#Desplazamiento#Y)#........................................................................#38#
Tabla#4#(Curso#Normal#de#los#Eventos#para#el#Segundo#Caso#de#Uso)##................................................#39#
Tabla#5#(Tercer##Caso#de#Uso#para#el#Desplazamiento#X)#...........................................................................#39#
Tabla#6#(Curso#Normal#de#los#Eventos#para#el#Tercer#Caso#de#Uso).#....................................................#39#
Tabla#7#(Cuarto##Caso#de#Uso#para#el#Desplazamiento#Z)##..........................................................................#40#
Tabla#8#(Curso#Normal#de#los#Eventos#para#el#Cuarto#Caso#de#Uso)#.....................................................#40#
Tabla#9#(Quinto#Caso#de#Uso#para#el#Desplazamiento#Z#con#la#mano#cerrada)#................................#41#
Tabla#10#(Curso#Normal#de#los#Eventos#para#el#Quinto#Caso#de#Uso)#..................................................#42#
Tabla#11#(Sexto#Caso#de#Uso#para#el#Gesto#Rotacional#Knob)…##.............................................................#43#
Tabla#12#(Curso#Normal#de#los#Eventos#para#el#Quinto#Caso#de#Uso)#..................................................#44#
!
!
11
!
!
!
!
!
'
Tabla#de'contenido'De'Figuras#
#
Figura#1#Exportación#datos#de#control#relevantes#fuera#del#lienzo#en#Pd#..........................................#45#
Figura#2#Programación#diferencia#mano#derecha#de#izquierda#..............................................................#46#
Figura#3#Algoritmo#“programación”#de#gestos#en#X,Y#y#Z#...........................................................................#48#
Figura#4#Gesto#rotacional#knob#..............................................................................................................................#49#
Figura#5#Algoritmo#del#cursor##...............................................................................................................................#50#
Figura#6#Comunicación#bidireccional#PdiOsc#a#través#de#UDP#................................................................#52#
Figura#7#Envió#mensajes#de#control#MIDIi#argumentos##............................................................................#54#
Figura#8#Representación#diagrama#de#clases#..................................................................................................#59#
Figura#9#Componente#colisionador#collider2D#...............................................................................................#60#
Figura#10#Diagrama#de#clases#comunicación#UnityiPd#...............................................................................#62#
!
!
!
!
!
!
!
!
!
!
!
12
!
!
!
!
!
RESUMEN!
!
!
En!este!proyecto!de!investigación!se!presenta!el!desarrollo!de!un!controlador!MIDI!
no! convencional! basado! en! reconocimiento! gestual! (dactilar),! mediante! la!
implementación! del! LEAP! MOTION,! se! describe! el! diseño! y! la! programación! de!
seis! gestos! controlados! y! visualizados! mediante! una! interfaz! gráfica,! asignando!
previamente!cambios!de!control!desde!un!software!de!audio.!!
!
El! proyecto! consta! de! 3! fases! significativas^! la! primera! está! conformada! por! la!
adquisición,! interpretación! de! datos! y! asignación! de! gestos! en! tiempo! real^!
mediante!el!lenguaje!de!programación!Pure!Data.!En!la!segunda!fase!se!establece!
la!comunicación!y!control!del!software!de!audio!mediante!el!protocolo!MIDI,!y!por!
último! la! comunicación! a! través! del! protocolo! OSC! con! su! respectiva! interfaz!
gráfica!desarrollada!en!"Unity!3D".!
!
!
!
!
PALABRAS!CLAVES:!Leap!Motion,!Protocolo!MIDI,!Protocolo!OSC,!Protocolo!IP!
Pure!data,!Unity,!interacción!humanoTmaquina,!Innovación,!DSP.!
!
!
!
!
!
13
!
!
!
ABSTRACT!
!
This! research! project! presents! a! non! convencional! MIDI! controller.! This! non!
conventional! controller! is! based! on! finger! movement! recognition! by! using! LEAP!
MOTION! interfase! .! To! comprehend! it! better,! a! design! and! a! six! visualized!
movements! programming! (through! a! graphical! interface)! will! be! described,!
assigning!previously!changes!from!an!audio!software.!!
!
!
This! project! is! composed! by! three! significant! phases^! the! first! one! is! about! data!
acquisition,! interpretation! and! real! time! movement! assignment! by! using! PURE!
DATA! programming.! The! second! phase! is! about! the! system! communication!
establishment! and! audio! software! control! by! using! "Ableton! Live"! MIDI! protocol.!
The! third! one! phase! is! about! getting! a! communication! by! OSC! protocol! with! its!
(developed!by!"Unity!3D")!graphic!interface.!
!
!
Keywords:! Leap! motion,! MIDI! protocol,! OSC! protocol,! IP! protocol,! Pure! data,!
Unity,!HumanTMachine!interface,!Innovation,!DSP!
!
!
!
!
!
!
!
!
14
INTRODUCCIÓN!
!
La!evolución!de!la!!tecnología!ha!hecho!posible!la!transformación!en!la!forma!de!
controlar,!crear!o!generar!sonidos.!El!desarrollo!de!tecnologías!como!el!protocolo!
MIDI! han! hecho! posible! la! comunicación! con! las! computadoras! u! otros!
dispositivos,! permitiendo! crear! sistemas! electrónicos! que! sirven! como! interfaz! al!
usuario!para!producir!o!modificar!sus!sonidos!a!través!de!procesos!de!síntesis!o!
muestreo,! los! cuales! !se! realizan! en! los! software! para! producción! musical.! ! En!
esta!misma!vía!el!control!basado!en!gestos!está!empezando!a!ser!reconocido!en!
el!medio!de!los!artistas!musicales!y!visuales,!por!lo!cual!diferentes!compañías!han!
logrado! desarrollos! alternativos! que! intentan! ofrecer! soluciones! diferentes! a! las!
existentes!en!el!mercado!como!lo!han!hecho!los!desarrolladores!del!Leap!Motion^!
el!cual!tiene!como!principio!el!!reconocimiento!dactilar.!Este!dispositivo!cuenta!con!
varias!cámaras!y!leds!infrarrojos!que!reconocen!manos,!dedos,!e!incluso!objetos^!
actuando!como!un!sensor!dentro!de!su!espacio!de!trabajo.!
!
Después! de! tener! en! cuenta! este! tipo! de! tecnologías! y! dispositivos! se! llegó! a! la!
conclusión! de! unir! estas,! y! desarrollar! un! controlador! práctico! e! interactivo! en! el!!
cual! el! usuario! es! capaz! de! generar! mensajes! MIDI! por! medio! de! detección! de!
gestos!dactilares!a!través!del!sensor,!para!luego!enviarlos!!hacia!!un!software!de!
audio,!por!último,!controlar!varios!de!sus!parámetros!que!pueden!ser!previamente!
definidos!y!visualizados!en!tiempo!de!real!a!través!de!!una!interfaz!gráfica.!
!
!
!
!
!
15
1.! PLANTEAMIENTO!DEL!PROBLEMA!
!
1.1!!!!!!!!!ANTECEDENTES!
!! GESTURES!TO!OPERATE!DAW!SOFTWARE!!'
El!objeto!de!este!artículo!fue!realizar!un!estudio!para!así!explorar!hasta!qué!punto!
el! software! de! audio! puede! beneficiarse! mediante! reconocimiento! gestual,! esto!
debido! a! la! creciente! disponibilidad! de! dispositivos! como! teléfonos! inteligentes,!
tabletas! y! pantallas! táctiles.! Los! realizadores! de! este! estudio! establecieron! 22!
funciones! de! un! Daw! para! controlar! éstas! por! medio! de! gestos! preTestablecidos,!
dando!como!conclusión!la!gran!aceptación!de!este!sistema,!sin!embargo!recalcan!
el!hecho!que!algunas!personas!no!se!acostumbran!del!todo!al!sistema!propuesto!
(Wincent,!Jorn,!2011).!
!
!! INTERFACE!
DESING!
FOR!
COMPUTER^CONTROLLED!
AUDIO!
SYSTEMS!!
En! este! artículo! hacen! referencia! al! desarrollo! de! interfaces! avanzadas! que! se!
presentará!a!futuro!y!como!influirán!en!el!ámbito!de!la!ingeniería.!Se!dice!que!el!
éxito! en! el! diseño! de! interfaces! de! usuario! para! los! complejos! sistemas!
informáticos!será!en!gran!parte!determinante!para!el!éxito!de!los!sistemas!en!su!
conjunto.! La! interacción! personaTordenador! se! presenta! y! se! aplica! en! el! ámbito!
de!los!sistemas!de!audio!controlados!por!el!ordenador.!Los!temas!a!tratar!incluyen!
el!diseño!de!las!pantallas!táctiles!y!visuales,!el!uso!de!dispositivos!alternativos!de!
entrada!y!sus!asignaciones,!la!compatibilidad!estímuloTrespuesta,!personalización!
e!interfaces!inteligentes!(AES,!13th!international!conference).!!
!! FUTURE!HUMAN!INTERFACES!TO!COMPUTER!CONTROLLED!SOUND!
SYSTEMS!!!!!
Este! artículo! plantea! nuevas! posibilidades! de! interacción! hombreTmáquina! por!
medio! de! seguimiento! de! posición! espacial,! de! ojos,! de! cabeza! y! de! entradas!
táctiles.! Presenta! algunas! tecnologías! de! interfaces! humanas,! las! cuales! pueden!
16
ser! implementadas! en! los! sistemas! de! sonido.! Los! avances! en! la! interacción!
hombreTmáquina!se!divide!en!3!secciones^!ingreso!y!reconocimiento!de!datos!por!
la! computadora,! sistemas! visuales! y! de! escucha! y! análisis! de! espacialidad.! Los!
problemas!asociados!a!estos!diseños!suelen!afectar!la!usabilidad!de!los!sistemas!
que!están!conectados!a!este,!implementar!un!dispositivo!ópticoTeléctrico!conlleva!
diferentes! problemas.! Con! el! sentido! de! la! vista,! el! sentido! de! la! audición! es! la!
forma!principal!en!la!que!los!humanos!recolectan!información!de!su!entorno,!como!
la!localización!espacial!(Craig,!Bob,!1993)!
!! REACTABLE!!!
Es! un! instrumento! musical! electrónico! el! cual! posee! una! interfaz! táctil! sobre! una!
superficie,! esta! compuesto! de! un! tablero! semitraslucido! iluminado! con! dos!
cámaras,! las! cuales! analizan! cualquier! movimiento,! posición! y! orientación! de! los!
diferentes! objetos! físicos! y! lógicos! que! estan! situados! sobre! el! tablero.! Los!
usuarios! pueden! obtener! simultaneamente! el! control! de! ella,! creando! distintas!
combinaciones! de! figuras! y! dependiendo! del! ángulo! de! posición! del! objeto,! la!
mesa!emitirá!un!sonido!sintetizado!(Grupo!de!Tecnología,!2005).!
La#imagen#muestra#la#Superficie#de#Control#Reactable##
MTG,!Music!Technology!Group.!Genesis!of!the!project.!Universidad!Pompeu!Fabra,!
Barcelona.!
#
17
1.2! DESCRIPCIÓN!DEL!PROBLEMA!!
Gracias! a! los! avances! tecnológicos! y! desarrollo! de! dispositivos,! hoy! en! día! se!
hace! fácil! generar! una! relación! interactiva! entre! usuarioTmáquina,! lo! cual! hace!
posible! que! el! usuario! llegue! al! punto! de! sentirse! inmerso! en! las! acciones!
ejecutadas!en!su!computadora,!donde!uno!de!los!enfoques!más!relevantes!es!la!
interacción! gestual,! generando! una! relación! más! amigable! con! esta! y! evitando!
en! lo! posible! el! contacto! con! objetos! físicos.! A! raíz! de! esto,! se! busca! la!
incorporación! de! estas! nuevas! tecnologías! en! el! campo! de! la! ingeniería! de!
sonido,! específicamente! en! los! controladores! MIDI,! debido! a! que! son! una!
herramienta! necesaria! para! cualquier! artista! musical! y! visual! que! desee!
sobresalir!en!la!escena.!!!
1.3!
!!PREGUNTA!PROBLEMA!
¿Cómo!desarrollar!un!controlador!MIDI!no!convencional!que!permita!la!interacción!
usuarioTmáquina!mediante!reconocimiento!dáctil!(gestual)?!
1.4!
!JUSTIFICACIÓN!
Los!avances!tecnológicos!a!nivel!mundial,!han!tomado!mucha!fuerza!en!el!campo!
musical,! lo! cual! ha! llevado! a! crear! diferentes! formas! de! expresión! artística,!
integrando! varias! ramas! ingenieriles,! esto! genera! nuevas! e! innovadoras!
alternativas! que! brindan! al! público! experiencias! no! solo! auditivas! sino! visuales,!
como!el!Reactable.!
Por! medio! de! esta! investigación! y! desarrollo,! se! pretende! promover! la!
implementación! de! nuevas! tecnologías! para! el! control! de! parámetros! mediante!
protocolo!MIDI,!ya!que!el!reconocimiento!gestual!brinda!una!interacción!natural!en!
tiempo!real!humanoTordenador,!este!se!ajusta!a!las!necesidades!del!usuario!en!el!
momento!que!éste!decida!realizar!una!acción,!de!esta!manera!al!lograr!controlarlo!
con! solo! el! movimiento! de! las! manos! le! evitarán! al! usuario! tener! que! ir! a! la!
configuración!y!escoger!el!parámetro!que!desean,!brindándole!así!una!experiencia!
inmersiva! e! innovadora! por! lo! cual! logrará! llamar! la! atención! de! otros! músicos! y!
18
artistas! visuales! generando! un! mayor! ! interés! en! este! tipo! de! controladores! no!
convencionales!y!ver!la!practicidad!que!este!presenta.!!
Este!proyecto!se!presenta!como!una!solución!novedosa,!a!las!exigencias!artísticas!
y!de!alta!calidad!que!demanda!la!producción!musical!siendo!la!tecnología!la!que!
posibilite!nuevas!alternativas!de!interacción!ordenadorThumano.!
1.5!
OBJETIVOS!DE!INVESTIGACIÓN!
!
1.5.1! Objetivo!General!
!
Desarrollar! un! controlador! MIDI! interactivo! no! convencional! mediante!
reconocimiento!dactil!(gestual)!implementando!el!sensor!Leap!Motion!
1.5.2! Objetivos!Específicos!
!! Implementar! el! algoritmo! para! la! adquisición! e! interpretación! de! datos!
provenientes!del!Leap!Motion.!!
!! Establecer! 6! comandos! de! ejecución! de! eventos! de! cambio! de! control!
MIDI.!
!! Implementar! una! interfaz! gráfica! para! la! visualización! del! control! y!
retroalimentación!para!el!usuario!en!tiempo!real.!
1.6!
!ALCANCES!Y!LIMITACIONES!DEL!PROYECTO!
1.6.1! !Alcances!
!! La! implementación! será! un! aporte! de! innovación! en! las! tecnologías! de!
interacción! humanoTmáquina! enfocadas! al! audio,! logrando! una!
interpretación!inmersiva!donde!el!usuario!se!relacione!naturalmente!con!
el!sistema!que!controla.!!
!! El! producto! tendrá! un! valor! agregado! por! innovación! en! el! área! de!
controladores!no!convencionales.!!
!! El!sistema!controlará!parámetros!configurables!en!tiempo!real!mediante!
MIDI.!!
19
1.6.2! Limitaciones!
!! El!sistema!reconocerá!la!posición!de!seis!gestos!diferentes.!!
!! Se!programarán!determinados!mensajes!MIDI,!para!evitar!que!el!LEAP!
MOTION! confunda! algunos! movimientos! que! podrían! llegar! a! ser! muy!
similares,!y!envíe!mensajes!erróneos!al!sistema.!
!! El! sistema! será! diseñado! para! trabajar! con! un! DAW! o! software! de!
programación!modular!gráfico!específico.!
2! METODOLOGÍA!
2.1!
ENFOQUE!DE!LA!INVESTIGACIÓN!
Debido!a!que!el!desarrollo!del!proyecto!es!un!producto!tecnológico,!que!emula!el!
resultado!de!experiencias!sensitivas!e!interactivas,!este!enfoque!será!entonces!de!
investigación!EmpíricoTanalítico.!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2.2!
!LINEA!DE!INVESTIGACIÓN!
!
El!proyecto!está!enfocado!a!la!interactividad!usuario!máquina!por!lo!cual!la!línea!
de!investigación!corresponde!al!“análisis!y!procesamiento!de!señales”!y!el!campo!
temático!del!programa!está!enfocado!al!Audio!y!la!Acústica.!
2.3!
!HIPÓTESIS!
Es!posible!desarrollar!un!controlador!MIDI!que!permita!al!usuario!interactuar!con!el!
sistema!de!una!forma!no!convencional!mediante!reconocimiento!dáctil!(gestual)!a!
través! del! sensor! de! entrada! LEAP! MOTION! para! ejecutar! acciones! específicas!
con!ayuda!de!protocolo!MIDI,!visualizándolo!a!través!de!una!interfaz!gráfica.!
2.4!
!VARIABLES!!
2.4.1! Variables!Independientes!!
•! Cambio!de!control!
20
•! Nota!MIDI!
•! Cambio!de!programa!
2.4.2! Variables!Dependientes!
•! Latencia! del! mensaje! enviado! por! el! Leap! Motion! al! ser! enlazado! con!
Pure!Data.!
3! MARCO!TEÓRICO!
El!desarrollo!del!proyecto!toma!como!base!conceptos!y!teorías!que!se!dividen!en!
4! secciones:! Sensor! de! entrada! Leap! Motion,! entornos! de! programación,! diseño!
de! interfaz! de! usuario! y! protocolos! de! comunicación! (ver! gráfico! (1)).! La! primera!
hace! énfasis! en! la! forma! en! la! que! trabaja! el! sensor,! sus! componentes! y! la!
información! que! brindan! los! fabricantes! a! desarrolladores.! La! segunda! sección!
explica!las!características!y!tipos!de!entornos!de!programación,!en!la!tercera!fase!
se! explican! los! conceptos! de! interfaz! y! experiencia! de! usuario^! por! último! se!
explican!los!tipos!de!protocolos!mediante!los!cuales!se!realizó!todo!el!proceso!de!
comunicación!de!un!entorno!a!otro.!!
!
Sensor#de#
entrada#
Leap#
Motion#
Entornos#de#
Programación#
Diseño## Protocolos'de'
Interfaz#de# Comunicación
Usuario
Gráfico#(1)#secciones#de#desarrollo#del#Marco#Teórico#
21
!
3.1!
SENSOR!DE!ENTRADA!LEAP!MOTION!!
!
3.1.1! Construcción!y!Componentes!
El! Leap! Motion! es! un! dispositivo! capaz! de! interpretar! de! forma! tridimensional!
gestos! dactilares! y! elementos! tales! como:! esferos,! lápices,! palillos! entre! otros!
desde! un! ordenador.! Estos! los! interpreta! por! medio! de! la! forma,! posición! y!
aceleración.!Este!dispositivo!trabaja!bajo!el!mismo!principio!de!funcionamiento!que!
el!Kinect!pero!de!una!forma!más!precisa,!debido!a!que!el!Leap!Motion!toma!200!
cuadros! por! segundo,! dependiendo! del! rendimiento! del! ordenador! al! que! esta!
conectado,! mientras! que! el! Kinect! toma! 30! (Meera,! 2013).! ! En! la! Imagen! (2)! se!
observa!el!dispositivo.!
!
La#imagen#muestra#un##Dispositivo#Sensor#de#Entrada#Leap#Motion#
Raquel,!2013.!Leap!Motion,!dispositivo.!
El! sistema! consiste! en! un! pequeño! lector! el! cual! está! conformado! en! su! interior!
por! dos! sensores! cámaras! CCD! y! 3! leds! infrarrojos.! Las! cámaras! CCD! del! Leap!
Motion! presentan! un! principio! de! funcionamiento! basado! en! tomar! la! luz! y!
convertirla!en!una!señal!eléctrica!(García,!2004),!donde!cada!cámara!cuenta!con!
un!sensor!monocromático!sensible!a!la!luz!infrarroja.!Los!leds!infrarrojos!!son!un!
tipo! de! diodos! emisores! de! luz,! los! cuales! se! encargan! de! iluminar! la! zona! de!
cobertura,! varían! la! iluminación! dependiendo! de! la! luz! que! haya! en! dicha! zona,!
22
asegurando! la! resolución! de! la! imagen! (Belda,! 2015).! Estos! cámaras! CCD!
detectan! los! movimientos! de! cada! mano! individualmente! y! el! movimiento! de! los!
dedos!de!forma!independiente.!!
El! Leap! Motion! es! por! lo! tanto! un! sistema! de! captura! en! 3D! que! controla! el!
ordenador! sin! necesidad! de! tocarlo,! brindando! un! espacio! hasta! de! 8! metros!
cúbicos! de! interacción! y! precisión,! no! tiene! un! límite! de! puntos! de! detección,!
teniendo!una!respuesta!casi!instantáneo!(Castromil,!2007).!Se!conecta!por!medio!
de! entrada! USB,! en! la! imagen! (3)! se! puede! observar! cómo! está! compuesto!
internamente!el!dispositivo.!
!
La#imagen#muestra#los#componentes#internos#del#dispositivo#Leap#Motion!
!
3.1.2! Funcionamiento!
!
Los!datos!de!posición!de!la!mano!se!obtienen!por!medio!de!sus!!sensores!ópticos!
y! de! luz! infrarroja,! creando! un! !campo! de! puntos! basado! en! un! sistema! de!
coordenadas!cartesianas,!dónde!el!punto!de!origen!se!toma!en!el!centro!del!Leap!
Motion!y!los!ejes!X,Y!y!Z!son!definidos!como!se!puede!observar!en!la!imagen!(4).!!
23
!
##
La#Imagen#muestra#la#Posición#de#Funcionamiento#estandart#del#Leap#Motion#
Leap!Motion,!developer!portal.!API!overview.!The"Leap"Motion"right?handed"coordinate"
system.!
Para!crear!este!esquema!y!realizar!el!seguimiento!de!las!manos,!el!Leap!Motion!
combina! sus! datos! de! sensores! con! un! modelo! interno! de! las! extremidades!
superiores,!y!así!lograr!una!alta!precisión.!En!este!modelo!se!tuvo!en!cuenta!las!
falanges! proximales,! medias! y! distales! como! se! observa! en! la! !Imagen! (5),! cada!
una!de!estas!arroja!una!posición!en!los!3!ejes!descritos!anteriormente,!aportando!
información!sobre!cada!una!de!las!manos.!
La#Imagen#muestra#un#Modelo#Interno#de#la#mano!!
Leap!Motion,!developer!portal.!API!overview.!
24
•! Metacarpiano:#Hueso#dentro#de#la#parte#que#conecta#el#dedo#a#la####muñeca#
(excepto##el#pulgar)!
•! Falange'proximal:#Hueso#en#la#base#del#dedo,#conectado#a#la#palma#
•! Intermedio'falange:#Hueso#medio#del#dedo,#entre#la#punta#y#la#base#
•! Falange'distal:#Hueso#terminal#en#el#extremo#del#dedo#
El!modelo!utilizado!para!el!pulgar,!no!se!ajusta,!puesto!que!es!diferente,!ya!que!el!
dedo! pulgar! tiene! un! hueso! menos! que! los! otros! dedos.! Sin! embargo,! para!
facilidad! de! programación,! el! modelo! pulgar! del! Leap! Motion! incluye! un! hueso!
metacarpiano!de!longitud!cero,!de!modo!que!el!pulgar!tiene!el!mismo!número!de!
huesos!que!los!otros!dedos!(Api!Overview,!Portal!de!Desarrolladores).!
El!modelo!de!la!mano!se!diseñó!para!obtener!diferentes!datos!de!2!brazos,!pero!
cuándo!se!ingresan!más!de!dos!manos!u!objetos,!el!seguimiento!del!dispositivo!no!
puede! soportarlas! a! ellas,! ni! a! los! objetos.! Debido! a! esto,! el! Leap! Motion! solo!
muestra!una!de!las!3!manos!como!se!muestra!en!la!imagen!(6).!Todos!sus!dedos!
deben! ser! claramente! visibles! y! separados,! de! no! ser! así,! si! dos! dedos! se!
encuentran!muy!juntos!podría!tomarlos!como!uno!solo.!!
!
!
Imagen##Visualizador#Leap#Motion#más#de#dos#manos#
25
!
3.1.3! Información!Proporcionada!a!Desarrolladores!
Leap!Motion!brinda!información!a!los!desarrolladores!que!se!interesan!por!realizar!
aplicaciones!con!este!dispositivo,!esto!a!través!de!la!implementación!de!la!SDK!y!
la!API.!!
3.1.3.1!
Kit!de!Desarrollo!de!Software!SDK!(Software!Development!
Kit)!!
Es!un!conjunto!de!herramientas!que!brindan!los!fabricantes!de!los!dispositivos!a!
desarrolladores,! logrando! así! la! generación! de! software! a! través! de! alguna!
documentación!técnica,!dicha!información!puede!incluir!librerías,!códigos!ejemplo,!
paquetes! de! software! e! infraestructura! digital.! De! esta! manera! se! permite! el!
desarrollo!de!aplicaciones!para!un!dispositivo,!en!un!sistema!operativo!o!lenguaje!
de! programación! especifico,! algunos! ejemplos! son! JavaScript,! Unity! /C#,! C++,!
Java,! Phyton,! Objective! –! C,! etc.! ! Este! kit! se! obtiene! desde! la! página! Web! del!
fabricante!del!dispositivo.!(http://techterms.com/definition/sdk)!!
!
3.1.3.2!
Interfaz!
de!
Programación!
de!
Aplicaciones!
API!
(Application!Progamming!Interface)!
!
Es! una! llave! de! acceso! a! funciones! que! permiten! hacer! uso! de! un! servicio!!
provisto! por! los! fabricantes,! por! medio! de! esta,! se! obtiene! la! información!
específica!!para!la!adquisición!de!datos!provenientes!del!Leap!Motion.!El!modelo!
que!los!fabricantes!utilizan!para!esta!adquisición,!se!basa!en!establecer!una!serie!
de!clases!o!módulos!los!cuales!se!pueden!observar!en!la!imagen!(7).!Estas!clases!
representan! las! ! partes! en! las! que! fue! segmentado! el! brazo! y! la! mano! para!
realizar!toda!su!caracterización.!!
!
!
!
!
!
!
26
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
Imagen##Modelo#Segmentación#Brazo#de#la#API#
!
3.2! ENTORNOS!DE!PROGRAMACIÓN!Y!DAW!
3.2.1! Pure!Data!!
Es! un! Entorno! de! programación! libre! desarrollado! por! Miller! Puckette,! el! cual!
maneja! una! programación! por! medio! de! bloques! y! es! multiplataforma.!
Desarrollado!especialmente!para!audio!video,!y!procesamiento!de!imagen,!permite!
a! ! músicos,! artistas! visuales,! investigadores! y! desarrolladores! crear! software!
gráficamente,! sin! necesidad! de! escribir! líneas! de! código.! PD! es! usado! para!
procesar!y!generar!vídeo!y!sonidos!en!interfaz!MIDI!(Brinkmann,2012),!se!puede!
trabajar!fácilmente!en!redes!locales!y!remotas!para!integrar!tecnología!usable.!Sus!
librerías! externas! son! escritas! en! C++.! PD! puede! descargarse! en! diferentes!
versiones.!Las!dos!distribuciones!!principales!son!!
3.2.1.1!
PD! vanilla! (o! simplemente! Pd):! el! núcleo! de! Pure! Data,!
centrándose! en! la! señal! de! audio! y! procesamiento! de! mensajes!
MIDI.!
3.2.1.2!
PD!extendida:!una!versión!de!vanilla!Pd!que!viene!con!muchas!
bibliotecas! escritas! por! la! comunidad.! PD! extendida! puede!
27
utilizarse!para!el!procesamiento!de!gráficos!(biblioteca!de!GEM),!
OSC! comunicaciones,! procesamiento! de! archivos! binarios,!
streaming! de! audioTvisuales,! modelado! físico,! espectáculos!
basados!en!sensores!y!mucho!más!(Pure!Data,2015)!!
!
Ambas! distribuciones! están! disponibles! para! GNU/Linux,! Windows! o! Mac! OSX,!
así! como! para! otros! sistemas! operativos.! ! La! versión! utilizada! en! el! presente!
proyecto! fue! la! Extendida,! debido! a! la! necesidad! de! utilizar! librerías! como! mr!
peach!para!establecer!comunicación!a!través!de!OSC.!
3.2.2! Unity!
Unity! es! una! plataforma! de! programación! para! crear! videojuegos,! aplicaciones!
interactivas,! visualizaciones,! animaciones! 3D! en! tiempo! real.! Se! programa!
mediante!Scripts,!es!decir!no!solo!se!puede!usar!librerías!en!C++!como!la!mayoría!
de! plataformas,! también! se! utilizan! códigos! en! JavaScript,! C#,! entre! otros.! El!
resultado! puede! ser! exportado! a! múltiples! plataformas! como! Mac,! PC,! iPhone! y!
Android!entre!otros!(Unity!Technologies,2015).!
3.2.3! Ableton!Live!DAW!(Digital!Audio!Workstation)!!
Es!un!secuenciador!de!audio!destinado!a!artistas!y/o!productores!musicales.!Sus!
principales! aplicaciones! son:! shows! o! música! en! vivo! ejecutando! en! cada! pista!
fragmentos!de!audio!o!MIDI!llamados!clips!y!para!composición!desde!un!estudio!
de!grabación.!De!esta!manera!Ableton!Live!permite!realizar!sesiones!en!directo!o!
en!estudios!de!grabación.!
3.3!
DISEÑO!INTERFAZ!DE!USUARIO!
3.3.1! Interfaz!de!Usuario!UI!(User!Interface)!!
!
Es!el!medio!por!el!cual!el!usuario!puede!comunicarse!con!una!máquina,!un!equipo!
o!una!computadora.!Comprende!todos!los!puntos!de!contacto!entre!el!usuario!y!el!
28
equipo.! La! mayoría! de! interfaces! de! usuario! presentan! un! diseño! en! el! cual! se!
incluyen!elementos!como!menús,!ventanas,!teclado,!mouse,!entre!otros.!!
3.3.1.1!
Tipos!de!Interfaz!de!Usuario!(UI)!
!
Dentro!de!las!Interfaces!de!usuario!se!pueden!distinguir!básicamente!dos!tipos!de!
interacción!entre!esta!y!el!usuario:!
!
•! Interfaces! táctiles:! Las! cuales! representan! gráficamente! un! panel! de!
control!en!una!pantalla!sensible!que!permite!interactuar!con!el!dedo!de!
forma!similar!a!si!se!accionara!un!control!físico.!
!
•! Interfaz!Gráfica!de!Usuario!(GUI),!las!que!permiten!comunicarse!entre!
el! humano! y! la! máquina! de! una! forma! muy! rápida! e! intuitiva!
representando! gráficamente! los! elementos! de! control! y! medida.! Ésta!
utiliza! un! conjunto! de! imágenes! y! objetos! gráficos! para! representar! la!
información! y! acciones! disponibles! en! la! interfaz.! Su! principal! uso,!
consiste! en! proporcionar! un! entorno! visual! sencillo! para! permitir! la!
comunicación! con! el! sistema! operativo! de! una! máquina! o! computador.!
En!el!contexto!del!proceso!de!interacción!personaTordenador,!la!interfaz!
gráfica! de! usuario! es! el! medio! de! interacción! que! permite! el! uso! y! la!
representación! de! un! lenguaje! gráfico,! que! permite! la! interacción!
amigable!con!un!sistema!informático!(!Aránzazu,!2015).!
!
3.3.1.2!
Tipos!de!Interfaz!Gráfica!de!Usuario!(GUI)!
!
•! Interfaz!de!usuario!de!pantalla!táctil!!
Pantalla! que! al! ser! tocada! efectúa! los! comandos! del! mouse! en! el!
software,! un! ejemplo! de! un! GUI! de! uso! específico! es! el! touchscreen! o!
pantalla!táctil!popularizado!en!los!últimos!años!en!nuevos!dispositivos.!
!
29
!
•! Interfaz!Natural!de!Usuario!NUI!!
!
Son!aquellas!en!las!que!se!interactúa!con!un!sistema,!aplicación,!entre!
otras,! sin! utilizar! dispositivos! de! entrada! como! mouse,! teclado,! lápiz!
óptico,!etc.!En!lugar!de!éstos!se!utilizan!la!parte!superficial!de!los!dedos!
(Mtz,!2015).!
!
3.3.1.3!
Experiencia!de!Usuario!UX!(User!Experience)!
!
Es! el! conjunto! de! factores! y! elementos! relativos! a! la! interacción! del! usuario,! con!
un! entorno! o! dispositivo! concretos,! donde! se! evalúa! la! respuesta! del! usuario!
siendo! positiva! o! negativa! dependiendo! de! su! percepción.(Arhippainen! y! Tähti,!
2003).!La!experiencia!del!usuario!tiene!por!objetivo!la!creación!de!productos!que!
resuelvan! necesidades! concretas! de! sus! usuarios! finales,! consiguiendo! la! mayor!
satisfacción! y! mejor! experiencia! de! uso! posible! con! el! mínimo! esfuerzo.! Para! el!
diseño! cada! decisión! tomada! debe! estar! basada! en! las! necesidades,! objetivos,!
expectativas,!motivaciones!y!capacidades!de!los!usuarios.!
!
3.4!
PROTOCOLOS!DE!COMUNICACIÓN!!
!
3.4.1! Protocolo!MIDI!(Interfaz!Digital!de!Instrumentos!Musicales)!
Este! es! un! protocolo! de! comunicación! serial! estándar,! el! cual! permite! a!
controladores,! secuenciadores,! sintetizadores,! computadores! y! otros! dispositivos!
musicales! electrónicos! comunicarse! en! red! para! compartir! información! y! generar!
sonidos!(Smith,!1970).!
3.4.1.1!
Transmisión!MIDI!
MIDI! utiliza! una! velocidad! de! transferencia! de! 31.250! Kbps,! los! mensajes! MIDI!
están!compuestos!de!10!bits!donde!se!incluye!un!bit!de!inicio!y!uno!de!parada,!los!
30
ocho! bits! restantes! son! los! más! relevantes! ya! que! contienen! la! información! del!
mensaje!MIDI!(Moreno,!2007).!
3.4.1.2!
Mensaje!MIDI!
Es!un!sistema!digital!por!lo!que!sus!valores!y!mensajes!están!representados!por!
una!serie!de!datos!de!On!y!Off,!representados!por!un!bit!y!su!valor!efectivo!solo!
podrá!ser!1!o!0!respectivamente,!para!dar!mensajes!hace!falta!agrupar!bits,!esto!
se!logra!a!través!de!un!byte!que!es!un!grupo!de!ocho!bits (Moreno,!2007).
3.4.1.2.1! Mensaje!de!nota!On/off!
Cuando!se!oprime!una!tecla!en!el!controlador,!se!emite!un!mensaje!MIDI!nota!ON!
la!primera!el!byte!de!estado!indicará!por!cual!canal!se!emitirá!el!mensaje,!seguido!
por!dos!bytes,!el!segundo!especifica!el!número!de!tecla!y!el!tercero!el!valor!de!la!
velocidad! de! la! pulsación,! el! cual! determina! que! tan! fuerte! fue! pulsada.! En! el!
momento!de!soltar!la!tecla!en!el!controlador,!se!emite!un!mensaje!MIDI!nota!OFF!
el!cual!también!lleva!byte!de!datos!que!determinará!la!nota!y!la!velocidad!con!que!
se!ha!soltado,!aunque!este!último!no!se!tiene!en!cuenta!puesto!que!se!apaga!por!
medio! del! byte! de! estado! que! en! este! caso! sería! apagado! (OFF),! (Caballero,!
2013).!
3.4.1.2.2! Mensaje!de!cambio!de!programa!
Este! mensaje! modifica! los! elementos! que! generan! sonido! dentro! de! un!
sintetizador,! se! refiere! al! cambio! del! instrumento! activo.! Con! un! byte! de!
encabezamiento!(1100)!seguido!por!el!byte!de!datos!que!determinaría!el!número!
de!programa,!se!consigue!cambiar!el!mensaje!inmediatamente.(Caballero,!2013).!
3.4.1.2.3! Mensaje!de!cambio!de!control!
Un! Cambio! de! control! permite! controlar! diversas! funciones! de! un! sintetizador,!
añadir!cambios!sutiles!a!una!interpretación,!se!incluyen!la!mayoría!de!los!controles!
de! expresión! de! sonido! como^! modulación! (es! decir,! vibrato! y! tremolo),! pedal!
31
sostenido,! pedal! celeste! entre! otros.! Estos! mensajes! tienen! un! número! ó! valor!
asignado! que! se! utilizan! en! todos! los! instrumentos! MIDI,! y! engloba! 128! posibles!
mensajes! de! control! diferentes! los! cuales! modifican! el! volumen,! la! modulación! y!!
la!reverberación!(Puig,!1997).!
3.4.1.2.4! Mensaje!de!Sistema!
Los! Mensajes! de! sistema! pueden! enviarse! independientemente! de! los! canales!
MIDI!a!los!que!haya!ajustado!los!dispositivos!emisor!y!receptor,!ya!que!se!utilizan!
para! controlar! el! sistema! MIDI! en! general,! por! ejemplo,! pueden! utilizarse! para!
sincronizar! un! secuenciador! y! una! unidad! de! ritmo! de! manera! que! toquen! al!
mismo!tiempo,!o!para!iniciar!o!parar!una!interpretación,!o!simplemente!para!evitar!
problemas!en!el!sistema!MIDI.
•! Bit!mas!significativo!MSB!(Most!significant!bit)!!
El! Bit! más! significativo! o! también! llamado! bit! de! orden! superior,! es! el! bit! que! de!
acuerdo! a! su! posición! tiene! el! mayor! valor,! usualmente! ubicado! en! la! parte!
izquierda!del!mensaje.!!Éste!solo!podrá!ser!1(negativo)!o!0(positivo).!
•! Byte!de!Datos!
Un! byte! es! el! conjunto! de! ocho! bits,! siendo! un! bit! una! unidad! mínima! de!
información! de! computadoras! donde! (0)! es! apagado! y! (1)! es! encendido^! estos!
únicamente! pueden! almacenar! dos! valores! (0)! y! (1),! ! cuyo! almacenamiento!
guarda!un!carácter!letra,!número!o!signo!especial!(Olvera,!2010).!!
3.4.1.3!
Controlador!MIDI!
Es! un! dispositivo! carente! de! sonidos! pero! es! capaz! de! interpretar! y! reproducir!
mensajes!MIDI,!por!lo!general!los!controladores!convencionales!tienen!apariencia!
de!un!teclado!musical,!tal!y!como!se!puede!observar!en!la!Imagen!(9)!,!se!pueden!
modificar! parámetros! mediante! sus! elementos! físicos! como! por! ejemplo,!
modulaciónTafinación! y! demás.! Puesto! que! son! muy! comunes! no! cuentan! con!
32
tantas! opciones! para! el! manejo! de! programas! especializados! en! bancos! de!
sonidos! como! reason! o! kontakt! los! demás! controladores! existentes! cuentan! con!
diferentes! configuraciones! previas! para! facilitar! el! manejo,! pero! el! concepto! o! la!
aplicación!es!la!misma.!Los!controladores!MIDI!cuentan!en!la!parte!posterior!con!
entrada!y!salida!MIDI!.!(Academia!unimúsica,!2014).!
#
La#imagen#muestra#el##Controlador#MIDI#convencional#
AKAI,!2012.!Controlador!MIDI!.!Teclado!controlador!de!25!teclas!con!pads!MPC.!
!
!
3.4.2! Protocolo!OSC!
OSC! (Open! Sound! Control)! es! un! protocolo! para! ! compartir! información! musical!
en! tiempo! real! sobre! una! red,! es! más! flexible! y! preciso! que! el! protocolo! MIDI,!
permitiendo!una!comunicación!a!un!nivel!superior,!debido!a!los!datos!numéricos!y!
simbólicos! en! alta! resolución,! se! pueden! enviar! mensajes! empaquetados! para!
aquellos! eventos! que! deben! ocurrir! simultáneamente.! Puede! ser! producido! por!
varios! protocolos,! pero! comúnmente! se! utiliza! el! (User! Datagram! Protocol).!!
(DidácticaTMúsica!electrónica,!2010).!
3.4.3! Protocolo!IP!!
'
El!Protocolo!de!Internet!(Internet!Protocol),!permite!el!desarrollo!y!!transmisión!de!
paquetes! de! datos! (datagramas)! bidireccionalmente,! de! un! origen! a! un! destino!
33
previamente! enlazado! o! fuera! de! conexión.! Para! transportar! dichos! paquetes!
utiliza!direcciones!numéricas!denominadas!direcciones!IP.!Los!equipos!de!una!red!
utilizan!estas!direcciones!para!comunicarse,!de!manera!que!cada!equipo!de!la!red!
tiene!una!dirección!IP!exclusiva.!(Ecured,!2015).!
!
4!
DESARROLLO!INGENIERIL!
Para! lograr! el! objetivo! planteado! en! el! presente! proyecto,! fue! necesario!
implementar!las!metodologías!de!desarrollo!de!software,!cumpliendo!eficazmente!
los! objetivos! específicos^! se! planteó! una! cadena! lógica! de! actividades! a! llevar! a!
cabo.!De!esta!forma!se!desarrolló!el!controlador!MIDI!basado!en!reconocimiento!
dactilar!a!partir!de!los!requerimientos!funcionales,!no!funcionales,!casos!de!uso!y!
la!arquitectura!de!software.!!!
!
4.1!Requerimientos!De!Usuario!
!
4.1.1! Funcionales!
!
•! Detección!de!Índice!como!cursor.!
•! Selección!y!activación!de!parámetros!por!medio!de!un!clic.!
•! Generación!de!gestos!dactilares.!
•! Configuración!de!parámetros.!
!
4.1.2! No!Funcionales!
•! API!
!
!
•! SDK!
•! Leap!Motion!
•! Computador!Mac!Book!Pro!
•! Dos!plataformas!de!programación!que!permitan:!Detección!y!registro!de!
movimientos! dactilares^! y! la! segunda,! desarrollo! de! una! interfaz! al!
usuario!
34
•! Software!de!Producción!Musical!
•! Protocolos! que! permitan! a! dispositivos! musicales! electrónicos!
comunicarse!!entre!ellos!para!compartir!información!y!generar!sonidos!
!
4.2!!CASOS!DE!USO!!
Por! medio! de! los! casos! de! uso,! se! muestran! los! requerimientos! funcionales! del!
controlador! MIDI! basado! en! reconocimiento! dactilar,! el! software! suministra! el!
cambio!de!control!y!parámetros!de!audio!que!el!usuario!requiera,!además!define!el!
procedimiento! para! trabajar! adecuadamente! la! aplicación.! En! el! gráfico! (2)! se!
observa!el!modelo!de!caso!de!uso!para!el!controlador.!
!
!
!
!
!
!
#
#
#
#
Gráfico#[2]#casos#de#uso#
#
#
35
#
Tabla#1#(Primer#Caso#de#Uso#para#el#Click)#
#
Tabla#2#(Curso#Normal#de#los#Eventos#para#el#Primer#Caso#de#Uso)#
36
#
Tabla#3#(Segundo#Caso#de#Uso#para#el#Desplazamiento#Y)#
#
Tabla#4#(Curso#Normal#de#los#Eventos#para#el#Segundo#Caso#de#Uso)#
#
#
#
37
#
Tabla#5#(Tercer##Caso#de#Uso#para#el#Desplazamiento#X)#
#
Tabla#6#(Curso#Normal#de#los#Eventos#para#el#Tercer#Caso#de#Uso)#
#
#
38
#
Tabla#7#(Cuarto##Caso#de#Uso#para#el#Desplazamiento#Z)#
#
#
Tabla#8#(Curso#Normal#de#los#Eventos#para#el#Cuarto#Caso#de#Uso)#
#
39
#
Tabla#9#(Quinto#Caso#de#Uso#para#el#Desplazamiento#Z#con#la#mano#cerrada)#
#
Tabla#10#(Curso#Normal#de#los#Eventos#para#el#Quinto#Caso#de#Uso)#
#
#
40
#
Tabla#11#(Sexto#Caso#de#Uso#para#el#Gesto#Rotacional#Knob)#
#
Tabla#12#(Curso#Normal#de#los#Eventos#para#el#Quinto#Caso#de#Uso)#
#
#
41
4.3!!ARQUITECTURA!DE!SOFTWARE!
La! arquitectura! de! software! indica! de! forma! gráfica! el! funcionamiento! del!
controlador,! especificando! la! ! estructura! de! sus! partes! y! la! interacción! entre! las!
mismas.!Ver!gráfico!(3).!!
!
!
!
!
!
!
!
!
Gráfico#(3)#Arquitectura#de#software#del#proyecto.#
#
Cuando!se!Inicia!la!aplicación!la!primera!capa,!es!decir,!el!primer!software!con!el!
que!tendrá!interacción!el!usuario!es!Unity!3D!el!cual!esta!representado!como!un!
archivo! ejecutable,! allí! el! usuario! podrá! elegir! diferentes! tipos! de! parámetros! a!
controlar!los!cuales!le!informaran!su!estado!(activo/desactivo)!a!Pure!Data,!siendo!
este! la! capa! media! con! la! que! mantiene! una! comunicación! bidireccional,! pues!
unity! le! informa! que! botón,! fader! o! knob! se! encuentra! habilitado! por! el! usuario! y!
pure! data! responde! con! la! programación! del! gesto,! Pure! data! a! su! vez! envía!
directamente! sin! necesidad! de! pasar! por! unity! el! mensaje! MIDI! al! secuenciador!
Ableton! live! quien! es! la! tercera! y! ultima! capa! de! la! arquitectura,! pues! este! es! el!
encargo!de!reproducir!el!sonido.!!
42
!
Gráfico#(4)#Diagrama#de#la#plataforma#de#desarrollo.#
#
Se!establecieron!4!etapas!para!lograr!los!objetivos!del!presente!proyecto^!éstas!se!
pueden! observar! en! el! Gráfico! (4).! Dónde! la! primera! etapa! hace! énfasis! a! la!
adquisición!de!datos!a!través!de!la!API!e!interpretación!de!los!mismos,!estos!son!
captados! por! el! sensor! tras! el! movimiento! dactilar! realizando! todo! el! proceso! de!
programación!de!los!6!gestos!y!asignación!de!efectos.!Una!segunda!etapa!orienta!
al!proceso!de!!comunicación,!haciendo!uso!del!protocolo!MIDI!para!el!control!del!
DAW!y!protocolo!OSC!para!la!comunicación!con!la!interfaz!gráfica.!En!la!tercera!
etapa! se! establecen! las! directrices! y! objetivos! tenidos! en! cuenta! al! diseñar! la!
interfaz!de!usuario!(UI).!Por!último!se!explica!todo!el!proceso!de!!implementación!
de!la!interfaz!gráfica.!
43
Comunicación
•Implementación#del#
SDK#y##la#API
•Adquisición#de#datos
• Desarrollo#del#Patch
•Programación#de#Gesos
TAdquisición'e'
Interprestación'
de'los'Datos
•Protocolo#IPiUDP
•Comunicación#
Bidireccional#con#Unityi
OSCiUDP
•Comunicación#MIDI
•Directrices#de#
UX#y#UI
•Objetivos#de#
la#Interfaz
Diseño#
UI
Implementación#
de#Interfaz#de#
Usuario
•Desarrollo#
de#la#Interfaz#
de#Usuario
•Comunicació
n#con#Pure#
Data
•Asignación#
MIDI
#
Gráfico#(5)#Diagrama#de#bloques#estructural#del#proyecto.!
!
4.4!!DESARROLLO!DE!SOFTWARE!
!
!
4.4.1! Adquisición!e!Interpretación!de!los!Datos!!
4.4.1.1! Implementación! del! SDK! y! API! para! la! Adquisición! de! los!
Datos.!!
Para! el! desarrollo! del! software! se! hizo! uso! del! SDK! que! contiene! la! librería!
requerida!para!el!entorno!de!programación!Pure!Data.!!Así!mismo!!se!utilizó!la!API!
de! Leap! Motion! para! Pd! obteniendo! la! información! de! identidad,! posición! y!!
dirección! de! los! dedos! y! manos! como! se! muestra! en! el! diagrama! de! clases,!
gráfico!(5).!!
44
De!esta!manera!serán!requeridos!únicamente!los!módulos!Hand!donde!determina!
toda!la!información!referente!a!la!mano!y"Finger(Point)"que!a!su!ves!lo!realiza!para!
los! dedos! de! cada! mano," y! así" adquirir! la! información! previamente! descrita,!
indicando!adicionalmente!el!número!de!dedos!ubicados!en!el!campo!de!acción!del!
Leap!Motion,!siguiendo!el!modelamiento!interno!de!la!mano.!!
!
Gráfico#(6)#Diagrama#de#Clases#UMLaImplementación#del#API#“Leap#Motion”#
4.4.1.2!
Funcionamiento!de!la!API!
!
Dentro! de! Pure! Data! se! implementó! la! caja! denominada! Leap! Motion,! contiene!
todo! el! proceso! de! modelamiento! y! desarrollo! para! la! adquisición! de! los! datos,!
segmentando!el!!brazo!en!cuatro!regiones!importantes:!Antebrazo,!mano,!huesos!
y!dedos!representado!en!la!API!como!clases!ver!imagen!(9).!!
!
45
!
Imagen#(9)#Segmentación#del#brazo#y#la#mano#por#módulos."
Para! representar! la! captura! de! imagen! de! las! cámaras! CCD! del! Leap! Motion! se!
define! la! clase! Image,! donde! se! realiza! el! proceso! de! calibración! automático!
definiendo! una! cuadricula! de! 64! x! 64! puntos,! esto! mediante! la! función!
bytesPerPixel()." Cada! punto! representa! un! rayo! proyectado! en! la! cámara,! este!
rayo!está!compuesto!por!valores!de!luminancia!los!cuales!permiten!la!definición!de!
cada! pixel! en! la! cuadricula! de! puntos,! se! puede! encontrar! el! valor! del! brillo! para!
cualquier!rayo!proyectado!por!medio!de!la!interpolación!entre!los!puntos!de!datos!
de! la! cuadricula.! Los! rayos! proyectados! en! la! cámara! ingresan! con! una! escala!
amplia!que!debe!ser!reducida,!debido!a!que!la!escala!por!defecto!proyecta!rayos!
que!se!ubican!fuera!del!mapa,!generando!imprecisiones!en!el!sistema!de!captura.!!
!
Debido! a! la! existencia! de! dos! sensores! de! captura,! se! otorga! a! cada! uno! su!
respectiva! identificación,! donde! se! establece! un! ID! 0! para! las! imágenes!
pertenecientes! a! la! cámara! izquierda! a! través! de! la! función! int_32" id(),! aquellas!
con!un!ID!1!son!las!pertenecientes!a!la!cámara!derecha,!esto!siempre!y!cuando!el!
dispositivo! se! encuentre! ubicado! correctamente,! es! decir! con! el! LED! verde!
apuntando!hacia!el!usuario.!
!
46
La! encargada! de! verificar! que! el! dispositivo! esté! conectado! físicamente! y!
proporcionar! el! ID! correspondiente! a! cada! cámara,! el! campo! de! visión! con!
respecto! al! dispositivo,! la! posición! y! orientación! en! coordenadas,! es! la! clase!
Device.! Utilizando! esta! información,! se! calcula! la! distancia! entre! la! posición! de!
entrada! y! la! pared! más! cercana,! definiendo! una! vista! volumétrica! la! cual! está!
representada! por! una! pirámide! invertida! alineada! en! eje,! tomando! el! punto! de!
origen!desde!el!centro!del!dispositivo.!
!
Imagen#(10)#Vista#Volumétrica#de#la#API#del#Leap#Motion.#
!
Con!el!propósito!de!intercambiar!la!información!entre!clases!se!establece!la!clase!
Listener,! indicando! cambios! de! eventos! y! si! el! Leap! Motion! se! encuentra!
conectado! para! comenzar! a! recibir! frames! de! datos.! Todas! las! funciones! deben!
estar!comunicadas!con!la!clase!Frame!la!cual!es!la!base!de!ésta!API^!informando!
en! cada! frame! por! segundo! todos! los! cambios! de! posición,! orientación! y!
movimiento! ocurridos! en! el! campo! de! acción! del! Leap! Motion.! Éstos! cambios! se!
capturan!mediante!la!clase!Vector,!donde!se!puede!determinar!la!dirección!lineal!
y/o!rotacional!de!los!vectores,!a!través!del!método!de!la!regla!de!mano!derecha,!el!
cual! consiste! en! utilizar! el! dedo! pulgar,! índice! y! corazón.! Para! determinar! la!
ubicación!en!el!plano!cartesiano,!como!se!observa!en!la!imagen!(12).!
!
47
!
La#imagen#muestra#la#regla#de#la#mano#derecha"
La! clase! Vector! se! encuentra! directamente! relacionada! con! las! clases! que! se!
establecieron! para! hacer! el! modelamiento! del! brazo! humano! como! está!
representado!en!la!Imagen!(10),!dónde!los!huesos!de!todo!el!brazo!se!representan!
por! medio! de! clase! Bone.! Cada! vector! se! asocia! a! un! hueso! para! determinar! la!
orientación!de!éste,!analizándolo!en!los!tres!ejes.!Se!tomó!principalmente!el!punto!
medio!del!hueso!distal,!para!esto!se!estableció!la!función!Vector_center(),!y!para!
obtener! la! dirección! de! la! base! del! hueso! hacia! la! punta,! la! función!
Vector_direction().!!
Esta!información!será!transmitida!a!las!clases!hand!y!finger,!para!crear!los!dedos!
que!consecuentemente!se!utilizarán!para!la!construcción!de!la!mano.!La!posición!
del! dedo! se! determinará! a! partir! de! la! información! de! los! 3! huesos! que! lo!!
componen,!ordenándolo!desde!la!base!hasta!la!punta!indexado!de!0!a!2^!éste!es!
construido! a! partir! de! la! unión! de! esos! vectores,! formando! una! matriz! que!
determina!la!orientación!del!dedo.!!
Para!la!construcción!de!la!mano,!se!toman!los!valores!adquiridos!por!los!dedos!y!
adicionalmente!los!vectores!para!la!normal!de!la!palma,!la!cual!está!definida!por!
una!matriz!de!3!ejes.!
!
48
!
"
La!imagen!muestra!!Normal!de!la!palma!
Leap!Motion,!developer!portal.!Motion!tracking!data.!
!
!
4.4.1.3!
Desarrollo!del!Patch!
!
4.4.1.3.1! Calibración!de!altura!de!Interacción!!
Es!necesario!realizar!un!proceso!de!calibración,!de!tal!forma!que!las!distancias!y!
velocidades! registradas! se! acerquen! a! la! realidad.! Los! sensores! deben! estar!
posicionados! sobre! el! eje! X,! y! se! debe! seleccionar! la! opción! de! “Altura" de"
Interacción" Automática”! para! que! el! dispositivo! sea! capaz! de! regular!
automáticamente!la!cantidad!de!luz!que!ingresa!a!los!sensores,!como!se!muestra!
en!la!Imagen!(13).!
En!el!caso!de!no!querer!implementar!la!interacción!automática,!se!puede!regular!
la!altura!de!funcionamiento!que!varía!desde!25!hasta!300!mm!aproximadamente,!
por!encima!del!dispositivo.!
49
!
!
Imagen#(13)#Calibración#Altura#de#Interacción#Leap#Motion#–#Automática!
!
!
4.4.1.3.2! Identificación!de!Mano!Izquierda!y!Derecha!!
!
El!firmware!del!Leap!Motion!crea!un!punto!de!referencia!central!de!la!mano!en!un!
plano! bidimensional! para! identificar! los! 5! dedos:! pulgar,! índice,! medio,! anular! y!
meñique!(imagen!14).!Donde!Point0!siempre!será!el!dedo!pulgar!y!Point4!el!dedo!
meñique.!
!
!
!
50
!
!
#
Imagen#(14)#Nomenclatura#Puntos#de#la#Mano#sobre#plano#bidimensional.!
!
La! adquisición! de! datos! de! la! mano! establece! como! referencia! una! matriz! base!
que!está!definida!por!tres!ejes^!donde!el!eje!X!es!positivo!en!la!dirección!del!dedo!
meñique! para! la! mano! derecha,! por! consiguiente,! el! Leap! Motion! no! podrá!
identificar! ni! analizar! los! datos! de! la! mano! izquierda,! puesto! que! el! eje! X! es!
positivo!en!dirección!hacia!el!pulgar.!Esto!se!presenta!cuando!se!ingresa!una!sola!
mano! al! campo! de! acción,! con! lo! cual! la! API! no! podría! diferenciar! la! mano!
izquierda! de! la! derecha.! Para! identificar! cada! mano,! fue! necesario! diseñar! el!
módulo! de! separación! de! información,! enviando! los! datos! de! control! relevantes!
entre!los!que!se!encuentran:!Dirección!de!las!falanges!distales!en!el!eje!X!de!los!
dedos!meñique!y!pulgar,!posición!normal!de!la!palma!y!dirección!de!la!misma!en!
los!tres!ejes.!Con!esto!se!logró!trabajar!las!manos!como!variables!independientes!
y!programar!gestos!para!cada!mano. !
51
!
Figura#(1)#Exportación#datos#de#control#relevantes#fuera#del#lienzo#en#Pd!
Una!vez!se!pueden!manipular!los!datos!de!forma!independiente,!se!crea!una!clase!
denominada! Left/Right! la! cual! tiene! por! objeto! determinar! qué! mano! está! siendo!
ingresada!por!el!Usuario.!La!identificación!de!mano!derecha!o!izquierda!se!logra!a!
partir! de! dos! condicionales,! estos! consisten! en! el! análisis! de! la! dirección! que!
toman! las! falanges! distales! tanto! del! pulgar! como! del! meñique.! El! parámetro!
determina! que! la! mano! es! derecha! cuando! la! punta! del! dedo!pulgar,! es! decir,! la!
falange! distal! tiene! valores! negativos,! pues! se! encuentra! en! el! dominio! negativo!
del!plano!trazado!sobre!el!centro!de!la!mano.!La!punta!del!meñique!toma!valores!
positivos! y! ocurre! lo! mismo! con! la! mano! izquierda,! de! esta! manera! se! puede!
asegurar!el!reconocimiento!correcto!de!cada!mano!como!se!puede!observar!en!la!
Figura!(2).!
52
!
Figura#(2)#Programación#Diferencia#Mano#Derecha#de#Izquierda#
!
4.4.1.4!
Programación!de!gestos
Para! el! desarrollo! de! este! proyecto! fue! necesaria! la! creación! de! 6! gestos,! que!
obedecieron!a!los!parámetros!de!diseño!e!interacción!con!el!usuario!y!así!ofrecer!
una!experiencia!de!control!intuitiva.!A!continuación!se!describen!los!gestos!para!la!
utilización!del!controlador.!
!
53
!
4.4.1.4.1! Gestos!de!desplazamiento!por!ejes,!con!mano!abierta!
El! desarrollo! de! los! tres! primeros! gestos! fue! realizado! con! base! a! la! estructura!
física!de!un!potenciómetro!deslizable!(Fader)!,!por!lo!que!el!desplazamiento!de!la!!
mano! en! cada! eje! es! análogo! al! desplazamiento! del! fader,! es! decir,! que! el!
posicionamiento! de! la! mano! es! de! un! extremo! a! otro! según! el! eje! que! este!
asignado,!generando!un!movimiento!lineal!para!cada!gesto,!permitiendo!a!usuario!
asignar! hasta! 6! movimiento! de! fader! con! ambas! manos.! De! esta! manera,! el!
desarrollo!de!la!separación!de!mano!derecha!e!izquierda,!permite!que!el!usuario!
ingrese! las! dos! manos! en! el! campo! de! acción,! y! así! controlar! 6! diferentes!
parámetros!mediante!MIDI,!donde!se!asignan!3!para!mano!derecha!y!3!para!mano!
izquierda.!A!través!de!un!algoritmo!como!el!que!se!muestra!en!la!Figura!(3)!
Para! obtener! estos! parámetros! es! necesario! realizar! un! escalamiento! de! los!
valores!entregados!por!la!API,!y!así!lograr!una!variación!de!datos!en!un!rango!de!
0!a!127,!el!cual!es!necesario!para!realizar!la!comunicación!con!el!DAW!a!través!
del!protocolo!MIDI!
Una!vez!se!establece!la!escala!de!0!a!127!en!los!datos!de!los!gestos!entrantes,!se!
ejecuta! la! clase! declarada! anteriormente! Left/Right,! el! cual! identifica! si! la! mano!
ingresada!es!derecha!o!izquierda.!Al!activarse!una!sección!con!la!mano!derecha,!
izquierda! o! ambas.! Estos! datos! se! van! a! enrutar! de! tal! manera,! que! ejecute! un!
mensaje! particular! para! cada! mano! y! lo! enlace! a! un! mensaje! MIDI.! Al! no! haber!
una!activación!de!alguna!de!las!dos!manos!no!va!a!realizar!ninguna!acción.!!
54
Figura#(3)#Algoritmo#“programación”#de#Gestos#en#X,Y#y#Z!
4.4.1.4.2! Gesto!de!puño!de!cerrado!en!el!eje!Z!
El!cuarto!gesto!se!diseñó!con!el!fin!de!simular!una!acción!que!implique!generar!un!
movimiento! con! fuerza.! El! algoritmo! consiste! en! una! variación! de! posición! de! la!
palma!en!el!eje!Z!es!decir!profundidad,!se!logra!mediante!un!condicional!que!solo!
este! activo! cuando! el! usuario! empuñe! la! mano,! es! decir,! cuando! detecte! una!
mano! con! los! dedos! recogidos! en! forma! de! puño,! estableciendo! que! la! cantidad!
de!dedos!que!recibe!el!Leap!Motion!debe!ser!igual!a!cero.!Si!es!así,!el!condicional!
permite!el!paso!de!datos.!
!
!
55
4.4.1.4.3! Gesto!rotacional!
Este! gesto! fue! definido! como! una! rotación! de! la! mano! en! el! eje! Y,! se! definió!
pensando! en! las! directrices! de! diseño! de! UX! y! dentro! del! esqueumorfismo!
(representación! de! un! objeto! físico! a! uno! virtual)! de! girar! una! perilla! real! en! un!
dispositivo! de! control.! Es! decir,! representar! el! objeto! Knob! utilizado! en!
controladores!tangibles,!en!una!interfaz!gráfica.!
La!variación!en!dirección!para!el!dedo!Pulgar!en!el!eje!Y,!es!la!propiedad!usada!
para!la!implementación!de!este!gesto.!El!rango!posible!de!este!valor!va!desde!T1!
hasta! 1,! lo! que! permite! una! resolución! aceptable! en! el! escalamiento! necesario!
para!la!codificación!MIDI.!
!
Figura#(4)#Gesto#rotacional#knob!
56
4.4.1.4.4! Gesto!selección!y!ejecución!
Para!implementar!el!concepto!de!un!botón!que!actúe!como!switch!y!obedeciendo!
a!valores!de!encendidoTapagado,!se!toma!el!concepto!del!esqueumorfismo!para!la!
creación!de!los!gestos.!Se!realizó!entonces!un!modelo!que!es!similar!a!la!acción!
de!un!botón!el!cual!aprovechó!el!atributo!de!la!posición!de!la!palma!en!el!eje!Z!y!
de! esta! manera! controlar! un! cursor! que! sería! la! herramienta! de! control! digital.!
Para! accionar! los! botones! virtuales,! éstos! deben! ir! acompañados! por! una! regla!
que!determine!el!número!de!dedos!presentes,!el!cual!debe!ser!igual!a!1!para!llevar!
a!cabo!el!funcionamiento.!Su!algoritmo!se!presenta!en!la!Figura!(5)!
!
Figura#(5)#Algoritmo#del#cursor#
!
57
4.4.2! COMUNICACIÓN!!
Para! la! comunicación! entre! los! elementos! del! proyecto,! fue! necesaria! la!
implementación!de!dos!protocolos!de!comunicación!los!cuales!fueron!OSC!y!MIDI,!
protocolos!que!son!utilizados!por!los!software!implementados!en!el!desarrollo.!
4.4.2.1!
Comunicación!con!Unity!
En! el! análisis! de! diferentes! entornos! de! programación! para! el! desarrollo! de! la!
interfaz!de!usuario,!se!llegó!a!la!conclusión!de!utilizar!Unity!3D.!Debido!a!la!gran!
cantidad! de! herramientas! que! posee! para! el! desarrollo! visual! y! fácil! integración!
con!múltiples!plataformas!de!control!y!protocolos!de!comunicación.!
Para! la! conexión! entre! Pure! Data! y! Unity,! se! necesitó! una! conexión! mediante!
protocolo! de! comunicación! en! Red! UDP,! creando! puertos! virtuales! dentro! del!
sistema!operativo!para!la!comunicación!bidireccional!ilustrada!en!la!Figura!(6).!!
4.4.2.2!
Comunicación!mediante!UDP!
El!User!Datagram!Protocol!(UDP)!es!un!protocolo!del!nivel!de!transporte!basado!
en!el!intercambio!de!datagramas.!Permite!el!envío!de!datos!a!través!de!la!red!sin!
que!se!haya!establecido!previamente!una!conexión,!el!propio!datagrama!incorpora!
la!información!de!direccionamiento!en!su!cabecera.!Tampoco!tiene!confirmación!ni!
control!de!flujo,!por!lo!que!los!paquetes!pueden!adelantarse!unos!a!otros.!
Para!la!conexión!entre!!Pure!Data!y!Unity!mediante!UDP!fue!necesaria!la!creación!
de!un!puerto!de!salida!y!uno!de!entrada!en!ambos!entornos,!para!él!envió!OSC!de!
los!valores!codificados!provenientes!de!los!gestos,!que!controlarán!la!interfaz!de!
usuario! y! esta! a! su! vez,! enviará! los! datos! de! control! para! la!
activación/desactivación!de!los!efectos!enviados!al!DAW.!
La! conexión! entre! aplicaciones! se! logra! conectando! el! puerto! de! salida! de! Pure!
Data! mediante! la! caja! udpsend! Figura! (6),! la! cual! envía! bytes! mediante! una!
conexión!UDP!hacia!Unity!con!la!información!de!los!valores!de!gestos,!posición!de!
58
cursor! y! estado! de! click.! Para! la! recepción! de! datos! provenientes! de! Unity! se!
utiliza!otro!puerto!el!cual!recibe!la!información!usando!la!caja!netreceive!Figura![8],!
la!cual!abre!un!socket!para!la!recepción!en!red!de!UDP,!permitiendo!así!que!Pure!
Data! conozca! la! activación! o! desactivación! de! los! canales! de! efectos!
seleccionados!por!el!usuario,!directamente!en!la!UI.!!
!
Figura#(6)#Comunicación#Bidireccional#PdaOsc#a#través#de#UDP#
#
4.4.2.3!
Comunicación!mediante!OSC!!
Una!vez!establecidos!los!canales!de!comunicación!por!red,!se!debe!generar!el!bus!
que!contendrá!los!datos!de!OSC!para!el!control!de!la!UI,!esto!fue!posible!creando!
un!bus!que!contuviera!todos!los!mensajes!enviados!a!la!UI.!!
59
Creando! el! bus! de! datos! denominado! 'packOSC'! Figura! (6),! se! tiene! en! una!
misma! ubicación! de! todos! los! datos! relevantes! para! el! envío^! posteriormente! se!
hace!uso!de!la!caja!packOSC!que!envía!una!lista!de!valores!que!ingresan!a!la!caja!
de! comunicación! UDP! udpsend.! Igualmente,! para! la! recepción! de! información!
desde!Unity!es!necesario!recibir!los!datagramas!del!puerto!especificado.!Debido!a!
que! están! todos! los! mensajes! sin! orden! en! el! bus,! se! enrutan! en! orden! para!
ejercer!el!control.!La!caja!routeOSC!en!Pure!Data,!se!emplimentó!para!recibir!los!
datagramas! de! netreceive! y! rutear! los! mensajes! de! OSC! dependiendo! de! los!
argumentos,! de! esta! manera! se! reciben! múltiples! parámetros! simultáneamente!
por!el!mismo!puerto.!Los!argumentos!en!la!caja!routeOSC!son!los!nombres!de!los!
valores!a!separar!en!los!mensajes!entrantes.!!
!
4.4.2.4!
Comunicación!MIDI!!
!
Una! vez! finalizadas! las! conexiones! entre! el! patch! y! la! UI,! es! necesario!
implementar! un! canal! de! comunicación! con! el! DAW.! Para! este! propósito! se! hizo!
uso!del!objeto!'ctlout'!que!envía!mensajes!de!control!al!puerto!MIDI!establecido!en!
Pure! Data! de! manera! que! solo! se! requieren! tres! argumentos! para! hacer! el!
empaquetamiento! de! bytes! MIDI! para! ser! recibidos! por! el! DAW^! los! tres!
argumentos!son:!valor!de!control,!número!de!control!y!canal!de!control!Figura!(7).!
El! valor! de! control! de! la! salida! ha! sido! previamente! escalado! permitiendo! una!
resolución!de!128!valores.!!
La!comunicación!MIDI!permite!seleccionar!números!de!control!para!cada!gesto!en!
cada!mano,!izquierda!y!derecha,!de!esta!manera!el!envío!de!mensajes!de!control!
MIDI!son!8!mensajes!diferentes!que!controlarán!8!parámetros!estilo!!
60
!
!
Figura#(7)#Envió#Mensajes#de#Control#MIDI#–#Argumentos#
#
4.4.3! DISEÑO!!INTERFAZ!GRÁFICA!UI!!!
El! proceso! de! diseño! se! realizó! una! vez! la! programación! y! la! funcionalidad!
estuvieron!definidas.!El!objetivo!se!enfocó!en!desarrollar!una!interfaz!de!usuario,!
donde! éste! interactuara! intuitivamente.! Por! ende! al! realizar! las! respectivas!
investigaciones! de! los! tipos! de! interfaces! gráficas! (GUI),! se! decide! plasmar! un!
diseño! basado! en! una! interfaz! Natural! de! Usuario! (NUI),! es! decir,! basada! en! un!
diseño!dónde!no!se!requiere!utilizar!sistemas!de!mando!o!dispositivos!de!entrada!
(como!mouse!o!teclado),!si!no,!a!través!de!movimientos!naturales!basados!en!el!
reconocimiento! dactilar,! generando! cambios! de! control! ! sonoros! en! la! UI.! Para!
ellos! se! tienen! en! cuenta! algunas! directrices! UI,! UX! y! los! objetivos! finales! de! la!
interfaz.!
61
4.4.3.1!
Directrices!UI!y!UX:!!
!
De!estas!directrices!depende!la!mayor!o!menor!facilidad!a!la!hora!de!utilizar!
el! controlador,! siendo! la! interfaz! gráfica! lo! más! importante.! Las! directrices!
establecidas!fueron:!
!
"! Lograr!que!el!esfuerzo!del!usuario!sea!el!mínimo!requerido!
"! Cada! decisión! tomada! debe! ser! basada! en! las! necesidades,!
objetivos,!!expectativas,!motivaciones!y!capacidades!de!los!usuarios.!!
"! Se! recomienda! implementar! un! manual! de! Instrucciones! con!
información!clara!y!sencilla.!
"! Se! deben! manejar! gestos! naturales,! brindando! mayor! facilidad! y!
rapidez.!
"! Generar! retroalimentación! para! el! usuario,! tanto! en! la! parte! sonora!
como!visual.!
"! Se! requiere! implementar! un! modelamiento! en! la! pantalla! que! sea!
funcional!y!!no!instructivo.!
"! Dar! uso! al! concepto! del! esqueumorfismo,! implementando! un! cursor!
como! herramienta! de! control! digital,! para! accionar! los! botones!
virtuales!
!
4.4.3.2! DESARROLLO!DEL!DISEÑO!!
Para! el! desarrollo! de! la! interfaz! se! dividió! la! pantalla! en! 2! partes! como! se!
representa! en! la! Imagen! (15),! donde! el! usuario! obtuviera! una! retroalimentación!
visual,! es! decir,! en! la! pantalla! se! realiza! la! animación! de! la! mano,! la! cual!
representa! digitalmente! el! movimiento! y! gesto! que! está! realizando! el! usuario,! de!
tal! forma! cuando! el! usuario! genere! un! incremento! de! nivel! tras! un! movimiento!
dactilar,!se!incrementará!visualmente!el!nivel!del!color!en!la!animación,!obteniendo!
una!relación!entre!el!brillo!del!color!y!la!intensidad!del!efecto.!En!la!Imagen(16)!se!
observa! cómo! con! la! mano! izquierda! se! mantiene! el! nivel! en! un! 100%! y! con! la!
derecha!el!nivel!está!en!0%.!
62
!
Imagen#(15)#Diseño#Gráfico#de#la#Interfaz#"
!
!
La! segunda! parte! se! enfoca! en! la! retroalimentación! sonora! ! y! asignación! de!
efectos! a! los! gestos! establecidos.! El! usuario! estaría! en! capacidad! de! observar!
como!debe!ubicar!su!mano!y!que!movimiento!debe!realizar!para!generar!el!tipo!de!
efecto! sonoro! deseado,! por! ejemplo:! Al! ir! elevando! la! mano! se! incrementará! el!
nivel!sonoro.!
63
!!
Imagen#(16)#Retroalimentación#Visual###
Para! la! elección! de! los! parámetros! que! puede! activar! o! desactivar,! se! pensó! en!
representar! digitalmente! el! objeto! Cursor! dándole! vida! al! concepto! del!
esqueumorfismo,! logrando! un! modelo! similar! a! la! acción! de! un! botón.! Esto! seria!
de!fácil!recordación!y!manipulación!para!el!usuario.!!
Imagen#(17)#Selección#Cursor!
64
!
4.4.4! IMPLEMENTACIÓN!INTERFAZ!DE!USUARIO!EN!UNITY!
Una! vez! hecho! el! diseño! gráfico! de! la! interfaz,! éste! fue! llevado! al! entorno! de!
programación! Unity^! para! esto! lo! primero! fue! apartar! los! elementos! estáticos! de!
los! interactivos.! Los! elementos! estáticos! se! ajustan! al! diseño! requerido! y! los!
dinámicos!se!programan!para!obtener!un!comportamiento!demandado,!el!cual!se!
explicará!más!adelante!en!detalle.!
Notando! que! los! elementos! del! diseño! se! pueden! agrupar,! se! abordó! el! primer!
grupo! de! elementos:! Las! imágenes! estáticas.! Estas! imágenes! se! ajustaron! a! los!
tamaños! establecidos! en! el! diseño,! dichos! tamaños! y! especificaciones! se!
configuraron!en!los!componentes!iniciales!de!Unity,!como!lo!fueron:!la!cámara!y!el!
canvas,!el!cual!se!refiere!a!la!imagen!de!fondo.!!
Usando! las! imágenes! estáticas! como! referencia! para! posicionar! los! elementos!
interactivos,! se! tomó! cada! uno! usando! la! implementación! ofrecida! por! los!
componentes!de!Unity,!inicialmente!los!sliders.!Cada!uno!de!los!8!sliders!pueden!
ser! modificados! tanto! en! aspecto! como! en! comportamiento,! por! lo! tanto! se!
ajustaron! al! diseño! y! se! modificaron! hasta! tener! los! valores! y! apariencia!
necesarios.!
Existen!componentes!que!deben!responder!a!los!cambios!de!estos!sliders,!como!
lo!son!por!ejemplo!las!manos!animadas!en!la!parte!izquierda!de!la!interfaz,!éstas!a!
medida! que! se! incrementa! el! nivel! del! slider! su! tamaño! y! color! también! se! van!
intensificando,! de! la! misma! manera! el! texto,! indicando! el! porcentaje! que! ha!
elevado!o!disminuido!el!nivel.!
!
Unity! ofrece! dentro! de! las! configuraciones! del! componente! Slider! una! lista!
modificable!de!objetos!llamada!OnValueChanged,!que!permite!que!este!grupo!de!
objetos! sea! notificado! del! cambio! en! el! valor! del! slider.! Cada! grupo! de! 4! Sliders!
genera!4!movimientos!de!la!mano,!lo!que!significa!que!las!imágenes!dinámicas!de!
las! manos! deben! estar! en! la! lista! de! función! OnValueChanged! para! el! slider!
correspondiente! y! así! finalmente! asignar! el! comportamiento! respectivo! de!
65
movimiento! y! color.! Se! visualiza! el! valor! actual! de! los! sliders! en! porcentaje!
mediante!el!componente!Text!que!ofrece!Unity,!los!cuales!se!establecieron!de!la!
clase!TextDisplay!permitiendo!establecer!el!cambio!de!los!textos!sobre!las!barras!
que!indican!su!valor.!
Las! imágenes! de! las! manos! que! reproducen! varias! animaciones,! deben! habilitar!
también! el! uso! de! un! cursor! indicador! que! ayude! al! usuario! a! seleccionar! los!
botones! o! perillas,! la! clase! HandCursor! es! usada! para! el! control! del!
comportamiento! de! esta! imagen! que! se! empleó! como! cursor,! tanto! para! su!
posición! como! para! intercambiar! el! estado! de! la! mano! entre! la! animación! del!
efecto! y! el! modo! cursor.! Esta! clase! cuenta! con! el! método! “CountStatic”! que!
permitió! calcular! el! tiempo! transcurrido! sin! mover! el! cursor.! El! método! “Moved”!
que! es! llamado! en! cada! movimiento! del! cursor,! los! métodos! “MoveToX”! y!
“MoveToY”! llamados! por! los! objetos! SlidersCursor! son! una! pareja! de! Sliders!
auxiliares!que!fueron!utilizados!para!usar!el!valor!actual!de!estos!como!la!posición!
del! cursor! en! X/Y.! La! relación! gráfica! de! todas! estas! clases! y! sus! respectivas!
funciones!se!puede!observar!en!la!Figura!(8).!
!
!
!
!
!
!
!
Figura#[8]#Representación#Diagrama#de#Clases##
#
66
Para!establecer!las!posiciones,!escala!y!tono!de!las!animaciones!de!cada!uno!de!
los! gestos! se! hizo! uso! de! la! clase! GestoEffect,! en! donde! se! encuentran! las!
imágenes! de! las! manos.! Ésta! clase! contiene! los! métodos! "EffectOne",!
"EffectTwo",!"EffectThree"!!y!"EffectFour".!Estos!métodos!fueron!accedidos!por!los!
Sliders! agregando! las! imágenes! de! las! manos! a! la! lista! “OnValueChanged”! de!
cada!uno!de!los!Sliders.!Se!programó!del!tal!manera!que!al!cambiar!la!disposición!
de!la!mano!y!realizar!el!gesto!del!cursor!la!interfaz!mostrara!la!imagen!que!tiene!
por! nombre! “handRigthCursor”,! de! la! clase! CursorPoint,! que! fue! usada! para! el!
comportamiento! del! indicie! en! la! selección! de! los! controles.! Ésta! clase! contiene!
los! métodos! propios! de! Unity! “OnTriggerStay2D”! que! indica! la! selección! o!
activación!del!botón!y!“OnTriggerExit2D”!indica!la!!desactivación!del!mismo.!Esto!
se! generó! debido! al! componente! colisionador! collider2D! cuando! entra! o! deja! de!
hacer! contacto! con! otro! Collider2D,! como! se! observa! en! la! Figura! [14].!
Adicionalmente! en! esta! clase! se! implementó! el! método! “MyToggle”! que! es!
llamado!desde!el!componente!de!comunicación!cuando!recibe!un!evento!de!click.
Figura#(9)##componente#colisionador#collider2D!
Se! tiene! como! background! o! fondo! las! imágenes! de! las! manos! una! animación!
adicional.!Esta!se!estableció!del!tamaño!del!canvas^!este!background!fue!tomado!
de! la! clase! SpriteSequence! la! cual! controla! su! reproducción! en! secuencia! de!
sprites!a!un!fps!requerido.!
67
Seguidamente,! se! crearon! los! componentes! Toggle! ofrecidos! por! Unity! con! el!
propósito! de! controlar! la! activación! de! los! efectos,! este! componente! ya! incluía!
transiciones! para! intercambiar! o! deshabilitar! su! imagen! de! acuerdo! al! estado! de!
activación.! Los! objetos! toggle! creados! son! complementados! añadiendo! el!
componente! “BoxCollider2D”,! esto! para! que! sean! detectados! por! el! cursor!
controlado!por!el!usuario.!
De! forma! similar! a! los! toggle,! se! diseñaron! controles! a! manera! de! perilla! para!
efectos!de!sonido!adicionales.!Estas!perillas!fueron!agregadas!a!la!interfaz!usando!
de!nuevo!el!componente!Image!que!ofrece!Unity,!puesto!que!éstas!tienen!también!
un!comportamiento!de!activación!para!habilitar!o!no!su!movimiento^!una!capa!de!
fondo! que! compone! la! perilla! es! de! la! clase! PotCollider.! Esta! clase! permitió!
controlar!el!comportamiento!de!colisión!de!las!perillas!con!el!cursor!mediante!los!
métodos! que! Unity! ofrece! como! “OnTriggerEnter2D”! y! ! “OnTriggerExit2D”,!
mencionados! anteriormente,! para! identificar! los! momentos! en! los! que! el! usuario!
está!seleccionando!estos!elementos.!
Las!imágenes!de!las!perillas!pertenecen!a!la!clase!Rotating!y!TogglePot.!Mediante!
la!clase!Rotating!se!asignó!el!comportamiento!de!la!imagen!que!permitió!rotar!al!
mover! la! perilla,! esta! clase! tiene! el! método! “RotateZ”! que! recibe! el! valor! de! un!
slider!auxiliar!asociado!a!cada!perilla!y!lo!convierte!en!rotación.!Mediante!la!clase!
TogglePot!se!estableció!un!comportamiento!similar!al!del!componente!Toggle!que!
brinda! el! software! Unity^! este! permitió! asignar! un! estado! y! una! transición! de! la!
imagen!asociada!a!dicho!estado.!
4.4.4.1!
COMUNICACIÓN!UNITY^PD!
En!cuanto!a!la!comunicación!de!Unity,!así!como!en!PureData!se!importó!la!librería!
mrPeach! para! el! PackOSC.! Para! esto! fue! necesario! importar! una! librería! que!
empaquetara!los!datos!de!envío!en!protocolo!OSC.!!Las!clases!UnityOSCListener!
y! UDPSend! contienen! los! métodos! para! efectuar! el! envió! y! recepción! de! datos,!
estos! se! comunican! con! los! demás! objetos! de! la! interfaz! para! informar! de! los!
comandos! solicitados! por! el! usuario.! Las! clases! UnityOSCListener! y!!
68
UnityOSCReceiver! ! permitieron! obtener! por! el! puerto! establecido,! todos! los!
mensajes^! habilitaron! el! acceso! a! esta! información! por! medio! del! método!
“OSCMessageReceived”! y,! direccionando! esta! información! al! método! “process”,!
se!delegaron!los!eventos!a!efectuar,!dentro!de!los!cuales!está,!el!movimiento!de!
los! sliders! con! el! método! “ChooseEffect”,! la! posición! del! cursor! con! el! método!
“ReadCursor”,!!los!gestos!de!click!ocurridos!con!el!método!“PressClick“!y!el!control!
de!volumen!en!las!perillas!con!el!método!“ReadRot”.!Esta!clase!tuvo!los!atributos,!
es!decir,!todas!sus!variables!de!clase!fueron!referenciadas!a!los!otros!objetos!de!
la! interfaz! para! poder! acceder! a! sus! funciones! y! poder! procesar! los! eventos!
necesarios,! ya! sea! reproducir! un! efecto! con! los! sliders,! posicionar! la! imagen! del!
cursor,! notificar! ! que! ocurrió! un! click! o! reproducir! el! giro! de! una! perilla.! Por! otro!
lado,! se! hizo! uso! de! la! clase! UDPSend,! la! cual! permitió! conectarse! al! puerto! de!
envío!y!usar!el!protocolo!UDP!para!retornar!información!a!PureData.!
Posteriormente!se!creó!el!objeto!“Comunicación”!el!cual!es!de!la!clase!UDPSend!,!
de! esta! forma! se! permitió! agregar! el! objeto! Comunicación! a! la! lista!
“OnValueChanged”! de! cada! uno! de! los! Toggles! para! que! accedieran! al! método!
“sendString”!y!así!notificar!y!enviar!a!PureData!que!el!Toggle!respectivo!cambiaria!
de!valor!o!estado,!como!se!detalla!en!la!figura!(10)!
Figura#(10).#Diagrama#de#clases#Comunicación#UnityaPd#
69
4.4.4.2!
ASIGNACIÓN!MIDI!!
Para!la!asignación!de!cambios!de!control!de!cada!parámetro!implementado!en!la!
interfaz!gráfica,!se!utiliza!el!software!de!edición!musical!Ableton!Live™.!!En!este!
proceso! se! debe! tener! en! cuenta! un! procedimiento! de! configuración! y! luego! la!
asignación!
Para!configurar!los!mensajes!MIDI!en!el!Ableton,!es!necesario!ingresar!al!modo!de!
edición!MIDI!como!se!observa!en!la!Imagen!(18),!donde!se!asignarán!los!cambios!
de! control.! Para! ello! se! selecciona! el! efecto! ubicando! el! cursor! en! el! parámetro!
que!se!desea!controlar,!seguido!a!esto!se!realiza!el!gesto!que!se!le!desea!asignar^!
por! ejemplo:! El! usuario! desea! controlar! el! nivel! de! ganancia! en! un! canal,! lo! que!
debe! realizar! es! seleccionar! a! través! del! mouse! este! control! e! inmediatamente!
realizar!el!gesto!que!desea!asignarle.!Una!vez!asignados!y!enlazados!los!cambios!
de! control! MIDI,! se! retira! de! modo! edición! MIDI! y! procede! a! reproduce! la! pista,!
seguido!a!esto!se!empiezan!a!ejecutar!los!gestos!para!controlar!los!efectos.!
#
Imagen#(18)#Configuración#MIDI#
70
Para! la! asignación! de! los! ! gestos,! el! usuario! puede! otorgar! diferentes! tipos! de!
efectos! a! cualquier! elemento! de! la! interfaz! gráfica! desde! un! un! fader! ,knob! o!
switch.! Imagen! (19)! Sin! embargo,! para! el! siguiente! modelo! de! configuración! se!
realiza! una! asignación! en! función! del! concepto! analógico! que! puede! representa!
cada! gesto,! es! decir,! para! los! faders! se! asignaran! movimientos! de! la! mano! que!
impliquen! el! desplazamiento! en! los! extremos! de! algún! eje! ,! como! lo! haría!
físicamente! un! fader! de! forma! deslizable! ,! de! la! misma! manera! se! aplica! es!
concepto!para!la!activación!y!desactivación!de!controles!con!gestos!impulsivos^!y!
a!conveniencia!los!knobs!para!envios,!paneo!u!otro!control.!
!
Imagen#(19)#Asignación#Parámetros#MIDI#
!
!!
!
71
4.4.4.3!
Diseño!Manual!de!Instrucciones!al!Usuario!
Al! plantear! un! diseño! con! interfaz! tipo! NUI,! el! manual! de! instrucciones! no! es!
necesario,! sin! embargo,! es! necesario! indicarle! al! usuario! cual! sería! la! posición!
correcta!del!dispositivo!y!como!debe!ubicar!las!manos!respecto!a!este.!Lo!primero!
con! lo! que! se! encuentra! el! usuario! al! abrir! el! software! es! una! instructivo,! que!
indica! como! debe! ingresar! el! dedo! para! obtener! un! cursor! o! herramienta!
selección,!imagen!(20).!De!esta!manera!el!dedo!puede!elegir!los!objetos!dentro!de!
la!interfaz!gráfica,!y!explica!que!al!realizar!un!movimiento!en!profundidad!genera!
un!click.!Teniendo!claro!lo!anterior!el!usuario!puede!optar!por!ver!el!tutorial,!o!si!ya!
sabe!manejar!el!software!simplemente!seleccionar!la!opción!de!iniciar.!
!
Imagen#(20)#Instrucción#1#–#Herramienta#Selección#
!
!
!
!
!
!
72
Si!el!usuario!ha!seleccionado!la!opción!de!ver!el!tutorial,!aparecerá!una!segunda!
imagen! instructiva,! Imagen! (21)! donde! se! le! indicará! como! puede! desplazarse! a!
través!de!la!pantalla,!la!posición!que!debe!tener!su!mano!respecto!al!dispositivo!y!
la! cantidad!de!dedos!que!debe!utilizar.!Si!desea!seleccionar!los!elementos!de! la!
interfaz,! primero! debe! ubicarse! encima! del! elemento,! seguido! a! la! realización! de!
un!movimiento!impulsivo!en!el!eje!de!profundidad!(z).!
!
!
Imagen#(21)#Instrucción#2#–#Herramienta#Cursor#y#Click#
#
!
El! la! tercera! imagen! instructiva! se! le! indicara! al! usuario! que! los! elementos! que!
seleccione!serán!los!únicos!que!estarán!permitidos!de!reproducirse!en!el!DAW!
!
!
!
!
!
!
73
!
!
!
!
!
!
!
!
!
!
!
!
#
#
Imagen#(22)#Instrucción#3#–#Información#
!
!
Una! vez! que! el! usuario! sepa! como! utilizar! las! herramientas! de! cursor! y! click,!
puede! lograr! seleccionar! los! parámetros.! Se! agrega! un! ejemplo! de! cómo!
seleccionaría! el! gesto! de! desplazamiento! en! el! eje! Y,! indicando! que! el! Fader! se!
controla! realizando! un! movimiento! de! la! mano! de! arriba! hacia! abajo! y! así!
sucesivamente!para!los!otros!gestos,!pero!variando!la!dirección!de!la!mano!en!el!
respectivo!eje!del!gesto.!!
!
!
!
!
!
!
!
!
74
!
!
!
!
!
!
!
!
!
!
!
!
!
Imagen#(23)#Instrucción#4#–#Ejecución#Gesto#Desplazamiento#Eje#Y#
!
Para!el!gesto!rotacional,!se!indica!como!debe!realizar!el!movimiento!de!la!mano!al!
desear!realizar!el!gesto!correspondiente!a!los!knobs,!!
!
Imagen#(24)#Instrucción#5#–#Ejecución#Gesto#Rotacional#
75
De! igual! manera! en! la! imagen! (25)! se! presenta! el! último! instructivo,! donde! se!
realiza! la! respectiva! indicación! cuando! el! usuario! desea! activar! un! switch!
desplazándose!con!cierta!velocidad!en!el!eje!z.#
!
#
Imagen#(25)#Instrucción#6#–#Ejecución#Gesto#Switch#
#
MEDICIÓN!DE!LATENCIA!DEL!SISTEMA!!
!
Se! efectúo! la! medición! de! latencia! realizando! un! análisis! de! muestreo! de!
imágenes!,!esto!mediante!el!uso!de!una!cámara!de!grabación!con!una!frecuencia!
de!muestreo!de!120!frames!por!segundo,!es!decir,!8,3!milisegundos!por!frame.!El!
procedimiento! cosiste! en! grabar! el! instante! en! que! se! realiza! el! gesto! de!
activación!con!el!dedo!índice,!Imagen!(26)!!posteriormente!se!analiza!la!grabación!
en!un!editor!de!video!en!donde!se!puede!evidenciar!con!precisión!el!instante!en!el!
que! el! gesto! hace! la! activación,! para! esto! es! necesario! tener! en! cuenta! el!
movimiento! del! dedo! índice! en! el! eje! de! análisis,! cuando! se! ve! reflejado! en! la!
pantalla!del!secuenciador!de!audio!que!llega!señal!seria!el!ultimo!frame!contado.!
Para! este! caso! fueron! 30! frames! los! que! pasaron! cuando! se! realizo! el! gesto! y!
llego!señal!al!vúmetro!con!lo!cual!el!sistema!tiene!una!latencia!de!250ms.!!
76
!
!
Imagen#(26)#Medición#Latencia#del#Sistema##
!
!
5!
ANÁLISIS!Y!RESULTADOS!!
!
•! En! la! programación! fue! necesario! independizar! los! gestos! de! las! manos!
con! una! selección! previa! de! ejes,! es! decir,! que! para! cada! gesto! existe! un!
único! eje! de! control,! esto! debido! a! que! la! anatomía! y! el! desplazamiento!
natural! que! presenta! la! mano! al! no! ser! totalmente! ortogonal,! por!
consiguiente!al!desplazar!la!mano!en!cualquier!sentido!siempre!van!a!haber!
componentes!en!mas!ejes!ya!sea!por!movimiento!!rotacional!o!lineal.!
!
•! Para!el!control!que!se!emplea!para!la!activación!o!desactivación!de!algún!
parámetro,!!fue!necesario!establecer!un!umbral!basado!en!la!velocidad,!que!
se! debe! sobrepasar! para! generar! el! cambio! de! control,! este! umbral! esta!
determinado! por! una! diferencia! del! posicionamiento! entre! cuadros! por!
segundo,! tomando! un! punto! inicial! y! final! según! los! cuadros! tomados!
durante! el! momento.! Por! esta! razón! el! usuario! se! ve! en! la! necesidad! de!
realizar! un! movimiento! impulsivo! que! supere! ese! umbral,! para! hacer! la!
77
activación!del!parámetro.!Esta!diferencia!esta!basada!en!la!derivación!de!la!
posición! con! respecto! a! la! unidad! de! tiempo,! en! la! que! se! toman! los!
cuadros!y!como!resultado!se!evalúan!los!cambios!de!velocidad!instantánea,!
para!identificar!si!el!gesto!existe!o!no.!
!
•! La! figura! (3)! se! muestra! un! valor! de! movimiento! que! depende! de! la!
velocidad! con! la! que! se! efectúo! el! gesto! ,! este! presenta! un! valor! de! 3159!
cuadros!por!segundo,!como!se!puede!observar,!el!rango!mínimo!y!máximo!
necesario!es!únicamente!de!127!valores!,!lo!cual!garantiza!la!fiabilidad!del!
comportamiento! de! forma! eficiente,! es! decir,! que! siempre! se! ejecutaran!
valores! de! movimiento! mucho! mayores! a! los! necesarios! dentro! del! rango!
requerido.! Sin! embargo,! se! puede! llegar! a! emplear! esa! cantidad! de! datos!
para!aplicaciones!que!requieran!una!mayor!precisión!según!la!cantidad!de!
muestras!necesarias.!
!
•! No! se! necesita! el! rango! completo! de! datos! para! poder! hacer! las!
asignaciones! dentro! de! los! 127! valores! MIDI! requeridos,! ya! que! es!
suficiente! utilizar! los! valores! que! van! de! 0! a! 127! ,! asegurando! que! los!
limites! no! vayan! a! afectar! considerablemente! la! operación! del! dispositivo.!!
Sin!embargo!,!al!realzar!el!movimiento!completo!del!desplazamiento!de!las!
manos!,!se!observo!que!en!repetidas!ocasiones!no!era!posible!llegar!a!los!
valores! máximos! o! mínimos! del! control! debido! a! la! velocidad! con! que! se!
realizara! el! gesto,! por! esta! razón! hay! que! tener! en! cuenta! que! se! deben!
establecer! la! totalidad! de! los! 127! valores! dentro! de! un! rango! de!
desplazamiento! de! mano! inferior! a! ! los! extremos! en! los! que! se! adquieran!
datos! del! gesto! ,! esto! podría! garantizar! que! a! mayores! velocidades! ,! se!
puede!conservar!los!valores!máximos!y!mínimos!de!parámetro!controlado.!
•! Es! importante! tener! en! cuenta! que! la! implementación! de! gesto! o!
movimientos!que!requieran!mucha!precisión,!puede!afectar!directamente!!la!
experiencia!de!usuario,!causando!confusiones.!!
!
78
•! Hay!una!suma!de!latencias,!donde!la!primera!no!se!puede!modificar!debido!
a!que!es!propia!de!la!transferencia!de!datos!por!puerto!usb!del!leap!motion,!
y!la!generada!por!el!sistema!en!el!cual!se!procesan!los!datos!(API)!entre!el!
software!de!programación!de!gestos!(Pure!data),!Unity!y!el!DAW!(Ableton!
live)!
!
6!
CONCLUSIONES!
!
•! Las! posibilidades! de! trabajo! con! los! datos! provistos! por! el! Leap!
Motion!son!versátiles,!pues!pueden!ser!exportados!y!manipulados!en!
múltiples! plataformas! y! protocolos! lo! que! facilita! la! integración! no!
solo! con! procesos! en! los! que! se! requiera! el! control! de! DAWS! sino!
con!la!integración!de!estos!datos!para!el!desarrollo!de!!aplicaciones!
interactivas.!!
!
•! El!sensor!Leap!Motion!es!capaz!de!ofrecer!un!muestreo!de!datos!a!
intervalos! más! cortos! que! los! requeridos! por! software! de!
procesamiento! audiovisual! para! el! ojo! humano,! ya! que! el! API!
promete!200!muestras!por!segundo,!y!en!el! presente! proyecto!solo!
se!requieren!de!10!a!20!para!obtener!un!desempeño!adecuado.!Por!
consiguiente! se! estableció! una! tasa! de! captura! de! datos! de! 100!
muestras! por! segundo! y! así! aprovechar! las! capacidades! de!
seguimiento! del! Leap! (midiendo! diferencias! menores! a! 1mm)! sin!
arriesgar! la! estabilidad! del! equipo,! pero! manteniendo! una! tasa! de!
muestreo! alta! lo! que! permite! proporcionar! una! respuesta! rápida! y!
una!medición!exacta!de!los!eventos!generados!por!el!usuario.!!
!
•! La!comunicación!en!paralelo!que!ofrece!el!protocolo!UDP!mediante!
OSC! permite! que! la! transferencia! entre! los! datos! de! a! UI! y! la!
plataforma! de! programación! sea! mas! rápida! que! utilizando! un!
79
protocolo!basado!en!comunicación!serial!!
!
•! El! Leap! Motion! como! dispositivo! de! interacción! natural! con! la!
máquina!esta!subvalorado!y!tiene!un!gran!potencial!en!aplicaciones!
como!las!de!procesamiento!digital!de!señales,!pues!al!implementarlo!
como! controlador! para! el! presente! proyecto! se! logró! proveer! una!
alternativa! para! la! ejecución! de! múltiples! cambios! de! control! en! un!
sistema!de!audio!(DAW)!brindando!un!lugar!a!la!implementación!de!
6! gestos! “propios! del! movimiento! del! cuerpo”! para! crear! nuevas!
formas!de!control!y!“producción”!creativa.!
!
•! El! desarrollo! de! este! software! presenta! una! comunicación!!
bidireccional!basada!en!el!uso!de!doble!protocolos!(OSC!y!MIDI)!con!
lo! que! se! puede! lograr! un! nivel! de! control! más! elevado! a! partir! de!
herramientas! que! no! dependan! únicamente! del! MIDI! y! la!
programación,! sino! también! de! sistemas! de! comunicación!
alternativos,!abriendo!la!brecha!!a!protocolos!TCP,!UDP,!IP!y!demás!!
!
•! La!interconexión!entre!los!diferentes!sistemas!utilizando!3!procesos!
simultáneos! de! comunicación,! presenta! una! latencia! imperceptible!
entre! la! parte! visual! y! sonora,! la! cual! se! puede! observar! en! la!
interfaz! gráfica! desarrollada! en! Unity! y! percibir! en! el! software! de!
producción!musical!Ableton!Live!.!
!
•! Las!directrices!planteadas!en!el!diseño!de!la!interfaz!gráfica!para!la!
asignación!de!los!knobs,!faders!y!switches!es!intuitiva!acorde!al!uso!
de! los! controladores! convencionales! para! producción! musical.! Sin!
embargo! se! presenta! una! alternativa! no! convencional! para! la!
interacción! entre! el! usuario! y! el! software,! eliminando! cualquier! tipo!
de! manipulación! física! e! implementando! diferentes! gestos!
determinados!por!el!movimiento!de!las!manos.!
80
!
•! El! eskeumorfismo! surge! como! pilar! para!el! diseño! de! la! interacción!
en! la! interfaz! de! usuario,! de! tal! manera! los! gestos! basados! en!
movimientos! básicos! de! la! mano,! permiten! al! usuario! experimentar!
formas!innovadoras!para!el!control!del!Audio.!
!
•! Es! posible! optimizar! la! latencia! del! sistema! implementando! todo! el!
algoritmo!de!Pure!data!en!Unitypro,!sin!embargo!para!llevarlo!a!cabo!
es!necesario!pagar!un!costo!significativo!por!la!!licencia!!del!software!
!
7!
RECOMENDACIONES!
!
•! Convertir!la!interfaz!en!una!aplicación!ya!sea!móvil!o!web!
!
•! Realizar!el!mismo!proyecto!pero!enfocado!a!personas!con!discapacidad!
auditiva,! de! tal! manera! que! los! gestos! recrean! una! secuencia! de!
imágenes!o!video.!
#
REFERENCIAS!BIBLIOGRÁFICAS!
!
!
Academia!Unimúsica!(2014).!Producción!musical.!Controladores!MIDI.!Recuperado!de!
http://www.unimusicaTperu.com/produccion_musical_controlador_midi.htm!
!
AES.!Artículo!extraido!de!la!AES!13th!international!conference,!university!of!Washington,!
Seattle,!WA,!USA.!!
!
Arhippainen!&!Täht!(!2005,!7!de!septiembre).!La!experiencia!del!usuario.!Asu.!
Recuperado!de!
http://www.nosolousabilidad.com/articulos/experiencia_del_usuario.htm!
81
!
Áranzazu.!C(2015,!18!de!agosto).!Diseño!Multimedia![web!log!post].!Recuperado!de!
http://dismul.blogspot.com/2009/08/interfazTdeTusuario.html!
!
Belda,!J(2015,!20!de!Abril).!Leap!Motion!(I)!Características!Técnicas.!ShowLeap.!
Recuperado!de!http://blog.showleap.com/2015/04/leapTmotionTcaracteristicasT
tecnicas/!
Brinkmann.!P!(2012).!Making!Musical!Apps.!Estados!Unidos.!O’Reilly!Media,!Inc.,!1005!
Gravenstein!Highway!North,!Sebastopol,!CA!95472.!Recuperado!de!
http://pdf.th7.cn/down/files/1312/making_musical_apps.pdf?yundunkey=116240423
762322875e02002957b2830c1429592185_112629!
Caballero,!A.(2013).!Desarrollo!de!un!controlador!MIDI!no!convencional,!implementado!en!
un!sistema!embebido,!utilizando!el!Kinect.!Universidad!de!San!Buenaventura,!
Bogotá,!Colombia.
Castromil.!J!(2012,!22!de!abril).!Leap!es!200!veces!mas!preciso!que!kinect!en!la!detección!
de!comandos!gestuales.!Clipset.!Recuperado!de!http://clipset.20minutos.es/leapT
motionTcontrolaTtuTordenadorTconTgestosT3dTsinTcontactoTaTloTminorityTreport/!
Craig!&!Bob!(1993).!.!University!of!Washington,!Seattle.!Rane!Corporation,!Mukilteo.!
DidácticaT!Música!electrónica!(2010,!3!de!agosto).!Introducción!al!OSC.!Inventable.!
Recuperado!de!http://www.inventable.eu/2010/08/03/introduccionTalToscTopenT
soundTcontrolTprimerTparte/!
Ecured.!(2015,!1!de!junio).!La!familia!de!protocolos!de!internet.!Ecured,!conocimiento!para!
todos.!Recuperado!de!http://www.ecured.cu/index.php/Protocolo_IP!
García.!R(2005).!Montaje!y!uso!de!la!cámara!ccd.!Universidad!Autónoma!de!Madrid.!
Recuperado!de!
http://astro.ft.uam.es/old/TJM/tjm/webpaginas/practicas/manuales/ST8/ST8_2.html!
Meera,!D.(2013).!Leap!motion!places!computer!control!right!at!your!fingertips.!Dogo!news.!
Recuperado!de!http://www.dogonews.com/2013/3/24/leapTmotionTplacesT
computerTcontrolTrightTatTyourTfingertips!
82
Moreno,!R.(2005)!Diseño!y!construcción!de!una!flauta!controladora!MIDI.!
Universidad!de!San!Buenaventura,!Bogotá,!Colombia.!
Mtz.!J(2015,!10!de!marzo).!Interfaz!Gráfica.!Academia.edu.!Recuperado!de!
http://www.academia.edu/8286025/Interfaz_grafica_de_usuario!
Olivera,!C.!(2010).!Almacenamiento!de!datos!bit!byte.!Sildeshare.!Recuperado!de!
http://es.slideshare.net/CarlosOlveraC/almacenamientoTdeTdatosTbitTbyteT
megabyteTyTmuchoTmasTcursoTgratisTparteT1!
Pure!Data!(20015).!Pure!Data.!Recuperado!de!http://puredata.info!
Puig(1997).!Audio!digital!y!MIDI.!Guías!monográficas!Anaya!multimedia,!Madrid.!
Recuperado!de!http://www.ccapitalia.net/reso/articulos/audiodigital/pdf/08T
EspecificacionMIDI.pdf!!
(2005)!Grupo!de!Tecnología!Musical!de!la!Universidad!Pompeu!Fabra!de!Barcelona!
Guioteca.!Recuperado!de!http://www.guioteca.com/instrumentosTmusicales/laTreactableT
unTsorprendenteTinstrumentoTelectronico.!
Smith.!D(2011).!MIDI!interfaz!digital!de!instrumentos!musicales.!Ingeniatic.!Recuperado!
de!http://ingeniatic.euitt.upm.es/index.php/tecnologias/item/521TmidiTinterfazT
digitalTdeTinstrumentos.!
Unity!Technologies(!2015,!1!de!junio).!Unity!3D.!Ecured.!Recuperado!de!
http://www.ecured.cu/index.php/Unity3D!!
Wincent! &! Jom.! (2011).! Artículo! extraído! de! la! AES! presentado! en! la! 130th! convención,!
London!UK,!paper!8456.!University!Oldenburg,!Germany.!
!
!
!
83
ANEXOS!
!
Imagen#(26)–#Diagrama#de#Clases#Desarrollado#para#Patch#Pure#Data#
!
!
!
!
84
!
Imagen#(27)#Diagrama#de#clases#para#interfaz#gráfica#en#Unity#
!
Imagen#(28)#Canvas,#Imagen#de#Fondo#interfaz#gráficaaUnity#
!
!
!
!
85
!
!
!
!
!
Imagen#(29)–#Implementación#Sliders#en#Unity#
!
Imagen#(30)#Diseño#Interfaz#Gráfica#
86
!
!
!
!
#
Imagen#(31)#Problema#ocurrido#por#utilizar#mismo#puerto##
!
!
Imagen#(32)#Diseño#animación#manos#interfaz#gráfica#
87
!
!
88