Agustín Linares Pedrero
Resumen
Este artículo trata de exponer un sistema alternativo (y algo rudimentario) para establecer una comunicación con el ordenador, en la que participan sensores muy simples, los cuales, mandan una señal que es interpretada por el ordenador (como pulsación de tecla) para activar un comporatamiento multimedia. Contemplando la eficacia que requiere para su funcionamiento, a tal proposito se expone una instalación artística de caracter interactivo Move-on, en cuyos procesos se necesita disparar el uso de animación fotográfica y el encendido de unos focos.
La instalación establece una comunicación con el espectador a través del cuerpo, más concretamente del movimiento de su propio cuerpo.
Palabras clave: Interactividad, movimiento, arte, sensores, instalación.
* * * * *
1 Introducción
El arte asimila con rapidez todas las herramientas y técnicas que van surgiendo a lo largo de la historia, desde la tecnología de la emulsión del óleo y el lienzo, que revolucionó la pintura, haciendo que se pudiera pintar sobre tela enrollable y transportable, o la fotografía y el cine, que en un primer momento aparecen como un invento que procesa la imagen y más tarde por la fuerza de su uso y experimentación encuentra su propio lenguaje y soporte expresivo, convirtiéndose en toda una nueva disciplina. Desde la irrupción del ordenador en el mundo del arte ya se han generado estéticas propias como resultado de esta relación y se ha incorporado como una herramienta más en la producción artística por medio de la instalación, la cual utiliza para su desarrollo diferentes medios expresivos, y en este caso los nuevos medios.
Para establecer una comunicación entre persona y ordenador existen muchos interfaces en el mercado y muchos protocolos de programación, uno de los que más está proliferando, a la hora de desarrollar proyectos e instalaciones de arte, es el uso de Arduino programado con Procesing, pero para el artista, a veces la programación es un tema muy árido y complejo, aún más si cabe, si la idea de la obra requiere manejar varios videos y/o animaciones. Es por esto que se propone un sistema alternativo para la ejecución de dichos proyectos.
2 Descripción de la obra
La idea a representar es que permanecer impasible nos hace “envejecer conceptualmente” y el estar activos, en acción, nos hace mejorar nuestras capacidades cognitivas y físicas.
La instalación “Move-on” consiste en una proyección sobre una pared donde aparecen una sucesión rápida de fotografías de rostros de ambos sexos, puede apreciarse que los rostros que aparecen pertenecen a personas muy ancianas. A la vez a ambos lados y apoyados en el suelo existen unos focos de luz roja que parpadean cada segundo.
Cuando un espectador se coloca delante de la proyección si permanece inmóvil no sucede nada, continua lo antes descrito en un bucle, pero cuando el espectador se desplaza lateralmente, interviene los sensores haciendo que se apaguen los focos rojos laterales, también los rostros de las personas van cambiando paulatinamente a personas de menor edad. Mediante acción y reacción el espectador descubre que si se mantiene en movimiento las imágenes que se muestran van a cada vez más joven hasta llegar a imágenes de bebes de menos de un año; en el momento que deja de desplazarse y moverse los rostros se tornan a personas mayores de las que se están exhibiendo, este proceso se da paulatinamente hasta llegar al bucle de las personas más ancianas donde comienzan otra vez los focos a parpadear.
3 Descripción técnica
Está pieza se aborda actuando sobre el hardware y sobre el software, los cuales pasamos a describir por separado.
3.1 Actuación sobre el software
El software principal que se utiliza es Flash (Adobe, anteriormente de Macromedia), mediante código ActionScript2, y la configuración en capas y sobre la línea de tiempo se distribuye los diferentes elementos.
Esta película flash, en concreto, se reproduce a una tasa de 18 frames por segundo. La animación se realiza usando 13 grupos compuestos por 9 fotos cada uno, etiquetados de menor a mayor (en edad) a lo largo de la línea de tiempo. Cada grupo tiene mayor edad que el anterior con ello se consigue que, el video avance, de forma natural, hacia la ancianidad (si no existe pulsación de tecla). Una vez la reproducción llega al grupo más anciano (etiquetado en el primer fotograma de su grupo como “80ytantos”) el video reproduce solo este grupo en bucle (este es el modo reposo en ausencia de estímulos) y se consigue colocando la siguiente instrucción AS2 en el último fotograma del grupo etiquetado con el nombre “80ytantos”:
gotoAndPlay (“80ytantos”);
Cada grupo tiene en otra capa, pero coincidiendo en el tiempo, un botón, con la siguiente programación para la pulsación de la tecla “x”:
on(release, keyPress “x”) {gotoAndPlay (“el nombre de la etiqueta anterior”)}
De esta forma (pulsando la misma tecla) según en el grupo en el que se encuentre la reproducción correrá hasta el grupo anterior; y si no hay pulsación, la reproducción continuará su marcha lógica hacia delante, hacia la (ancianidad). Ejemplo: si esta reproduciéndose el grupo etiquetado con “50ytantos”, en caso de pulsación de “x” la reproducción saltará hasta el grupo “40ytantos” y sucesivamente. Si no hay pulsación de “50ytantos” pasará al grupo “60ytantos” y sucesivamente.
Cada botón tiene su campo de acción limitado a solo dos fotogramas dentro de su grupo, de tal manera, que el paso de un grupo a otro sea gradual, pasando necesariamente sobre las 6 primeras fotos del bucle antes de poder cambiar a: anterior o siguiente. El reuma el código será el siguiente:
Botón
Acciones para Botón:
on(release, keyPress "x") {gotoAndPlay ("80ytantos")}
Botón
Acciones para Botón:
on(release, keyPress "x") {gotoAndPlay ("70ytantos")}
Botón
Acciones para Botón:
on(release, keyPress "x") {gotoAndPlay ("60ytantos")}
Botón
Acciones para Botón:
on(release, keyPress "x") {gotoAndPlay ("50ytantos")}
Botón
Acciones para Botón:
on(release, keyPress "x") {gotoAndPlay ("40ytantos")}
Botón
Acciones para Botón:
on(release, keyPress "x") {gotoAndPlay ("30ytantos")}
Así sucesivamente, según cuantos grupos tengamos, tantos botones hay que realizar, a cada grupo de imágenes en bucle asignaremos un botón.
En el primer fotograma introducimos esta línea de código para que la pieza comience directamente en el estado de reposo, en el último bucle, Acciones para Frame 1:
gotoAndPlay ("80ytantos");
Esta descripción hace que la animación a representar se comporte como necesitamos y como en un principio hemos descrito, ahora bien, necesitamos algo más para poder conseguir una respuesta u actuación del ordenador, lo que hará que los focos se enciendan y apaguen en el estado de reposo de la obra.
Por un lado debemos introducir en un nuevo código AS2, y por otro debemos crear unos controladores ejecutables que hagan encender y apagar el LED del teclado correspondiente, en este caso, a numLock, aprovechando esa carga eléctrica haremos activar un relé haciendo disparar (o no) la luz de los focos.
3.1.1 Actuación sobre numLock
Este código programado en c++ simula la pulsación de las teclas ‘numLock’ y ‘capsLock’, mediante la que podemos encender y apagar el correspondiente LED del teclado. Se han creado dos ficheros ejecutables diferentes para cada tecla, uno para encender y otro para apagar el LED. Esto es necesario para poder ejecutar estas acciones desde código Flash. A continuación se muestra solo el código creado para encender y apagar el LED ‘numLock’, ya que es prácticamente el mismo código usado para el LED capsLock, únicamente habría que sustituir la constante ‘VK_NUMLOCK’ por la constante ‘VK_CAPITAL’ en el caso de necesitar más tipos de actuadores:
#include <windows.h>
#include <WinAble.h>
El siguiente código activará el led de numLock y por ende activará un relé, al que está conectado poniendo en marcha los focos:
//The following code checks the status of ‘numLock’: if the LED is on //then it is switched off, otherwise this code does nothing.
int main( int argc, const char* argv[] ){
//Checks if 'numLock' is enabled.
//The rest of the code is the same as in the first case.
if ((GetKeyState(VK_NUMLOCK) & 0x0001)!=0){
INPUT keyInfo[2];
::ZeroMemory(keyInfo, sizeof(keyInfo));
keyInfo[0].type = keyInfo[1].type = INPUT_KEYBOARD;
keyInfo[0].ki.wVk = keyInfo[1].ki.wVk = VK_NUMLOCK;
keyInfo[1].ki.dwFlags = KEYEVENTF_KEYUP;
::SendInput(2, keyInfo, sizeof(INPUT));
}
}
Este otro, en cambio, sirve para apagar el led de numLock y por ende desactivará el relé, apagando los focos:
//The following code checks the status of 'numLock: if the LED is off
//then it is switched on, otherwise this code does nothing.
int main( int argc, const char* argv[] ){
//Checks if 'numLock' is disabled.
if ((GetKeyState(VK_NUMLOCK) & 0x0001)==0){
//We need two keyboard actions: key down and key up
INPUT keyInfo[2];
//Fills the INPUT structure with zeros.
::ZeroMemory(keyInfo, sizeof(keyInfo));
//Specifies that we are sending a keyboard input.
keyInfo[0].type = keyInfo[1].type = INPUT_KEYBOARD;
//Specifies the key we want to activate.
keyInfo[0].ki.wVk = keyInfo[1].ki.wVk = VK_NUMLOCK;
//This is the second action, key up.
keyInfo[1].ki.dwFlags = KEYEVENTF_KEYUP;
//Finally the input is sent.
::SendInput(2, keyInfo, sizeof(INPUT));
}
}
Una vez que ya tenemos compilados cada uno de estos programas en un ejecutable .exe, el paso siguiente consiste en ejecutar estos archivos desde el código (ActionScript2) mediante la siguiente sentencia:
fscommand("exec", "fileName.exe");
Desde Flash, para que todo funcione han de darse dos premisas, una que el proyecto Flash ha de exportarse como un ejecutable .exe; la otra es que los ficheros .exe creados de on-off han estar en una carpeta que debe llamarse ‘fscommand’, y esta carpeta ha de situarse en el mismo directorio que el ejecutable flash.
3.2 Actuación sobre el hardware
Una vez resuelta la parte de programación pasamos a describir como irá conectado la entrada y salida de señal por medio del circuito interno de un teclado.
Una vez hemos desmontado el teclado, en primer lugar debemos averiguar que 2 conexiones activan la simulación de pulsación de la tecla “X”, las conexiones se pueden identificar por la línea de pins (vías por las que se conectan los vinilos de conexión) y consta de dos grupos, uno para cada filmina.
A nivel electrónico tenemos tres grupos bien diferenciados:
4 Conclusiones
A nuestro parecer, se cumple la idea de representar los conceptos marcados por la interacción, por medio de este método, aunque rudimentario, efectivo.
Para la realización de esta instalación artística, según lo expuesto, tan solo se requieren conocimientos básicos en Flash (muchos artistas ya los tienen) y conocimientos básicos de electrónica, (como funciona un relé) puesto que solo se usan los relés como conectores de entrada (para las teclas) y otros relés para la salida (conectados al led de numLock).
La programación en c++, entraña unos conocimientos en programación algo más complejos, pero solo se usa en caso de necesitar actuadores (que el ordenador ordene encender algún dispositivo, como un foco por ejemplo), será entonces necesario utilizar los archivos en c++ “on/off” compilados en un .exe, para ahorrar ese paso, los archivos cuales podrán descargarse de Internet en la siguiente dirección:
http://www.litiumlab.com/compilados/on-off.zip
Referencias
Howard Rheingold, Tools for Thought: The History and Future of Mind-Expanding Technology (The MIT Press; 2 Rev Sub edition, 2000)
Bolter, J., & Grusin, R. (1999). Remediation:
Understanding New Media: Mit Pr.
Site official, http://processing.org
Site especializado en ActionScript, http://www.actionscript.org
Site de la revista digital Instructables, http://www.instructables.com/id/Hacking-a-USB-Keyboard/step2/Trace-the-letters-back-to-the-pins/
Blog de “Collective Thinking”, http://thethoughttree.wordpress.com/2010/12/15/
Site de electrónica, http://www.electroniq.net/other-projects/detectors/light-dark-switch-activated-relay-circuits.html