60
Desarrollo de un algoritmo de procesamiento de audio espacial para la generación de videojuegos en entorno Unity. Daniel Montoya Restrepo (Q.E.P.D) Elizabeth Cardona Muriel, [email protected] Cristian Martínez Pino, [email protected] Trabajo de Grado presentado para optar al título de Ingeniero de Sonido Asesor: Diego Mauricio Murillo Gómez, Doctor (PhD) in Sound and Vibration. Universidad de San Buenaventura Facultad de Ingenierías (Medellín) Ingeniería de Sonido Medellín, Colombia 2021

Desarrollo de un algoritmo de procesamiento de audio

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Desarrollo de un algoritmo de procesamiento de audio

Desarrollo de un algoritmo de procesamiento de audio espacial para la generación de

videojuegos en entorno Unity.

Daniel Montoya Restrepo (Q.E.P.D)

Elizabeth Cardona Muriel, [email protected]

Cristian Martínez Pino, [email protected]

Trabajo de Grado presentado para optar al título de Ingeniero de Sonido

Asesor: Diego Mauricio Murillo Gómez, Doctor (PhD) in Sound and Vibration.

Universidad de San Buenaventura

Facultad de Ingenierías (Medellín)

Ingeniería de Sonido

Medellín, Colombia

2021

Page 2: Desarrollo de un algoritmo de procesamiento de audio

Citar/How to cite [1]

Referencia/Reference

Estilo/Style: IEEE (2014)

[1] D. Montoya Restrepo, E. Cardona Muriel, y C. Martínez Pino, “Desarrollo de un

algoritmo de procesamiento de audio espacial para la generación de

videojuegos en entorno Unity.”, Trabajo de grado Ingeniería de Sonido,

Universidad de San Buenaventura, Facultad de Ingenierías, Medellín, 2021.

Bibliotecas Universidad de San Buenaventura

• Biblioteca Fray Alberto Montealegre OFM - Bogotá.

• Biblioteca Fray Arturo Calle Restrepo OFM - Medellín, Bello, Armenia, Ibagué.

• Departamento de Biblioteca - Cali.

• Biblioteca Central Fray Antonio de Marchena – Cartagena.

Universidad de San Buenaventura Colombia

Universidad de San Buenaventura Colombia - http://www.usb.edu.co/

Bogotá - http://www.usbbog.edu.co

Medellín - http://www.usbmed.edu.co

Cali - http://www.usbcali.edu.co

Cartagena - http://www.usbctg.edu.co

Editorial Bonaventuriana - http://www.editorialbonaventuriana.usb.edu.co/

Revistas - http://revistas.usb.edu.co/

Biblioteca Digital (Repositorio) http://bibliotecadigital.usb.edu.co

Page 3: Desarrollo de un algoritmo de procesamiento de audio

Dedicatoria

Inicialmente deseo dedicarle este trabajo a todas las personas que siempre creyeron en mi capacidad, capacidad que

tenemos todos, es agradable saber la fuerza, determinación y capacidad de resolver problemas cuando queremos

alcanzar un objetivo. A mis padres, Graciela Pino y Luis Eduardo Martínez, todos los días agradezco que este al lado

de ustedes, mi mayor fortuna son todos los valores que me enseñaron. A mi hermana Laura, gracias por estar siempre

al lado. A "el Dext", Daniel Montoya, gracias seguir enseñándome tantas cosas.

Cristian Martínez Pino

Todo el esfuerzo, el aprendizaje y el crecimiento que he tenido durante todo este tiempo en la universidad y en la

realización de este proyecto se lo quiero dedicar especialmente a mi familia, amigos y a todas las personas que están

y han estado conmigo, compartiendo, en clases, en trabajos, en charlas. . . A Daniel Montoya. . . es muy loco haber

comenzado este proyecto con él y sentir que todo iba a estar bien, repentinamente no tenerlo. . . Gracias Dani por los

cafés, por el tiempo y por ser la gran persona que serás siempre.

Elizabeth Cardona Muriel

Page 4: Desarrollo de un algoritmo de procesamiento de audio

Agradecimientos

¡A nuestras familias siempre agradecimientos!, a nuestros compañeros con los que se ha sufrido y

disfrutado todo este tiempo, al “profe” Diego, muchas gracias por el excelente acompañamiento y

asesoría durante todo el desarrollo del proyecto, por la buena energía, las buenas ideas y la

disposición siempre de ayudar. A Luis, David y todos los muchachos en Dreamhouse que con su

conocimiento, acertadas ideas y buena energía nos permitieron incursionar en el campo de la

realidad virtual y los videojuegos.

Page 5: Desarrollo de un algoritmo de procesamiento de audio

TABLA DE CONTENIDO

RESUMEN ..................................................................................................................................... 10

ABSTRACT ................................................................................................................................... 11

I. INTRODUCCIÓN ...................................................................................................................... 12

II. PLANTEAMIENTO DEL PROBLEMA .................................................................................. 13

A. Antecedentes ......................................................................................................................... 13

III. JUSTIFICACIÓN ..................................................................................................................... 17

IV. OBJETIVOS ............................................................................................................................ 18

A. Objetivo general .................................................................................................................... 18

B. Objetivos específicos ............................................................................................................. 18

V. MARCO TEÓRICO .................................................................................................................. 19

A. Modelado Acústico de recintos ............................................................................................. 19

B. Transformada de Fourier y Convolución en tiempo-real ...................................................... 21

1) Transformada de Fourier ................................................................................................... 21

2) Convolución en tiempo-real ............................................................................................... 23

C. Sistema Ambisonics, armónicos esféricos y codificación en B-format ................................ 24

1) Ambisonics ......................................................................................................................... 24

2) Armónicos esféricos ........................................................................................................... 25

3) Codificación B-Format ....................................................................................................... 27

4) Decodificación .................................................................................................................... 28

5) Decodificación por matriz Pseudoinversa .......................................................................... 29

D. Rotación del campo sonoro con armónicos esféricos ........................................................... 29

E. Audio 3D y reproducción ...................................................................................................... 30

1) Audio 3D ............................................................................................................................ 30

2) Funcionamiento del Audio 3D ........................................................................................... 31

Page 6: Desarrollo de un algoritmo de procesamiento de audio

3) Audio binaural .................................................................................................................... 32

F. Auralización interactiva ......................................................................................................... 32

VI. DESARROLLO ....................................................................................................................... 33

A. Diagrama de flujo de señal .................................................................................................... 33

B. Simulación acústica del recinto y obtención de respuestas al impulso en B-Format ............ 33

C. Diseño de escena virtual y preparación del entorno de comunicación Unity-LibPd ............. 36

1) Modelado 3D ...................................................................................................................... 36

2) LibPd para Windows de 64-bits embebido en Unity .......................................................... 37

D) Desarrollo del algoritmo basado en teoría de armónicos esféricos ....................................... 38

1) Rotación del campo sonoro ................................................................................................ 38

2) Reproducción del campo sonoro con armónicos esféricos ................................................. 38

3) Reproducción binaural ........................................................................................................ 39

E. Implementación en Unity....................................................................................................... 39

F. Prueba d aceptación de usuario .............................................................................................. 41

1) Resumen ............................................................................................................................. 41

2) Ejecución de pruebas .......................................................................................................... 42

3) Resultados de la prueba de aceptación ............................................................................... 42

VII. CONCLUSIONES .................................................................................................................. 43

REFERENCIAS ............................................................................................................................. 44

ANEXOS ........................................................................................................................................ 47

Page 7: Desarrollo de un algoritmo de procesamiento de audio

LISTA DE TABLAS

TABLA I. MATRIZ DE ROTACIÓN EN EL EJE Z .................................................................... 30

Page 8: Desarrollo de un algoritmo de procesamiento de audio

LISTA DE FIGURAS

Fig. 1. Armónicos esféricos para codificación de primer orden .................................................... 28

Fig. 2. Diagrama de flujo - metodología de trabajo ....................................................................... 33

Fig. 3. Posición fuente receptor para comprobación de codificación B-Format ............................ 34

Fig. 4. Respuesta al impulso sintetizada y codificada en B-Format .............................................. 34

Fig. 5. Distribución de receptores en la sala simulada (IRs) .......................................................... 35

Fig. 6. Niveles de presión distribuidos en recinto por octavas de frecuencia ................................ 36

Fig. 7. Modelo gráfico en Sketchup ................................................................................................ 36

Fig. 8. Modelo del recinto dentro del motor de videojuegos ......................................................... 37

Fig. 9. Vista de inspector donde Audio Source y C# script estan instanciados ............................. 40

Fig. 10. Prefabricado de la respuesta al impulso (IR) .................................................................... 40

Fig. 11. Vista superior (sin techo) del modelo gráfico en Unity .................................................... 41

Page 9: Desarrollo de un algoritmo de procesamiento de audio

LISTA DE ABREVIACIONES

HRTF Head-Related Transfer Function

RIR Room Impulse Response

DFT Discrete Fourier Transform

IDFT Inverse Discrete Fourier Transform

IR Impulse Response

VR Virtual Reality

CPU Central Processing Unit

FEM Métodos de Elementos Finitos

SDK Software Design Kit

DWG Digital Wave Guide

DWN Digital Wave Network

LTI Linear Time Invariant

SOFA Spatially Oriented Format of Acoustics

Page 10: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 10

RESUMEN

El término audio 3D describe un sistema en el que múltiples sonidos pueden situarse alrededor de

un oyente incluso encima o por debajo de él. Con el desarrollo actual de los videojuegos y el auge

computacional, la inclusión de audio espacial ya es posible. El sonido 3D es el componente que

ayuda a capturar al jugador. La elaboración de videojuegos con audio espacial proporciona un

mejoramiento de la experiencia general del jugador, aumentado su atractivo, acercándolo a una

experiencia realista.

Las simulaciones virtuales de recintos para la obtención del campo sonoro basados en acústica

geométrica permiten una implementación en tiempo-real. Las auralizaciones proporcionan una

interactividad en los recintos que favorece la recreación y sonorización de escenas en videojuegos.

En consecuencia, se propone el desarrollo de un algoritmo que procese audio en tiempo-real dentro

del motor de videojuegos Unity, sin necesidad de utilizar entornos de desarrollo y procesamiento

de audio externos. Esto posibilita recrear la sensación de espacialidad del recinto en el que se

construya la escena virtual.

El algoritmo consiste en el procesamiento de respuestas al impulso en B-format que son

convolucionados en tiempo-real con una señal monofónica correspondiente a la fuente que se desee

espacializar. Posteriormente se realiza la decodificación del B-format y se realiza una convolución

con HRTF’s para obtener una escucha binaural. Esto propicia su uso en procesos de diseño de

videojuegos con audio 3D.

El desarrollo del algoritmo se realizó en el lenguaje de programación gráfico Pure Data. El

algoritmo se integró al motor de videojuegos Unity utilizando la biblioteca de síntesis de audio

embebible de Pure Data (LibPd).

El resultado de la investigación corresponde a una implementación del algoritmo en una escena

virtual, permitiendo la escucha del campo sonoro en el recinto.

Palabras clave: Audio 3D, B-format, procesamiento en tiempo-real, auralizaciones, videojuegos.

Page 11: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 11

ABSTRACT

The term 3D audio describes a system in which multiple sounds can be placed around a listener

even above or below it. With the current development of videogames and the computational boom,

the inclusion of spatial audio is already possible. 3D sound is the component that helps capture the

player. The elaboration of videogames with spatial audio provides an improvement of the general

experience of the player, increasing his attractiveness, bringing him closer to a realistic experience.

The virtual simulations of enclosures to obtain the sound field based on geometric acoustics allow

a real-time implementation. The auralizations provide interactivity in the rooms that favor the

recreation and sounding of scenes in video games.

Consequently, the development of an algorithm that processes audio in real time within the Unity

video game engine is proposed, without the need to use external audio processing and development

