Aprendizaje automático, redes neuronales, imágenes y audio generados o procesados en tiempo real, devoluciones imprevistas y nuevas revelaciones son parte del universo del Creative Coding o la Programación Creativa, que básicamente implica usar código de programación para expresiones artísticas. Esto que a priori parece complejo de abordar está ganando terreno entre las nuevas cabezas creadoras en universidades, fiestas e instalaciones, con ayuda de nuevos medios y, como siempre, de internet. Aunque Processing es el software abanderado de la tendencia, existen diversas profundidades y lenguajes donde indagar: OpenFrameworks (C++), Python, Ruby y también software dedicado en síntesis de sonido en tiempo real como Pure Data.

El código resulta tan versátil y accesible que insta cada vez más a ser manipulado por personas ajenas a la programación. Aunque en esta producción del NO sean todos altos nerdos que ganaron visibilidad por su trabajo y capacidad de difundir dichas prácticas, y que se juntan en encuentros mensuales que comunican en el grupo de Facebook de Código Creativo Buenos Aires. Gran parte de su trabajo es utilizar algoritmos en forma expresiva: ver qué formulas o funciones dan tal o cual acabado. Y con eso componen una escena como cualquier otra, generando iluminación, tensión, puntos de fuga y demás, con abstracciones previas a la concreción y una bajada donde pasan un montón de cosas.

 

El señor de los shaders

Patricio González Vivo vive en Estados Unidos desde 2012, y dejó su trabajo como psicólogo clínico especializado en terapia de lenguajes expresivos combinados para dedicarse de lleno a la programación creativa. Actualmente es Lead Creative Coder en Facebook para realidad aumentada y realidad virtual. “Hacemos prototipos de investigación y desarrollo para AR/VR, y hasta hace muy poco también hacíamos muchos de los filtros para las aplicaciones de cámara de Facebook, Instagram y Messenger que salieron al público”, resume.

Hay un término que aflora en toda charla de código creativo, y del que él es en parte responsable de la difusión: los shaders, un tipo especial de programas que se ejecutan en la GPU, la unidad de procesamiento gráfico. “Es difícil no amar los shaders porque te dan total control píxel a píxel en alto rendimiento y ante gráficos interactivos o en tiempo real; aunque son más complicados de programar.” Justamente su trabajo en The Book of Shaders y PixelSpirit (un mazo de tarot con código para “dibujar” los símbolos de cada carta) es producto de ese interés por democratizar y desmitificar los shaders.

Programar en shaders es aprender sobre frecuencias, senos, cosenos, matrices, elementos matemáticos básicos tras los fenómenos diarios; porque no hay librerías, solo funciones matemáticas básicas. Es todo un proceso de aprendizaje científico y artístico, y requiere entrenar el ojo tanto como la cabeza”, concluye González Vivo.

 

Lolo Armendáriz

La estética del fake

Lolo Armendáriz programa hace unos 15 años. “Arranqué con un manual de virus muy básico porque me sedujo. Siempre me gustó saber cómo hacer las cosas, entonces cuando programé algo que veía que la computadora generaba, flashé bocha”, dice quien pasó por Delphi y Visual Basic, aunque sus primeras cosas de código creativo fueron en Flash hasta que encontró Processing y Quartz Composer, con los que empezó a hacer visuales en vivo y demás. “Actualmente uso Processing para el día a día, porque me deja pasar más rápido a lo que quiero hacer, está más diseñado para eso. Y uso OpenFrameworks con instalaciones o aplicaciones que tienen que estar mucho tiempo andando solas, cuando necesito estabilidad y más control. Ahora estoy programando en OpenFrameworks una cosa para la Usina del Arte.”

Lolo saca ideas de todos lados: de Internet o de la campera de alguien en el colectivo, cuando le gusta el patrón y trata de replicarlo. Y también le pasa con las terminaciones visuales, como “simular luces y sombras, o que parezca papel, cosas que le den profundidad para que no quede todo tan vector”. Lolo aplica la máxima de programar todos los días, no tanto como imposición sino como forma de atravesar el tiempo: “Suelo estar en la compu desde las 9 de la mañana hasta cualquier hora de la noche. Ahora estoy con una cosa que no puedo parar hasta no terminar de cerrar”, asegura cebado.

Hasta que algo no me cierra estéticamente o no me quema, no lo dejo. A veces me quemo haciéndolo y me parece una porquería, hasta que al otro día pienso que no estaba tan mal”, dice Armendáriz. Y lo que más le interesa de la cuestión –lo dice con el mismo espíritu de aquel que busca diseminar un virus– es hacer algo en Processing que no lo parezca yque ni siquiera implique cosas avanzadas de 3D o materialidades, sino que todo sea un gran fake”.

 

