The Ceremony of Mushrooms

The Ceremony of Mushrooms is a surrealist, nonsensical re-interpretation of Illuminated manuscripts of the early Medival Era.

Mostly seen in astronomical drawings, a lot of medieval depictions of the astronomy of the heavens were purely speculative. These illustrations are peppered with almost ornamental depictions of the night sky as well as astrological speculation and iconography.

Playing up the speculative and unintentionally surrealist qualities of these illustrations, The Ceremony of Mushrooms depicts a nonsensical cult trying to tie together a humble low-lying fungi and the great expanses of our heavens.

 

 

reflection lecture 2

I was really intrigued by fat face fonts as I’ve never really learned about them before even though I’ve seen them in graphic artworks in the past.

 

What is a fat face typeface?

Fat Face type faces are often described as subsets of modern didone fonts but with exgaggerated weights and vertical stress. While they were invented as an offshoot of modern fonts, many designers have designed fat face versions of san serif fonts like Futura and Gothic.

 

Many fat face fonts are also ornamental as well as fat face fonts were designed to be used as a display type rather than a font for body copy.

The typeface was used in the new urban and industrial areas of London, created for the purpose of advertising it was used on posters and hoardings.

 

 

 

Characteristics of fat face

its key features are vertical stresses and hairline serifs, the structure of the typeface has thick main body, the ascenders, descenders,bowl etc. are thick in width, the serifs and connecting strokes are thin hairlines and bracketed.

 

 

Take a Modern style typeface, give its thicker strokes even more weight, triangulate some of those serifs, and you have a Fat Face. Bodoni is of course a Modern style type but, carrying all that extra weight, it’s a Fat Face. The Fat Face, then, is basically an Obese Didone.

 

 

 

History of Fat Face

 

The first truly fat roman typeface is believed to have been introduced by prominent London type founder Robert Thorne, in 1803.

 

Advent of advertising

This was a period of invention and discovery when Europe was experiencing an enormous expansion of trade and commerce and so the demand for print advertising increased. Job printers who formerly relied on printing books soon discovered new sources of commercial print work. Thorne responded to this new surge in advertising by designing his “improved printing types” expressly for short headlines on posters. His bold new, all caps fat face proved to be wildly successful and was largely responsible for altering the appearance of advertising in this era.

 

 

 

Robert Thorne’s death; Revival of Fatface

After Robert Thorne’s death, the Fann Street Foundry was put up for auction, and purchased by William Thorowgood in 1820. Under William Thorowgood, some of Thorne’s unpublished fonts were published post-humorously.

These fonts inspired almost every successful font foundry to issue their own revival of Thorne’s original fat face font. Eventually, italic, compressed, elongated, expanded, condensed as well as shaded cuts of fat face fonts were published.

By 1906, typefounders Stephenson Blake acquired the entire Fann Street Foundry holdings, and Thorne’s original fat faces were among them. It was nearly fifty years later, however, that Thorne was finally recut and renamed as Thorowgood.

 

 

 

 

 

20th Century Shift

A cultural shift towards modernism emerged and gained influence in all aspects of society. Nowhere was this move towards modernism more pronounced than in advertising, book design, and printed arts throughout most of the 20th century. Type foundries responded by releasing dozens of new styles of san serif fonts such as Bernhard GothicAgency GothicGill SansFutura, and News Gothic.

 

Futura Black

 

Gill Kayo

Gothic

 

 

Sizable fat faces were no longer being used exclusively as bursts of attention-grabbing display headlines but were discreetly used as body copy, or as small, but readable design elements. By their very nature, they could be loud, flamboyant and conspicuous, or speak softly with restrained elegance.

 

 

Today

Designers still create fat face type fonts with some fonts staying faithful to old designs while some mix in new ideas with fat face types of the past.

 

 

 

 

FINAL PROJECT ӿ EMERGENCY SHELTER FOR LOSERS

DOCUMENTATION OF USER INTERACTION

VIDEO OF ARTWORK'S USE

Arduino Code for Lights

#include <Wire.h>
#include "Adafruit_MPR121.h"

#ifndef _BV
#define _BV(bit) (1 << (bit)) 
#endif

// You can have up to 4 on one i2c bus but one is enough for testing!
Adafruit_MPR121 cap = Adafruit_MPR121();

