SPAC
Portada > Webzine > Temas subjetivos > Entrevistas > La Xcomp en la CAADiera. Damusix una demo muy musical.

La Xcomp en la CAADiera. Damusix una demo muy musical.

La cadiera es el banco típico de las cocinas aragonesas. Junto al fuego, su pequeña mesa se desplegaba y servía para "charrar" o hacer labores domésticas cuando en el exterior los pasillos en la nieve eran demasiado estrechos, y el soplo del cierzo demasiado ancho. Nosotros desplegamos la mesa de nuestra "caadiera" para recibir a nuestros ilustres invitados.

Martes 2 de septiembre de 2008, por Jenesis


Seguimos de vacaciones, algo sedentarias después de un par de ascensiones a los "tres miles" de la zona. así que con un poco de hambre de "civilización", he bajado al pueblo en busca de una zona wifi para conectarme y mantener conversación con uno de los participantes de la comp. Ya de paso he comprado un pan de moño en lo que antes era el horno del pueblo y ahora es una de esas panaderías donde se puede tomar un café y unos bollos, en unas mesitas colocadas delante de una gran cristalera.

Enchufo el portátil bajo la atenta mirada de la dueña del establecimiento, quien aunque ya me conoce, no deja de sorprenderse por el uso extra que le estoy dando a su local. Esperando no me cobre un extra que redondee su ya jugoso agosto, conecto por irc con el autor de Damusix.

Jen: Eliuk Blau.. ¿Por qué ese nick?

Eliuk: "Eliuk" era el nombre que le había inventado a un personaje de una antigua historia (será más de 8 años) que alguna vez había planeado escribir. Bueno, la idea aún sigue en mi cabeza, por cierto... pero como nunca usé el nombre, me pareció que sonaba lo bastante bien como para ocuparlo como seudónimo en mis escritos. "Eliuk" es una deformación de "Eliud". Jeje, me da la impresión de que por la sonoridad de la "k", no sé, como que tiene "más garra", jejeje, o al menos hace diferente al Nick... En todo caso, se pronuncia "Éliuk", pero como no me gusta usar tildes (por eso de los nombres de usuario en Internet y etc.)...

Jen: :)

* El local sigue siendo uno de los puntos más visitados, ya que a todos nos gusta comer pan del día.
Justo en ese momento una ruidosa familia extranjera con aspecto provinciano entra en la pana-cafe-dería.

Eliuk: "Blau" lo encontré en la Guía Telefónica, buscando toda la tarde un apellido que pegara con "Eliuk", jejeje! =D

Jen: Siempre te queda la opción de hacer lo que yo hice con "Jenesis", convertirla en "llana". ;) Ahora que ya sabemos la procedencia de tu nick hablemos de la Xcomp y de tu obra. Es una demo, lo cual la situa en la categoría "tecnica", explícanos un poco en qué consiste.

Eliuk: Damusix es un "Administrador Unificado de Sonido en Glulx" capaz de gestionar todas las funciones necesarias para la reproducción de música y efectos de sonido en esta máquina virtual. El Gestor Avanzado de Damusix encapsula todo el código necesario para el trabajo con el audio, permitiendo al programador hacer uso de estas funcionalidades mediante una interface de manejo sencilla. El Gestor de Audio de Damusix implementa 10 canales “normales” para la reproducción de sonidos con control total (tocarlos, detenerlos, volumen individual, repetición, etc.); 10 canales “virtuales” para una reproducción de sonidos más limitada, pero con la ventaja de no tener que “asignar un canal” previamente a un sonido concreto, permitiendo así que varios sonidos puedan tocarse al mismo tiempo sin interrumpirse mutuamente ni tener que “asignarlos” cada vez a un canal (el Gestor asignará los canales automáticamente); y 1 canal especialmente dedicado al trabajo con la “lista de reproducción de sonidos”. Esta “lista” tiene espacio suficiente para 10 sonidos que luego tocará en el orden en que hayan sido agregados, uno por uno. Quizá lo que más llame la atención de Damusix sea su capacidad de realizar efectos de FadeIn y FadeOut con los sonidos gestionados. Estos efectos de Fade pueden ser o no en “tiempo-real”. Un Fade en “tiempo-real” transcurrirá de fondo mientras el juego corre normalmente. Un Fade en “tiempo-no-real” hará primero el efecto y una vez haya finalizado, recién entonces devolverá el control de la ejecución al código a continuación. Los Fades en “tiempo-real” pueden ser abortados en cualquier momento si el programador lo necesita.