environments, allowing to recreate the sensation of spatiality of the enclosure in which the virtual

scene.

The algorithm consists in the processing of impulse responses in B-format that are convolved in

real time with a monophonic signal corresponding to the source to be spatialized. Subsequently,

the decoding of the B-format is performed and a convolution with HRTF is performed to obtain a

binaural listening. This encourages its use in videogame design processes with 3D audio.

The algorithm was developed in the Pure Data graphic programming language. The algorithm was

integrated into the Unity video game engine using the Pure Data Embedded Audio Synthesis

Library (LibPd).

The result of the investigation corresponds to an implementation of the algorithm in a virtual scene,

allowing the listening of the sound field in the enclosure.

Keywords: 3D audio, B-format, real-time processing, auralizations, videogames.

Page 12: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 12

I. INTRODUCCIÓN

El uso de la tecnología de Realidad Virtual VR ha demostrado ofrecer beneficios potenciales en

una amplia variedad de aplicaciones, tales como formación virtual, paseos arquitectónicos,

teleconferencias, ingeniería, construcción y medicina. Sin embargo, muchos de los sistemas VR

que se utilizan actualmente en la industria se centran en la representación visual de la información

[1]. Mediante la incorporación de otros tipos de estímulos sensoriales como el audio en un entorno

virtual, la fidelidad de la simulación se podría plantear considerablemente [2].

El audio en videojuegos es una parte fundamental para la forma en que éstos se experimentan.

Desde la creación de las primeras consolas de juego las características del audio han venido

cambiando consecuentemente con la evolución de la tecnología y el avance computacional. Esto

ha ido permitiendo incorporar mayor variedad de sonidos y técnicas de procesamiento con una

mayor calidad. Actualmente se vive la era de la realidad aumentada. Las personas desean vivir

experiencias mucho más inmersivos y esto trae consigo un reto para los programadores y creadores

de juegos. Estos tienen la tarea de crear un ambiente adecuado para que los jugadores pasen horas

sin aburrirse y queden capturados en la experiencia. Aquí el audio toma una gran importancia. El

audio 3D o espacial es una parte fundamental para crear experiencias realistas que capturan la

atención del jugador utilizando métodos que permiten simular la forma en que percibimos el sonido

en la realidad.

Este trabajo aborda el tema de desarrollo de un algoritmo de procesamiento de audio espacial para

la generación de escenas virtuales o videojuegos, permitiendo la espacialización de una fuente

sonora en un recinto. En la primera sección se encontrará el planteamiento del problema seguido

de una revisión de literatura y marco teórico. Posteriormente se presenta el desarrollo del trabajo,

implementación y validación del método.

Page 13: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 13

II. PLANTEAMIENTO DEL PROBLEMA

La inmersión se considera como requisito primordial en cualquier desarrollo audiovisual. Ésta

permite lograr consumo óptimo por parte del usuario de cualquier proyecto multimedia. El audio

es parte fundamental para lograr la inmersión del jugador. Se busca con éste generar espacios que

soporten, aumenten y creen realidades específicas. Con este fin se han utilizado diferentes

mecanismos de captura, tratamiento y reproducción para audio.

Actualmente existen plugins de audio 3D que agregan direccionalidad a las fuentes sonoras con

señales convolucionados con HRTF’s (Head related transfer function) [3]. Para proporcionar los

efectos de salas incluyen modelos simplificados que permite cambiar parámetros básicos como

tamaño de la sala, absorción y tipo de reflexiones [4]. El sonido obtenido es poco natural pero el

procesamiento es liviano computacionalmente.

El uso de B-Format permite generar entornos interactivos mediante la manipulación de respuestas

al impulso. Por lo que se genera la siguiente pregunta: ¿Es posible generar un entorno de desarrollo

en Unity que permita la espacialización de una fuente sonora basado en respuestas al impulso B-

Format que proporcione una herramienta de diseño sonoro para el desarrollo de videojuegos?

A. Antecedentes

La inclusión de audio 3D es uno de los objetivos actuales de la industria de videojuegos debido al

realismo que añade junto con gráficos robustos a la experiencia de realidad virtual. Existen

diferentes plugins y complementos de espacialización de audio compatibles con motores de juego

como Unity. Las extensiones utilizan diferentes métodos para la espacialización ya sea desde el

tratamiento de archivos con contenido 3D como B-Format o binaurales o simplemente agregando

propiedades físicas a archivos monofónicos.

El Audio Spatializer SDK [3] es una extensión del plugin nativo de audio SDK de Unity. Permite

cambiar la forma en que la fuente transmite sonido al espacio. El paneo de fuentes puede ser una

forma simple de espacialización. El control de la ganancia de las señales en el oído izquierdo y

derecho se basa en la distancia y el ángulo entre la fuente y el receptor. El filtrado HRTF se basa

en el conjunto de datos KEMAR, que es un conjunto de grabaciones de respuesta de impulso por

oído realizadas en una cabeza simulada por Bill Gardner en MIT Media Lab. Estas respuestas de

Page 14: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 14

impulso se convolucionan con la señal de entrada usando convolución rápida a través de la

Transformada Rápida de Fourier FFT. Los metadatos de posición sólo se usan para seleccionar los

conjuntos de respuestas de impulso correctos, ya que el conjunto de datos consiste en respuestas

de impulso distribuidas circularmente para ángulos de elevación que varían de -40 bajo a 90 grados

sobre la cabeza [3].

El HoloLens y su extensión para sonido Holograms 220 [5] es otro paquete de desarrollo

compatible con motores de videojuegos. Creado por Microsoft e incorporado a las versiones de

Unity 2017. Este plugin añade propiedades espaciales a objetos/fuentes como el tamaño y modelo

de la sala a partir de una base de datos de tipos de recintos. La direccionalidad se agrega

extendiendo la función de HRTF de componente de audio espacializado nativo de Unity.

Holograms 220 fue lanzado con el fin de dar mayor realidad a hologramas vistos con el HoloLens,

gafas de realidad virtual y aumentada [6].

La empresa Oculus y su división de audio han desarrollado el Oculus Native Spatializer. Este

plugin es una extensión compatible con versiones 5.2+ de Unity. Permite que las fuentes de sonido

monofónicas sean espacializadas en 3D con relación a la ubicación de la cabeza del avatar. Esto se

logra haciendo una convolución en el dominio del tiempo de la señal de audio con la HTRF

apropiada según sea la ubicación de la cabeza. Las propiedades de las salas se obtienen usando un

modelo simplificado llamado “caja de zapatos”. El cual consiste en un cuarto virtual centrado

alrededor de la cabeza del usuario con distancias y coeficientes de absorción variables para sus

paredes. Además soporta archivo de audio B-fortmat y AmbiX [4].

Vvaudio es una empresa que provee desde 2001 herramientas para el tratamiento de señales de

audio con contenido espacial. En 2015 sale VVEncode [7], un codificador-decodificador de audio

en formatos AmbiX, B-format y binaural. El motor del juego puede combinar estas señales con sus

otras formas nativas de renderizado de audio, retrasando la decodificación hasta el tiempo de

ejecución. Permite también la decodificación de la mezcla en el juego para sistemas de

reproducción binaural, surround o de audio 3D ya sean parlantes o audífonos.

La compañía VisiSonics Corporation y su división en sonido spacial RealSpace 3D Audio crearon

un complemento para las versiones 5.2+ de Unity. Permite a los diseñadores de videojuegos VR

crear audio inmersivo que realza sus ofertas visuales 3D, al tiempo que es lo suficientemente

eficiente como para trabajar con necesidades mínimas de CPU [8]. Las propiedades de dirección

Page 15: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 15

se agregan añadiendo las características de dispersión dadas por la cabeza (HRTF) y de espacialidad

usando modelos simples de cuartos modificables por el desarrollador.

El 6 de junio de 2017, la empresa Tazman-Audio lanza la última versión de Fabric v2.3. Una

extensión soportada por las versiones 4.6+, 5.4+, 5.5+ y 5.6+ de Unity. Extiende la funcionalidad

de audio del motor y permite la creación de complejos y ricos comportamientos de las fuentes

sonoras [9]. Las propiedades 3D afectan cómo el oyente escucha el audio según sea la posición y

dirección de la cabeza respecto a la fuente.

Las aplicaciones del audio 3D no solo están en el desarrollo de videojuegos. Se ha aplicado también

en diversas escenas en donde es indispensable la localización de fuentes por medio del sonido, o

en la percepción de espacialidad dentro de un recinto. Como ejemplos se tienen los complejos

simuladores de entrenamiento aéreo, aplicaciones para la simulación de diseños arquitectónicos o

teleconferencias.

En el estudio titulado "Virtual Environment Interaction through 3D Audio by Blind Children"

publicado en 2009, se aplica el concepto de hiperhistorias (historias interactivas) a niños ciegos

[10]. Estas hiperhistorias están sumergidas en un mundo acústico-virtual 3D. Como resultado se

diseñó y probó la aplicación AudioBoom, un ambiente virtual interactuado a través de audio 3D

por niños ciegos. Estos fueron expuestos a experiencias en primera persona explorando mundos

interactivos con el uso de representaciones 3D-aurales del espacio. Esta experiencia fue

estructurada con tareas cognitivas donde los participantes generaban modelos concretos de su

propia representación construida con la interacción en el juego usando bloques de lego. La

interacción se logra partiendo de eventos programados en vóxeles (unidad cúbica que compone un

objeto tridimensional). En el diseño del juego un voxel podría representar un evento sonoro

especifico o nada. El mundo acústico-virtual 3D se logró con técnicas de especialización de las

fuentes. Se otorgaba propiedades de direccionalidad usando HRTF y de espacialidad con modelos

de habitaciones simples a un grupo de voxeles con eventos (sonoros) programados.

Partiendo de los objetivos de audio interactivo 3D y una reconstrucción fiel del campo sonoro, se

publica en 2017 el artículo titulado "Low Frequency Interactive Auralization Based on a Plane

Wave Expansion" [11]. Este documento se centra en el problema de auralizaciones interactivas con

superposición de ondas planas en recintos cerrados. Para esto, se simuló acústicamente un cuarto

usando el método de elementos finitos (FEM). A partir de la solución FEM, se crea un arreglo de

micrófonos y se implementa un método inverso para estimar las amplitudes complejas de las ondas

Page 16: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 16

planas. La ventaja del método es la posibilidad que ofrece de implementar varias técnicas de

reproducción de sonido para aplicaciones de auralización. Características tales como la traslación

y rotación del campo acústico lo hacen conveniente para representaciones acústicas interactivas.

En otros proyectos como "Assessing Virtual Teleconferencing Rooms" se presenta un estudio sobre

cómo diseñar entornos acústicos virtuales utilizados en teleconferencias de audio 3D. Se busca

maximizar el rendimiento de localización, facilidad y calificaciones subjetivas de la calidad del

habla en aplicaciones de realidad virtual. El beneficio de la inclusión del audio 3D no solo se refleja

en la naturalidad de la experiencia sino también en el mejoramiento sustancial en la inteligibilidad

de la palabra [12].

Como se describió anteriormente existen diferentes algoritmos que permiten implementar audio

espacial en Unity. Sin embargo, muchos de ellos son paquetes cerrados ya que han sido

desarrollados por compañías externas. El presente proyecto busca generar un desarrollo propio, el

cual permita espacializar sonidos. Esto es acorde con el área de ingeniería de sonido en la cual hay

una gran proyección hacia el trabajo de audio espacial.

Page 17: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 17

III. JUSTIFICACIÓN

"El hecho de que el sonido en el mundo real se oye espacialmente es el impulso inicial para incluir

este aspecto dentro de un escenario de simulación" [13].

La importancia de las experiencias de audio en la realidad virtual (VR) ha sido reconocida y

discutida en los últimos tiempos. Las herramientas para la producción y las plataformas para la

distribución del contenido de VR con audio espacial están siendo ampliamente disponibles. El audio