// Keeps track of the last pins touched
// so we know when buttons are 'released'
uint16_t lasttouched = 0;
uint16_t currtouched = 0;

int led1 = 9; // the PWM pin the LED is attached to
int led2 = 10; 
int led3 = 11; 
int brightness = 0; // how bright the LED is
int fadeAmount = 10; // how many points to fade the LED b

int led13 = 13; // the pin the LED is connected to
int led12 = 12;
int led7 = 7;
int led001 = 6.;
int led5 = 5;
int led4 = 4;
int led003 = 3;
int led002 = 2;
int led8 = 8;


void setup() {
Serial.begin(9600);

while (!Serial) { // needed to keep leonardo/micro from starting too fast!
delay(10);
}

Serial.println("Adafruit MPR121 Capacitive Touch sensor test"); 

// Default address is 0x5A, if tied to 3.3V its 0x5B
// If tied to SDA its 0x5C and if SCL then 0x5D
if (!cap.begin(0x5A)) {
Serial.println("MPR121 not found, check wiring?");
while (1);
}
Serial.println("MPR121 found!");
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);

pinMode(led13, OUTPUT); // Declare the LED as an output
pinMode(led12, OUTPUT); // Declare the LED as an output
pinMode(led7, OUTPUT); // Declare the LED as an output
pinMode(led001, OUTPUT); // Declare the LED as an output
pinMode(led5, OUTPUT); // Declare the LED as an output
pinMode(led4, OUTPUT); // Declare the LED as an output
pinMode(led003, OUTPUT); // Declare the LED as an output
pinMode(led002, OUTPUT); // Declare the LED as an output
pinMode(led8, OUTPUT); // Declare the LED as an output
}