Los colores de los sonidos

Pablo Riera es investigador, programador, docente, músico. Doctor en Ciencias Físicas por la UBA, actualmente realiza un posdoctorado en el Laboratorio de Inteligencia Artificial Aplicada en la Exactas de esa universidad. Además, está involucrado en proyectos musicales y hace performances con herramientas computacionales, matemáticas, ecuaciones diferenciales e inteligencia artificial. “Creo que lo que me pegó más fuerte, después de pasar mi adolescencia haciendo jueguitos con Visual Basic, fue Pure Data y hacer cosas de audio.”

Si bien el método de trabajo se vio dominado por lo científico, por lo que la mayoría de las cosas las hace con Python, después lo termina pasando a Pure Data, si es audio, y en imagen hizo bastante con OpenFrameworks. Su trabajo actual está ligado a machine learning y redes neuronales para sintetizar sonido. Incluso hizo un experimento de utilizar shaders para audio: “Se generaban notas según la actividad que había en un shader. Acercabas la mano a una cámara Kinect y alrededor de esa mano se generaban olas que habilitaban la proyección de sonido”.

El aprendizaje está ahí, siempre metido. “En el área de aprendizaje automático tenes dos grandes tipos de aprendizaje, según esté o no supervisado. En el primero pasas información, datos que pueden ser imágenes, archivos wav, el espectro de un audio, etcétera, y el chiste es que le decís algo de esos datos, como que ésta es una imagen que tiene perros’. Le tenés que dar varios ejemplos para que encuentre esta correspondencia. Los sistemas manipulan los datos, los acomodan, los mezclan y al final dicen ‘siempre que vino este sonido, con estas frecuencias, es porque había pajaritos’. En el no supervisado no decís nada. Pasás los datos y le pedís que aprenda las regularidades, patrones que se repiten. Separan en grupos de datos que se parecen entre sí, como si separaras tus discos sin tener en cuenta los géneros, o desconociendo qué son, y tomaras como referencia los colores.”

 

Manolo Gamboa Naón

El joven patrón

Manolo Gamboa Naón tiene 25 años y es uno de los artistas de código cretivo más jóvenes y prolíficos. “Siempre hubo computadora en casa por mi viejo, jugaba con amigos. En un momento se pusieron de moda las animaciones en Flash y había una ayuda dentro del programa que estaba muy buena, así que empecé a hacer cosas básicas con internet dial-up, o sea que no podía estar todo el día conectado.” Hacer pequeñas aventuras gráficas lo puso en proceso de aprender HTML, Java Script, Python. Hasta que entró a estudiar programación porque los juegos se armaban en C++. Y a los 20, con un conocimiento ya sólido, descubrió Processing: Me hizo ver que había un montón de gente que quería hacer imágenes, cosas en tiempo real, juegos, visuales”.

Esta era de digitalización de los medios de producción y sobrecarga visual hace que Manolo sienta sus imágenes como descartables. “Hago una y funciona tres días porque va a haber otra y luego otra. También es la forma de darme la libertad de experimentar con lo que me dé la gana: hoy fractales, mañana ponerme a ver pintores, volver a ver cosas de arquitectura. Ahora estoy medio manija con las células.”

Su sistema de disciplina libre hace que su trabajo sea de relevamiento y aprendizaje constantes:Siempre hay tendencias de diseño, grupos, estilos. Lo que los define son los errores o cómo simplificar ciertas cosas. Todos los días busco nuevxs diseñadorxs. Entro a perfiles sociales, veo todo lo que hacen, me fijo con quién trabajaraon y sigo. Y tal vez un día encuentro a tres. Es la necesidad de consumir cosas que me gusten todo el tiempo y no encontrarlas.” En contrapartida, sí encontró que, como artista, tiene un público de diseñadores, programadores y científicos. “Me encanta que los diseñadores le estén dando bola: creo que ven patrones con posibilidades semi infinitas, y eso les resuelve un montón desde lo práctico.”

La intensidad de Manolo puede encontrarse por momentos en los colores o en la recursividad, otras veces en las líneas y los trazos que hacen parecer la imagen hecha a mano. En realidad es hecha a mano, pero tipeando código, usando una herramienta tan maleable como vertiginosa, en la que cambiás una línea y cambia todo. “Parto de un color o una forma, y aunque casi nunca llego a la idea que tenía, es como comunicarse: armó algo, veo qué me devuelve, pruebo poner un montón de equis cosa y voy haciendo un filtrado de lo que no me gusta.”

 