espacial ahora se puede integrar en aplicaciones VR usando kits de desarrollo de software (SDK) o

plugins para motores de juegos comunes y sistemas de middleware de audio. Muchas de estas

herramientas se proporcionan de forma gratuita para alentar a los creadores de contenido a integrar

audio espacial en la experiencia VR [14].

Estudios desarrollados han demostrado la importancia de la adición del sonido en espacios virtuales

y de sonido espacial como generador de mayor inmersión mejorando el grado de presencia y la

localización de fuentes sonoras. En la Universidad Tecnológica Chalmers en Suecia, el proyecto

"Better Presence and Performance in Virtual Environments by Improved Binaural Sound

Rendering" muestra varios estudios realizados a grupos de personas con la incorporación de audio

binaural. Los resultados indican que la información auditiva de alta calidad puede mejorar en gran

medida el rendimiento general de espacios virtuales y en algunos casos mejorar el rendimiento para

el cumplimiento de tareas [15]. El desarrollo tecnológico está enfocado hacia ambientes virtuales.

Con este trabajo se busca el desarrollo de un algoritmo que sea aplicado a videojuegos. Se plantea

generar un entorno de desarrollo en Unity que permita la incorporación y el procesamiento de audio

3D. El diseño sonoro se basa en la combinación de respuestas al impulso en B-Format y el uso de

HRTFs. Esto con el fin de aportar un sonido de mayor naturalidad y espacialidad sin el uso de una

gran carga computacional. Su utilidad también puede llevarse hacia el desarrollo de otro tipo de

escenas de realidad virtual.

Page 18: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 18

IV. OBJETIVOS

A. Objetivo general

Desarrollar un algoritmo de procesamiento de audio espacial para el diseño de videojuegos (escena

virtual) en entorno Unity.

B. Objetivos específicos

Se describen algunos ejemplos de verbos comunes que se utilizan en el planteamiento de objetivos,

los cuales cambiarán dependiendo de su investigación.

• Diseñar metodológicamente el entorno del videojuego en la plataforma de desarrollo Unity.

• Desarrollar un algoritmo para espacializar las fuentes sonoras utilizando el lenguaje de

programación Pure Data (LibPd).

• Implementar y validar el algoritmo anterior para el diseño sonoro del videojuego.

Page 19: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 19

V. MARCO TEÓRICO

A continuación, se presenta una breve revisión teórica de los conceptos necesarios que están

involucrados en todo el proceso para la obtención de una auralización. Desde el modelado acústico

de recintos y su relación con el procesamiento de audio en tiempo-real hasta la codificación y

decodificación del campo sonoro con armónicos esféricos. Se incluyen también conceptos básicos

y teoría de procesamiento digital de señales necesaria para la comprensión del trabajo.

Notación matemática

El presente trabajo utiliza letras en negrilla como notación para vectores (e.g. “ 𝒳𝒳 “). Las señales

en el dominio del tiempo y otras variables de tipo escalar se presentan con letras minúsculas (e.g.

“𝑓𝑓(𝑡𝑡)”, “𝑥𝑥”) y las señales en el dominio de la frecuencia se denotan con letras mayúsculas (e.g.

“𝐹𝐹(𝜔𝜔)”). La notación de distintas funciones, entidades físicas y símbolos matemáticos utilizados a

lo largo del trabajo pueden ser consultadas en la Tabla de símbolos.

A. Modelado Acústico de recintos

En primera instancia la respuesta al impulso proporciona información del comportamiento acústico

para una ubicación específica de fuente y receptor en un recinto. Permite evaluar parámetros como

la reverberación a partir de una curva de decaimiento de energía [16].

El modelado acústico virtual de recintos juega un papel importante en la fase de diseño de muchos

espacios. Los algoritmos acústicos geométricos y los basados en ondas son apropiados para la

auralizaciones de recintos. Poseen un gran potencial para ser utilizados en entornos virtuales

interactivos con reproducción de sonido en tiempo-real. Sus posibles aplicaciones van desde ayudar

al diseño acústico arquitectónico hasta el mejoramiento del audio de videojuegos [17].

Las técnicas para la simulación virtual de espacios acústicos se pueden dividir en varias categorías

principales: métodos geométricos (método de fuente de imágenes y métodos basados en rayos),

métodos basados en elementos o mallas (método de elementos finitos, método de elementos

fronterizos, mallas de guía de ondas digitales (DWG) y redes (DWN), mallas de diferencias finitas),

así como métodos estadísticos y algoritmos de reverberación para la reverberación tardía.

Page 20: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 20

La idea original de las guías digitales de ondas (DWG) y las redes digitales de guía de ondas

(DWN) era simular la reverberación de la habitación [18].

Las simulaciones acústicas de recintos que utilizan modelos basados en ondas ofrecen varias

ventajas sobre las basadas en enfoques acústicos geométricos. Estas presentan mayor precisión en

la simulación en frecuencias bajas y en efectos de propagación de ondas como la difracción y la

oclusión. Sin embargo, las simulaciones con enfoques geométricos pueden adaptarse mejor para la

implementación en tiempo-real y, por lo tanto, son más apropiados para aplicaciones que requieren

interactividad en tiempo-real. Entre estas están la auralización interactiva o rendering de escenas

de audio para videojuegos [19].

Las principales desventajas de los modelos basados en ondas son los excesivos tiempos de

computación y los requisitos de memoria si se requieren simulaciones para un ancho de banda

completo en frecuencia.

El modelado acústico de recintos basado en ondas generalmente se considera como un proceso

offline, donde el objetivo es obtener la respuesta al impulso de la sala fuente /receptor (RIR) que

puede implementarse en tiempo-real para cualquier señal de audio de entrada por convolución. La

consecuencia de este proceso es que una RIR estática trae limitaciones significativas para que la

auralización sea dinámica e interactiva. Las simulaciones acústicas virtuales de recintos tienen un

alto potencial en áreas como el audio para videojuegos y aplicaciones de realidad virtual, pero la

auralización dinámica e interactiva en tiempo-real es una necesidad para resultados efectivos,

inmersivos y realistas, y esto ofrece una limitación en los modelos basados en ondas [19].

Con los modelos acústicos basados en métodos geométricos, se acepta generalmente que existen

limitaciones en cuanto a lo que se puede lograr en términos de precisión, aunque las RIR producidas

pueden dar una buena representación perceptual de una combinación fuente / receptor / recinto. Sin

embargo, la auralización dinámica e interactiva en tiempo-real aún no es posible sin imponer

limitaciones o suposiciones adicionales sobre el algoritmo básico [19].

La acústica geométrica, es la categoría de los métodos utilizados en la acústica para describir el

sonido como un fenómeno de rayos [20]. Los métodos de modelado geométrico suelen basarse en

el supuesto de que la longitud de onda del sonido modelado es pequeña en comparación con la

Page 21: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 21

geometría del espacio. Como tal, el sonido se propaga principalmente en líneas rectas y la

determinación de trayectorias de reflexión resulta en pruebas de visibilidad [17].

El Ray tracing se utiliza como una técnica para generar una respuesta de impulso mediante el

seguimiento de la trayectoria de un rayo de sonido en un entorno tridimensional [21]. Los rayos se

emiten desde la fuente de sonido en muchas direcciones. Si un rayo golpea el receptor, se registra

un golpe o impulso. Si golpea un objeto, el rayo se refleja y el resto de su trayectoria se puede

rastrear recursivamente hasta un orden arbitrario [17].

Una de las desventajas de las técnicas de trazado de rayos son que el número discreto de rayos

rastreados y la forma arbitraria de las habitaciones pueden conducir a una pérdida significativa de

caminos de rayos o caminos contados varias veces [21]. La aritmética vectorial en la que se basan

los métodos de modelado geométrico no puede aplicarse al modelado de baja frecuencia, ya que la

longitud de onda del sonido modelado se compara con la geometría de la escena. En este caso, los

métodos basados en ondas son más precisos, ya que resuelven numéricamente la ecuación de onda

de una manera más rigurosa [17].

B. Transformada de Fourier y Convolución en tiempo-real

Para comprender el proceso de obtención de una auralización es de gran importancia conocer la

convolución. La transformada y la transformada inversa de Fourier son herramientas claves para

convolucionar dos señales. A continuación, se presentan las definiciones de estas dos operaciones.

1) Transformada de Fourier

En el ámbito del análisis de señales y de sistemas lineales invariantes en el tiempo (LTI), es de gran

importancia y utilidad la transformada de Fourier. Esta es una herramienta basada en la serie

matemática de Fourier, la cual permite describir una función periódica como una descomposición

de diversas ondas sinusoidales de diferente frecuencia y amplitud [22]. La transformada de Fourier

para funciones continuas en el tiempo se define como [23]:

𝑭𝑭(𝝎𝝎) = ∫ 𝒇𝒇(𝒕𝒕)𝒆𝒆−𝒋𝒋𝝎𝝎𝒕𝒕𝒅𝒅𝒕𝒕∞−∞ , (5.1)

Page 22: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 22

donde F(ω) es la función expresada en el dominio de la frecuencia (ω), f(t) corresponde a la función

en el dominio del tiempo. La constante e es la constante Euler, y la constante j es el operador

imaginario definido como 𝑗𝑗 = √−1.

La transformada inversa de Fourier permite expresar una función en el dominio del tiempo a partir

de su definición en el dominio de la frecuencia. La ecuación (5.2) es la definición matemática de

la transformada inversa de Fourier para funciones continuas [23].

𝒇𝒇(𝒕𝒕) =𝟏𝟏𝟐𝟐𝟐𝟐

� 𝒇𝒇(𝝎𝝎)𝒆𝒆𝒋𝒋𝝎𝝎𝒕𝒕𝒅𝒅𝝎𝝎,∞

−∞

(5.2)

La transformada de Fourier y la transformada inversa de Fourier se denotan comúnmente como

ℱ[ 𝑓𝑓(𝑡𝑡)] ≡ 𝐹𝐹(𝜔𝜔) y ℱ−1[ 𝐹𝐹(𝜔𝜔)] ≡ 𝑓𝑓( 𝑡𝑡) respectivamente [23].

En el caso de la transformada de Fourier para funciones discretas (ecuación (5.3)) [23], una

transformada de tamaño N muestras permite obtener una función definida sobre L = N frecuencias

igualmente distribuidas en un intervalo de 0 a 2𝜋𝜋 [22]. De igual manera, la transformada inversa

de Fourier para funciones definidas a partir de L frecuencias discretas (ecuación (5.4)) [23] permite

expresar la función en el dominio del tiempo con un tamaño de N muestras [22].

𝑿𝑿𝒍𝒍 = �𝒙𝒙𝒏𝒏𝒆𝒆−𝒋𝒋𝟐𝟐𝟐𝟐𝒏𝒏𝒍𝒍/𝑵𝑵,𝑵𝑵−𝟏𝟏

𝒏𝒏=𝟎𝟎

(5.3)

𝒙𝒙𝒏𝒏 =𝟏𝟏𝑳𝑳�𝒙𝒙𝒏𝒏𝒆𝒆−𝒋𝒋𝟐𝟐𝟐𝟐𝒏𝒏𝒍𝒍/𝑵𝑵,𝑳𝑳−𝟏𝟏

𝒏𝒏=𝟎𝟎

(5.4)

En las cuales 𝑋𝑋𝑙𝑙 es la función expresada en términos de frecuencias discretas l y 𝑥𝑥𝑛𝑛 es la función

en el dominio temporal, donde n es la variable temporal discreta. El número de muestras de la

función en tiempo discreto se denota con N, y a su vez, el número de frecuencias de la función en

Page 23: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 23

el dominio de la frecuencia se expresa con L. Finalmente 𝑥𝑥𝑛𝑛 es la función en el dominio temporal

discreto.

La transformada discreta de Fourier y la transformada inversa de Fourier para el caso discreto se

