Canvas

Page 1

Font yFont;RFont font; String SampleText = “ <datawave> “;RPoint[] pnts;void setup() { size (1000 00); // la fuente RG.init(this); font = new RFont(“FreeSans.ttf”, 600, RFont. LEFT) ; // densida e puntos RCommand.setSegmentLength(6); RCommand.setSegmentator (RCommand.UNIFORMLENGTH); if ampleText. length () > 0) { // elementos graficos RGroup grp; // grp = font.toGroup(SampleText) / puntos del outline pnts = grp.getPoints(); }}void draw() { // pdf // () if (record) eginRecord(PDF, “pdf/txtln-###asdasa#.pdf”); } background(#000000); // (76, 500); // posició el texto for (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y) atawave(); popMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF ROW-###sd#.png”); //salva frames en png} // como pdf void keyPressed() { if (key==’e’) { recor true; }} void dibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255) andom(255), random(255), random(255)); noStroke(); ellipse(ranx,rany,50,50);} void datawave() oat ranx1 = random(-20,20); float any1 = random(-20,20); float ranx2 = random(-20,20); float rany2 andom(-20,20); float ranx3 = random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255) andom(255), random(255)); noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} float rany2 andom(-20,20); float ranx3 = random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255) andom(255), random(255)); noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} // pdf / ) if (record) { beginRasdecord(PDF, “pdf/txtln-####.pdf”); } background(#000000); // (76, 500) / posición del texto for (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x nts[i].y); datawave(); popMatrix(); } if (record) { endRecord(); record = false; / saveFrame(“GIF/GROW-######.png”); //salva frames en png} // como pdf void keyPressed() { i key==’e’) { record = true; }} void dibuja6() { float ranx = random(-5,5); float rany = random(-5,5) ll(random(255), random(255), random(255), random(255)); noStroke// pdf // () if (record) eginRecord(PDF, “pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posición del text or (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave() opMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF/G###.png”) /salva frames en png} // como pdf void keyPressed() { if (key==’e’) { record = true; }} voi ibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255) andom(255), random(255)); noStroke Setup.void_second_Void.datawave import geomerative.*; impor rocessing.pdf.*;boolean record;// objectos PFont yFont;RFont font; String SampleText = “ <datawave ;RPoint[] pnts;void setup() { size (1000, 700); // la fuente RG.init(this); font = ne Font(“FreeSans.ttf”, 600, RFont. LEFT) ; // densidad de puntos RCommand.setSegmentLength(6) Command.setSegmentator (RCommand.UNIFORMLENGTH); if ( SampleText. length () > 0) { // elemento raficos RGroup grp; // grp = font.toGroup(SampleText); // puntos del outline pnts = grp etPoints(); }}void draw() { // pdf // () if (record) { beginRecord(PDF, “pdf/txtln-#### df”); } background(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts.length ++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix(); } i record) { endRecord(); record = false; } // saveFrame(“GIF/GROW-######.png”); //salva frame n png} // como pdf void keyPressed() { if (key==’e’) { record = true; }} void dibuja6() oat ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255), random(255) andom(255)); noStroke(); ellipse(ranx,rany,50,50);} void datawave() { float ranx1 = random(-20,20) oat any1 = random(-20,20); float ranx2 = random(-20,20); float rany2 = random(-20,20); float ranx3 andom(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255), random(255)) oStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} float rany2 = random(-20,20); floa anx3 = random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255) andom(255)); noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} // pdf // () if (record beginRecord(PDF, “pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posició el texto for (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y) atawave(); popMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF ROW-######.png”); //salva frames en png} // como p df void keyPressed() { if (key==’e’) { recor true; }} void dibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255) andom(255), random(255), random(255)); noStroke// pdf // () if (record) { beginRecord(PDF, “pdf xtln-####.pdf”); } background(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts ength; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix(); } i record) { endRecord(); record = false; } // saveFrame(“GIF/GROW-######.png”); //salva frames e ng} // como pdf void keyPressed() { if (key==’e’) { record = true; }} void dibuja6() { float ran random(-5,5); float rany = random(-5,5); fill(random(255), random(255), random(255), random(255)) oStroke{ float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255) andom(255), random(255)); noStroke// pdf // () if (record) { beginRecord(PDF, “pdf/txtln-#### df”); } background(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts.length; i++ pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix(); } if (record) ndRecord(); record = false; } // saveFrame(“GIF/GROW-######.png”); //salva frames en png} // com df void keyPressed() { if (key==’e’) { record = true; }} void dibuja6() { float ranx = random(-5,5) oat rany = random(-5,5); fill(random(255), random(255), random(255), random(255)); noStroke Setup oid_second_Void.datawave import geomerative.*; import processing.pdf.*;boolean record;// objecto Font yFont;RFont font; String SampleText = “ <datawave> “;RPoint[] pnts;void final words setup() ize (1000, 700); // la fuente RG.init(this); font = new RFont(“FreeSans.ttf”, 600, RFont. LEFT) / densidad de puntos RCommand.setSegmentLength(6); RCommand.setSegmentator (RCommand.UNIFORMLENGTH) f ( SampleText. length () > 0) { // elementos graficos RGroup grp; // grp = font.toGroup(SampleText) 1 = grp.RCommand.setSegmentLength(6); RCommand / puntos del outlineasdasdvoid setuo end and fin pnts etSegmentator (RCommand.UNIFORMLENGTH); if ( SampleText. length () > 0) { // elementos grafico Group grp; // grp = font.toGroup(SampleText); // puntos del outline pnts = grp.getPoints()


bjectos PFont yFont;RFont font; String SampleText = “ <datawave> “;RPoint[] pnts;void setup() size (1000, 700); // la fuente RG.init(this); font = new RFont(“FreeSans.ttf”, 600, Font. LEFT) ; // densidad de puntos RCommand.setSegmentLength(6); RCommand.setSegmentator RCommand.UNIFORMLENGTH); if ( SampleText. length () > 0) { // elementos graficos RGroup rp; // grp = font.toGroup(SampleText); // puntos del outline pnts = grp.getPoints(); }} oid draw() { // pdf // () if (record) { beginRecord(PDF, “pdf/txtln-###asdasa#.pdf”); } ackground(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts.length; i++) { ushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix(); } if (record) endRecord(); record = false; } // saveFrame(“GIF/GROW-###sd#.png”); //salva frames en png} / como pdf void keyPressed() { if (key==’e’) { record = true; }} void dibuja6() { float ranx = andom(-5,5); float rany = random(-5,5); fill(random(255), random(255), random(255), random(255)); oStroke(); ellipse(ranx,rany,50,50);} void datawave() { float ranx1 = random(-20,20); float any1 random(-20,20); float ranx2 = random(-20,20); float rany2 = random(-20,20); float ranx3 = andom(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255), random(255)); oStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} float rany2 = random(-20,20); float anx3 = random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255), andom(255)); noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} // pdf // () if (record) beginRasdecord(PDF, “pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posición el texto for (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); atawave(); popMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF/ ROW-######.png”); //salva frames en png} // como pdf void keyPressed() { if (key==’e’) { record true; }} void dibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), andom(255), random(255), random(255)); noStroke// pdf // () if (record) { beginRecord(PDF, pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posición del texto for (int =0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); opMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF/G###.png”); /salva frames en png} // como pdf void keyPressed() { if (key==’e’) { record = true; }} void ibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255), andom(255), random(255)); noStroke Setup.void_second_Void.datawave import geomerative.*; import rocessing.pdf.*;boolean record;// objectos PFont yFont;RFont font; String SampleText = “ <datawave> ;RPoint[] pnts;void setup() { size (1000, 700); // la fuente RG.init(this); font = new Font(“FreeSans.ttf”, 600, RFont. LEFT) ; // densidad de puntos RCommand.setSegmentLength(6); Command.setSegmentator (RCommand.UNIFORMLENGTH); if ( SampleText. length () > 0) { // elementos raficos RGroup grp; // grp = font.toGroup(SampleText); // puntos del outline pnts = grp. etPoints(); }}void draw() { // pdf // () if (record) { beginRecord(PDF, “pdf/txtln-####. df”); } background(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts.length; ++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix(); } if record) { endRecord(); record = false; } // saveFrame(“GIF/GROW-######.png”); //salva frames n png} // como pdf void keyPressed() { if (key==’e’) { record = true; }} void dibuja6() { oat ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255), random(255), andom(255)); noStroke(); ellipse(ranx,rany,50,50);} void datawave() { float ranx1 = random(-20,20); oat any1 = random(-20,20); float ranx2 = random(-20,20); float rany2 = random(-20,20); float ranx3 = andom(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255), random(255)); oStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} float rany2 = random(-20,20); float anx3 = random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255), andom(255)); noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} // pdf // () if (record) beginRecord(PDF, “pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posición el texto for (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); atawave(); popMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF/ ROW-######.png”); //salva frames en png} // como p df void keyPressed() { if (key==’e’) { record true; }} void dibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), andom(255), random(255), random(255)); noStroke// pdf // () if (record) { beginRecord(PDF, “pdf/ xtln-####.pdf”); } background(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts. ength; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix(); if (record) { endRecord(); record = false; } // saveFrame(“GIF/GROW-######.png”); //salva rames en png} // como pdf void keyPressed() { if (key==’e’) { record = true; }} void dibuja6() float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255), random(255), andom(255)); noStroke{ float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), andom(255), random(255), random(255)); noStroke// pdf // () if (record) { beginRecord(PDF, pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posición del texto for (int =0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); opMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF/GROW-######. ng”); //salva frames en png} // como pdf void keyPressed() { if (key==’e’) { record = true; }} oid dibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255), andom(255), random(255)); noStroke Setup.void_second_Void.datawave import geomerative.*; import rocessing.pdf.*;boolean record;// objectos PFont yFont;RFont font; String SampleText = “ <datawave> ;RPoint[] pnts;void final words setup() { size (1000, 700); // la fuente RG.init(this); ont = new RFont(“FreeSans.ttf”, 600, RFont. LEFT) ; // densidad de puntos RCommand. 2 etSegmentLength(6); RCommand.setSegmentator (RCommand.UNIFORMLENGTH); if ( SampleText. length ) > 0) { // elementos graficos RGroup grp; // grp = font.toGroup(SampleText); // puntos el outlineasdasdvoid setuo end and fin pnts = grp.RCommand.setSegmentLength(6); RCommand.

El diseño generativo consiste en aquellas creaciones visuales cuyo resultado final no está directamente controlado por la mano del diseñador o artista, sino que éste utiliza un software que ha sido programado para generar diseños a base de código. <canvas> es un documento recopilatorio que cuenta con varios enfoques y aproximaciones que busca encapsular este nuevo paradígma de diseño tecnológico. Una forma básica, figura u objeto es automáticamente modificado por un algoritmo. El resultado: infinitas modificaciones aleatorias de la solución inicial dentro de un espectro de posibilidades definidas por el diseñador. <bienvenidos>

3


< contenidos >

<a> Arte Generativo - Reseña Fidel Eljuri - Reportaje Nacional MIT Medialab - Reportaje Internacional Eduardo Mac’Entyre - Entrevista

10 - 13 19 - 22 25 - 28 38 - 43

<c> The dot is black But dot is float - Photography glitch But dot is float - Paintings through glitch

</a>

</c>

<b>

<d>

Tutorial Processing - Diseño generativo </b>

15 - 18

Datawave - Generative font </d>

< /contenidos > 4

5

23 - 24 44 - 46 48 - 50

29 - 36


Dirección editorial: Daniel Lopez Diseño editorial: Geovanny Gavilanes Director de contenido: James Mollison

“Generative design is not about designing the building – Its’ about designing the system that builds a building.” Lars Hesellgren

Dirección de Arte: Caitlin Hu Dirección Ejecutiva: Vanessa Munari Traductores: Patrick Waterhouse Ramon Pezzarini Marketing: Juan Pablo Gallón Colabordores externos: Jonah Goodman

6

7


Laws of simplicity

Law 1: Reduce The simplest way to achieve simplicity is through thoughtful reduction.

Law 2: Organize Organization makes a system of many appear fewer.

Law 3: Time Savings in time feel like simplicity.

Law 4: Learn Knowledge makes everything simpler.

Law 5: Differences Simplicity and complexity need each other.

8

John Maeda

Law 6: Context What lies in the periphery of simplicity is definitely not peripheral.

Law 7: Emotion More emotions are better than less.

Law 8: Trust In simplicity we trust.

Law 9: Failure Some things can never be made simple.

Law 10: The One implicity is about subtracting the obvious, and adding the meaningful.

9


Con estos antecedentes se siguió desarrollando esta prolífera relación, así como la integración de las computadoras personales al mundo del arte, que resultarían así en el arte digital en general y después en el arte generativo.

Arte generativo Reseña <a> El desarrollo de la tecnología y el estilo artístico han avanzado de la mano a través de la historia de la humanidad. A veces surgen nuevas corrientes artísticas a partir de la llegada de nuevas tecnologías y otras veces son las necesidades estéticas las que promueven la investigación para la creación de nuevas tecnologías. Algunos ejemplos de estos casos son, por un lado, la invención o el perfeccionamiento de nuevos instrumentos musicales, cuando las necesidades expresivas necesitan artefactos que los creadores no tienen a su alcance y, por el otro, la llegada de nuevas tendencias arquitectónicas debido al desarrollo de nuevos materiales ―como las posibilidades de construcción que ofrece el perfeccionamiento en el uso del hierro, por ejemplo―. El arte generativo se inscribe en esta tradición, en la cual el desarrollo de técnicas y nuevas formas de producción es muy difícil de separar.

Esta digitalización de la información ayudó a introducir en el mundo del arte herramientas como los lenguajes de programación computacionales que además de ofrecer las posibilidades de las plataformas digitales pueden crear sistemas más o menos autónomos para la creación artística y así propiciar la experimentación en torno a conceptos como algoritmos, arte de software, sistemas complejos, arte interactivo, aleatoriedad, live coding, estocástica, redes neuronales o vida artificial. El uso de estos lenguajes de programación permite crear sistemas compuestos de algoritmos que se usan para la creación.

A finales del siglo XIX, cuando los científicos e ingenieros lograron aprovechar la electricidad para uso doméstico e industrial, su rápida expansión se tradujo en la proliferación de máquinas electrónicas que después llegaron a convertirse en la columna vertebral de la sociedad industrial moderna; esa gran expansión también impactó a las artes, ya llegado el siglo XX. Unos de los primeros ejemplos de esta relación entre electrónica y arte fue la invención del instrumento musical electrónico Theremin, patentado por su creador León Theremin en 1928. Entre esas máquinas electrónicas se comenzó a desarrollar la computadora, que es la base del arte digital. Otro de los antecedentes del uso de tecnologías electrónicas y de cómputo en el arte lo constituyen los 9 Evenings: Theater and Engineering, una serie de performances que se llevaron a cabo en octubre de 1966, en los cuales colaboraron artistas como John Cage, Robert Rauschenberg, Steve Paxton, David Tudor y Robert Whitman, con ingenieros de los Laboratorios Bell como Billy Klüver, que además de ser investigador hizo curadurías de arte electrónico y colaboró con muchos otros artistas como Jean Tinguely.

Laurie Anderson Retrato generativo hecho con Processing por Diana Lange.

10

11


Pero, ¿qué es el arte generativo? Philip Galantier, artista, teórico y curador que se ha enfocado en esta disciplina, la define como cualquier práctica artística en donde al artista use un sistema, como un conjunto de reglas del lenguaje natural, un programa de computadora, una máquina, o demás invenciones de procedimientos, el cual pueda ser echado a andar con algún nivel de autonomía contribuyendo con o resultando una obra de arte completa. Esto quiere decir que al artista ya no se va a concentrar en crear una obra de arte única sino un procedimiento de creación que pueda generar muchas variaciones sobre el mismo sistema, sobre el mismo conjunto de algoritmos. Existen varias definiciones de algoritmo dependiendo de su contexto, pero muchas coinciden en definirla como una lista de instrucciones para resolver un problema; esta

definición, por supuesto, no es exclusiva de los lenguajes de programación y las ciencias de la computación, por lo que podemos considerar algoritmos una receta de cocina o las instrucciones que nos da alguna persona cuando nos indica la manera de llegar a algún lugar en automóvil. Por esta razón existen obras de arte en las que el artista trabaja en colaboración con un sistema previamente elaborado para generar obras de arte fuera del mundo de las ciencias de la computación y de los lenguajes de programación. Uno de los casos más famosos son los juegos de dados musicales, muy en boga en el siglo XVIII. El sistema consiste en tener una tabla con once posibilidades diferentes para cada uno de los compases de la composición. Para escribir una versión del sistema se necesita tener un par de dados y lanzarlos una vez por cada uno de los compases de la composición, lo que nos dará como resultado una lista de números entre el dos y el doce, todas las posibles combinaciones que se pueden obtener usando dos dados. Una vez teniendo todos los números, se toma la música escrita para cada una de las posibilidades; por ejemplo, si el primer número de nuestra lista es diez, se toma la música de la tabla diez para el primer compás; si el segundo número es cinco, se toca la opción cinco para el segundo compás, y así sucesivamente hasta completar todos los compases. Otro caso son los métodos de escritura automática que realizaban los surrealistas, como los cadáveres exquisitos, o la técnica cut-up ―que consiste en cortar un texto y reorganizarlo al azar, usada desde los dadaístas y popularizada por el escritor William S. Burroughs―. Dentro del arte digital, el arte generativo se ha expresado de diferentes maneras y disciplinas, dado que cualquier información es susceptible de convertirse en código binario y de producir diferentes resultados después de haber sido transformadas por estos procesadores de información que son los algoritmos; por ejemplo, el diseño paramétrico, el diseño textil y los wearables, la poesía holográfica y la numérica, la gráfica digital, las obras espaciales (instalación, escultura) y la música generativa (electrónica o acústica).

Mathematical Mountains Generative art by Steven L. Brunton

12

En la actualidad las herramientas más usadas son los lenguajes de programación, como Processing, openFrameworks, PureData, o Supercollider. Esto ha generado una tremenda interdisciplina en el campo, debido a que muchas personas de diversos ámbitos del arte y la ciencia trabajan con la misma herramienta; es decir, los caminos por los que puede conducir a un artista varían mucho. Esto no sucede si dos artistas usan, respectivamente, un pincel y un piano, pero cuando se usa la misma herramienta se abre una puerta para el intercambio de conceptos y de ideas, aunque también presenta el peligro de la homogenización de las obras y los discursos. </a>

13


Tutorial Processing <b> En este microtutorial vamos adentrarnos en el mundo de Processing, el arte abstracto y el diseño generativo. Processing es un lenguaje de programación principalmente para la creación de contenido visual aunque se puede utilizar para muchas más cosas, como crear música, controlar Robots o hacer videojuegos. Lo mejor de Processing es su simplicidad. Lo descargamos de su página http://www.processing.org y con un par de líneas ya tenemos nuestro primer programa funcionando.

En esta imagen puedes ver el primer programa, hemos dibujado un rectángulo y un círculo en este pequeño lienzo.Casi todas las operaciones que entiende Processing para dibujado necesitan cuatro números (parámetros). El eje x, el eje y, el ancho y el alto, tal y como veis en el rectángulo.

14

15


Prueba a cambiar los números y verás como el rectángulo se desplaza o cambia de tamaño. Los ordenadores son máquinas poco inteligentes y hay que escribirle los comandos de una forma determinada. Si confundimos una coma por un punto o cosas similares seguramente no lo entiendan. Vamos a añadir más elementos: size(500, 500); fill(255, 0, 0); rect(10, 20, 50, 50); //x, y, ancho, alto fill(255, 0, 0); ellipse(20, 20, 50, 50); //x, y, ancho, alto strokeWeight(10); //ancho de linea rect(10, 20, 50, 50); //x, y, ancho, alto

Con estas funciones podemos empezar a componer nuestros cuadros inspirados en Mondrían o en Miró. Prueba alguna de estas funciones noStroke(); stroke(10, 10, 10); noFill(); random(255); triangle(10, 10, 20, 20, 30, 30); line(10, 10, 120, 120); De esa lista, nuestra favorita es la función random. Random es como un dado con todas las caras que queramos. Si decimos random(255) nuestro dado tendrá 255 caras y cada vez que se ejecute nos dará un valor totalmente distinto (aleatorio) comprendido entre 0 y 255. En el siguiente ejemplo, el mismo programa en Processing ejecutado varias veces mostrará el círculo en distas posiciones horizontales. Ahora prueba a hacer lo mismo verticalmente!

Lo primero que hemos hecho ha sido crear un lienzo más grande con el comando size(ancho, alto), en este caso de 500x500píxeles. Luego hemos intoducido el comando fill(r, g, b) que permite cambiar los colores de los siguientes elementos dibujados y strokeWeight(10) que permite cambiar el ancho del contorno de los elementos. El comando ellipse dibuja una circunferencia. ¡Recuerda que una circuncerencia es una elipse de mismo ancho y alto! Los colores en un ordenador se generan mezclando los colores RGB, rojo (Red), verde (Green) y azul (Blue). Processing trae un selector de color que nos permite obtener los valores númericos para escribirlos en nuestros programas. Tools > Color Selector o Herramientas > Selector de color

16

17


Código completo: void setup() { size(1200,800); } void draw() { stroke(0); background(255); fill(0, 0, 255); strokeWeight(0); noStroke(); float t = random(100); ellipse(random(width), random(height), t, t); fill(255, 255, 0); triangle(random(width), random(height), random(width), random(height), random(width), random(height)); stroke(0, 0, 0); float y = random(height); for (int i = 0; i < (int)random(200); i++) { strokeWeight(random(5)); line(0, y + i*10, width, y + i*10); } noStroke(); fill(255, 0, 0); pushMatrix(); translate(200, 200); rotate(random(360)); rect(0, 0, 100, 100); popMatrix(); saveFrame(“img “ + (int)random(999999999)); noLoop(); } void keyReleased() { loop(); }

Fidel Eljuri Reportaje Nacional

Para terminar, recomendamos que explores los ejemplos que vienen incluidos en Processing, que los modifiques y que veas qué pasa cambiando números aquí y allá. ¡No tengais miedo! </b>

<a> Fidel Eljuri es un artista audiovisual que vive y trabaja en Quito, Ecuador.Explora la relación entre la cosmovisión del hombre y su entorno natural a través del tiempo. Investiga códigos/expresiones visuales y sonoras de territorios específicos y sus vínculos con la tradición, cultura y ciencia.Trabaja en conjunto con comunidades indígenas, abriendo diálogos y nuevas posibilidades entre la ritualidad, la tecnología ancestral y la tecnología contemporánea.

18

19


Experimenta con múltiples formatos y medios, principalmente imágenes en movimiento, instalaciones a gran escala y piezas audiovisuales en vivo.Sus proyectos han sido presentados en varias exhibiciones y festivales incluyendo Sónar(ES), Bienal de Cuenca(EC), Cromía(EC), VFFF(EC), Premio Brasil(BR), Selvámonos(PE), Stereopicnic(CO).

Ha sido invitado a dar charlas y talleres en diferentes universidades y lugares afines al arte y la tecnología como Espacio Fundación Telefónica(PE), Bienal Vértice(EC), etc. Su trabajo ha sido mencionado también en libros, revistas y websites. Paralelamente es selector musical y visualista en colaboración con proyectos musicales como Nicola Cruz y Quixosis. Como parte de su formación de Grafismo en movimiento es Cofundador y ex-director de Filoh Motion Studio. Desde el 2008, el sello argentino ZZK Records ha abanderado el futurismo musical latinoamericano. Desde su concepción, este sello mestizo ha logrado agrupar una serie de proyectos que miran la tradición del continente pero con un filtro de ciencia ficción, formando una mezcla ideal para el dancefloor contemporáneo del continente. Un mandala de sonido que poco a poco se ha ido esparciendo por el mundo con nombres como Chancha Vía Circuito, Frikstailers y Nicolá Cruz. Fidel nació en Guayaquil, una calurosa ciudad de la costa de Ecuador y su puerto principal, pero está radicado en Quito, capital anclada en el corazón de los Andes y resguardada por un volcán activo, el Pichincha. Inspirado en las cosmovisiones de ciertas tribus indígenas de Sudamérica, (como los shipibo de la amazonía peruana o los yumbos de Cotocollao, nativos de la sierra ecuatoriana, con quienes ha convivido e intercambiado conocimiento), sus instalaciones de luz y color imitan trances rituales y viajes chamánicos, convirtiéndose en experiencias ceremoniales que unen la tradición con las máquinas para generar reflexiones profundas acerca del ser humano y su relación con la naturaleza.

Dual [2016] Performance audiovisual

20

Fidel, quien también ha trabajado de cerca componiendo los paisajes que acompañan los sonidos de algunos de los artistas que encabezan esta nueva ola de talento ecuatoriano como Nicolá y Quixosis, ha presentado sus obras en la Bienal de Cuenca, el encuentro de arte más importante de Ecuador, y el festival Selvámonos de Perú. DUAL (Ceremonia Digital), el trabajo que ahora lanza con ZZK, es una instalación audiovisual compuesta por cantos ancestrales y coloridas figuras geométricas, una trama fractal que de fondo revela las profundidades de la mente de la selva y el cosmos. Pura magia sudamericana, fractal y de neón.

21


Nos comunicamos con Fidel para hablar de todo esto: ¿Cuáles dirías que son tus principales inquietudes como artista? En la cosmovisión de los pueblos originarios, es posible encontrar alternativas y respuestas fundamentales frente a problemáticas actuales, comenzando por la convivencia con nuestro entorno, ya que indudablemente vivimos inmersos en un sistema que en nombre del progreso no respeta la vida y la naturaleza. Esa es la esencia de todo mi trabajo. Desde los Neo Rituales que exploran la importancia de territorios específicos, sean estos los páramos indispensables para el agua y para la vida o las montañas que son vestigios vivos de tecnología ancestral, hasta llegar a las colaboraciones con comunidades y su concepción de la vida y el entorno por medio de sus rituales. Por mi parte y desde mi contexto abordo estos temas desde lo digital, desde lo audiovisual, buscando estas posibilidades y relaciones entre la tecnología ancestral y la contemporánea, buscando esa reciprocidad con el territorio.

Galería thedotisblack.tumblr.com/ Recopilación de arte óptico

Lo tuyo no es precisamente una apropiación cultural de lo ancestral, como al parecer está de moda, sino que has trabajado de manera íntima con comunidades indígenas, participando con tu trabajo en sus ceremonias rituales. ¿Cómo han sido estas experiencias? He trabajado en torno a territorios y comunidades, lo sustancial de mis proyectos justamente está en el proceso, ya que cada una de las diferentes experiencias ha desembocado en diversas formas de abordar la relación que tiene el hombre con su entorno. Cuando he trabajado en torno a un territorio específico, comienzo una investigación sobre su significado e importancia a través del tiempo y materializo la investigación en forma de una ofrenda digital. Por otro lado, cuando trabajo con comunidades, igual entro en un proceso pero mucho más colaborativo, siempre busco que los proyectos sean sustanciales para ambas partes. En el contexto indígena que has trabajado, el arte aparece más como consecuencia de una magia visionaria que de una expresión individual de un artista. ¿A qué reflexión has llegado sobre tu trabajo en esta línea? ¿Crees en el arte como magia? ¿Qué nos revelan estas visiones? La verdad ni siquiera pienso en hacer “arte” o mucho menos “magia” cuando ejecuto mis proyectos, sólo me enfoco en expresarlo y plasmarlo con lo que sé hacer o sea con mis herramientas y medios. Utilizo bastante los gráficos generados por computadora y la luz en todas sus formas. Tu arte tiene mucho de alucinatorio. De hecho, es un poco una alusión a este tipo de paisajes fractales y cósmicos. ¿Cuáles han sido algunas de las visiones más reveladoras que has tenido y a través de qué tipo de viajes? De hecho, en DUAL veo por medio del DMT los mismos patrones kené de los shipibo, que a la vez son inspirados en sus visiones de ayahuasca y que a su vez guardan tantas similitudes geométricas como las de ver cualquier planta por medio de un microscópio. </a>

22

23


MIT Medialab Pentagram Reportaje Internacional

<a> La nueva imagen interrelaciona el sistema de glifos, lo cuál genera una identidad dinámica para todos sus departamentos de investigación, pero también establece una identidad fija para el Media Lab, que celebra la diversidad de actividad que hace al “Laboratorio” grande.

24

25


Gráfica MIT medialab rebrand

Papelería MIT medialab rebrand

MIT Media Lab - Rebrand Una identidad flexible, basada en la red, celebra la diversidad del Media Lab y sus grupos de investigación.

La primera identidad del laboratorio fue diseñada por Jacqui Casey, un motivo maleable de barras de colores inspirado en una instalación que el artista Kenneth Noland había creado para el edificio original de Media Lab por I. M. Pei. Para el 25 aniversario del laboratorio y para marcar su expansión en un nuevo edificio de Fumihiko Maki, el diseñador Richard The colaboró con Roon Kang para crear un sistema aclamado capaz de generar algorítmicamente más de 40.000 permutaciones. Ambos sistemas eran modelos de identidad dinámica, sistemas capaces de un cambio continuo. Pero el equipo del MIT Media Lab conoció otro modelo: el logotipo clásico diseñado por Muriel Cooper para MIT Press. Una configuración minimalista de siete líneas verticales, se ha mantenido sin cambios desde 1962.

El Instituto de Tecnología de Massachusetts es terreno sagrado no sólo para científicos e ingenieros, sino también para diseñadores gráficos. En los años sesenta, diseñadores como Jacqueline Casey, Dietmar Winkler, Ralph Coburn y Muriel Cooper adaptaron las formas visuales del modernismo europeo a una versión animada, particularmente americana, que marcó al MIT como un lugar que equilibró el rigor y la invención. Quizás en ninguna parte del MIT fue ese impulso de diseño más pronunciado que en el MIT Media Lab, que Cooper cofundó y donde dirigió el Taller de Lenguaje Visual. Casi 30 años después de su fundación, el Media Lab tiene una nueva identidad visual diseñada por Pentagram.

26

27


Así que el equipo de Cambridge, que incluyó al co-fundador de Media Lab, Nicholas Negroponte, el director del grupo Tangible Media (y el director asociado del laboratorio), Hiroshi Ishii, el jefe del grupo de Mediated Matter Neri Oxman y la directora de comunicaciones Ellen Hoffman. ¿Podría una nueva identidad del MIT Media Lab combinar las dos tradiciones de intemporalidad y flexibilidad? La respuesta propuesta por Michael Bierut y Aron Fay comenzó con el logotipo del aniversario de Richard The, que se basaba en una cuadrícula de siete por siete. Utilizando esa misma cuadrícula, el equipo de Pentagrama generó un simple monograma de ML para servir como logotipo para el Media Lab. Entonces Bierut y Fay, usando la misma cuadrícula subyacente, extendieron esa identidad a cada uno de los 23 grupos de investigación que se encuentran en el corazón de la actividad del Laboratorio. El resultado es un sistema interrelacionado de glifos que a la vez establece una identidad fija para el Laboratorio, pero celebra la diversidad de actividad que hace que el Laboratorio sea grande. Helvetica, tan central para las comunicaciones del MIT cuando el Laboratorio era nuevo, ha sido restablecido para apoyar el sistema general.

<datawave> Generative font Geovanny Gavilanes

La nueva identidad se dio a conocer en la reunión de Fall Members Meeting del Media Lab, organizada de manera apropiada en torno al tema “Deploy”. Para celebrar este tema, Aron Fay amplió el lenguaje visual de la identidad con múltiples expresiones de la palabra. El resultado fue no sólo un debut de una nueva identidad, sino una demostración en tiempo real del potencial sin fin de esa nueva identidad. </a>

<d> Tipografía generativa realizada en Processing, su creación se basa en la aplicación de código.

28

29


30

31


32

33


34

35


Got Ya!

Puedes seguir el proyecto escaneando el código.

</d>

Presenting Pokémon for Game boy. To become a Pokémon master trainer, capture all 150 of then. It won´t be easy. To train them, you have to capture them. To capture them, you hve to fight them. To fight them, you have to find them. They´re waiting for you now in two Game Boy cartridges. One red. One blue. Here´s a tip! Use yur Game boy link cable and hook up with a friend to become a master trainer. Good luck

36

37


Eduardo Mac’Entyre Entrevista por Adriana Bianco

Construcción Amarilla Eduardo Mac’Entyre

<a> Movimiento surgido en los 60, continuando las tendencias de Arte Concreto, pero innovando en los aspectos ópticos, lumínicos y geométricos. Estos movimientos influyeron en generaciones posteriores, tanto en Argentina como en Europa. Eduardo Mac Entyre estudio diseño gráfico e industrial, pero se dedicó a la pintura, llevando a cabo una larga carrera artística profesional con numerosas exposiciones, diversas distinciones y premios. Su obra alcanzó prestigio internacional y se encuentra en el Museo de la OEA de Washington y en varias colecciones de Europa y Latinoamérica.

<a> El 5 de mayo murió en la ciudad de Buenos Aires el gran pintor argentino Eduardo Mac’Entyre. Creador del movimiento Arte generativo, junto con Ary Brizzi, Carlos Silva y Miguel Angel Vidal, vertiente del arte abstracto geométrico argentino.

Eduardo Mac’Entyre Pintor de Diseño generativo

38

A través de formas lineales, creadas según orden serial, impulsa movimientos, desplazamientos espaciales, logrando efectos ópticos, vibraciones cromáticas y especial sentido poético y visual. Lo entrevisté, unos meses antes de morir, en su casa del barrio de Barracas, al sur de la ciudad, donde tenía su atelier. Fue una conversación donde rescató memorias y activamos nuestra antigua amistad. A manera de homenaje, estos testimonios sobre su obra y el movimiento Arte Generativo.

39


Mac’Entyre: Nos reuníamos, Vidal y yo con el crítico de arte Ignacio Pirovano, quien había trabajado sobre la obra de Vantongerloo. Conversando, vimos que teníamos muchas coincidencias, entonces, Pirovano nos propuso ponerle a nuestro movimiento Arte Generativo. El arte en el fondo genera, todo arte está generando cosas, así que adoptamos el término y llamamos a lo que estábamos haciendo Arte Generativo. En realidad, el grupo éramos Vidal, yo y Pirovano, pero después se unió el ingeniero Gorlero, quien falleció al poco tiempo. Pirovano era coleccionista, estudioso y organizador de exposiciones y además tenía un gran sentido estético, apoyo a varios artistas: a Maldonado, a Alfredo Hlito y a Iommi y después a nosotros, además incluyó en el grupo a Carlos Silva y a Ary Brizzi, quienes se adhirieron al movimiento desde temprano. Adriana Bianco: Arte Generativo trabaja sobre el concepto de la línea, ¿por qué? ME: Cada uno de nosotros toma la línea para dar un significado a su obra, Vidal, usa la línea recta y yo la línea curva. Yo entiendo que la curva tiene en sí el movimiento en su visualización, no tiene ni principio ni fin y es una forma repetida constantemente en la naturaleza. Opté por la circunferencia y todas sus posibilidades, sentí que con la forma curva podía expresarme. Luego surgieron otras propuestas, la superposición de líneas, los tramados, en fin, en la experimentación empiezan a surgir nuevas imágenes… AB: ¿Cuál era la filosofía y estética que los impulsaba a esta nueva tendencia? ME: Nosotros queríamos darle movimiento a lo geométrico, queríamos dinamizar la pintura geométrica que hasta ese momento había sido estática, muy rígida. Por eso, decidimos darle movimiento a través de la línea, con entrecruzamientos, superposiciones, tramados, provocando efectos ópticos y con ayuda del color, esto se acentuaba. Así, comenzamos a desarrollar varios temas. El Arte Generativo comenzó a difundirse en Europa y Latinoamérica, a raíz del éxito que tuvimos en Argentina, nos proyectamos en el exterior. Recuerdo cuando Jacques Lesaigne nos invitó a realizar una exposición en el Museo de Arte Moderno de París. Primero hicimos una gran exposición en Buenos Aires y fue el profesor Billy Whitelow el que hizo la curaduría, incluyendo a Espinosa y a Miguel Ocampo. Luego, la muestra viaja a Francia por invitación del Museo de Arte Moderno de París. Tuvo mucha repercusión en Europa y también, en un lugar clave de Latinoamérica, Venezuela, donde estaba Soto y Cruz Diez. Nuestros trabajos tuvieron una gran asimilación de parte de los artistas, de la crítica y el público porque ya había una concepción de cambio visual.

40

Diagonal-vertical II Eduardo Mac’Entyre

En Estados Unidos, pasó lo mismo, el crítico de arte Gómez Sicre me invita a exponer en el Museo de Arte de la OEA, en Washington, yo llevo 30 obras, pero me ceden más espacio y agrego diez más, convirtiéndose en una gran exposición. Luego, el galerista Bonino me invita a exponer en Nueva York, donde tuve mucha prensa y aceptación. Creo que, en Estados Unidos, en ese momento, estaba en auge el Op-Art y mi obra fue aceptada, justamente, por esos aspectos ópticos-visuales. AB: En el mundo había grandes cambios plásticos, en Europa, en París estaba trabajando el grupo Recherche d’Art Visuel y varios otros, por lo tanto, en el ambiente artístico se sentía un gran cambio de óptica y perspectiva. ME: Yo hablo por lo que me tocó vivir con el grupo, y veo que hay una vuelta de tuerca y se está revalorizando lo que hicimos en los 50 y 60. En esos años, hubo toda una revolución óptica y estética en el mundo, como bien decías. En Argentina, casi todos los artistas de mi generación nos separamos de las tradiciones, fuimos por caminos innovativos. Hubo quienes marcaron hitos: los Concretos, el Grupo Madi, los Constructivistas, el grupo de Le Parc, eran vientos de cambio, nuevos desafíos visuales.

41


AB: En Latinoamérica el Arte Figurativo, tiene larga tradición, ustedes y otros artistas estaban imponiendo nuevos aspectos del arte, la visión abstracta, geométrica… ME: Si, pero eso no quiere decir que yo, personalmente, niegue la figuración, por el contrario, encuentro aspectos interesantes en la figura. En arte, lo que me interesa es la calidad, sea por el camino que elijas. Para mí, expresarme a través de la geometría es algo que me entusiasma, por lo que se puede descubrir, analizar y provocar en el espectador. El mundo de las formas abstractas, lineales es un mundo visual sin límites, donde me siento cómodo, veo imágenes y se me abren muchas posibilidades ópticas. Para mí, no hay conflicto entre línea y color, ni entre formas generadas por la línea. Yo, busco un equilibrio entre color y forma. Lo lineal es muy importante en mi obra, pero yo no abandono el color, para mí el color es fundamental, juega aspectos de relevancia, revaloriza la línea y se producen juegos visuales muy especiales. Pero también busco que el color tenga su importancia, por eso, he pintado series donde la línea es apenas imperceptible y el color dirige la visión. Para mí, el color es fundamental. Yo visualizo el color como luz y trato de darle intensidad. La luz es también muy importante. Por eso, en mis cuadros hay toques blancos, claro-oscuros, juego de contrastes. La presencia de la luz aparece a veces con intencionalidad, otras, de manera inconsciente. En mi obra, hay una etapa donde el arte africano influye, donde estudio la estética afro en obras y esculturas para llegar a una síntesis. En otros casos, utilizo la línea como forma de sostén y dinamismo del cuadro, en otras, la línea es trama y da complejidad al cuadro, y en otras, la línea fluye por si misma… AB: ¿Cuál es tu método de trabajo, primero esbozar, trazar un concepto? ¿Con qué elementos trabajas? ME: Soy bastante metódico. Utilizo pincel, lápiz, tintas, aerógrafo, compases, trabajo con acrílico sobre tela, Me gusta explorar y trabajar por series, agotar la imagen o descubrir todo lo que pueda. En mi última etapa, no abandono el círculo, el semi-círculo o las curvas, me acerco más a una visión cósmica. Mirando el cielo, uno está rodeado de curvas, la luna, el sol, el cosmos está ligado a la redondez, al infinito. también me he inspirado en la naturaleza. Hice toda una Serie de Vuelos, observando el vuelo de los pájaros cuando iba al campo. Una obra tiene muchas lecturas, cuando uno la termina, la gente suele ver formas reconocidas, nubes, delfines, aves, pero son líneas… Me llega una idea, una imagen y cuando pinto siento que me da resultado óptimo y entonces, sigo visualizando y

42

desarrollando esa imagen. Pinto series de 7 u 8 trabajos enfocados en ese tema, cuando siento que se repite, busco otro enfoque. En etapas anteriores, yo buscaba la simetría, daba a la simetría papel preponderante en la composición del cuadro. Después de los 80, encontré que podía decir mucho más con la asimetría. Se me abrió un camino menos racional, mas intuitivo. No pienso lo que va a salir, dibujo, creo con libertad absoluta, siento que estoy frente a un espacio más amplio. La simetría cerraba el tema, lo estructuraba. Con la asimetría tengo libertad, genero nuevos espacios y formas abiertas. Me libero de la estructura y también libero al color, encuentro que puedo penetrar más el color, agudizo los toques lumínicos… En un momento hice paisajes imaginarios, me pareció interesante, eso me ayudó a descubrir la libertad de la asimetría, no soy paisajista, ese no es mi estilo, pero hice la exposición y gusto mucho, un artista debe tener absoluta libertad, pero no seguí, sólo fue una etapa que me dio riqueza, apertura, amplitud de visión y utilicé todo eso, en mis siguientes trabajos. AB: Hablabas del estilo, de lo que identifica a un artista con su obra. ME: El estilo es como la respiración, no es un amaneramiento técnico, o el uso de los elementos y materiales. El estilo es uno, está adentro, todo lo que hagas está hecho según tu estilo, tu personalidad, el estilo es la persona, algunos lo encuentran, otros no. Es el sello con el que pintas y te expresas. AB: ¿Cómo ves el panorama de las Artes Visuales actualmente? ME: Creo que vivimos una época de absoluta libertad y donde se considera que todo es arte. En un sentido, sí, pero en otro, yo no estoy de acuerdo. Tampoco, el arte efímero… el arte para mí es perdurabilidad, ésa es una de las condiciones que lo determina. Hay un trabajo, un estudio, una investigación previa al momento de crear, una necesidad de formarse conociendo los materiales y el lenguaje. Hay jóvenes que te cuentan, te narran la obra, bien, pero para mí, la obra dice todo y tiene que haber una trascendencia. El arte expresa lo profundo del ser humano y por consiguiente de la humanidad, Apunta al espíritu, a una manifestación del hombre y al sentido de la vida. Para ser artista hay que recorrer esos caminos, enfocar la labor como una profesión, obviar lo fácil, llegar a nuestra esencia. Entonces, cuando estás frente a la tela, estás todo entero con tu ser, comprometido con lo que haces y eso se expresa en la obra. </a>

43


Galería butdoesitfloat.com/ Photography glitch by Frédéric Fontenoy

44

45


46

47


GalerĂ­a butdoesitfloat.com/ Paintings through glitch by Gregory Thielker

48

49


50

objectos PFont yFont;RFont font; String SampleText = “ <datawave> “;RPoint[] pnts;void setup( { size (1000, 700); // la fuente RG.init(this); font = new RFont(“FreeSans.ttf”, 600 RFont. LEFT) ; // densidad de puntos RCommand.setSegmentLength(6); RCommand.setSegmentato (RCommand.UNIFORMLENGTH); if ( SampleText. length () > 0) { // elementos graficos RGrou grp; // grp = font.toGroup(SampleText); // puntos del outline pnts = grp.getPoints(); } void draw() { // pdf // () if (record) { beginRecord(PDF, “pdf/txtln-###asdasa#.pdf”); background(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts.length; i++) pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix(); } if (record { endRecord(); record = false; } // saveFrame(“GIF/GROW-###sd#.png”); //salva frames en png // como pdf void keyPressed() { if (key==’e’) { record = true; }} void dibuja6() { float ranx random(-5,5); float rany = random(-5,5); fill(random(255), random(255), random(255), random(255)) noStroke(); ellipse(ranx,rany,50,50);} void datawave() { float ranx1 = random(-20,20); float any = random(-20,20); float ranx2 = random(-20,20); float rany2 = random(-20,20); float ranx3 random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255), random(255)) noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} float rany2 = random(-20,20); floa ranx3 = random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255) random(255)); noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} // pdf // () if (record { beginRasdecord(PDF, “pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posició del texto for (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y) datawave(); popMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF GROW-######.png”); //salva frames en png} // como pdf void keyPressed() { if (key==’e’) { recor = true; }} void dibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255) random(255), random(255), random(255)); noStroke// pdf // () if (record) { beginRecord(PDF “pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posición del texto for (in i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave() popMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF/G###.png”) //salva frames en png} // como pdf void keyPressed() { if (key==’e’) { record = true; }} voi dibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255) random(255), random(255)); noStroke Setup.void_second_Void.datawave import geomerative.*; impor processing.pdf.*;boolean record;// objectos PFont yFont;RFont font; String SampleText = “ <datawave “;RPoint[] pnts;void setup() { size (1000, 700); // la fuente RG.init(this); font = ne RFont(“FreeSans.ttf”, 600, RFont. LEFT) ; // densidad de puntos RCommand.setSegmentLength(6) RCommand.setSegmentator (RCommand.UNIFORMLENGTH); if ( SampleText. length () > 0) { // elemento graficos RGroup grp; // grp = font.toGroup(SampleText); // puntos del outline pnts = grp getPoints(); }}void draw() { // pdf // () if (record) { beginRecord(PDF, “pdf/txtln-#### pdf”); } background(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts.length i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix(); } i (record) { endRecord(); record = false; } // saveFrame(“GIF/GROW-######.png”); //salva frame en png} // como pdf void keyPressed() { if (key==’e’) { record = true; }} void dibuja6() float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255), random(255) random(255)); noStroke(); ellipse(ranx,rany,50,50);} void datawave() { float ranx1 = random(-20,20) float any1 = random(-20,20); float ranx2 = random(-20,20); float rany2 = random(-20,20); float ranx3 random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255), random(255)) noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} float rany2 = random(-20,20); floa ranx3 = random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255) random(255)); noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} // pdf // () if (record { beginRecord(PDF, “pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posició del texto for (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y) datawave(); popMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF GROW-######.png”); //salva frames en png} // como p df void keyPressed() { if (key==’e’) { recor = true; }} void dibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255) random(255), random(255), random(255)); noStroke// pdf // () if (record) { beginRecord(PDF, “pdf txtln-####.pdf”); } background(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix() } if (record) { endRecord(); record = false; } // saveFrame(“GIF/GROW-######.png”); //salv frames en png} // como pdf void keyPressed() { if (key==’e’) { record = true; }} void dibuja6( { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255), random(255) random(255)); noStroke{ float ranx = random(-5,5); float rany = random(-5,5); fill(random(255) random(255), random(255), random(255)); noStroke// pdf // () if (record) { beginRecord(PDF “pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posición del texto for (in i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave() popMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF/GROW-###### png”); //salva frames en png} // como pdf void keyPressed() { if (key==’e’) { record = true; } void dibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255) random(255), random(255)); noStroke Setup.void_second_Void.datawave import geomerative.*; impor processing.pdf.*;boolean record;// objectos PFont yFont;RFont font; String SampleText = “ <datawave “;RPoint[] pnts;void final words setup() { size (1000, 700); // la fuente RG.init(this) font = new RFont(“FreeSans.ttf”, 600, RFont. LEFT) ; // densidad de puntos RCommand 51 setSegmentLength(6); RCommand.setSegmentator (RCommand.UNIFORMLENGTH); if ( SampleText. lengt () > 0) { // elementos graficos RGroup grp; // grp = font.toGroup(SampleText); // punto del outlineasdasdvoid setuo end and fin pnts = grp.RCommand.setSegmentLength(6); RCommand


Font yFont;RFont font; String SampleText = “ <datawave> “;RPoint[] pnts;void setup() { size (1000 00); // la fuente RG.init(this); font = new RFont(“FreeSans.ttf”, 600, RFont. LEFT) ; // densida e puntos RCommand.setSegmentLength(6); RCommand.setSegmentator (RCommand.UNIFORMLENGTH); if ampleText. length () > 0) { // elementos graficos RGroup grp; // grp = font.toGroup(SampleText) / puntos del outline pnts = grp.getPoints(); }}void draw() { // pdf // () if (record) eginRecord(PDF, “pdf/txtln-###asdasa#.pdf”); } background(#000000); // (76, 500); // posició el texto for (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y) atawave(); popMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF ROW-###sd#.png”); //salva frames en png} // como pdf void keyPressed() { if (key==’e’) { recor true; }} void dibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255) andom(255), random(255), random(255)); noStroke(); ellipse(ranx,rany,50,50);} void datawave() oat ranx1 = random(-20,20); float any1 = random(-20,20); float ranx2 = random(-20,20); float rany2 andom(-20,20); float ranx3 = random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255) andom(255), random(255)); noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} float rany2 andom(-20,20); float ranx3 = random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255) andom(255), random(255)); noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} // pdf / ) if (record) { beginRasdecord(PDF, “pdf/txtln-####.pdf”); } background(#000000); // (76, 500) / posición del texto for (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x nts[i].y); datawave(); popMatrix(); } if (record) { endRecord(); record = false; / saveFrame(“GIF/GROW-######.png”); //salva frames en png} // como pdf void keyPressed() { i key==’e’) { record = true; }} void dibuja6() { float ranx = random(-5,5); float rany = random(-5,5) ll(random(255), random(255), random(255), random(255)); noStroke// pdf // () if (record) eginRecord(PDF, “pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posición del text or (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave() opMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF/G###.png”) /salva frames en png} // como pdf void keyPressed() { if (key==’e’) { record = true; }} voi ibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255) andom(255), random(255)); noStroke Setup.void_second_Void.datawave import geomerative.*; impor rocessing.pdf.*;boolean record;// objectos PFont yFont;RFont font; String SampleText = “ <datawave ;RPoint[] pnts;void setup() { size (1000, 700); // la fuente RG.init(this); font = ne Font(“FreeSans.ttf”, 600, RFont. LEFT) ; // densidad de puntos RCommand.setSegmentLength(6) Command.setSegmentator (RCommand.UNIFORMLENGTH); if ( SampleText. length () > 0) { // elemento raficos RGroup grp; // grp = font.toGroup(SampleText); // puntos del outline pnts = grp etPoints(); }}void draw() { // pdf // () if (record) { beginRecord(PDF, “pdf/txtln-#### df”); } background(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts.length ++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix(); } i record) { endRecord(); record = false; } // saveFrame(“GIF/GROW-######.png”); //salva frame n png} // como pdf void keyPressed() { if (key==’e’) { record = true; }} void dibuja6() oat ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255), random(255) andom(255)); noStroke(); ellipse(ranx,rany,50,50);} void datawave() { float ranx1 = random(-20,20) oat any1 = random(-20,20); float ranx2 = random(-20,20); float rany2 = random(-20,20); float ranx3 andom(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255), random(255)) oStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} float rany2 = random(-20,20); floa anx3 = random(-20,20); float rany3 = random(-20,20); fill(random(255), random(255), random(255) andom(255)); noStroke(); triangle(ranx1,rany1,ranx2,rany2,ranx3,rany3);} // pdf // () if (record beginRecord(PDF, “pdf/txtln-####.pdf”); } background(#000000); // (76, 500); // posició el texto for (int i=0; i<pnts.length; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y) atawave(); popMatrix(); } if (record) { endRecord(); record = false; } // saveFrame(“GIF ROW-######.png”); //salva frames en png} // como p df void keyPressed() { if (key==’e’) { recor true; }} void dibuja6() { float ranx = random(-5,5); float rany = random(-5,5); fill(random(255) andom(255), random(255), random(255)); noStroke// pdf // () if (record) { beginRecord(PDF, “pdf xtln-####.pdf”); } background(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts ength; i++) { pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix(); } i record) { endRecord(); record = false; } // saveFrame(“GIF/GROW-######.png”); //salva frames e ng} // como pdf void keyPressed() { if (key==’e’) { record = true; }} void dibuja6() { float ran random(-5,5); float rany = random(-5,5); fill(random(255), random(255), random(255), random(255)) oStroke{ float ranx = random(-5,5); float rany = random(-5,5); fill(random(255), random(255) andom(255), random(255)); noStroke// pdf // () if (record) { beginRecord(PDF, “pdf/txtln-#### df”); } background(#000000); // (76, 500); // posición del texto for (int i=0; i<pnts.length; i++ pushMatrix(); translate(pnts[i].x, pnts[i].y); datawave(); popMatrix(); } if (record) ndRecord(); record = false; } // saveFrame(“GIF/GROW-######.png”); //salva frames en png} // com df void keyPressed() { if (key==’e’) { record = true; }} void dibuja6() { float ranx = random(-5,5) oat rany = random(-5,5); fill(random(255), random(255), random(255), random(255)); noStroke Setup oid_second_Void.datawave import geomerative.*; import processing.pdf.*;boolean record;// objecto Font yFont;RFont font; String SampleText = “ <datawave> “;RPoint[] pnts;void final words setup() ize (1000, 700); // la fuente RG.init(this); font = new RFont(“FreeSans.ttf”, 600, RFont. LEFT) / densidad de puntos RCommand.setSegmentLength(6); RCommand.setSegmentator (RCommand.UNIFORMLENGTH) f ( SampleText. length () > 0) { // elementos graficos RGroup grp; // grp = font.toGroup(SampleText) / puntos del outlineasdasdvoid setuo end and fin 52 pnts = grp.RCommand.setSegmentLength(6); RCommand etSegmentator (RCommand.UNIFORMLENGTH); if ( SampleText. length () > 0) { // elementos grafico Group grp; // grp = font.toGroup(SampleText); // puntos del outline pnts = grp.getPoints()


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.