void loop() {
// Get the currently touched pads

currtouched = cap.touched();
int range = cap.touched();
switch (range) {
case 0:
if ((! (cap.touched() & (1 << 1)) ) && (! (cap.touched() & (1 << 6) ) && (! (cap.touched() & (1 << 11)) )))
Serial.write(0);
break;
case 1:
if ((cap.touched() & (1 << 1)) && (cap.touched() & (1 << 6)) && (cap.touched() & (1 << 11)))
Serial.write(1);
break;}


for (uint8_t i=0; i<12; i++) {
// it if is touched and wasnt touched before, alert!
if ((currtouched & _BV(i)) && !(lasttouched & _BV(i)) ) {
Serial.print(i); Serial.println(" touched");
}
// if it was touched and now isnt, alert!
if (!(currtouched & _BV(i)) && (lasttouched & _BV(i)) ) {
Serial.print(i); Serial.println(" released");
}
}


///// 1=led 1 6=led2 11=led3

////////////
/// no lanterns touched, everything on
if ((! (cap.touched() & (1 << 1)) ) && (! (cap.touched() & (1 << 6) ) && (! (cap.touched() & (1 << 11)) )))
{ analogWrite(led1,50); 
analogWrite(led2,50);
analogWrite(led3,50);
digitalWrite(led13, HIGH); // Turn the LED on
digitalWrite(led12, HIGH); // Turn the LED on
digitalWrite(led7, HIGH); // Turn the LED on
digitalWrite(led001, HIGH); // Turn the LED on
digitalWrite(led5, HIGH); // Turn the LED on
digitalWrite(led4, HIGH); // Turn the LED on
digitalWrite(led003, HIGH); // Turn the LED on
digitalWrite(led002, HIGH); // Turn the LED on
digitalWrite(led8, HIGH); // Turn the LED on
}


//////////
///all lanterns touched, everything off 
if ((cap.touched() & (1 << 1)) && (cap.touched() & (1 << 6)) && (cap.touched() & (1 << 11)))

{ analogWrite(led1,0); 
analogWrite(led2,0);
analogWrite(led3,0);
digitalWrite(led13, LOW); // Turn the LED off
digitalWrite(led12, LOW); // Turn the LED off
digitalWrite(led7, LOW); // Turn the LED off
digitalWrite(led001, LOW); // Turn the LED off
digitalWrite(led5, LOW); // Turn the LED off
digitalWrite(led4, LOW); // Turn the LED off
digitalWrite(led003, LOW); // Turn the LED off
digitalWrite(led002, LOW); // Turn the LED off
digitalWrite(led8, LOW); // Turn the LED off
}


//////////
/// one lantern touched, one off, two on 
if ((cap.touched() & (1 << 1)) && (! (cap.touched() & (1 << 6) ) && (! (cap.touched() & (1 << 11) ))))
{ analogWrite(led1,0); 
analogWrite(led2,100);
analogWrite(led3,100); 
digitalWrite(led13, LOW); // Turn the LED off
digitalWrite(led12, LOW); // Turn the LED off
digitalWrite(led7, LOW); // Turn the LED off
digitalWrite(led001, HIGH); // Turn the LED on
digitalWrite(led5, HIGH); // Turn the LED on
digitalWrite(led4, HIGH); // Turn the LED on
digitalWrite(led003, HIGH); // Turn the LED on
digitalWrite(led002, HIGH); // Turn the LED on
digitalWrite(led8, HIGH); // Turn the LED on
}

if ((cap.touched() & (1 << 6)) && (! (cap.touched() & (1 << 1) ) && (! (cap.touched() & (1 << 11) ))))
{ analogWrite(led1,100); 
analogWrite(led2,0);
analogWrite(led3,100);
digitalWrite(led13, HIGH); // Turn the LED on
digitalWrite(led12, HIGH); // Turn the LED on
digitalWrite(led7, HIGH); // Turn the LED on
digitalWrite(led001, LOW); // Turn the LED off
digitalWrite(led5, LOW); // Turn the LED off
digitalWrite(led4, LOW); // Turn the LED off
digitalWrite(led003, HIGH); // Turn the LED on
digitalWrite(led002, HIGH); // Turn the LED on
digitalWrite(led8, HIGH); // Turn the LED on
}

if ((cap.touched() & (1 << 11)) && (! (cap.touched() & (1 << 6) ) && (! (cap.touched() & (1 << 1) ))))
{ analogWrite(led1,100); 
analogWrite(led2,100);
analogWrite(led3,0); 
digitalWrite(led13, HIGH); // Turn the LED on
digitalWrite(led12, HIGH); // Turn the LED on
digitalWrite(led7, HIGH); // Turn the LED on
digitalWrite(led001, HIGH); // Turn the LED on
digitalWrite(led5, HIGH); // Turn the LED on
digitalWrite(led4, HIGH); // Turn the LED on
digitalWrite(led003, LOW); // Turn the LED off
digitalWrite(led002, LOW); // Turn the LED off
digitalWrite(led8, LOW); // Turn the LED off
}


//////////////////////
///two lanterns touched, two off, one on 
if (cap.touched() & (1 << 1) && cap.touched() & (1 << 6) && (! (cap.touched() & (1 << 11) )))
{ analogWrite(led1,0); 
analogWrite(led2,0);
analogWrite(led3,255);

digitalWrite(led13, LOW); // Turn the LED off
digitalWrite(led12, LOW); // Turn the LED off
digitalWrite(led7, LOW); // Turn the LED off
digitalWrite(led001, LOW); // Turn the LED off
digitalWrite(led5, LOW); // Turn the LED off
digitalWrite(led4, LOW); // Turn the LED off
digitalWrite(led003, HIGH); // Turn the LED on
digitalWrite(led002, HIGH); // Turn the LED on
digitalWrite(led8, HIGH); // Turn the LED on
}

if (cap.touched() & (1 << 1) && cap.touched() & (1 << 11) && (! (cap.touched() & (1 << 6) ))) 
{ analogWrite(led1,0); 
analogWrite(led2,255);
analogWrite(led3,0);

digitalWrite(led13, LOW); // Turn the LED off
digitalWrite(led12, LOW); // Turn the LED off
digitalWrite(led7, LOW); // Turn the LED off
digitalWrite(led001, HIGH); // Turn the LED on
digitalWrite(led5, HIGH); // Turn the LED on
digitalWrite(led4, HIGH); // Turn the LED on
digitalWrite(led003, LOW); // Turn the LED off
digitalWrite(led002, LOW); // Turn the LED off
digitalWrite(led8, LOW); // Turn the LED off
}

if (cap.touched() & (1 << 6) && cap.touched() & (1 << 11) && (! (cap.touched() & (1 << 1) ))) 
{ analogWrite(led1,255); 
analogWrite(led2,0);
analogWrite(led3,0);
digitalWrite(led13, HIGH); // Turn the LED on
digitalWrite(led12, HIGH); // Turn the LED on
digitalWrite(led7, HIGH); // Turn the LED on
digitalWrite(led001, LOW); // Turn the LED off
digitalWrite(led5, LOW); // Turn the LED off
digitalWrite(led4, LOW); // Turn the LED off
digitalWrite(led003, LOW); // Turn the LED off
digitalWrite(led002, LOW); // Turn the LED off
digitalWrite(led8, LOW); // Turn the LED off
}





// reset our state
lasttouched = currtouched;

// comment out this line for detailed data from the sensor!
return;

// debugging info, what
Serial.print("\t\t\t\t\t\t\t\t\t\t\t\t\t 0x"); Serial.println(cap.touched(), HEX);
Serial.print("Filt: ");
for (uint8_t i=0; i<12; i++) {
Serial.print(cap.filteredData(i)); Serial.print("\t");
}
Serial.println();
Serial.print("Base: ");
for (uint8_t i=0; i<12; i++) {
Serial.print(cap.baselineData(i)); Serial.print("\t");
}
Serial.println();

// put a delay so it isn't overwhelming
delay(100);
}

 