denotan como 𝐷𝐷𝐹𝐹𝐷𝐷[𝑥𝑥(𝑛𝑛)] e 𝐼𝐼𝐷𝐷𝐹𝐹𝐷𝐷[𝑥𝑥(𝑙𝑙)] respectivamente.

2) Convolución en tiempo-real

A partir de la respuesta al impulso, es posible otorgarle a una señal las características que introduce

un sistema, logrando emular la salida del sistema caracterizado ante una señal de entrada. Esto se

realiza utilizando la operación convolución [24]. La convolución particionada es un algoritmo

ampliamente utilizado debido a que se considera más eficiente en términos de recursos

computacionales, especialmente cuando se trabaja con respuestas al impulso con un número de

muestras mucho mayor al del buffer size [25].

El algoritmo generalizado de convolución particionada uniforme, propuesto por F. Wefers et. al

[25] divide la respuesta al impulso ℎ(𝑛𝑛) en s particiones ℎ0(𝑛𝑛),ℎ1(𝑛𝑛), . . . ,ℎ𝑠𝑠1(𝑛𝑛) cada una con un

tamaño M de muestras. Cada partición ℎ𝑖𝑖(𝑛𝑛) es retrasada un número de muestras 𝑖𝑖𝑖𝑖, expresado

en términos del buffer size B, y de un residuo 𝑑𝑑𝑖𝑖 para el caso donde número de muestras M de las

particiones de la FIR no sea múltiplo entero del buffer size. El retraso iM se expresa

matemáticamente como se indica en la ecuación (5.5), considerando las ecuaciones (5.6) y (5.7)

[25].

𝒊𝒊𝒊𝒊 = 𝒃𝒃𝒊𝒊𝑩𝑩 + 𝒅𝒅𝒊𝒊, (5.5)

𝒃𝒃𝒊𝒊 = �𝒊𝒊𝒊𝒊𝑩𝑩�,

(5.6)

𝒅𝒅𝒊𝒊 = 𝒎𝒎𝒎𝒎𝒅𝒅(𝒊𝒊𝒊𝒊,𝑩𝑩), (5.7)

En el cual 𝑏𝑏𝑖𝑖 es el múltiplo de buffer size para cada partición de ℎ𝑖𝑖(𝑛𝑛), los delimitadores ⌊𝑦𝑦⌋ indican

que el número dentro de estos se aproxima al entero inferior, y 𝑚𝑚𝑚𝑚𝑑𝑑(·) es el operador módulo. A

cada partición se le adicionan 𝑑𝑑𝑖𝑖 muestras con ceros a la izquierda (retrasando la señal) y 𝑁𝑁 −𝑖𝑖 −

Page 24: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 24

𝑑𝑑𝑖𝑖 a la derecha, donde N es el tamaño de la transformada. Posteriormente estas particiones son

transformadas al dominio de la frecuencia y almacenadas [25].

Cada buffer size (B muestras) de la señal de entrada se almacena en orden de llegada. Se realiza

una DFT de N muestras, almacenando las transformadas de la señal de entrada en una línea de

retrasos en el dominio de la frecuencia. Se desplaza cada transformada de acuerdo a su orden de

llegada. Se realiza posteriormente una multiplicación entre la partición de la respuesta al impulso

i y su correspondiente espectro de entrada. Los resultados son almacenados en el orden de la línea

de retrasos [25].

Finalmente, se aplica una IDFT (ecuación (5.4)) a la señal almacenada. Se descartan las primeras

muestras por distorsión temporal, retornando B muestras correspondientes al tamaño del buffer size

[25].

C. Sistema Ambisonics, armónicos esféricos y codificación en B-format

En esta sección se presenta la teoría de armónicos esféricos, la cual es la base en la que se

fundamentan los sistemas Ambisonics.

1) Ambisonics

En 1970 un grupo liderado por Gerzon, del Instituto Matemático en Oxford escribió una serie de

artículos que hablaban de un verdadero formato de sonido surround [26]. Ambisonics es un sistema

de sonido multicanal que abarca la codificación y decodificación del campo sonoro 3D hasta un

arreglo de parlantes [27].

Esta descripción del campo sonoro es dada por una matriz que está basada en la teoría de armónicos

esféricos. Las investigaciones hechas con Ambisonics han continuado desde entonces. En tiempos

recientes éstas han sido de interés no solo del dominio musical sino también en otros campos como

videojuegos y producciones audiovisuales en los que el sonido es una parte fundamental.

Page 25: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 25

2) Armónicos esféricos

Los armónicos esféricos hacen parte de la solución de la ecuación de onda cuando se expresa en

coordenadas esféricas. Cualquier función que sea integrable en la esfera unitaria se puede expandir

utilizando armónicos esféricos mediante [23].

𝒇𝒇(𝜽𝜽,𝝓𝝓) = � � 𝑨𝑨𝒏𝒏𝒎𝒎𝒀𝒀𝒏𝒏𝒎𝒎(𝜽𝜽,𝝓𝝓),𝒏𝒏

𝒎𝒎=−𝒏𝒏

𝒏𝒏=𝟎𝟎

(5.8)

Donde 𝜃𝜃 y 𝜑𝜑 son los ángulos de elevación y azimut correspondientemente. Los coeficientes 𝐴𝐴𝑛𝑛𝑛𝑛

pueden ser calculados como:

𝑨𝑨𝒏𝒏𝒎𝒎 = � 𝒀𝒀𝒏𝒏𝒎𝒎(𝜽𝜽,𝝓𝝓) ∗ 𝒇𝒇(𝜽𝜽,𝝓𝝓) 𝒅𝒅𝛀𝛀,𝛀𝛀

(5.9)

Donde 𝑌𝑌𝑛𝑛𝑛𝑛(𝜃𝜃,𝜙𝜙) son los armónicos esféricos y (·) ∗ denota el conjugado complejo.

La ecuación de onda en coordenadas esféricas es dada por:

La solución obtenida por la separación de variables lleva a la siguiente expresión para la presión

[23]:

Donde 𝒋𝒋𝒏𝒏 es la función esférica de Bessel del primer tipo de orden n y 𝑌𝑌𝑛𝑛𝑛𝑛(𝜃𝜃,𝜙𝜙) son los armónicos

esféricos definidos por la siguiente ecuación:

𝟏𝟏𝒓𝒓𝟐𝟐

𝝏𝝏𝝏𝝏𝒓𝒓�𝒓𝒓𝟐𝟐

𝝏𝝏𝝏𝝏𝝏𝝏𝒓𝒓� +

𝟏𝟏𝒓𝒓𝟐𝟐 𝐬𝐬𝐬𝐬𝐬𝐬(𝜽𝜽)

𝝏𝝏𝝏𝝏𝜽𝜽

+ �𝐬𝐬𝐬𝐬𝐬𝐬 𝜽𝜽𝝏𝝏𝝏𝝏𝝏𝝏𝜽𝜽

� +𝟏𝟏

𝒓𝒓𝟐𝟐 𝐬𝐬𝐬𝐬𝐬𝐬(𝜽𝜽)𝝏𝝏𝝏𝝏𝝏𝝏𝝓𝝓𝟐𝟐 −

𝟏𝟏𝒄𝒄𝟐𝟐𝝏𝝏𝟐𝟐𝝏𝝏𝝏𝝏𝒕𝒕𝟐𝟐

= 𝟎𝟎, (5.10)

𝒑𝒑(𝒓𝒓,𝜽𝜽,𝝓𝝓,𝝎𝝎) = � � 𝑨𝑨𝒏𝒏𝒎𝒎(𝝎𝝎)𝒋𝒋𝒏𝒏(𝒌𝒌𝒓𝒓𝒙𝒙)𝒀𝒀𝒏𝒏𝒎𝒎(𝜽𝜽,𝝓𝝓),𝒏𝒏

𝒎𝒎=−𝒏𝒏

𝒏𝒏=𝟎𝟎

(5.11)

Page 26: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 26

Donde 𝝏𝝏𝒏𝒏𝒎𝒎 es la función de Legendre asociada.

La relación entre una onda plana y los armónicos esféricos es dada por la expansión de Jacobi-

Anger.

La relación para una onda esférica está dada por:

Donde 𝑥𝑥𝑠𝑠𝑠𝑠𝑠𝑠 es la posición de la fuente sonora y ℎ𝑛𝑛(2)(𝑘𝑘𝑟𝑟𝑠𝑠𝑠𝑠𝑠𝑠) es la función esférica de Hankel de

segundo orden.

En la aplicación de los armónicos esféricos para la descripción de campos acústicos. Es posible

utilizar el componente real de los armónicos esféricos 𝑌𝑌𝑛𝑛𝑛𝑛, la cual se obtiene a partir de sus

correspondientes armónicos complejos [27]. Esta componente se expresa matemáticamente como:

𝒀𝒀𝒏𝒏𝒎𝒎(𝜽𝜽,𝝓𝝓) = �(𝟐𝟐𝒏𝒏 + 𝟏𝟏)

𝟒𝟒𝟐𝟐(𝒏𝒏 −𝒎𝒎)!(𝒏𝒏 + 𝒎𝒎)!

𝝏𝝏𝒏𝒏𝒎𝒎(𝒄𝒄𝒎𝒎𝒄𝒄𝜽𝜽)𝒆𝒆𝒋𝒋𝒎𝒎𝝓𝝓,

(5.12)

𝒆𝒆𝒋𝒋𝒌𝒌 𝒙𝒙·𝒚𝒚� = 𝟒𝟒𝟐𝟐�𝒋𝒋𝒏𝒏𝒋𝒋𝒏𝒏(𝒌𝒌𝒓𝒓𝒙𝒙) � 𝒀𝒀𝒏𝒏𝒎𝒎(𝜽𝜽𝒙𝒙,𝝓𝝓𝒙𝒙)𝒀𝒀𝒏𝒏𝒎𝒎�𝜽𝜽𝒚𝒚,𝝓𝝓𝒚𝒚� ∗ ,𝒏𝒏

𝒎𝒎=−𝒏𝒏

𝒏𝒏=𝟎𝟎

(5.13)

𝒆𝒆𝒋𝒋𝒌𝒌|𝒙𝒙−𝒙𝒙𝒄𝒄𝒓𝒓𝒄𝒄|

𝟒𝟒𝟐𝟐|𝒙𝒙 − 𝒙𝒙𝒄𝒄𝒓𝒓𝒄𝒄| = −𝒋𝒋𝒌𝒌� � 𝒋𝒋𝒏𝒏(𝒌𝒌𝒓𝒓𝒙𝒙)𝒉𝒉𝒏𝒏(𝟐𝟐)(𝒌𝒌𝒓𝒓𝒄𝒄𝒓𝒓𝒄𝒄)𝒀𝒀𝒏𝒏𝒎𝒎(𝜽𝜽𝒄𝒄𝒓𝒓𝒄𝒄,𝝓𝝓𝒄𝒄𝒓𝒓𝒄𝒄) ∗ ,

𝒏𝒏

𝒎𝒎=−𝒏𝒏

𝒏𝒏=𝟎𝟎

(5.14)

Page 27: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 27

3) Codificación B-Format

Este formato se basa en armónicos esféricos de orden 0 y 1. Es usado para almacenar la información

del campo sonoro 3D. Consiste en cuatro canales de audio W, X, Y, Z; cada uno representa una

grabación del campo sonoro usando un micrófono de presión para el canal W y tres micrófonos de

gradiente de presión ortogonalmente orientados a lo largo de los ejes x,y,z cartesianos para los

canales X,Y,Z respectivamente. Más específicamente, el número y orientación de estos micrófonos

es descrito por la dimensión escogida y de las funciones de armónicos esféricos de orden cero y

primero respectivamente [27]. En un entorno real no es físicamente posible tener múltiples cápsulas

de micrófono ocupando el mismo punto en el espacio. Por lo tanto, se emplean disposiciones