La autodeterminación del algoritmo

Leandro Garber se desarrolla como artista, músico, programador y científico de datos. Estudió Ciencias de la Computación en la UBA y es Licenciado en Artes Electrónicas en la UNTREF. Se involucró con Machine Learning hace relativamente poco: “Había escuchado infinitas veces el término redes neuronales pero no sabía bien qué era”, recuerda. En la Facultad de Ciencias Exactas hizo una maestría en Data Mining, que estudia cómo descubrir patrones en grandes volúmenes de conjuntos de datos. “Aunque eso no estaba ligado al arte, me abrió la puerta a todo este mundillo y hace un año empecé a hacer cosas creativas con eso.”

Con Python, el lenguaje que parece picar más fuerte para eso, Leandro rondaba la pregunta de cómo usar de otra manera esos algoritmos que no estaban pensados para hacer algo creativo. “Lo que más me interesa son los algoritmos generativos, donde se ‘entrenan’ estos algoritmos para que puedan generar datos similares a los que fueron recibiendo. Se dice que aprenden una distribución de probabilidad y después pueden samplear desde ahí.”

Hace unos meses que Leandro viene usando una arquitectura particular de red neuronal, las GAN o redes generativas adversarias. “La red empieza con una forma y va adquiriendo otra a medida que se la entrena. Se le ingresa un conjunto de datos, imagen por imagen, y la red va mutando, adaptándose. Como todo algoritmo, uno tiene que decir ‘estas imágenes sí y estas no’, entonces la red generadora va a recibir estas imágenes a las que uno quiere que se parezca el resultado y la segunda red, la discriminativa, va a portar lo que no tiene que ser esa imagen.”

El resultado no es determinista, como en otros casos de creative coding: “Esto sería más ‘exploratorio’: entreno las redes, configuro parámetros, hiperparámetros y voy viendo qué me devuelve”. Leandro decide enfocándose en que el resultado sea interesante a nivel plástico, es decir en colores e iluminación, y en que las imágenes remitan a lo que se quiere abordar. “Ahora estoy usando imágenes de mujeres de Wikipedia, a partir de que para el Día Internacional de la Mujer, en una especie de tributo, hice un algoritmo para poder tener todas las imágenes de todas las mujeres que aparecen en Wikipedia.”

Las redes de este tipo no crecen, se transforman. “Hay un paralelismo con el concepto de sinapsis cerebral. Si hay mayor sinapsis entre dos neuronas significa que están más conectadas. Se van armando caminos, que son como conceptos. No es que crece la red sino que los caminos entre unidades se hacen más grandes y más chicos. Y llega un punto en el que corto el contacto entre la red generadora y la discriminadora para quedarme sólo con la primera. Si está poco entrenada, la resultante es una mancha. La segunda iteración es una mancha color piel. En la tercera ya se puede ver pelo. Es medio mágico.”

 

Guido Corallo

La revolución en las manos

Guido Corallo programa seriamente desde hace nueve años. “Con Processing conocí una manera programática de acercarme al diseño, lo que me interesaba mucho más que los software tradicionales”, resume. “En esa época había mucha menos gente que se dedicaba a esto, así que nos agrupamos muy rápido.” Él arrancó casi exclusivamente con Processing y Arduino, pero fueron apareciendo entornos como OpenFrameworks, Python, C# (C sharp) o Javascript. “Ahora estoy terminando una muestra que inaugura en unos días de dibujos ploteados que surgen de programas que hice en OpenFrameworks.”

Sus jornadas son súper variables: “Es una combinación lineal de horas de trabajo freelance, algún proyecto personal, preparar clases y juntarme con colegas sin demasiada agenda. Primero programo sin demasiadas certezas. Tengo alguna idea pero aparecen cosas que muchas veces redefinen la búsqueda inicial. Después hay una instancia más de sintonía fina de las imágenes, con resultados más controlados porque hay menos distancia entre lo que quiero y lo que surge. Pero el proceso es de poco control comparado, por ejemplo, con el software de diseño tradicional”. De cualquier modo, Corallo entiende que el mejor descubrimiento radica en encontrar la complejidad a partir de reglas simples, como cuandoprogramás un sistema con una lógica sencilla pero al correr evidencia comportamientos complejos e impredecibles”.

Ahora también está interesado en lo que pasa dentro del navegador, sobre todo con las posibilidades de tener realidad aumentada y realidad virtual en cualquier dispositivo. “Un montón de posibilidades expresivas que estaban limitadas a aparatos caros o aplicaciones pesadas ahora están disponibles en casi cualquier compu o celular con un browser actualizado.”