El padre de la prole, aprovecha el momento de pagar para convertir el local en una oficina de turismo.
-¿Anetó , cuanto tiempo?
-¿Se refiere usted al camping, al pueblo o al pico?
Saludo a barbero-monitor de esquí que se pone en la fila del mostrador.

Eliuk: Damusix Demo es un ejemplo, más o menos completo, de las funcionalidades más... "llamativas"... de mi extensión Damusix. No intenta ser ni una aventura ni un gran trabajo artístico, jeje... pero sí está concebida, desde su principio, con la intención de someterla a un proceso de "reventado", =P. Desconozco si alguien ya lo ha hecho... Al menos en mis pruebas, ni Damusix ni la propia Demo han fallado al intentar "reventarlas".

Jen: ¿Reventarlas en qué sentido?

Eliuk: Pues en el sentido de que le "saquen el jugo" a las capacidades de Damusix y vean si tiene algún error... la extensión, o la propia Demo. Llevo trabajando en esa Demo una buena cantidad de tiempo (casi 1 año, pero no activamente, por cierto), buscando todos los puntos en que Damusix o el propio código de la Demo pudieran fallar.

Jen: Es pronto, creo cuando se abra el periodo de votación la gente investigará mucho más, pero piensa que aún así necesitas a gente que esté desarrollando algo para probarla por completo.

* -¿Refugia Aneto, cuánto tiempo?
-Pues, cogiendo el autobús y subiendo sin carga tendrá usted un par de horas.
-¿Qué tiempo bus?
-Al otro lado de la calle.
Saludo al guardia-monitor de esquí que se saluda a su vez al barbero-monitor de esquí.

Eliuk: Supongo que sí. Digamos que la Demo fue originalmente un "banco de pruebas" para Damusix... pero luego, con el tiempo, me pareció que había quedado lo bastante "bonita" como para dejarla estar simplemente como una Demo de ejemplo... y me pareció que sería buena idea hacerla participar en la Xcomp como una "novedad". De hecho, al menos desde mi punto de vista, Damusix es novedosa en varios aspectos, sí. La Demo intenta demostrar que, con un buen uso de las funcionalidades que aporta Damusix, se puede hacer y controlar prácticamente cualquier actividad relacionada con el Audio en Glulx, dentro de los límites de la propia Glk, claro. (Por supuesto, siempre habrá alguien que encuentre algo demasiado complejo que realizar, jejeje!... pero no serán casos demasiado habituales, por cierto). Como anécdota, puedo decir que estuve haciendo un "porte" de una aventura fabulosa realizada por un antiguo miembro del CAAD (el autor está pronto a publicar su trabajo). La aventura está escrita originalmente en InformATE! con "EfectosSonoros.h" para manejar el audio. El autor de la aventura tuvo que realizar varios "hacks" y crear un conjunto de códigos muy inteligentemente elaborados para controlar los aspectos complejos de la programación sonora que la librería "EfectosSonoros.h" no era capaz de realizar por sí misma. Yo porté la aventura a IINFSP6 con Damusix. Con el cambio, fue eliminado todo ese código complejo (una buena cantidad de líneas, por cierto) porque ya no era necesario y los "hacks", por supuesto, ahora tampoco se necesitaban (Damusix hacía todo, solita). Si el autor de la aventura hubiera tenido acceso a Damusix mucho antes, se hubiera evitado todos los quebraderos de cabeza con el Audio (no lo digo yo, él mismo me lo comentó una vez).