alternativas tales como un conjunto tetraédrico de cápsulas subcardioides cuyas cuatro salidas se

conocen como A Format. Entonces es posible realizar una conversión de A-Format a B-Format

para obtener las señales W, X, Y, Z [19]. La respuesta polar de cada micrófono que es usada para

grabar W, X, Y, Z es definida matemáticamente en las siguientes ecuaciones:

𝚼𝚼𝒏𝒏𝒎𝒎 =

⎩⎪⎨

⎪⎧𝒊𝒊√𝟐𝟐

�𝒀𝒀𝒏𝒏−|𝒎𝒎| − (−𝟏𝟏)𝒎𝒎𝒀𝒀𝒏𝒏

|𝒎𝒎|� 𝒑𝒑𝒑𝒑𝒓𝒓𝒑𝒑 𝒎𝒎 < 𝟎𝟎

𝒀𝒀𝒏𝒏𝒎𝒎 𝒑𝒑𝒑𝒑𝒓𝒓𝒑𝒑 𝒎𝒎 = 𝟎𝟎𝟏𝟏√𝟐𝟐

(𝒀𝒀𝒏𝒏−|𝒎𝒎| + (−𝟏𝟏)𝒎𝒎𝒀𝒀𝒏𝒏

|𝒎𝒎| 𝒑𝒑𝒑𝒑𝒓𝒓𝒑𝒑 𝒎𝒎 > 𝟎𝟎

,

(5.15)

𝑾𝑾 =𝟏𝟏𝑰𝑰�𝒄𝒄𝒊𝒊 �

𝟏𝟏√𝟐𝟐

� ,𝑰𝑰

𝒊𝒊=𝟏𝟏

(5.16)

𝑿𝑿 =𝟏𝟏𝑰𝑰�𝒄𝒄𝒊𝒊[𝐜𝐜𝐜𝐜𝐬𝐬 𝜽𝜽𝒊𝒊 𝐬𝐬𝐬𝐬𝐬𝐬𝝓𝝓𝒊𝒊],𝑰𝑰

𝒊𝒊=𝟏𝟏

(5.17)

𝒀𝒀 =𝟏𝟏𝑰𝑰�𝒄𝒄𝒊𝒊[𝐬𝐬𝐬𝐬𝐬𝐬 𝜽𝜽𝒊𝒊 𝐬𝐬𝐬𝐬𝐬𝐬𝝓𝝓𝒊𝒊],𝑰𝑰

𝒊𝒊=𝟏𝟏

(5.18)

Page 28: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 28

Donde W, X, Y y Z son las señales del sistema Ambisonics de primer orden; 𝝓𝝓𝒊𝒊y 𝜽𝜽𝒊𝒊 son los ángulos

azimutal y elevación para la orientación de cada señal monofónica. [28]. Así se ven los armónicos

esféricos para los diferentes canales Ambisonic (W a Z de izquierda a derecha) [28]:

4) Decodificación

Las señales codificadas por Ambisonic no alimentan a los altavoces por sí mismos. Transportan la

información direccional de todo un campo sonoro. Eso significa que son completamente

independientes del diseño del altavoz elegido para decodificar el campo sonoro. Por lo tanto, un

decodificador Ambisonic siempre está diseñado para un altavoz específico, y un campo sonoro

codificado en B-Format se puede reproducir en cualquier sistema de decodificación Ambisonic

[28]. Para una buena reconstrucción del campo sonoro se tiene que el número de altavoces L deber

ser para el caso tridimensional:

Donde N es el orden utilizado en la expansión.

𝒁𝒁 =𝟏𝟏𝑰𝑰�𝒄𝒄𝒊𝒊[𝐜𝐜𝐜𝐜𝐬𝐬𝝓𝝓𝒊𝒊],𝑰𝑰

𝒊𝒊=𝟏𝟏

(5.19)

𝑳𝑳 ≥ (𝑵𝑵+ 𝟏𝟏)𝟐𝟐 (5.20)

Fig. 1. Armónicos esféricos para codificación de primer orden

Page 29: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 29

5) Decodificación por matriz Pseudoinversa

Una notación de la ecuación de decodificación en forma de matriz puede ser útil. En este caso B es

el vector de columna de los canales 𝐴𝐴𝑚𝑚𝑏𝑏𝑖𝑖𝐴𝐴𝑚𝑚𝑛𝑛𝑖𝑖𝐴𝐴 (𝐵𝐵 = [𝑊𝑊𝑋𝑋𝑌𝑌𝑊𝑊]𝑇𝑇), donde 𝑇𝑇 es la traspuesta, p el

vector de columna de las señales del altavoz, C la matriz de decodificación. Las entradas de C son

los valores de los armónicos esféricos para las posiciones del altavoz, con N filas para los diferentes

armónicos esféricos, y L columnas para los altavoces. Entonces es posible expresar la función de

decodificación como [28]:

Donde 𝑪𝑪−𝟏𝟏 es la inversa si 𝑳𝑳 = (𝑵𝑵 + 𝟏𝟏)𝟐𝟐, y la Moore-Penrose pseudo-inverse si 𝑳𝑳 > (𝑵𝑵 + 𝟏𝟏)𝟐𝟐.

D. Rotación del campo sonoro con armónicos esféricos

Por medio de matrices de rotación simples, es posible rotar un campo sonoro codificado en

Ambisonic alrededor de los tres ejes de un sistema de coordenadas 𝑥𝑥, 𝑦𝑦 y 𝑧𝑧. Esta propiedad del

campo sonoro Ambisonic es utilizado en técnicas binaurales de reproducción de audio 3D [28]. La

Tabla I muestra la matriz de rotación para el eje 𝑊𝑊 para hasta nueve coeficientes de armónicos

esféricos [29].

𝑩𝑩 = 𝑪𝑪𝒑𝒑 (5.21)

𝒑𝒑 = 𝑪𝑪−𝟏𝟏 ∗ 𝑩𝑩 (5.22)

Page 30: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 30

TABLA I. MATRIZ DE ROTACIÓN EN EL EJE Z

ACN 0 In 1 In 2 In 3 In 4 In 5 In 6 In 7 In 8 In

0 In 1 1 0 0 0 0 0 0 0

1 In 0 cos (𝑎𝑎) 0 𝐴𝐴𝑖𝑖𝑛𝑛(𝑎𝑎) 0 0 0 0 0

2 In 0 0 1 0 0 0 0 0 0

3 In 0 −𝐴𝐴𝑖𝑖𝑛𝑛(𝑎𝑎) 0 𝐴𝐴𝑚𝑚𝐴𝐴(𝑎𝑎) 0 0 0 0 0

4 In 0 0 0 0 cos (2𝑎𝑎) 0 0 0 𝐴𝐴𝑖𝑖𝑛𝑛 (2𝑎𝑎)

5 In 0 0 0 0 0 𝐴𝐴𝑚𝑚𝐴𝐴(𝐴𝐴) 0 𝐴𝐴𝑖𝑖𝑛𝑛 (𝑎𝑎) 0

6 In 0 0 0 0 0 0 1 0 0

7 In 0 0 0 0 0 −𝐴𝐴𝑖𝑖𝑛𝑛 (𝑎𝑎) 0 𝐴𝐴𝑚𝑚𝐴𝐴 (𝑎𝑎) 0

8 In 0 0 0 0 −𝐴𝐴𝑖𝑖𝑛𝑛 (𝑎𝑎) 0 0 0 cos (2𝑎𝑎)

E. Audio 3D y reproducción

En esta sección se presenta el concepto de audio 3D y se presenta la definición de audio binaural y

auralización.

1) Audio 3D

Un Sistema de audio 3D tiene la habilidad de posicionar sonidos alrededor del oyente. Los sonidos

son reproducidos por parlantes o audífonos, pero la percepción que tiene el oyente es que el sonido

proviene de puntos arbitrarios en el espacio. Esto es similar al paneo en sistemas convencionales

estéreo: los sonidos pueden ser paneados en puntos entre los dos parlantes, creando imágenes

virtuales o “fantasmas” del sonido donde no está el parlante. Sin embargo, los sistemas estéreo no

pueden posicionar sonidos en los lados o en la parte posterior del oyente, ni encima o debajo de él.

Un sistema 3D hace justo esa tarea [26].

Page 31: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 31

2) Funcionamiento del Audio 3D

Los humanos podemos localizar fuentes gracias a un complejo mecanismo que utiliza la posición

de las orejas y las pequeñas diferencias de tiempo y nivel que produce su ubicación en la cabeza,

incluso los hombros y la morfología de la cabeza participan en este proceso.

Un sonido generado en el espacio crea una onda de sonido que se propaga y llega a los oídos del

oyente. Cuando el sonido está a la izquierda del oyente llega primero al oído izquierdo antes que,

al derecho, en consecuencia, la señal que llega al oído derecho está retrasada con respecto a la señal

del izquierdo. En adición la señal del oído derecho puede estar atenuada debido a la sombra acústica

generada por la cabeza. Ambas señales que llegan a los oídos están también sujetas a un complicado

proceso de filtración causado por la interacción acústica con el torso, cabeza, y en particular con el

pabellón en el oído externo [26].

Los pliegues presentes en el pabellón modifican el contenido en frecuencia de la señal, reforzando

o atenuando frecuencias debido a los rebotes que sufren las ondas que llegan a éstos.

Inconscientemente se usa tiempos de retardo, diferencias de amplitudes e información tonal en

cada oído para determinar la posición de las fuentes de sonido.

La transformación del sonido desde un punto en el espacio hasta cada canal del oído puede ser

medida con precisión. Estas medidas son llamadas Head-Related Transfer Functions (HRTF’s),

las cuales dependen de los ángulos y la distancia de la fuente al receptor. Generalmente son medidas

a dos metros asumiendo que se tienen ondas planas. Por lo que la dependencia a la distancia se

ignora.

Un sistema de audio 3D funciona replicando el proceso natural de escucha reproduciendo el sonido

con las señales de localización en los oídos del oyente. Este proceso se puede emular usando un

par de HRTF’s que filtren un archivo de audio. Se reproducen a través de audífonos y el oyente

percibirá el sonido en una locación específica dada por la HRTF. Este proceso es llamado síntesis

binaural [26].

Cada persona posee un par de HRTF’s correspondiente a su estructura, por esta razón el uso de

HRTF’s no individualizadas generalmente conlleva dos problemas particulares de localización:

confusiones con sonidos provenientes de adelante y atrás y errores en la elevación. Estos dos

problemas son la gran limitación de la tecnología 3D [26].

Page 32: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 32

3) Audio binaural

El audio binaural se basa en HRTF’s para emular la forma de la cabeza y como ésta afecta las ondas

que llegan a los oídos. Esto crea experiencias de escucha realistas donde se puede discernir la

ubicación de las fuentes de sonido en el espacio [30]. Las funciones describen los caminos entre la

fuente de sonido y cada oído en términos de diferencias de tiempo interaurales (𝐼𝐼𝐷𝐷𝐷𝐷). Estas son el

resultado de las diferencias en el tiempo de propagación de las ondas de sonido. Las diferencias de

nivel interaural (𝐼𝐼𝐿𝐿𝐷𝐷) se presentan por la diferencia de las longitudes de los recorridos de

propagación. A esto se le suma el efecto de sombra acústica que genera la cabeza humana. Se

realiza la síntesis binaural al convolucionar la fuente de sonido mono con la 𝐻𝐻𝐻𝐻𝐷𝐷𝐹𝐹 específica del

oyente. Este proceso de síntesis también se puede combinar con modelos de campo sonoro para

producir simulaciones y modelos de recintos binaurales. La síntesis binaural aplicada a cada

reflexión produce la Respuesta Binaural al Impulso del Recinto [31]. En caso de utilizar altavoces

para la reproducción es necesario el uso de técnicas para la cancelación de crosstalk [32].

F. Auralización interactiva

