sábado, 25 de junio de 2016

save image from website

utilizando css p5js

//line 248
if (callback) {
  callback(frames);
}
else {
  for (var i = 0; i < frames.length; i++) {
    var f = frames[i];
    p5.prototype.downloadFile(f.imageData, f.filename, f.ext);
  }
}
var processSavedFrames = function(frames) {
  for (var i = 0, len=frames.length; i < len; i++) {
    var f = frames[i];
    // do stuff with f...
  }
}

lunes, 20 de junio de 2016

hdmi video output and sound analogue output

Para sacar video por HDMI y audio por la salida analoga desde una raspberry Pi

config.txt
#hdmi_drive=2

amixer cset numd id=3 1

(2 es para hdmi
(1 es para analogo)


Para que el comando "amixer" funcione necesitamos instalar el paquete ALSA

ALSA is the lowest level of the Linux sound stack. The alsa-utils package comes ready installed on the debian wheezy distribution I am using (2012-12-16-wheezy-raspbian.zip). It provides some useful commands: amixeralsamixeralsactlaplay and speaker-test.

sábado, 18 de junio de 2016

Inteligencia artificial/ GRÁFICA ASISTIDA

Aprendizaje automático. En ciencias de la computación el aprendizaje automático o aprendizaje de máquinas (del inglés, "Machine Learning") es una rama de la inteligencia artificial cuyo objetivo es desarrollar técnicas que permitan a las computadoras aprender.

GRÁFICA ASISTIDA

La intención de este ejercicio es crear un programa con aprendizaje automática que me asista en mi proceso de dibujo digital.
Voy a utilizar un paquete de reconocimiento visual Deep belief image recognition SDK.
Se le van a mostrar diferentes tipos de hojas y flores para que aprenda sus patrones y pueda reproducirlos. Así el programa podrá dibujar plantas y "dibuje conmigo" es decir que reconozca mis dibujos y ya se que dibuje encima de los míos o que corrija mis dibujos en tanto que estos se acerquen a como son.

La estrategia de programación de "machine learning" para generar inteligencia artificial tiene implicaciones filosóficas, éticas y políticas, además de estéticas.
El sentido estético implica las formas en las que trabaja. En este caso específico yo utilizaré un sistema de aprendizaje por reconocimiento visual. Se utiliza una interfaz.
Por el lado ético, se genera un dilema sobre si "deberíamos o no" domesticar a las máquina.Se genera cierta empatia al reconocer a la máquina como algo parecido a nosotros.
En un sentido filosófico se mantiene, en el continuo estudio sobre la razón y sobre la propia existencia del otro.
En lo político podemos hacer referencia a los intereses del aparato de investigación de donde surgen este tipo de conocimiento. Intereses bélicos. Sin embargo, en este punto me interesa resaltar que cualquier tipo de tecnología ha sido una estrategia de supervivencia y la supervivencia no conoce términos morales sobre el bien y el mal.



Uno de los objetivos de este proyecto sería exaltar la "maquinidad" de la máquina es decir, hacer evidente su manera de pensar y contraponerla a la nuestra no en una situación jerárquica sino para la contemplación de dos tipos de estética que son en esencia fruto de nuestras maneras de pensar.

"Detector de mentiras"


Para armar un sensor galvánico vamos a utilizar un arduino, un sensor galvánico, un potenciometro, el modelo se hará sobre un protoboard.


El primer paso es hacer los electrodos que irán en el dedo índice y medio. Se utiliza papel aluminio y velcro.





Vamos a conectar el 5v y el A0 del arduino a nuestro protoboard.


La programación


void setup(){
pinMode(A0, INPUT);
Serial.begin(9600);

void loop(){
Serial.println(analogRead(0));
delay (50);

}


sábado, 11 de junio de 2016

NODE MCU

NodeMCU es un kit para el desarrollo de prototipos compatible con Arduino, que se programa en lenguaje Lua, con conectividad USB y Wi-Fi, y cuesta alrededor de $7.00 usd por pieza.
También se puede programar por medio de JavaScript. Utiliza un esp8266.


lunes, 23 de mayo de 2016

COLECCIONISMO.PDE




DragMe[] drags = new DragMe[20];

 PGraphics backLayer;
 color backgr;
 color fillcolor=0;
 float colourincrement=1;

void setup() {
 size(500, 500);
  for (int i = 0; i < drags.length; i++) {
    drags[i]  = new DragMe();
  }
  backLayer = createGraphics(width, height, g.getClass().getName());

}

void draw()

{
frameRate(10);
background(backgr);


  {  
    backLayer.beginDraw();
    backLayer.noFill();
    
    if (mousePressed ==true && t()) {
      backLayer.line( pmouseX, pmouseY, mouseX, mouseY );
      backLayer.stroke(0);
      backLayer.endDraw();  }
    image( backLayer, 0, 0 );
     }
  

  for (int i = 0; i < drags.length; i++)
  {
    drags[i].update(); }
   
{
ellipse(width/2.5, height/2.5,110, 110);
}

 }
 boolean t() {
  return millis()  < 20000;
}


void mousePressed() {
  for (int i = 0; i < drags.length; i++) {
    if (!drags[i].isOver())
      drags[i].dontMove = true;
    drags[i].offset_x = mouseX - drags[i].pos_x;
    drags[i].offset_y = mouseY - drags[i].pos_y;
  }
}

void mouseReleased() {
  for (int i = 0; i < drags.length; i++) {
    drags[i].locked = false;
    drags[i].dontMove = false;
  }

}


class DragMe {
 float pos_x, pos_y;
 float SIZE = random(10,45);
  float prev_x, prev_y;
  boolean locked;
  boolean dontMove;
  color c = color (255);
  float offset_x, offset_y;

  DragMe() {
    pos_x = random(width-SIZE);
    pos_y = random(height-SIZE);
   
  }

  void update() {
  
  ellipse(pos_x, pos_y, SIZE, SIZE);     

  fill(c);
  ellipseMode(CORNER);
  noStroke();
  { if (isOver() && !locked && !dontMove || locked && !dontMove )
      c = color (255);

    if (isClicked()) {
      locked = true;
    }
    
    if(isIn()){ 
      locked = false;
       
    }

    if (locked && !dontMove) {

      pos_x =  mouseX - offset_x;
      pos_y =  mouseY - offset_y;
    }
  
      if (time() && fillcolor>=0) {  
          fillcolor+=colourincrement;

 backgr= fillcolor;
 c = color (255,255,255,0);}

   if (t2() ){ 
 backgr= 255;}


  
  }


}

  boolean isOver() {
    float right_x = pos_x + SIZE;
    float bottom_y = pos_y + SIZE;
    return mouseX >= pos_x && mouseX <= right_x &&
      mouseY >= pos_y && mouseY <= bottom_y;
  }

  boolean isClicked() {
    return isOver() && mousePressed && !dontMove;
  }
  boolean isIn() {
     float right_x = pos_x + SIZE;
    float bottom_y = pos_y + SIZE;
    return right_x >= width/2.5 + SIZE && right_x <= width/2.5 + 100 &&
    bottom_y >= height/2.5 + SIZE  && bottom_y <= height/2.5  + 100; 
  }
    boolean time() {
  return millis()  > 20000;
}
 boolean t2() {
  return millis()  > 20500;
}
  
}

domingo, 22 de mayo de 2016

lo obsoleto, la pérdida y EL USUARIO = ARTESANO

Lo obsoleto es un tema muy tocado en cuanto hablamos de arte digital. A medida que avanza la tecnología, cada vez más rápido al parecer, las herramientas se van volviendo inútiles. A menudo se ve como un defecto sin embargo es muy probable que nuestra manera de pensar sea la obsoleta.
Lozano Hemmer decía que su obra es el código, no la pieza en sí, por lo que se puede reproducir en tanto el código se porte a otro lenguaje más actualizado. De esta manera el asegura la vigencia de su pieza, sería como
Arlindo Machado habla de que en el "futuro"cuando se haga una recopilación de artistas de esta época podría parecer que todas las obras fueron hechas por la misma persona ya que la individualidad característica de la plástica no existe en el medio digital. Ciertamente este es un aspecto que se podría discutir a profundidad, sin embargo es verdad que aunque se explore el medio digital  y se intente alcanzar un estilo propio, el medio es digamos rígido en ese aspecto. Lo que sucede aquí es que todos estamos tomando el mismo papel, el del usuario.
Usuario viene de usar, alguien que entiende como funciona algo y lo usa. Obviamente hay usuarios con conocimientos más especializados y variados que otros sin embargo todos accedemos a este espacio de la misma manera. En el espacio digital, el ego desaparece y sólo queda el usuario, se crean redes que nos posicionan como parte de este enmarañado en contacto con otros.
Quizá en esta época no es que al autor desaparezca si no que todos somos el mismo autor.
Antes era Dios, después fue el Hombre y ahora somos todos
Se regresa a la idea del artesano.