Jen: Al decir glulx ¿quieres decir que Damusix sirve para cualquier trabajo que utilice esa plataforma?

* -No entiendo, que tiempo coge autobús?
-Ah, quiere usted decir la hora. En la parada tiene los horarios.
Saludo a la peluquera-monitora de esquí, que abre la puerta y que saluda a los demás.

Eliuk: A ver, Damusix corre en cualquier intérprete Glulx que tenga "soporte de audio completo" (es decir, la capacidad de reproducir tanto sonidos sampleados en formato AIFF y Ogg Vorbis como también módulos musicales en formato MOD). Pero la programación interna de Damusix está realizada en Inform6 para Glulx, por lo que su uso está dirigido a ese sistema de desarrollo.

Jen: Ajá,

Eliuk: Supongo que escribirla en lenguaje de máquina para Glulx hubiera sido de compadecerse, jejeje!... Hay mucha orientación a objetos; de hecho, ésa es la idea. El Gestor de Audio de Damusix es un objeto que dentro lo trae todo: desde las variables de estado asociadas a cada sonido "gestionado", hasta el propio kernel administrador, pasando por las rutinas del Gestor que son las encargadas de proporcionar cada una de las funcionalidades de Damusix. Por eso digo que Damusix es un administrador "unificado" de sonido. Además, dirigirlo hacia el sistema Inform6, ha hecho posible que ahora esté en desarrollo Damusix para Inform7, que es simplemente el Gestor de Damusix "envuelto" con frases de lenguaje natural a la I7. Y pienso... que tal vez pueda sacar una versión para InformATE!... veremos, jejeje... =P

* -Pecar dónde puedo? Pecado aquí, dejar?
La panadera, mira a la señora, mira a los ruidosos chiquillos y menea la cabeza pensativamente...
-¿Y ahora qué? - dice mirando a los parroquianos,- ¿lo mando a la iglesia o al kilómetro 287?
-Pecado, polisia dejar pecar, dónde?
Saludo al carnicero-monitor de esquí, que no se entera muy bien de que va la conversación.

Jen: ¿Es complicado de usar?

Eliuk: No, de hecho el planteamiento inicial a la hora de ponerme a programar Damusix fue hacerla fácil de utilizar para el programador neófito, pero que ello no significara sacrificar la potencia de la extensión. Se me ocurrió crear un sistema de uso que yo llamo "abstracción por sonidos". Es parecido a lo que hace Inform7 con sus "play the sound of melodia", por ejemplo, pero a lo bruto en I6. La filosofía es que no te preocupes de programar canales Glk de audio o IDs o referencias, etc. Que no trates mucho con números... sino que te preocupes simplemente del sonido. Así, con Damusix, sería algo como "Damusix.Tocar(MELODIA)" y listo. Es cierto que en Damusix los sonidos deben estar asignados a canales, sí, pero es una asignación "legible". Simplemente le das a tal o cual sonido un canal dentro de los 10 que Damusix implementa, le das el número del canal (del 0 al 9) y ya está. Nada de valores retorcidos o guardar referencias y cosas así. Otra cosa de Damusix son sus rutinas "minimalistas", como yo las llamo. Las rutinas del Gestor de Damusix hacen simplemente lo que tienen que hacer y ya. No realizan más acciones que las que son estrictamente pertinentes. Un ejemplo: por una cosa de "simplicidad" de cara al programador, en la mayoría de librerías de audio para Inform que he visto, el proceso de tocar un sonido es una "automatización" que consiste en llamar a una rutina que abre un canal de audio Glk, asignándole un sonido, y luego reproduce ese canal, haciendo que el sonido se escuche. Todo esto lo hace una sola rutina, pero en realidad son dos actividades separadas. Esto así resulta "aparentemente" fácil para el programador, por cierto, porque se hacen dos cosas "relacionadas" mediante una sola llamada... pero en algún momento quizá se necesite "hackear" la rutina para hacer algo entre la asignación y la posterior reproducción del sonido (es un ejemplo burdo, lo sé, pero imagínatelo en una rutina más compleja). En Damusix la rutina que asigna canales a los sonidos es una y la que toca esos sonidos es otra. Damusix.AsignarCanal() y Damusix.Tocar() hacen justo lo que tienen que hacer y nada más. A eso me refiero con rutinas "minimalistas". Esta forma puede hacer que el código del programador tenga un poco más de líneas... pero permite que las propias funcionalidades de Damusix puedan ser extendidas y ampliadas por el propio programador en el código del juego sin tener que "hackear" nada. Volviendo a poner el ejemplo: el programador llama a Damusix.AsignarCanal(), luego ejecuta el código que necesitaba escribir aquí, y luego llama a Damusix.Tocar(). Se evita el "hackeo" y se aumenta la posibilidad de personalización. Al menos desde mi punto de vista... =D