Los sistemas de realidad virtual que permiten al usuario tener una experiencia multisensorial están

siendo ampliamente investigados debido a su potencial aplicación en áreas como entretenimiento,

educación, evaluaciones subjetivas, etc. En cuanto a la auralización, esta técnica permite al usuario

escuchar el campo sonoro de un espacio específico y también le permite interactuar con el entorno.

Esto significa que proporciona la capacidad de movimiento dentro del entorno virtual,

reconstruyendo el campo acústico según la posición. El desarrollo RIR de un sistema en tiempo-

real requiere una pesada carga computacional. Esto se debe a que la tiene que ser calculada de

manera interactiva basándose en las ubicaciones de fuente / oyente para luego convolucionarse

con el audio grabado en un ambiente anecoico. Además, si se realiza una reproducción binaural

mediante auriculares o utilizando altavoces. La RIR binaural debe tener en cuenta la rotación de la

cabeza del usuario y los cambios de la HRTF con respecto a los ángulos de incidencia de las ondas

acústicas [33].

Page 33: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 33

VI. DESARROLLO

A. Diagrama de flujo de señal

El proyecto se compone de la realización de diferentes unidades. En la Figura. 2 se presenta el

diagrama de flujo utilizado en el desarrollo del algoritmo de espacialización de fuentes sonoras.

Fig. 2. Diagrama de flujo - metodología de trabajo

Las diferentes etapas de desarrollo del proyecto son descritas a continuación.

B. Simulación acústica del recinto y obtención de respuestas al impulso en B-Format

Previo a la simulación para todas las posiciones de receptor en el recinto y obtención de IRs en

codificación B-format, se llevó a cabo una simulación en condiciones anecoicas con un solo

receptor ubicado a un metro de distancia y al frente de la fuente. Esto con el propósito de corroborar

la amplitud de las señales en codificación B-format de acuerdo con la teoría de codificación [28].

Page 34: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 34

El esquema de la distribución espacial de receptor y fuente y las dimensiones del espacio simulado

es descrito en la Figura. 3.

Fig. 3. Posición fuente receptor para comprobación de codificación B-Format

Se utilizó el algoritmo de predicción 2 de Catt-Acoustic recomendado para la generación de

auralizaciones y se tomó solo el sonido directo. La respuesta al impulso obtenida se presenta en la

Figura. 4

Fig. 4. Respuesta al impulso sintetizada y codificada en B-Format

Page 35: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 35

De la anterior Figura. 3 se puede evidenciar como el dipolo que está ubicado en el eje x a la misma

altura de la fuente, es decir a cero grados es el único que tiene presencia de señal. Esto se observa

en los canales W y X, mientras que en los canales Y y Z la señal es nula.

Luego de corroborar la codificación en B-format, se realizó la simulación del recinto con la

ubicación de los receptores mostrada en la Figura. 5. El propósito de esta simulación es que las

respuestas al impulso sean actualizadas en tiempo-real cuando se esté haciendo la implementación

dentro del entorno Unity. Esto con el fin de emular las reflexiones y el efecto de procedencia que

se tiene.

Fig. 5. Distribución de receptores en la sala simulada (IRs)

Se simuló con el algoritmo de predicción 2 de Catt-Acoustic y se tomaron 25000 rayos. Los

gráficos de niveles de presión SPL por octavas de frecuencia de 500Hz, 1000Hz, 2000Hz, 4000Hz

son presentados en la Figura. 6,

Se observa la presencia de modos generados por la geometría y características físicas del recinto.

Estos corresponden a puntos de mínima presión afectando el nivel SPL de los receptores 5,6,7,10

y 11.

Page 36: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 36

Fig. 6. Niveles de presión distribuidos en recinto por octavas de frecuencia

Posteriormente se guardaron las respuestas al impulso B-format para cada punto de receptor en

formato *.mat y se generaron los archivos de audio *.wav en el software de procesamiento Matlab.

C. Diseño de escena virtual y preparación del entorno de comunicación Unity-LibPd

1) Modelado 3D

En primera instancia se definió el tipo de escenario para la escena. Se realizó el diseño del recinto

en el software de modelado 3D Sketchup el cual se puede observar en la Figura. 7. Posteriormente

se importó al entorno Unity donde se realizó un proceso de texturización e iluminación.

Fig. 7. Modelo gráfico en Sketchup

Page 37: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 37

La Figura. 8 muestra el entorno de trabajo dentro de Unity, su ventana principal de escena, jerarquía

de objetos y jerarquía de carpetas dentro de Assets

Fig. 8. Modelo del recinto dentro del motor de videojuegos

2) LibPd para Windows de 64-bits embebido en Unity

Esta etapa se encarga de la implementación del puerto de comunicación LibPd de compatibilidad

con Unity y Windows de 64 bits. El cual se encuentra dentro de la plataforma de desarrollo

colaborativo GitHub [34]. Posteriormente se descargó la librería embebida de Pure Data: LibPd

y se recompiló para ser utilizada en sistemas de 64 bits siguiendo los pasos encontrados en la

misma plataforma. Para la descripción de esta metodología favor remitirse al anexo 1

Existen diferentes trabajos que realizan una conexión sencilla además de crear métodos claros

para incorporar Pure Data como motor de audio para Unity. Entre ellas existe uPD v1.01, es un

paquete de Unity realizado por Magicolo [35] que facilita la conexión de la librería. La misma

incluye una lista de métodos para la comunicación de Unity con el patch de Pure Data. Además

de diferentes efectos (chorus, flangger, etc) de Pure Data y escenas de ejemplo que demuestran el

uso de la librería.

Page 38: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 38

D) Desarrollo del algoritmo basado en teoría de armónicos esféricos

El algoritmo fue desarrollado en el lenguaje gráfico de programación Pure Data. Se utilizó la

librería embebida LibPd dentro de Unity como se encuentra en el anexo 1. A continuación, se

describirá el proceso de desarrollo y las pruebas correspondientes a cada uno de los patch para

verificar el correcto funcionamiento. El patch principal del algoritmo en Pure Data es presentado

en el anexo 2.

1) Rotación del campo sonoro

En la primera parte se realizó el almacenamiento en tablas de cada uno de los cuatro canales de la

respuesta al impulso. Posteriormente esta respuesta se multiplicó con la matriz de rotación para

los cuatro primeros coeficientes presentada en el marco teórico en la Tabla I. Para verificar que la

matriz de rotación generara la salida deseada, se ingresó una respuesta al impulso simulada en

condiciones anecoicas ubicada a cero grados de la fuente y tomando únicamente el sonido

directo. Para este caso como se mencionó con anterioridad solo en los canales W y X habría

presencia de señal. Siguiendo la teoría de rotación en azimut, si se genera un cambio en el ángulo

del receptor con respecto a la fuente de 90 grados la señal estaría presente en el dipolo ubicado a

lo largo del eje Y. Esto se evidenció ubicando sliders a la salida de la matriz de rotación para cada

canal. Efectivamente para una rotación de 90 grados en azimut las sliders relacionadas a los

canales W y Y presentaron un desplazamiento. Mientras que las sliders para los canales X y Z

permanecieron inmóviles. Así mismo se verificó para un ángulo de 45 grados en el que los

dipolos ubicados en el eje X y Y deberían capturar la señal. Como se esperaba los dos canales Y y

X presentaron señal y movimiento de las sliders correspondientes.

En el anexo 3 se encuentra el subpatch de Pure Data para la rotación del campo sonoro.

2) Reproducción del campo sonoro con armónicos esféricos

En consecuencia, la señal de salida de la matriz de rotación se convoluciona con un audio anecoico.

La convolución utiliza el algoritmo de Overlap Add. La señal resultante se multiplica punto a punto

con la matriz de decodificación que contiene las amplitudes para cada parlante ubicado en la esfera

Page 39: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 39

unitaria que proporcionará la reconstrucción del campo sonoro. Las amplitudes para cada parlante

son calculadas teniendo en cuenta los ángulos de azimut y elevación de la posición correspondiente

a cada parlante. Esta distribución fue calculada de acuerdo con la teoría de armónicos esféricos

presentada en el marco teórico. Para verificar el correcto funcionamiento de este proceso, se utilizó

la misma IR con la que se verificó el patch de rotación. Se corroboró para una posición de receptor

ubicado al frente de la fuente (cero grados azimut) que la señal proviniera de esa misma dirección.

Entonces se verificó que los parlantes con mayor cercanía a los 0 grados en azimut con respecto a

la fuente tuvieran el mayor nivel de amplitud. En acierto con lo mencionado se verificó situando

medidores VU en la salida, así se pudo observar los parlantes con mayor ganancia.

El anexo 4 contiene el subpatch de Pure Data correspondiente a la decodificación del B-Format.

3) Reproducción binaural

Finalmente, la señal es convolucionada con cada par de HRTFs correspondiente a cada ubicación

de altavoz. Se utilizó la base de datos SOFA (Spatially Oriented Format for Acoustics). Esto con

el fin de obtener una reproducción binaural. El procedimiento consta de sumar las señales de los

canales izquierdo y derecho independientemente. La reproducción final corresponde al audio de la

fuente con las propiedades acústicas de la sala. Para cada ángulo de rotación ingresado se obtiene

la rotación del campo sonoro 3D en azimut.

El anexo 5 corresponde al subpatch de Pure Data donde la señal para cada parlante es

convolucionada con las HRTFs correspondiente a su ubicación en la esfera unitaria para ser

reproducido con formato binaural.

E. Implementación en Unity

El algoritmo para la espacialización 3D de fuentes sonoras fue posteriormente implementado en

una escena virtual dentro del motor de videojuegos Unity. Para establecer un envío de datos

requeridos en el patch de Pure Data desde Unity a LibPd se programó el código basado en los

métodos de comunicación del paquete libpd64 implementado con base a la información descargada

de la cuenta del usuario djKoloski en GitHub [34]. Se creó el script en lenguaje nativo de Unity:

C#, por medio de este se realiza el envío del ángulo de rotación de acuerdo con la posición del

Page 40: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 40

ávatar, la respuesta al impulso correspondiente a su ubicación en el recinto y el audio monofónico

de la fuente. Ver anexos 6 y 7.

En la Figura. 9 se presenta la interfaz en Unity donde se permite activar la propiedad de Audio

Source y así permite asignar y cargar el audio monofónico correspondiente a la fuente. Además, se

instancia el script de C# que permite el envío de datos.

Fig. 9. Vista de inspector donde Audio Source y C# script están instanciados

La Figura. 10 muestra la interfaz en donde se permite cargar la IR correspondiente a una

ubicación en el recinto.

Fig. 10. Prefabricado de la respuesta al impulso (IR)

Page 41: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 41

La Figura. 11 muestra una vista superior del modelo gráfico y la distribución de las respuestas al

impulso dentro del recinto.

Fig. 11. Vista superior (sin techo) del modelo gráfico en Unity

F. Prueba d aceptación de usuario

A continuación, se presenta la prueba de aceptación de usuario bajo las recomendaciones de la

National Bureau Standards (NBS) [36]. La prueba tiene como objetivo la evaluación del

cumplimiento de los requerimientos de diseño del algoritmo de procesamiento de audio espacial

para la generación de videojuegos en entorno Unity. El tipo de prueba realizada es de “Caja

cerrada”. Este tipo de prueba de aceptación analiza las funcionalidades del software sin conocer la

estructura interna del código del mismo [37].

1) Resumen

Se realizó una prueba manual del funcionamiento del algoritmo implementado en una escena

virtual. Esta prueba busca reconocer la aceptación del funcionamiento del algoritmo por parte de

los usuarios con conocimientos de audio. Para esto se realizaron una serie de preguntas concretas

Page 42: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 42

para la validación del cumplimiento de los requerimientos de funcionamiento por parte de los

encuestados. La prueba realizada se puede encontrar en el Anexo 6.

2) Ejecución de pruebas

