MIDTERM PART 1
Pattern Recreation
Find patterns in my everyday life (look around everywhere), photograph these and then recreate them in Processing. Make various versions of each pattern (or recreate it in Processing and then make others inspired by the recreation using other programs too such as Photoshop). Exhibit my creations next to the original photographed pattern and present as a series.
The chosen patterns were found on objects that are traditionally made. The rug and the pochette are Greek traditional, and the small “box” is traditional Moroccan. Presenting the various stages of the collection of the patterns until their recreation in Processing and furthermore their editing using Photoshop, and then again finally the creation of a few more patterns in processing by combining elements of the previously made ones, is similar to a presentation of the times from the past, when nothing digital existed, until the present, a digital world. Mathematical accuracy is an important element in the creation of such sketches.
ORIGINAL PHOTOGRAPHS
FINAL PRINTS
MIDTERM PART 2
Create a “Voice Testing Program” using the pattern(s) previously created in Part 1. This program will be made especially for singers, in order for them to test their voice and practise. The program can be used in order for professional singers to test how close to the microphone and how loud their voice should be. When the voice is at the correct volume, the “tree” patterns become white and the background black. Through this program the length of the singing at a certain level can also be tested. It is an exercise program for singer’s voices!
Create an “old film” or “waterfall” sketch with motion.
CODE FOR INTERACTIVE AND MOTION PROCESSING SKETCHES
VOICE TESTING PROGRAM
import ddf.minim.spi.*;
import ddf.minim.signals.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import ddf.minim.ugens.*;
import ddf.minim.effects.*;
Minim minim;
AudioInput audioIn;
FFT fft;
void setup() {
size (500, 420);
minim=new Minim(this);
audioIn=minim.getLineIn(Minim.STEREO, 1024);
fft = new FFT(audioIn.bufferSize(), audioIn.sampleRate());
}
void draw() {
float volume = audioIn.mix.level();
background(95, 2, 31);
lines();
pattern();
}
void one_pattern_left(int x, int y) {
float volume = audioIn.mix.level();
stroke(255);
if (volume <0.01 ) {fill (33, 64, 41); }
else if (volume < 0.04) {fill (62, 118, 76); }
else if (volume < 0.08 ) {fill (90, 167, 108); }
else if (volume < 0.10) {fill (112, 209, 135); }
else if (volume < 0.12) {fill (139, 255, 167); }
else if (volume < 0.35) {fill (255); }
else {fill (0); }
rect (90,25 + 20*(x-1),20,20);
rect (80,45 + 20*(x-1),40,20);
rect (65,65 + 20*(x-1),70,20);
rect (50,85 + 20*(x-1),100,20);
}
void one_pattern_right(int x, int y) {
float volume = audioIn.mix.level();
println(volume);
stroke(255);
if (volume <0.01 ) {fill (33, 64, 41); }
else if (volume < 0.04) {fill (62, 118, 76); }
else if (volume < 0.08 ) {fill (90, 167, 108); }
else if (volume < 0.10) {fill (112, 209, 135); }
else if (volume < 0.12) {fill (139, 255, 167); }
else if (volume < 0.35) {fill (255); }
else {fill (0); }
rect (380,25 + 20*(x-1),20,20);
rect (370,45 + 20*(x-1),40,20);
rect (355,65 + 20*(x-1),70,20);
rect (340,85 + 20*(x-1),100,20);
}
void lines(){
float volume = audioIn.mix.level();
for (int x = 0; x < 50; x++){
stroke (0);
if (volume < 0.15) {fill (95, 2, 31); }
else {fill (0); }
rect(-50,25 + 20*(x-1),600,20);
}
}
void pattern(){
for (int i = 1; i < 15; i = i + 4){
one_pattern_left(i,0);
one_pattern_right(i,0);
}
}
“OLD FILM” OR “WATERFALL”
int now;
void setup (){
size(500,600);
now = millis();
}
void draw(){
background(255);
int x = 0;
fill(20,90,160);
rect(10,-10,100,650);
rect(390,-10,100,650);
little_squares_at_sides_of_blue();
triple_pattern();
double_pattern();
if (millis()-now >= 100) {
x++;
//shapes2(-650+3*x);
shapes(-650 + 1*x);
now = millis();
}
}
void little_squares_at_sides_of_blue(){
for (int i = 0; i < 630; i = i+24){
fill(255);
stroke(255);
ellipse(11.5,i, 5,8);
ellipse(109,i,5,8);
ellipse(391.5,i,5,8);
ellipse(489,i,5,8);
}
}
void triple_pattern(){
for(int y = -20; y < 620; y = y + 12) {
fill(0);
stroke(0);
rect(37.5,y,23,12);
rect(442,y,23,12);
for (int x = 0; x < 3; x = x + 1) {
fill(255);
ellipse(42+7*x,y,7.5,10);
}
for (int x = 0; x < 3; x = x + 1) {
fill(255);
ellipse(447.5+7*x,y,7.5,10);
}
}
}
void double_pattern(){
for(int y = -23; y < 620; y = y + 12) {
fill(0);
stroke(0);
rect(84,y,15.5,12);
rect(400,y,15.5,12);
for (int x = 0; x < 2; x = x + 1) {
fill(255);
ellipse(88.5+7*x,y,7.5,10);
}
for (int x = 0; x < 2; x = x + 1) {
fill(255);
ellipse(404.5+7*x,y,7.5,10);
}
}
}
void shapes(int y) {
for (int x = y; x < 650; x = x + 150){
fill(20,90,160);
stroke(50,90,160);
rect(width/2 – 5 , 5 + x, 10,23);
rect(width/2 + 5 , x – 3, 10, 13);
rect(width/2 + 15 , x – 13, 10, 23);
rect(width/2 + 25 , x – 26, 10, 23);
rect(width/2 + 5 , x + 21, 10, 13);
rect(width/2 + 15 , x + 21, 10, 23);
rect(width/2 + 25 , x + 34, 10, 23);
rect(width/2 – 15 , x – 3, 10, 13);
rect(width/2 – 25 , x – 13, 10, 23);
rect(width/2 – 35 , x – 26, 10, 23);
rect(width/2 – 15 , x + 21, 10, 13);
rect(width/2 – 25 , x + 21, 10, 23);
rect(width/2 – 35 , x + 34, 10, 23);
rect(width/2 + 25 , 75 + x, 10,23);
rect(width/2 – 35 , 75 + x, 10,23);
rect(width/2 – 15 , 75 + x, 10,23);
rect(width/2 + 5 , 75 + x, 10,23);
rect(width/2 – 5 , 70 + x, 10,13);
rect(width/2 – 5 , 90 + x, 10,13);
}
}
void shapes2(int y) {
for (int x = y; x < 650; x = x + 150){
fill(255);
stroke(255);
rect(width/2 – 5 , 5 + x, 10,23);
rect(width/2 + 5 , x – 3, 10, 13);
rect(width/2 + 15 , x – 13, 10, 23);
rect(width/2 + 25 , x – 26, 10, 23);
rect(width/2 + 5 , x + 21, 10, 13);
rect(width/2 + 15 , x + 21, 10, 23);
rect(width/2 + 25 , x + 34, 10, 23);
rect(width/2 – 15 , x – 3, 10, 13);
rect(width/2 – 25 , x – 13, 10, 23);
rect(width/2 – 35 , x – 26, 10, 23);
rect(width/2 – 15 , x + 21, 10, 13);
rect(width/2 – 25 , x + 21, 10, 23);
rect(width/2 – 35 , x + 34, 10, 23);
rect(width/2 + 25 , 75 + x, 10,23);
rect(width/2 – 35 , 75 + x, 10,23);
rect(width/2 – 15 , 75 + x, 10,23);
rect(width/2 + 5 , 75 + x, 10,23);
rect(width/2 – 5 , 70 + x, 10,13);
rect(width/2 – 5 , 90 + x, 10,13);
}
}