* -No le entiendo señor ¿quiere que la policía le deje pecar?
- Pecar, sí, permiso dejar pecar.
-Yo creo que busca un cura.- dice un monitor de esquí.
-¿Para que le deje pecar?- contesta con vehemencia otro.
Es tal las estupefacción de la clientela que hasta los niños se callan de una puñetera vez.
-Igual en su país primero se confiensan y luego pecan - añade el primero.
Saludo a la fotógrafa-monitora de esquí. que se pregunta por qué está media plantilla de la escuela de esquí en la fila de la panadería.

Jen: ¿Está bien documentado?

Eliuk: Oh, por cierto. De hecho, por eso demoré en publicar esta versión final. Porque me tomó tiempo escribir la documentación y yo no libero nada si no está documentado (una maña mía). La documentación es muy minuciosa, redundante en algunas partes, inclusive, con la intención de ser didáctica para quien nunca haya usado funcionalidades de audio en Glulx ni en Inform. Trae varios ejemplos de código aplicado y un apéndice de rutinas bien detallado con todas las que existen. La documentación está dividida en secciones, para que el programador pueda leer sólo lo que más le interesa... pero, por supuesto, no puede saltarse la sección "Trabajando con Sonidos Gestionados", porque allí se explica un proceso fundamental si se quiere entender el funcionamiento de Damusix.

Jen: Puedes escribir un ejemplo de cómo usar esta librería.

Eliuk: Claro. Vamos a crear un código que, al iniciar la aventura, toque un sonido que estará asignado al canal 2 de Damusix. El siguiente ejemplo se aplica a Inform6 + Lib. 6/11 + Damusix:



Constant Story "El Título de tu Juego";
Constant Headline "^El Subtítulo de tu Juego^";

Include "Parser";

! DreamBytes Adventures:
! Ad(M)inistrador (U)nificado de (S)on(I)do en Glul(X)
Include "Damusix";

! El archivo de recursos multimedia (los sonidos)
Include ">sonidos.bli";

Include "VerbLib";

[ Initialise ;
   ! argumentos: sonido, canal, volumen, repeticiones
   Damusix.AsignarCanal(SONIDO,2,100,1); ! le asigna canal 2

   ! tocamos ahora el sonido
   Damusix.Tocar(SONIDO);
];

Include "SpanishG"; ! Libreria INFSP6: Gramatica Española

* - ¿Quién es el último?
Saludo a la camarera de la pizzería cuyo marido trabaja como monitor de esquí.
Mientras el hombre pecaminoso está intentando hacerse entender por el empleado del ayuntamiento que luce el escudo en su camisa.
-Yo pecador, quero pecar yo pago por pecado. Aquí río bueno pecado, ¿no?

Eliuk: Incluso, si quisiéramos simplemente tocar un sonido sin importancia al iniciar la aventura, lo más práctico sería lanzarlo en una "reproducción virtual" (que no necesita asignar ningún canal... es una forma simple se lanzar sonidos no muy importantes, incidentales, o que no estén involucrados en una programación compleja), y el código en la rutina Initialise() se volvería todavía más simple:



[ Initialise ;
   ! tocamos un sonido de intro en "reprod. virtual"
   ! (es decir, no importa que no tenga canal asignado)
   Damusix.TocarV(SONIDO_INTRO);
];

