OUTside — INside

Nina Ndichu
Measuring the Great Indoors
4 min readOct 29, 2019

Many buildings in New York have facades that have no openings that reveals the outside. This system aims to bring the outside to the inside spaces. This generally means that when you are in a space that has no windows, firstly the system can make one aware of the time by triggering the sounds that a common to that time of day. Secondly, the system shows the specific times corelating to the sounds. Thirdly, the most likely activity that would be happening at that time.

The last layer would be to capture the image of the weather outside and project it using a projector to allow the person indoors to know what is happening outside. This will aid the person to know how to dress accordingly and what accessories are needed before he heads on outside. The captured feed is from a camera facing outside.

Processing software as the main tool
Portable Projector for capturing images/videos

SYSTEMS DIAGRAM

Systems diagram
Video of system in action — no sound
System in action — with sound

PROCESSING CODE

import processing.sound.*;

SoundFile morningfile;
SoundFile midmorningfile;
SoundFile lunchfile;
SoundFile nightfile;

PImage sunrise;
PImage schooltime;
PImage lunchtime;
PImage nightsky;

void setup(){
size (1100,600);

morningfile = new SoundFile(this,”Bird_in_Rain.mp3");
midmorningfile = new SoundFile(this,”Bus_Noise.mp3");
lunchfile = new SoundFile(this,”Cafeteria_at_Lunch.mp3");
nightfile = new SoundFile(this,”Crickets_Night.mp3");

sunrise = loadImage (“sunrise.jpg”);
schooltime = loadImage(“schooltime.jpg”);
lunchtime = loadImage(“lunchtime.jpg”);
nightsky = loadImage(“nightsky.jpg”);
}


void draw() {

//morning start
if ((second()>0)&&(second()<15)) {

midmorningfile.stop();
lunchfile.stop();
nightfile.stop();

background(0);
image(sunrise,0,0);
textSize(48);
text(“6 AM”, 100,100);
fill(#0DDDFF);
translate(400,400);
rotate(radians(270));

int s = second(); // Values from 0–60
int m = minute(); // Values from 0–60
int h = hour(); // Values from 0–12


strokeWeight(8);
stroke(244,72,247);
noFill();
float end1 = map (s, 0, 60, radians(0), radians(360));
arc(0,0,300,300,0,end1);

push();
rotate(end1);
stroke(244,72,247);
line(0, 0, 100, 0);
pop();

stroke(74,247,72);
float end2 = map (m, 0, 60, radians(0), radians(360));
arc(0,0,280,280,0,end2);

push();
rotate(end2);
stroke(74,247,72);
line(0, 0, 75, 0);
pop();

stroke(72,79,247);
float end3 = map (h % 12, 0, 12, radians(0), radians(360));
arc(0,0,260,260,0,end3);

push();
rotate(end3);
stroke(72,79,247);
line(0, 0, 50, 0);
pop();

stroke(255,18,18);
point(0,0);

//this makes sure the file doesn’t play ontop of itself at every draw loop
if (morningfile.isPlaying()){
//do nothing
}
else {
morningfile.play();
}
//morning end

//midday start
} else if ((second()>15)&&(second()❤0)) {

morningfile.stop();
lunchfile.stop();
nightfile.stop();

background(0);
image(schooltime,0,0);
textSize(48);
text(“10 AM”, 100,200);
fill(#F5114A);
translate(400,400);
rotate(radians(270));

int s = second(); // Values from 0–60
int m = minute(); // Values from 0–60
int h = hour(); // Values from 0–12

strokeWeight(8);
stroke(244,72,247);
noFill();
float end1 = map (s, 0, 60, radians(0), radians(360));
arc(0,0,300,300,0,end1);

push();
rotate(end1);
stroke(244,72,247);
line(0, 0, 100, 0);
pop();

stroke(74,247,72);
float end2 = map (m, 0, 60, radians(0), radians(360));
arc(0,0,280,280,0,end2);

push();
rotate(end2);
stroke(74,247,72);
line(0, 0, 75, 0);
pop();

stroke(72,79,247);
float end3 = map (h % 12, 0, 12, radians(0), radians(360));
arc(0,0,260,260,0,end3);

push();
rotate(end3);
stroke(72,79,247);
line(0, 0, 50, 0);
pop();

stroke(255,18,18);
point(0,0);

if (midmorningfile.isPlaying()){
//do nothing
} else {
midmorningfile.play();
}
//midmorning end

//lunch start
} else if ((second()>30)&&(second()<45)) {

morningfile.stop();
midmorningfile.stop();
nightfile.stop();

background(0);
image(lunchtime,0,0);
textSize(48);
text(“2 PM”, 100,200);
fill(#8C30D8);
translate(400,400);
rotate(radians(270));

int s = second(); // Values from 0–60
int m = minute(); // Values from 0–60
int h = hour(); // Values from 0–12

strokeWeight(8);
stroke(244,72,247);
noFill();
float end1 = map (s, 0, 60, radians(0), radians(360));
arc(0,0,300,300,0,end1);

push();
rotate(end1);
stroke(244,72,247);
line(0, 0, 100, 0);
pop();

stroke(74,247,72);
float end2 = map (m, 0, 60, radians(0), radians(360));
arc(0,0,280,280,0,end2);

push();
rotate(end2);
stroke(74,247,72);
line(0, 0, 75, 0);
pop();

stroke(72,79,247);
float end3 = map (h % 12, 0, 12, radians(0), radians(360));
arc(0,0,260,260,0,end3);

push();
rotate(end3);
stroke(72,79,247);
line(0, 0, 50, 0);
pop();

stroke(255,18,18);
point(0,0);

if (lunchfile.isPlaying()){
//do nothing
} else {
lunchfile.play();
}
//lunch end

//night start
} else if ((second()>45)&&(second()<60)) {

morningfile.stop();
midmorningfile.stop();
lunchfile.stop();

background(0);
image(nightsky,0,0);
textSize(48);
text(“8 PM”, 100,200);
fill(#3DD830);
translate(400,400);
rotate(radians(270));

int s = second(); // Values from 0–60
int m = minute(); // Values from 0–60
int h = hour(); // Values from 0–12

strokeWeight(8);
stroke(244,72,247);
noFill();
float end1 = map (s, 0, 60, radians(0), radians(360));
arc(0,0,300,300,0,end1);

push();
rotate(end1);
stroke(244,72,247);
line(0, 0, 100, 0);
pop();

stroke(74,247,72);
float end2 = map (m, 0, 60, radians(0), radians(360));
arc(0,0,280,280,0,end2);

push();
rotate(end2);
stroke(74,247,72);
line(0, 0, 75, 0);
pop();

stroke(72,79,247);
float end3 = map (h % 12, 0, 12, radians(0), radians(360));
arc(0,0,260,260,0,end3);

push();
rotate(end3);
stroke(72,79,247);
line(0, 0, 50, 0);
pop();

stroke(255,18,18);
point(0,0);

if (nightfile.isPlaying()){
//do nothing
} else {
nightfile.play();
}
}
//night end

}

System at 8 pm with crickets chirping and the night sky — depicts a chilly day

Processing can enable you to write complex codes for several circumstances. I had fun with this one although at one point the software kept on crashing and I had to adjust it to iterate what my idea was. Bring the OUTside to the INside.

Lunch time at a busy cafeteria. The sun’s rays coming from the window depicts a sunny day
New York at 10 am reminds me of buses in traffic driving kids to school — not a hot or cold day, kids in shorts may depict a sunny fall day
Sunrise at 6 am — cool morning may need a jacket

--

--