• Condiciones de inicio: El programa debe estar instalado correctamente en el computador

utilizado para la prueba. Se debe haber informado acerca del procedimiento, objetivos y

posibles riesgos que implica la prueba. El encuestado debe aceptar las condiciones y

diligenciar el consentimiento informado.

• Condiciones de finalización: La ejecución de la prueba finaliza cuando el usuario responda

a la totalidad de las preguntas. En caso de presentarse algún riesgo que pueda afectar al

encuestado se debe suspender la realización de la prueba.

• Población utilizada para la prueba: La prueba fue realizada a diez personas: docentes y

estudiantes de ingeniería de sonido.

3) Resultados de la prueba de aceptación

La prueba fue realizada bajo el consentimiento dado por los docentes y estudiantes que la

realizaron. Evaluando la percepción del cambio en el campo sonoro al navegar dentro del recinto

en la escena virtual, los resultados fueron positivos. La totalidad de los encuestados percibe el

cambio al actualizarse las respuestas al impulso de acuerdo a su posición. En su mayoría perciben

rotación del campo sonoro cuando se gira la cabeza del avatar en el eje horizontal, reconociendo la

ubicación de la fuente en el espacio. Sin embargo, en la percepción de la atenuación por factores

como la distancia, la respuesta es positiva con algunas observaciones en cuanto a los cambios

sutiles en las diferencias de nivel. Teniendo en cuenta los resultados anteriores se verifica que el

algoritmo cumple con los objetivos propuestos en el proyecto.

Page 43: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 43

VII. CONCLUSIONES

• De acuerdo a la bibliografía, el presente desarrollo es el primero que permite espacializar

fuentes sonoras con respuestas al impulso B-Format usando la librería embebida de Pure

Data (LibPD).

• Gracias a que Pure Data es un lenguaje de programación gráfico orientado al

procesamiento digital de señales. A través de su librería embebida (LibPD) lo convierte en

una herramienta amigable de programación, para el desarrollo de algoritmos de

procesamiento de audio y la integración con diferentes entornos de desarrollo.

• El desarrollo de un algoritmo de espacialización en un entorno nativo dentro de Unity, si es

posible sin la dependencia de motores de procesamiento de audio externos. Este algoritmo

consta tanto del trabajo de armónicos esféricos como de binaural y es posible realizar un

prototipo funcional.

• Las pruebas de aceptación de usuario realizadas indican que el algoritmo desarrollado

cumple con los requerimientos de diseño formulados. Al finalizar el presente proyecto se

cuenta con un algoritmo que permite el procesamiento de respuestas al impulso

B-format. Permite la espacialización de fuentes en tiempo-real y la rotación del campo

sonoro sobre el eje horizontal. Implementado en una escena virtual para su aplicación en

procesos de diseño de videojuegos.

• Como recomendación se tiene que a pesar de la creación de la librería LibPD en el año

2012. Las integraciones a Unity como motor de audio son recientes y no hay un flujo de

trabajo claro y estandarizado.

Page 44: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 44

REFERENCIAS

[1] J. Blauert, H. Lehnert, J. Sahrhage y H. Strauss, «An Interactive Virtual-Environment

Generator for Psychoacoustic Research. I: Architecture and Implementation,» Acta Acustica

united with Acustica, vol. 86, nº 1, pp. 94-102, 2000.

[2] Q. Huong, Dinh, N. Walker, L. Hodges, C. Song y A. Kobayashi, «Evaluating the importance

of multi-sensory input on memory and the sense of presence in virtual environments,»

Proceedings IEEE Virtual Reality, pp. 222-228, 1999.

[3] Unity Technologies, «Unity - manual: Audio spatializer sdk.,» 15 08 2017. [En línea].

Available: https://docs.unity3d.com/es/current/Manual/AudioSpatializerSDK.html.

[4] Oculus VR, «Oculus audio sdk.,» 20 08 2017. [En línea]. Available:

http://static.oculus.com/documentation/pdfs/audiosdk/latest/audiosdk.pdf.

[5] VisiSonics, «RealSpace 3D Audio 2014,» 15 08 2017. [En línea]. Available:

http://realspace3daudio.com/technology/#techoverview.

[6] Microsoft, «developer.microsoft.com.,» [En línea]. Available:

https://developer.microsoft.com/en-us/windows/mixed-reality/holograms_220. [Último

acceso: 15 08 2017].

[7] VVAudio, «Vvaudio | vvaudio.com.,» 22 09 2017. [En línea]. Available:

https://www.vvaudio.com/.

[8] Corporation, V., «Technology - realspace3d audio.,» 17 08 2017. [En línea]. Available:

http://realspace3daudio.com/technology/#techoverview.

[9] Tazman-Audio, «Tazman-audio.,» [En línea]. Available: http://www.tazman-

audio.co.uk/fabric. [Último acceso: 17 08 2017].

[10] J. Sánchez y M. Lumbreras, «Virtual Environment Interaction Through 3D Audio by Blind

Children,» CyberPsychology & Behavior, vol. 2, pp. 101-11, 1999.

[11] D. Murillo Gomez, R. J. Astley y F. Maria Fazi, «Low Frequency Interactive Auralization

Based on a Plane Wave Expansion,» Applied Sciences, vol. 7, pp. 1-22, 2017.

[12] M. Hyder y M. Haun, «Assessing virtual teleconferencing rooms.,» 129th Audio Engineering

Society Convention 2010, vol. 2, pp. 1011-1022, 2010.

Page 45: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 45

[13] D. Begault, 3-D Sound for Virtual Reality and Multimedia Cambridge, Boston: AP

Professional, 1994.

[14] C. Pike, R. Taylor, P. Tom y F. Melchior, «Object-based spatial audio production for virtual

reality using the Audio Definition,» BBC Research & Development, nº 378, p. 10, 2016.

[15] P. Larsson y K. V. D. Mendel, «Better presence and performance in virtual environments by

improved binaural sound rendering,» Journal of the Audio Engineering Society, nº 000228,

2002.

[16] ISO (the International Organization for Standardization, ISO 3382-2-2008: Measurement of

room acoustic parameters — Part 2: Reverberation time in ordinary rooms — Technical

Corrigendum 1, ISO/TC 43/SC 2 Building acoustics, 2009.

[17] J. Van Mourik y D. Murphy, «Geometric and wave-based acoustic modelling using blender,»

Journal of the Audio Engineering Society, nº P-5, 2013.

[18] P. Huang, M. Karjalinen y J. Smith, «Digital waveguide networks for room response

modeling and synthesis,» Journal of the Audio Engineering Society, vol. 4, pp. 1761-1778,

2005.

[19] H. Lehnert y J. Blauert, Principles of binaural room simulation,, Applied Acoustics, 1992.

[20] P. charalampous y D. michael, «tree traversal algorithms for real time sound propagation

calculation,» Journal of the Audio Engineering society, nº 4-1, 2014.

[21] H. Lehnert, «Systematic errors of the ray-tracing algorithm,» Applied Acoustics, vol. 38, nº

2-4, pp. 207-221, 1993.

[22] J. Proakis y D. Manolakis, Digital Signal Processing (4th Edition), New Jersey: Pearson

Prentice Hall, 2006.

[23] E. Williams, Fourier Acoustics: Sound Radiation and Nearfield Acoustical Holography,

Academic Press, 1999.

[24] M. Neukmon, Signals, Systems and Sound Synthesis, Bern Peter Lang AG Bern Peter Lang

International Academic Publishers 2013, 2013.

[25] F. Wefers y M. Vorländer, «uniformly-partitioned convolution with independent partitions

in signal and filter,» Journal of the Audio engineering Society, nº 9205, 2014.

Page 46: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 46

[26] A. Southern, J. Wells y D. Murphy, «Rendering walk-through auralisations using wave-based

acustic models,» 17th European Signal Processing Conference (EUSIPCO 2009), pp. 715-

719, 2009.

[27] A. Horsburgh, K. Mcalpine y D. Clark, «A perspective on the adoption of ambisonics,»

Journal of the Audio Engineering Society, nº 4-3, 2011.

[28] F. Hollerweger, «An Introduction to Higher-Order Ambisonic,» 2005. [En línea]. Available:

http://decoy.iki.fi/dsound/ambisonic/motherlode/source/HOA_intro.pdf. [Último acceso: 18

08 2017].

[29] B. R. S. Ltd, «Hoa Technical Notes - B-Format Rotation,» Blue Ripple Sound Ltd, 2015. [En

línea]. Available: https://www.blueripplesound.com/rotations. [Último acceso: 25 08 2017].

[30] N. Kraakman, «Binaural Audio,» Purple Pill - immersive content, 13 01 2017. [En línea].

Available: https://purplepill.io/vr-glossary/binaural-audio/. [Último acceso: 17 08 2017].

[31] C. Tsakostas, A. Floros y I. Dellyannis, «Binaural rendering for enhanced 3d audio,» Audio

Mostly 2007 - 2nd Coference on Interaction with Sound, Conference Proceedings, 2007.

[32] D. B. Ward y G. W. Elko, «Effect of loudspeaker position on the robustness of acoustic

crosstalk cancellation,» IEEE Signal Processing Letters}, vol. 6, nº 5, pp. 106-108, 1999.

[33] W. Gardner, D Audio and Acoustic Environment Modeling, Boston: The Springer

International Series in Engineering and Computer Science,, 1999.

[34] D. Koloski y A. Pazos, «Libpd64. A port of LibPD to 64-bit compatibilty with Unity,» [En

línea]. Available: https://github.com/djkoloski/libpd64.

[35] Magicolo, «Magicolo / uPD,» [En línea]. Available: https://github.com/Magicolo/uPD.

[36] United States. National Bureau of Standards., An overview of computer software acceptance

testing, Washington, DC: U.S. Dept. of Commerce, National Bureau of Standard, 1986.

[37] C. Mackerras, «5 Different Types of User Acceptance Testing,» growthhackers.com, 16 10

2016. [En línea]. Available: https://growthhackers.com/articles/5-different-types-of-user-

acceptance-testing.

Page 47: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 47

ANEXOS

Anexo 1. Compilación de LibPD en Windows 64

La compilación debe realizarse en un entorno tipo UNIX (terminal). El software MSYS2 es una

buena opción, aunque no es un compilador, por lo tanto, debe ser agregado un paquete GCC con

el comando:

$ pacman Sy

$ pacman S mingww64x86_64gcc

El código fuente de Pure data (LibPd)es obtenido clonándolo de la plataforma de desarrollo

colaborativo GitHub. Se abre una terminal git y se ejecuta para clonar:

$ git clone htps://github.com/libpd/libpd

Esta librería tiene algunos paquetes que deben ser agregados ejecutando los siguientes comandos:

$ cd libpd

$ git submodule init

$ git submodule update

De vuelta en MSYS2, se ingresa a la ubicación donde la librería fue clonada y se ejecuta el archivo

que construirá el dll en 64-bits ejecutando los comandos:

$ cd libpd

$ mingw64\_build\_csharp.bat

Una vez terminado el proceso de compilación, se ignoran las advertencias y se busca dentro del

directorio de LibPD los archivos siguientes archivos:

$ libpd/libs/libpdcsharp.dll

$ libpd/libs/mingw64/libwinpthread1.dll

Page 48: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 48

Anexo 2. Algoritmo de Pure Data para espacializar fuentes en B-Format

Page 49: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 49

Anexo 3. Subpatch de rotación del campo sonoro

Page 50: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 50

Anexo 4. Decodificación de B-Format

Anexo 5. Codificación Binaural

Page 51: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 51

Anexo 6. Script para ubicación de respuestas al impulso en el recinto