Jen: ¿Por qué las llamas "extensiones",no te gusta el clásico término "librerías" o es que le quieres dar un cierto aire web 2.0?

Eliuk: Jajajaja! =D No, la verdad es que originalmente a mis trabajos los llamaba librerías, por cierto. De hecho, Damusix era inicialmente una "librería". Pero decidí utilizar el término "extensiones" en mis trabajos por dos motivos: 1) cuando comencé a trabajar Damusix para Inform7, en aquel sistema el concepto de librería como tal ha sido cambiado por el de "extensión de la librería Inform". Así que para tener uniformidad entre mi denominación en Damusix I6 y su versión en I7, decidí referirme a ambos trabajos como "extensiones"; 2) en el propio Inform6 se prefiere el término "extensión" (al menos en el mundo angloparlante). En la página del antiguo Inform6 puedes ver que todas las librerías y códigos de "extensión" están metidos en una sección llamada "extensiones", justamente.

* -Alabado sea San Jaume, usted quiere pescar! -exclama la dependienta llevándose las manos al rostro.
-Sí, pescar sí, pescar pecado, polisía dejar?.
-Verá, usted necesita una licencia, que la puede conseguir en..

Jen: ¿Piensas que la comp va a ayudar a que la gente conozca esa librería?

Eliuk: Completamente. Creo que Damusix Demo es un ejemplo bien bonito de lo que puede hacer Damusix, así que tal vez por ahí le pique a alguien el gusanillo del interés. Por otro lado, como lo he dicho, no considero la Demo como un trabajo de "ficción interactiva" propiamente tal, sino como lo que es, una Demo, no con demasiada importancia... Pero el otro día navegando... me encontré con la sorpresa de que hay una página en inglés llamada "IF Reviews Organization" en donde, por lo que entendí, buscan aventuras y publican comentarios sobre ellas. Damusix Demo estaba en la lista, no tengo idea cómo, jajaja!, pero estaba, debajito de "Damnatio Memorae" de Emily Short (creo que quedó en buen lugar dentro de la lista... jajaja!, lo siento, no pude evitarlo =P). En fin, no había ningún comentario, por supuesto... pero me llamó la atención que, por participar en la Xcomp, mi Demo ya estuviera en conocimiento fuera de nuestra comunidad hispana. Sí, me parece que la Xcomp es un excelente impulso (todas las comps, en realidad) de promoción para cualquier trabajo que esté relacionado con nuestra afición aventurera, sean relatos o librerías o experimentos novedosos... =D Ah!, la ficha de Damusix Demo en la página que visité está en: http://www.ifreviews.org/index.php?jogo=4208

Jen: Un placer hablar contigo Eliuk, gracias por colaborar.

* Me despido de Eliuk, y me acerco al mostrador para pagar el pan de moño. Allí reina una especie de alegría desbordante porque al final unos se han entendido con los otros, y ya está claro que el buen hombre lo que quiere saber es si se puede pescar en la zona y todo el mundo se felicita y rie el equívoco como el mejor chiste del Esteso.
Pero yo me voy sin ver el final...
Y es que ahora viene cuando hay que explicarle al pescador que necesita una licencia, pero que cada tramo de río tienen una normativa diferente, que además tiene que diferenciar las aguas de alta montaña de las que no lo son, así como las de los pantanos, que según sea unas u otras, hay días de la semana en los que no se puede pescar, que el cebo que unos sitios está prohibido se puede usar en otros, que la medida mínima de las truchas también es diferente. segun donde las pesque y la cantidad diaria de ejemplares que puede pescar también varía.., ah, y que aquí la policía se llama guardiacivil.

Ains, ya casi había olvidado lo que era la civilización...

2 Comentarios


Seguir la vida del sitio  RSS 2.0: Artículos, Comentarios | Mapa del sitio | SPIP
CC Some rights reserved El contenido está disponible bajo los términos de Atribuir - Compartir bajo la misma licencia 3.0 ó 2.5 de Creative Commons.