Logo Bordello
My favorite band, Gogol Bordello, changes its logo with each album. While each logo feels like the band, there is little consistency in design. It was a perfect starting point for my generative logo assignment.
To redesign Gogol Bordello’s logo, the question to answer was, What is Gogol Bordello? It is the essence and progenitor of gypsy punk, the raucous symbiosis of east and west and north and south. There are songs in English, songs in Russian, songs with a Latin flavor. I played with these ideas in preliminary sketches.
I wanted it to feel wild and defiant, like graffiti. I made a Russian E as a subtle nod to Russian lyrics. I added stripes to reference guitar and violin strings. I randomized the y-position of the letters to give them a jumbled look; I also randomized the color selection. Every time I run the program, the logo is a different color and configuration. I printed three of my favorite results on a poster.
This is the code for the letter class. I used arcs to draw the round edges of the letters.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | class Letter { float distX, distY; //bounding box parameters float xpos, ypos; //starting (x,y) for upper left corner Letter(float xpos_, float ypos_, float distX_, float distY_){ distX = distX_; distY = distY_; xpos = xpos_; ypos = ypos_; } void b() { canvas.pushMatrix(); canvas.ellipseMode(CENTER); canvas.translate(distX/2, 0); //center letter in bounding box canvas.line(xpos, ypos, xpos, ypos + distY); canvas.arc(xpos, ypos + distY/4, 2*distX/3, distY/2, -3*PI/4, PI/2); //top arc canvas.arc(xpos, ypos + 3*distY/4, distX, distY/2, -PI/2, PI/2); //bottom arc canvas.popMatrix(); } void d() { canvas.pushMatrix(); canvas.ellipseMode(RADIUS); canvas.translate(distX/4, 0); //center letter in bounding box canvas.line(xpos + 2*distX/3, ypos, xpos + 2*distX/3, ypos + distY); canvas.arc(xpos + 3*distX/4, ypos + 3*distY/4, 2*distX/3, distY/3, PI/2, 3*PI/2); canvas.popMatrix(); } void e() { canvas.pushMatrix(); canvas.ellipseMode(CENTER); canvas.translate(distX/4, 0); //center letter in bounding box canvas.arc(xpos, ypos + distY/2, distX, distY, -PI/2, PI/2); canvas.line(xpos, ypos + distY/2, xpos + distX/2, ypos + distY/2); //horizontal line canvas.popMatrix(); } void g() { canvas.pushMatrix(); canvas.ellipseMode(CENTER); canvas.translate(-distX/4, 0); //center letter in bounding box canvas.arc(xpos + distX, ypos + distY/2, distX, distY, PI/2, 3*PI/2); canvas.line(xpos + distX, ypos + distY/2, xpos + distX, ypos + 1.25*distY); //vertical line canvas.line(xpos + 3*distX/4, ypos + distY/2, xpos + distX, ypos + distY/2); //horizontal line canvas.popMatrix(); } void l() { canvas.pushMatrix(); canvas.translate(distX/8, 0); //center letter in bounding box canvas.line(xpos, ypos, xpos, ypos + distY); //vertical line canvas.line(xpos, ypos + distY, xpos + 3*distX/4, ypos + 3*distY/4); //horizontal line canvas.popMatrix(); } void o() { canvas.pushMatrix(); canvas.ellipseMode(CENTER); canvas.ellipse(xpos + distX/2, ypos + distY/2, distX, distY); canvas.popMatrix(); } void r() { canvas.pushMatrix(); ellipseMode(CENTER); canvas.translate(distX/4, 0); canvas.line(xpos, ypos, xpos, ypos + distY); canvas.arc(xpos, ypos + distY/3, distX, distY/2, -3*PI/4, PI/2); canvas.line(xpos, ypos + distY/2, xpos + distX, ypos + distY); canvas.popMatrix(); } } |
This is the main sketch code. The complete code is on Github.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | //Kim Ash //Printing Code //logoGB - creates a generative logo for Gogol Bordello PGraphics canvas; int canvas_width = 5100; int canvas_height = 3825; float ratioWidth = 1; float ratioHeight = 1; float ratio = 1; Letter [] gogol; Letter [] bordello; void setup() { size(510, 383); canvas = createGraphics(canvas_width, canvas_height); calculateResizeRatio(); gogol = new Letter[5]; bordello = new Letter[8]; canvas.beginDraw(); canvas.colorMode(HSB, 360, 100, 100); canvas.background(360, 100, 0); grid(canvas.width/50); canvas.smooth(); canvas.noFill(); canvas.strokeCap(PROJECT); canvas.strokeJoin(BEVEL); canvas.stroke(random(360), random(70,100), 100); canvas.strokeWeight(canvas.height/37); //Gogol canvas.pushMatrix(); canvas.translate(canvas.width/5, 0); for(int i=0; i<5; i++) { gogol[i] = new Letter(1.25*i*canvas.width/10, canvas.height/4 + random(canvas.height/8), canvas.width/10, canvas.height/8); } gogol[0].g(); gogol[1].o(); gogol[2].g(); gogol[3].o(); gogol[4].l(); canvas.popMatrix(); //Bordello canvas.pushMatrix(); canvas.translate(0, canvas.height/4); for(int i=0; i<8; i++) { bordello[i] = new Letter(1.25*i*canvas.width/10, canvas.height/4 + random(canvas.height/8), canvas.width/10, canvas.height/8); } bordello[0].b(); bordello[1].o(); bordello[2].r(); bordello[3].d(); bordello[4].e(); bordello[5].l(); bordello[6].l(); bordello[7].o(); canvas.popMatrix(); //stripes for(int i=0; i<=canvas.width; i+=(canvas.width/140)){ canvas.stroke(360, 100, 0); canvas.strokeWeight(canvas.height/200); canvas.line(i, 0, i, canvas.height); } canvas.endDraw(); float resizedWidth = (float) canvas.width * ratio; float resizedHeight = (float) canvas.height * ratio; //displays canvas onscreen image(canvas, (width/2) - (resizedWidth/2), (height/2) - (resizedHeight/2), resizedWidth, resizedHeight); canvas.save("logoGB.tiff"); } /* resizing function */ void calculateResizeRatio() { ratioWidth = (float) width / (float) canvas.width; ratioHeight = (float) height / (float) canvas.height; if(ratioWidth < ratioHeight) ratio = ratioWidth; else ratio = ratioHeight; } void grid(float pageMargin) { //bounding box for manuscript grid canvas.noFill(); canvas.stroke(360, 100, 100, 0); //change alpha value to see gridlines canvas.strokeWeight(canvas.width/500); canvas.rect(pageMargin, pageMargin, canvas.width - (2*pageMargin), canvas.height - (2*pageMargin)); } |