using System.Collections; using System.Collections.Generic; using UnityEngine; public class ImpulseResponse : MonoBehaviour { public string IR_Name; public AudioClip sample; public float characterDistance; public string IR_Path; // Use this for initialization void Start () { return StartCoroutine(GetAudioByPath(IR_Path)); lock (ConvoManager.instance) { ConvoManager.instance.IRs.Add(this); } } // Update is called once per frame void Update () { characterDistance = Vector3.Distance(transform.position, ConvoManager.instance.character.transform.position); } public float GetDistance() { return characterDistance; } IEnumerator GetAudioByPath(string path) { WWW dir = new WWW(path); while (!dir.isDone) { Debug.Log("wait"); } AudioClip clip = dir.GetAudioClip(); sample = clip; yield return null; } }

Page 52: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 52

Anexo 7. Script de administración y envío de respuestas al impulso

using System.Collections; using System.Collections.Generic; using UnityEngine; using Magicolo; public enum LookDir { Left, Right } public class ConvoManager : MonoBehaviour { public GameObject character; public List<ImpulseResponse> IRs; public static ConvoManager instance; public Vector3 direction; public float currentAngle; public LookDir characterLookDir; public AudioClip audioToSend = null; public AudioClip audioToSend2=null; public float[] s1; public float[] s2; public float[] s3; public float[] s4; public float[] s1_1; public float[] s2_1; public float[] s3_1; public float[] s4_1; public bool bangSend = false; public bool loop=false; public int currentChannelLength = 0; public int currentChannelLength2 = 0; public int currentIntAngle = 0; public int currentClosestIR = -1; public int currentClosestIR2 = -1; public ImpulseResponse closest; public ImpulseResponse closest2;

Page 53: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 53

int posicion=1; int crossfade=0; // Use this for initialization/// <inicializacion del patch, envio de la fuente>//////////////////////////////////////// void Awake () { direction = transform.forward; direction.y = 0; direction = direction.normalized; if (!instance) instance = this; else { if (instance != this) Destroy(this.gameObject); } AudioConfiguration config = AudioSettings.GetConfiguration(); config.sampleRate = 44100; AudioSettings.Reset(config); //Opening the patch will connect it up to the DSP PureData.OpenPatch("rotacion_16384_cross"); //Nombre de la fuente AudioSource sample = GetComponent<AudioSource> (); string sample_nombre = sample.clip.name; //envio nombre de fuente Debug.Log ("el nombre de la fuente enviado es: " + sample_nombre+ "y fue" + PureData.Send<string>("sample", sample_nombre)); //PureData.Send<int>("cambio", 1); PureData.Send("cross",1); } // Update is called once per frame/// <UPDATE>Envio de las repsuesta al impulso segun su posicion/// <summary>//////////// void Update() { PureData.Receive ("posicion", Posicion, false); PureData.Receive ("sonando", CrossfadePosicion, false);

Page 54: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 54

if (Input.GetKeyDown (KeyCode.Space)) { Debug.Log ("la posicion es: " + posicion); Debug.Log ("crossfade esta en: " + crossfade); } if (IRs.Count <= 0) return; int closestIR = -1; int closestIR2 = -1; float minDist = 1000; float minDist2 = 1200; for (int i = 0; i < IRs.Count; i++) { float currentDist = IRs[i].GetDistance(); if (currentDist < minDist) { minDist = currentDist; closestIR = i; } } for (int j = 0; j < IRs.Count; j++) { if (j == closestIR) continue; float currentDist2 = IRs[j].GetDistance(); if (currentDist2 < minDist2) { minDist2 = currentDist2; closestIR2 = j } } if (currentClosestIR != closestIR) { Debug.Log("Closest IR = " + closestIR); if (posicion == 1) { Debug.Log(" posicion cambio" + PureData.Send<int> ("Irposicion", 0)); } if (posicion == 0) { Debug.Log(" posicion cambio" + PureData.Send<int> ("Irposicion", 1)); } Debug.Log(" crossfade activado" + PureData.Send("cross", 1)); closest = IRs[closestIR]; audioToSend = IRs[closestIR].sample;

Page 55: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 55

ProcessChannels(); if (posicion == 1) { bool escritura = PureData.WriteArray ("W", s1); PureData.WriteArray ("X", s2); PureData.WriteArray ("Y", s3); PureData.WriteArray ("Z", s4); PureData.WriteArray ("XR", s2); PureData.WriteArray ("YR", s3); if (escritura == true) { Debug.Log ("IR actual escrita en tablas A"); } } else if (posicion == 0) { bool escritura2= PureData.WriteArray ("W2", s1_1); PureData.WriteArray ("X2", s2_1); PureData.WriteArray ("Y2", s3_1); PureData.WriteArray ("Z2", s4_1); PureData.WriteArray ("X2R", s2_1); PureData.WriteArray ("Y2R", s3_1); if (escritura2 == true) { Debug.Log ("IR actual escrita en tablas B"); } } currentClosestIR = closestIR; } if (currentClosestIR2 != closestIR2) { Debug.Log ("Closest IR2 = " + closestIR2); closest = IRs [closestIR2]; audioToSend2 = IRs [closestIR2].sample; ProcessChannels (); if (posicion == 1) { bool escrituraB =PureData.WriteArray ("W2", s1_1); PureData.WriteArray ("X2", s2_1); PureData.WriteArray ("Y2", s3_1); PureData.WriteArray ("Z2", s4_1); PureData.WriteArray ("X2R", s2_1); PureData.WriteArray ("Y2R", s3_1); if (escrituraB == true) { Debug.Log ("Segunda IR escrita en tablas B"); } } else if (posicion == 0) { bool escrituraB2 =PureData.WriteArray ("W", s1); PureData.WriteArray ("X", s2);

Page 56: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 56

PureData.WriteArray ("Y", s3); PureData.WriteArray ("Z", s4); PureData.WriteArray ("XR", s2); PureData.WriteArray ("YR", s3); if (escrituraB2 == true) { Debug.Log ("Segunda IR escrita en tablas A"); } } currentClosestIR2 = closestIR2; } if (currentIntAngle != (int)currentAngle) { //envio de angulo PureData.Send<int>("angulo", (int)currentAngle); currentIntAngle = (int)currentAngle; } //s1 + s2 + s3 + s4 + currentAngle if (!bangSend) { //envio de bang inicio Debug.Log("el envio del bang es: " + PureData.Send("ya", 1)); bangSend = true; } if (!loop) {

//envio de bang inicio Debug.Log("el envio del Loop es: " + PureData.Send("loop", 1)); loop = true; } CalculateAngle(); } float[] currentData = null; float[] currentData2 = null; void ProcessChannels() { if (audioToSend == null) { return; }

currentData = new float[audioToSend.samples * audioToSend.channels]; audioToSend.GetData (currentData, 0); int samplesLength = currentData.Length / 4; s1 = new float[samplesLength];

s2 = new float[samplesLength]; s3 = new float[samplesLength]; s4 = new float[samplesLength];

Page 57: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 57

if (currentChannelLength != samplesLength) { PureData.Send<float> ("len", samplesLength); currentChannelLength = samplesLength; } int count = 0; for (int j = 0; j < currentData.Length; j += 4) { s1[count] = currentData[j]; s2[count] = currentData[j + 1]; s3[count] = currentData[j + 2]; s4[count] = currentData[j + 3]; count++; } if (audioToSend2 == null) { return; } currentData2 = new float[audioToSend2.samples * audioToSend2.channels]; audioToSend2.GetData(currentData2, 0); int samplesLength2 = currentData2.Length / 4; s1_1 = new float[samplesLength2]; s2_1 = new float[samplesLength2]; s3_1 = new float[samplesLength2]; s4_1 = new float[samplesLength2]; if (currentChannelLength2 != samplesLength2) { PureData.Send<float>("len", samplesLength); currentChannelLength2 = samplesLength2; } int count2 = 0; for (int j = 0; j < currentData2.Length; j += 4) { s1_1[count2] = currentData2[j]; s2_1[count2] = currentData2[j + 1]; s3_1[count2] = currentData2[j + 2]; s4_1[count2] = currentData2[j + 3]; count2++; } }

Page 58: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 58

void Posicion(float param) { //float crossfade = posicion (); posicion = (int)param; } void CrossfadePosicion(float param) { //float crossfade = posicion (); crossfade = (int)param; } public void CalculateAngle() { float posX = character.transform.position.x; float posY = character.transform.position.z; float currentYAxis = character.transform.eulerAngles.y; Vector3 currentPlayerDir = character.transform.forward; currentPlayerDir.y = 0; currentPlayerDir = currentPlayerDir.normalized; float dot = Vector3.Dot(direction, currentPlayerDir); //Cos(theta) float acos = Mathf.Acos(dot); currentAngle = acos * (360f / (Mathf.PI * 2)); //- 180f; if (currentYAxis >= 0 && currentYAxis < 180f) characterLookDir = LookDir.Right; else if (currentYAxis >= 180f) characterLookDir = LookDir.Left; switch (characterLookDir) { case LookDir.Right: currentAngle *= -1; break; case LookDir.Left: currentAngle *= 1; break; } } }

Page 59: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 59

Anexo 8. Prueba de aceptación de usuario

Prueba de aceptación de software para el trabajo de grado “Desarrollo de un algo-ritmo de

procesamiento de audio espacial para la generación de videojuegos en entorno Unity”.

A continuación, se presenta una prueba de aceptación de software diseñada siguiendo las

recomendaciones del estándar de la National Bureau Standards (NBS) Special Publication

500-136. El objetivo del desarrollo de esta prueba es la evaluación de los requerimientos de diseño

del algoritmo que permita espacializar una fuente con respuestas al impulso codificadas en B-

Format en el motor de videojuegos Unity. La prueba no es de carácter obligatorio. No presenta

ningún riesgo considerado y requiere disponibilidad de tiempo mínimo de 10 minutos. Todas las

preguntas deben ser respondidas. En caso de responder alguna pregunta de manera negativa se

requiere una justificación clara de la respuesta.

Declaro que he leído y he sido informado del objetivo de la prueba, sus riesgos y consideraciones.

Realizo esta prueba a voluntad y doy permiso de utilizar la información aquí consignada para fines

académicos del trabajo de grado “Desarrollo de un algoritmo de procesamiento de audio espacial

para la generación de videojuegos en entorno Unity”.

.

.

.

.

.

.

.

.

.

.

.

.

Nombre completo:

Firma:

C.C:

Page 60: Desarrollo de un algoritmo de procesamiento de audio

DESARROLLO DE UN ALGORITMO DE PROCESAMIENTO DE AUDIO ESPACIAL… 60

Antes de comenzar, verifique junto con el encuestador, que la escena se encuentre compilada y

pueda ser ejecutada desde su computador sin ningún programa abierto. Se realizarán preguntas

concretas con respecto al funcionamiento del algoritmo implementado en la escena virtual,

orientadas a la verificación de los requerimientos de diseño propuestos.

1. ¿Es la escena virtual evaluada, un archivo tipo ejecutable en formato .exe? SI_NO_ ¿Es

otro formato?, ¿Cuál?

2. ¿Considera que, en la escena virtual, el avatar de juego puede (por medio de las teclas de

navegación y el uso del mouse o ratón) desplazarse por el espacio y rotar el campo de

visión? SI_NO_ ¿Por qué no?

3. ¿Es posible navegar en diferentes puntos del espacio y escuchar la fuente sonora desde cada

uno de ellos? SI_NO_ ¿Por qué no?

4. ¿Percibe usted una rotación del campo sonoro con respecto a la posición de la fuente al

rotar la visión en el eje horizontal? SI_NO_ ¿Por qué no?

5. ¿Al acercarse o alejarse de la fuente, percibe un cambio en el campo sonoro? SI_NO_ ¿Por

qué no?

6. ¿Al acercarse o alejarse de la fuente, percibe una atenuación o aumento en el nivel de la

fuente sonora? SI_NO_ ¿Por qué no?

7. ¿Teniendo en cuenta la anterior evaluación, ¿acepta usted el desarrollo del algoritmo,

indicando y verificando que cumple con los requerimientos de diseño planteados? SI_NO_

¿Por qué no?