A&HA 5128: PERIODIC UPDATE #7

Artifacts To Date:

As planned I was able to design one more algorithm for a third piece. Here it is:

Form 11-16-2017 at 22.09.00s

And it’s code:

// "Regular Vertical Bars with Random Squares" | Dylan Ryder | December, 2017
// Talma Quality, Pastel 2 Palette
size(3984, 3000); // 46-48" x 36", 84 DPI
background(#F9FAF9); // Blizzard
noSmooth();
noStroke();

int w = width / 30;
int h = height;
int h2 = height / 10;

// large columns
fill(#FFE4F3); // Pinking
for (int col = 0; col < 30; col++) {
 rect(w * col + w / 8, h * 0.05, w * 0.5, h * 0.9);
}

// small columns in 2 rows
fill(#FFEEF8); // Tutu
for (int col = 0; col < 30; col++) {
 for (int row = 1; row < 3; row++) {
 rect(w * col + w / 8, (h * 0.9) / 3 * row, w * 0.5, h2);
 }
}

// small squares randomly placed in grid
int w3 = width / 60;
fill(#877193); // Beta
for (int col = 0; col < 60; col++) {
 for (int row = 1; row < 8; row++) {
 int rand = int(random(7*row));
 if (rand <= 3) {
 rect(w3 * col + w/8, (h * 0.7) / 7 * row, w * 0.5, w * 0.5);
 }
 }
}

// generate a unique filename for each generation based on datestamp
save("Form "+nf(month(), 2)+"-"+nf(day(), 2)+"-"+year()+" at "+nf(hour(), 2)+"."+nf(minute(), 2)+"."+nf(second(), 2)+"s"+".png");

Adjustments to Timeline:

I sent generative prints of all three works to WOVNS to be fabricated on November 17th. I should have them shipped out in around 10 days.

Advertisements

A&HA 5128: PERIODIC UPDATE #6

Artifacts To Date:

I worked this week to rebuild my Scratch prototypes with the Processing language, which is best for creating graphics that can be translated into textiles on a jacquard loom. WOVNS requires all colors to be expressed with specific hexadecimal values in any selected palette. Coding with that kind of color specificity is not possible with Scratch.
The first rebuild used a different algorithm to achieve the desired generative design. Here is an example generative design:

Form 11-13-2017 at 22.08.52s

Here is the code:

// "Two Agents Crossing" Dylan Ryder, November 2017
// Designed in Processing
// Talma Quality, Pastel 2 Palette

size(3984, 3000); // 46-48" x 36", 84 DPI
background(#F9FAF9); // Blizzard
noSmooth();
noStroke();

int side = 100;
int x1 = 2000;
int x2 = 0;
int y1 = -100;
int y2 = height / 2;

// Vertical Agent
fill(#877193); // Beta
while (y1 < height) { 
 // Y axis traveling
 int r = int(random(7));
 for (int i = 0; i <= r; i++) {
 y1 += side;
 rect(x1, y1, side, side);
 }
 
 // X axis traveling 
 r = int(random(3));
 int shift = int(random(2));
 for (int i = 0; i < r; i++) {
 if (shift == 0) {
 x1 -= side;
 rect(x1, y1, side, side);
 } else {
 x1 += side;
 rect(x1, y1, side, side);
 }
 }
}

// Horizontal Agent
for (int x = 0; x < width; x += side) {
 pushMatrix();
 translate(x * int(random(2)), 0);
 fill(#BFCDE5); // Moon
 //fill(#74AED7); // Ciel
 rect(x2, y2, side, side);
 popMatrix();
}

// generate a unique filename for each generation based on datestamp
save("Form "+nf(month(), 2)+"-"+nf(day(), 2)+"-"+year()+" at "+nf(hour(), 2)+"."+nf(minute(), 2)+"."+nf(second(), 2)+"s"+".png");

The next rebuild also used a slightly different algorithm to achieve my desired generative design. Here is an example of that generative design:

Grid 11-16-2017 at 22.26.37s

Here is the code:

// "Squares in an Imperfect Grid with 8-bit Fill Variability"  
// Dylan Ryder, November 2017
// Designed in Processing
// Talma Quality, Pastel 2 Palette

size(3984, 3000); // 46-48" x 36", 84 DPI
background(#BFCDE5); // Moon
noSmooth();
noStroke();
color c = #F9FAF9; // Blizzard
fill(c);

int w = width / 30;
int h = height / 25;
int r; // horizontal random gap between squares
int vRand; // vertical random gap between rows
int stroke;

for (int row = 0; row < 18; row++) {
 vRand = int(random(30));
 for (int col = 0; col < 18; col++) {

// decide if the shape is filled or not
 if (int(random(256)) == 255) {
 noFill();
 stroke(c); // Color
 stroke = 5;
 strokeWeight(stroke);
 } else {
 noStroke();
 fill(c); // Color
 stroke = 0;
 }

r = int(random(-20, 20));
 // draw the square
 rect(w * col * 2 + w / 2 + r, h * row * 1.35 + h / 2 + vRand, 
 (w * 3 / 4)-stroke, (h * 3 / 4)-stroke );
 }
}

// generate a unique filename for each generation based on datestamp
save("Grid "+nf(month(), 2)+"-"+nf(day(), 2)+"-"+year()+" at "+nf(hour(), 2)+"."+nf(minute(), 2)+"."+nf(second(), 2)+"s"+".png");

Adjustments to Timeline:

I am feeling motivated to make this work a triad and plan to design one more algorithm for a third piece. I plan to get that done this weekend and if I am satisfied with it, I will have all three works fabricated.

A&HA 5128: PERIODIC UPDATE #5

Artifacts To Date:

I had a plan for two different computational textiles for my final project and I prototyped them in Scratch.

Two Agents Crossing:

Screen Shot 2017-11-05 at 2.28.04 PM

Perfect Squares in an Imperfect Grid w/8-bit Fill Variability:

Screen Shot 2017-11-17 at 10.35.01 PM

Feedback:

So far my feedback from peers has been polite encouragement, rather than specifically pointed or instructive comments. I assume because none of us work with textiles the comments are brief 🙂

Your Assignment To Yourself:

In the next weeks I have to push myself to translate my ideas from Scratch into Processing. There I can have more control over my design’s dimensions and code in the appropriate color palettes to comply with the WOVNS platform’s constraints. That’s challenging for me – I feel it’s a bit like translating  a poem from one natural language to another because you must be mindful that literal translation isn’t really appropriate. You must translate for meaning and understanding that fits the second language.

So far I’ve only made my original designs in Scratch because I am so comfortable with it. I’ll be rethinking my generative instructions to fit Processing which is sometimes tricky for me.

Timeline:

I don’t have any timeline adjustments at the moment.

A&HA 5128: PERIODIC UPDATE #4

Explorations

This week I experimented with a new Processing script that makes a generative piece inspired by Peter Struycken’s Komputerstrukturen 1. I’ve published the code to generate a piece like this below.

Looming10-21-2017 at 20.12.39s.png

// Tribute to Peter Struycken
// Dylan Ryder 10/23/2017
// Encoded for WOVNS computational textile production platform

// Talma Quality, Spectrum 14 Palette
size(3984, 3000);

background(#D0D0D8); // Chalk 
noSmooth();
noStroke();
int a = 10;

int w = 7*a, h = 7*a; // inch by inch

fill(#0C0000); // Dark Crystal
for (int x = 0; x < width; x += w) {
 // threshold based on a gaussian function (bell curve) that gives
 // a number between 1 in the middle of the screen and 0 at the left
 // and right edges. the 8.0 adjusts the width of the bell, i.e.
 // how quickly the value drops to 0 as you move towards the edges of
 // the screen.
 float threshold = exp(-4.0 * sq((x / width)));
 for (int y = 0; y < height; y += h) {
 // generate a random number between 0 and 1 and compare it to the
 // threshold. if it's less than the threshold, draw a small square.
 if (random(1) < threshold) rect(x, y, w, h); 
 }
}

// generate a unique filename for each generation based on datestamp
save("Looming"+nf(month(), 2)+"-"+nf(day(), 2)+"-"+year()+" at "+nf(hour(), 2)+"."+nf(minute(), 2)+"."+nf(second(), 2)+"s"+".png");

At this point my goal is to create an original script that will be woven as a jacquard textile and displayed as a 48″ x 36″ tapestry.

My Timeline

Date Action
11/10 Finalize original generative art script for computational textile.
11/11 Submit design file to WOVNS for fabrication.
11/25 (hopefully) Receive textiles from weaver. Consider mounting options.
12/8 Finish mounting for showcase.

A&HA 5128: Periodic Update #3

Research

I spent this week researching procedural artists that use computing, and notable weavers/textile artists from the Bahuas School.

I came across contemporary artist, Jeff Donaldson, the founder of Glitch Haus textiles. I do enjoy some of his weaves, but I am a little more interested in another project, his “prepared Nintendo” pieces. These are hacked NES video game consoles that are used to generate glitch art. The idea reminds me a bit of composer John Cage’s “Prepared Piano” works in spirit.

79814b39b08866f2216cb5dad35dbe6d_originalDonaldson, Jeff. “Light Scan.” Data Weave, Kickstarter, www.kickstarter.com/projects/notendo/data-weave.

I also discovered Peter Struycken and his “Komputerstrukturen” series which are prints executed by computer programs. I really enjoy these, but I am still trying to figure out why exactly.

w_ks1
Peter Struycken - Computer Programs with Details, www.pstruycken.nl/EnProgDet.html#p_OSTRC.

Next I dove into the amazing work of the Bauhaus textiles & fiber arts group. Two artists that I want to highlight are Gunta Stölzl and Anni Albers.

Stölzl was the Bauhaus’ only female master and her work is thought to exemplify the distinctive style of Bauhaus textiles. Below is an amazing one of her wall hangings titled, 5 Choirs.

gse071-l
Stölzl, Gunta. “Jacquard Wall Hanging - ‘5 Chöre’ (5 Choirs).” Gunta Stölzl, Wall Hangings, www.guntastolzl.org/Works/Bauhaus-Dessau-1925-1931/Wall-Hangings/i-38mQW2r.

 

Anni Albers was a Bauhaus student of Stölzl and is credited as an artist who elevated textiles from merely a craft to an art form.

1379358739-albers_001_redmeanderAlbers, Anni. RED MEANDER. Christopher Farr, christopherfarr.com/rug/red-meander/.

Process

I tinkered further with my Processing script, and below is my tribute to Anni Albers Eclat

The ruleset of the main procedure draws white triangles on a black background, randomly assigning rotation values (in multiples of 90 degrees) as it lays them out. The piece is generative and is never exactly the same each time it is executed. The pink rectangles on the right are not generative and will always be the same.

Looming10-20-2017 at 15.48.14s

Here is the code:

// Tribute to Anni Albers "Eclat"
// Dylan Ryder 10/20/2017
// Encoded for WOVNS computational textile production platform

// Talma Quality, Pastel 20 Quality
size(3984, 3000); // 46-48" x 36", 84 DPI

background(0); // Carbon
noSmooth(); // anti-aliasing won’t be handled properly in weaving
noStroke();
noFill();

int widthSplit = 23;
int heightSplit = 17;

int w = width / widthSplit;
int h = height / heightSplit;
int r;

// main pattern of triangles in a grid of rows & columns
for (int col = 0; col < (widthSplit-1); col++) {
  for (int row = 0; row < heightSplit; row++) {

  fill(#F9FAF9); // Blizzard
  r = int(random(3)); // random rotation multiplier

  if (r == 0) {
  //TL-TR-BL
  triangle(w * col, h * row, w * col + w, h * row, w * col, h * row + h );
  } else if (r == 1) {
  //TL-TR-BR
  triangle(w * col, h * row, w * col + w, h * row, w * col + w, h * row + h );
  } else if (r == 2) {
  //TL-BL-BR
  triangle(w * col, h * row, w * col, h * row + h, w * col + w, h * row + h );
  } else {
  //TR-BL-BR
  triangle(w * col + w, h * row, w * col, h * row + h, w * col + w, h * row + h );
  }
 }
}

// pattern of rectangles down right edge
for (int row = 0; row < heightSplit; row++) {
  fill(#FFE4F3); // Pinking
  rect(width - w, h * row, width, h / 2);
}

// generate a unique filename for each generation based on datestamp
save("Looming"+nf(month(), 2)+"-"+nf(day(), 2)+"-"+year()+" at "+nf(hour(), 2)+"."+nf(minute(), 2)+"."+nf(second(), 2)+"s"+".png");

A&HA 5128: Periodic Update #2

Research

Agnes Martin – After a conversation about procedural art and my generative coding experiments with my course instructor (Hi Erin!), she mentioned Martin’s work. It’s new to me and I’m really excited about it! She was an abstract painter with a keen knack for grids and procedural, repetitious forms that I think would be perfect to explore in my own visual programing experiments.

161017_r28851
“Summer” (1964): Synthesizing both Abstract Expressionism and minimalism. Courtesy Patricia L Lewy Gidwitz

Process

The bulk of my time in studio this week was devoted to experimenting with generative art in Processing. Coding pieces that conform to the WOVNS platform constraints of resolution and color. This single piece I’m sharing below is one execution of a script that randomly assigns colored squares and prescribes exact bottom and right border patterns. I’m inspired to research more geometric artists and weaving patterns.

Looming_00
An untitled generative textile run.

A&HA 5128: PERIODIC UPDATE #1

I have decided to pursue a project exploring the intersection of pixels as threads, or screen resolutions “re-represented” with threads-per-inch. I will use Processing code as art material to create generative art pieces conforming to some specifications of the WOVNS platform. This way my selected generative art works can be fabricated as textile and fabric art.

My research and explorations need to go in two directions. One one hand, I must learn the technical specifications of the WOVNS platform, and on the other, I want to explore art and artists that will inspire me.

Technical Explorations

My technical research consists of exploring a set of generative art examples on from WOVNS. They have a number of tutorials available for users to choose from, and the Processing section describes a free set of Processing scripts that one can tinker with to see how it all works.

Next I watched a Video Tutorial for Processing and WOVNS computational textiles platform with artist and professor David Mellis. It was a nice beginner tutorial demonstrating how to make your own generative art code under the constraints of WOVNS particular pixel resolution and color palettes.

Research

Since I am interested in making generative and procedural art for textile production I have been digging into the work of some exciting artists that intersect these themes in their own work.

Sol LeWitt: The American conceptual artist was unknown to me until this Summer, but that only proves my naive art background. I’ve since become very excited about discovering his work, especially his wall drawings, patterns, and rule-based art works. I would love to read more of his instructions for drawings and about the specific nature of his procedural art and it’s potential intersection with code as art material.

Sol LeWitt, Wall Drawing #356 BB Isometric figure within which are 3" (7.5 cm) wide black lines in three directions. (Cube without a cube), 2003
Sol LeWitt, Wall Drawing #356 BB Isometric figure within which are 3" (7.5 cm) wide black lines in three directions. (Cube without a cube), 2003.

datamoshing: In an effort to explore how fabrics could mimic screens, I’m reading about an art trend of a few years ago called datamoshing. This technique blends compressed digital videos or photos together, removing keyframes from a file so the pixels smear and digital artifacts are enhanced. Another form of glitch art. I found interesting article about Russian photographer Polina Eframova, who recently shared a similar set of datamoshed photos, captured manually, rather than executably with code, by running digital video through an older PC that was not fully compatible with her camera software.

Phillip David Stearns: The artist behind Glitch Textiles and a throw blanket I found for sale on Adafruit’s website, Dark Code Throw. His goal seems to be fabricating woven-looking patterns that are produced in his artwork into physical, tangible weaves. This seems similar to what I might pursue for a final project – code generated fabric arts.

3007-00
Phillip David Sterns. "Dark Code Throw"