domingo, 16 de agosto de 2009

Color a sonido y Claroscuro a sonido.

Idea:
Mientras terminaba el Sinte Mouse 1 se me ocurrió otro “Circuit Bending”.
Algunos sistemas a los que hago mantenimiento en mi trabajo tienen lápices lectores de códigos de barras conectados. Estos tienen un emisor LED en la punta y un fototransistor detrás que recibe la luz rebotada por un agujero.
El voltaje en ese receptor varía con la opacidad del plano sobre el que se apoya el lápiz.
Pasarlo por un codigo de barras genera una onda cuadrada a la salida del sensor que puede ser decodificada como numeros y letras por el sistema digital.
También puede ser oída. El voltaje varía con el pasaje de blanco a negro de las barras o de cualquier cosa que exploremos y esa onda puede ser expresada por un parlante como sonido.
Sea una foto, un dibujo, una tabla de madera, piso monolítico, etc…

Proceso:
Puse entonces manos a la obra para “intervenir” algún lápiz lector roto de los que estan para tirar en el taller de mi trabajo.

Resultó una tarea muy compleja… y en el camino descubrí que seria muy difícil amplificar los picoVolts que salen del sensor sin crear enormes distorsiones. De hecho la curva de respuesta del foto transistor no es ni remotamente lineal porque esta pensado para alimentar un sistema logico de 0 y 1.
Yo estaba buscando un sistema lo mas fiel posible. Ademas rompí los dos lectores que tenia disponibles sin lograr acceder a los cables del sensor. F.U.B.A.R. :P

Idea y proceso 2:
Luego se me ocurrió que “escuchar colores” es algo que un programa de PC puede hacer.
Yo no sabía programación, pero iba a aprender…
Conozco la herramienta “cuentagotas” de Photoshop lee el codigo del color bajo el puntero del Mouse y nos permite copiar los valores RGB de ese píxel para poder poner ese color en nuestra paleta y pintar con él.
Le comenté eso a Daniel Argente y me dijo que creía haber visto un segmento de codigo de el lenguaje “Processing” que era capaz de hacer eso.
Empecé a investigar el lenguaje y códigos ya hechos que hicieran eso y uno para generar sonido.
Encontré el código “Píxel array”, un ejemplo guardado en "Topics" -> "Image processing".
Ese programa muestra una imagen y extrae el numero del color bajo el puntero del Mouse al pasarle por arriba. Ese numero esta en forma de variable en alguna parte del código.

Por otro lado encontre el codigo “Basic” de la librería Minim que permite generar un tono puro indicando parámetros como Frecuencia. Es el primer codigo de la librería “Minim”, encargada de generar y analizar audio.

Victor Gil, excompañero de liceo y estudiante de Ingeniería de Sistemas me ayudó a juntar los dos codigos en uno, de manera que se ejecutaran a la vez sin que diera error el compilador.
No es tan simple como pegarlos juntos en la misma página. Al menos para mi que, ni idea tengo.

Diego P. Vargas me ayudó a encontrar la variable del código del color en Píxel Array (aPixels[int(signal)]) para poder procesarla y usarla para setear la frecuencia del generador de onda.
No se que significa aPixels[int(signal)], pero al hacer "print" de esa variable y mover el mouse, parecia funcionar debidamente. Tomando valores negativos alrededor de cienmil.

Parte del proceso de esta variable era extraer el valor de “hue” o tono del codigo del color. La otra parte es “mapear” o “escalar” esa variable a Hertzs, que es el valor que acepta el generador de onda.
El valor de color es de 0 a 255 (8 bits). El rango y sentido de longitudes de onda que se tome es arbitrario. Se puede invertir la relación, o se puede tomar otro rango de frecuencias.

Por ejemplo:
Rojo = 50 hz (sonido grave)
Violeta = 5000 hz (sonido agudo)
Y todos los puntos intermedios se calculan automáticamente.

Este es el sentido que me pareció natural, ya que la frecuencia del rojo es la mas baja visible (400–484 THz), y el Violeta es la mas alta (668–789 THz).
No se si eso corresponda con la asociación sensible de la mayoría… A que tiene que sonar un Amarillo o un Verde?

Le presenté el primer resultado a Hector Laborde y me contó del “Piano de color” que él diseñó hace años. Surgió la idea de juntar los dos conceptos creando una imagen no figurativa que al explorarla sonara una melodía.
Se me ocurrió hacer una flecha en zigzag con franjas de colores a lo largo, de manera que al recorrerla con el Mouse la secuencia de colores recorridos se convierta en una secuencia de tonos sonoros.

Modifiqué el rango de frecuencias del oscilador a dos octavas, que el rango necesario para tocar “Feliz cumpleaños” en un piano de una mano.
Luego necesité averiguar según el rango continuo dado, qué valores de color correspondían a la frecuencia de qué nota.
Así generé una paleta de “colores sonoros” y fui pintando las franjas con el color de cada nota en secuencia.
Hice otra versión con valores de gris, y otra con color de nuevo pero esta vez usando un Generador de notas MIDI en vez de un Oscilador de onda Seno. Las notas MIDI son discretas (Do o Re, pero ningún valor intermedio) y se puede hacer que suene como cualquier instrumento, ej Piano, Trompeta, etc...

Quiero es escuchar video...
Estoy viendo como modificar un Mouse óptico para usarlo como camara y poder escuchar las texturas sobre las que pasemos el Mouse en tiempo real.
Tengo muchisimas dudas técnicas que me trancan, pero es posible.

Si a algún Programador Java o Ingeniero de Sistemas o Electronica le interesa participar de cualquier manera, Bienvenido!

Intento coordinar y asi unificación de procesos cerebrales:
Lo normal es pensar que en el cerebro hay zonas bien definidas y diferenciadas que procesan imagen, o sonido o tacto, etc… Cada zona con una estructura diseñada para ese fin especifico.
En realidad la especificidad esta en el sensor que envia la información (ojo, oído, nariz). Al llegar a la corteza cerebral ya es algo abstracto, información, que simplemente requiere síntesis y clasificación.
Por eso la corteza es casi homogénea y funcionalmente muy adaptable.
Cuando hay daño leve en la corteza las neuronas circundantes se adaptan y reconectan para cumplir las funciones de las neuronas muertas.
Al igual que el procesador de un PC, no distingue si esta enviando un mail, procesando video o simulando 3d. Los mismos nanotransistores sirven para todo si, estan debidamente interconectados.
Este proyecto apunta a coordinar dos procesos cerebrales (imagen y sonido) de manera interactiva e intentando que se mezclen y confundan. Intento crear correlación entre lo que se escucha y lo que se ve en el sentido mas amplio.
Similar a cuando uno se toca a si mismo: siente que toca y es tocado en dos sensaciones coordinadas y controlables.


Aca esta funcionando... descubran la canción pasando el mouse por la flecha!

http://www.openprocessing.org/visuals/?visualID=3733
Color traducído a tonos puros con paleta de notas.
Color cálido->Sonido grave
Color frío->Sonido agudo


http://www.openprocessing.org/visuals/?visualID=3740

Escala de grises traducído a tonos puros con paleta de notas.
Blanco->Sonido grave
Negro->Sonido agudo

http://www.openprocessing.org/visuals/?visualID=4121
Color traducído a notas de Secuenciador Midi con paleta de notas.
Color cálido->Nota grave
Color frío->Nota aguda

http://openprocessing.org/visuals/?visualID=10404

Color a tono puro, imagen de campo florido.
Color cálido->Sonido grave
Color frío->Sonido agudo