Processing Code for sound

/**
* This sketch demonstrates how to play a file with Minim using an AudioPlayer. <br />
* It's also a good example of how to draw the waveform of the audio. Full documentation 
* for AudioPlayer can be found at http://code.compartmental.net/minim/audioplayer_class_audioplayer.html
* <p>
* For more information about Minim and additional features, 
* visit http://code.compartmental.net/minim/
*/
import processing.serial.*;
import ddf.minim.*;

Minim minim;
AudioPlayer player;

Serial myPort;
int val;


void setup()
{
size(512, 200, P3D);

// we pass this to Minim so that it can load files from the data directory
minim = new Minim(this);

// I know that the first port in the serial list on my mac
// is Serial.list()[0].
// On Windows machines, this generally opens COM1.
// Open whatever port is the one you're using.
String portName = Serial.list()[0]; //change the 0 to a 1 or 2 etc. to match your port
print(portName);
myPort = new Serial(this, portName, 9600);

// loadFile will look in all the same places as loadImage does.
// this means you can find files that are in the data folder and the 
// sketch folder. you can also pass an absolute path, or a URL.
player = minim.loadFile("space.mp3");
//convert to mav.
}

void draw()
{
while ( myPort.available() > 0) 
{ // If data is available,
val = myPort.read(); // read it and store it in val
} 
println(val); //print it out in the console

background(255);
//stroke(255);

switch (val) { 
case 10:
fill(0);
player.pause();
break;
case 0:
fill(255);
player.play();
break;}

for(int i = 0; i < player.bufferSize() - 1; i++)
{
float x1 = map( i, 0, player.bufferSize(), 0, width );
float x2 = map( i+1, 0, player.bufferSize(), 0, width );
line( x1, 50 + player.left.get(i)*50, x2, 50 + player.left.get(i+1)*50 );
line( x1, 150 + player.right.get(i)*50, x2, 150 + player.right.get(i+1)*50 );
}

// draw a line to show where in the song playback is currently located
float posx = map(player.position(), 0, player.length(), 0, width);
stroke(0,200,0);
line(posx, 0, posx, height);

if ( player.isPlaying() )
{
text("Press any key to pause playback.", 10, 20 );
}
else
{
text("Press any key to start playback.", 10, 20 ); }
}
void keyPressed()
{
if ( player.isPlaying() )
{
player.pause();
}
// if the player is at the end of the file,
// we have to rewind it before telling it to play again
else if ( player.position() == player.length() )
{
player.rewind();
player.play();
}
else
{
player.play();
}
}

 

ZINE LOCALE ӿ PRESENTATION

When I first started research into the Golden Mile Complex, I thought that it was a magical place filled with exciting, quirky stories filled with nostalgia.

However, as I started to interview people in Golden Mile, it was disappointing to find that many people were apathetic about the building. many people simply viewed Golden mile as abuilding.

I realized that my experiences were vastly different from other people that may visit the same building but have widely different opinions on it.

As such, I researched the different experiences of different groups of people in Golden Mile Complex.

There were three groups I identified: Shopkeepers, Pretentious Art students (me) and Thai Migrant Workers.