Category Archives: Uncategorized

Anna

26 Jan 2013

“Listen as the bonds fall off, which hold you, above and below….”

So… hey there: AvR here, with a bucket of gatorade, a pile of saltines, and a bunch of code to share with you. Delightful!

This is my solution for recreating TextRain in Processing. In short, it knocks out the background by making everything two-toned, and then searches for the darker pixel color. Nothing super fancy, but fancy by my standards, because I’m not super fast at this yet…

I wanted to say a bit about the text itself. The lines are from Guillaume Apollinaire’s famous French calligram “Il Pleut” (It Rains). Calligrams are poems where the typographic layout and shape of the words contribute to the meaning of the poem. The original looks like this:

ilpleut

I’ve always loved the work of Apollinaire, and this assignment seemed like the perfect opportunity to breathe new life into his ideas. Obviously ‘Gui’ didn’t have a computer available to him, and he was forced to rely on static shapes to convey the idea of rain. I liked the idea of being able to add a little motion to the mix. The idea of ‘freeing’ the letters from their frozen position on the page, to me, fits nicely the final line of the poem: “Listen as the bonds fall off, which hold you, above and below….”

Credit where credit is due: I listened to John‘s suggestion to redraw the webcam image as a set of larger rectangles — not because it looked cool, but because it helped Processing deal with the ridiculous output of my retinabook. Mike also nudged me in the right direction about locating individual pixels to gauge brightness, because on my first attempt I’d written myself into a processing abyss with a whole pile of letter classes, and couldn’t figure out if I was the dimmest bulb in the chandelier, much less if a pixel was the dimmest pixel in the window…….

Merci Beaucoup.

textrain shots

Github Repo

import processing.video.*;
Capture retinacam;
PFont f;
final int pixeler = 4;
int[] time = { 0, 20000, 40000 };

String lineone = "Il pleut des voix de femmes comme si elles étaient mortes même dans le souvenir";
String linetwo = "c’est vous aussi qu’il pleut, merveilleuses rencontres de ma vie. ô gouttelettes";
// String linethree = "et ces nuages cabrés se prennent à hennir tout un univers de villes auriculaires";
// String linefour = "écoute s’il pleut tandis que le regret et le dédain pleurent une ancienne musique;"
// String linefive = "écoute tomber les liens qui te retiennent en haut et en bas":

int[] charx = new int[lineone.length()];
int[] chary = new int[lineone.length()];
int[] charx2 = new int[linetwo.length()];
int[] chary2 = new int[linetwo.length()];

void setup() {
  size(1280, 720);

  String[] cameras = Capture.list();

  if (cameras.length == 0) {
    println("There are no cameras available for capture.");
    exit();
  }
  else {
    println("Available cameras:");
    for (int i = 0; i < cameras.length; i++) {
      println(cameras[i]);
    }
  }
  retinacam = new Capture(this, cameras[0]);
  retinacam.start();
  colorMode(HSB, 255);
  noStroke();
  f = createFont("Futura", 24, true);
  textFont(f);
//
//for (int i = 0; i < linetwo.length(); i++) {
// chary2[i] = -200;
//}

  charx[0] = 10;
  for (int i=1; i < lineone.length(); i++) {
    charx[i]= charx[i-1] += 15;
    println(textWidth(lineone.charAt(i-1)));
  }

    charx2[0] = 10;
  for (int i=1; i < linetwo.length(); i++) {
    charx2[i]= charx2[i-1] += 15;
    println(textWidth(linetwo.charAt(i-1)));
  }
}

void draw() {
  if (retinacam.available()==true) {
    retinacam.read();
  }

 // retinacam.loadPixels();
  int threshold = 60;

  for (int x = 0; x < retinacam.width; x+=pixeler) {
    for (int y = 0; y < retinacam.height; y+=pixeler) {
      int loc = x + y*retinacam.width;
      if (brightness(retinacam.pixels[loc]) > threshold) {
        fill(160, 100, 100);
      }
      else {
        fill(200, 100, 50);
      }
      rect(x, y, pixeler, pixeler);
    }
  }

  retinacam.updatePixels();

  //image(retinacam, 0, 0);

if( millis() >= time[0] ){
for (int i = 0; i < lineone.length(); i++) {
if((chary[i] > retinacam.height)||(chary[i]<0)){
     chary[i] = 0;
     }
     else {
     chary[i] = chary[i] + int((brightness(get(charx[i], chary[i]))-60)/random(10,15));
     }
    fill(112, 250, 180);
    text(lineone.charAt(i), charx[i], chary[i]);
  }
  }

if( millis() >= time[1] ){
  for (int i = 0; i < linetwo.length(); i++) {
if((chary2[i] > retinacam.height)||(chary2[i]<0)){
     chary2[i] = 0;
     }
     else {
     chary2[i] = chary2[i] + int((brightness(get(charx2[i], chary2[i]))-60)/random(5,29));
     }
    fill(35, 250, 250);
    text(linetwo.charAt(i), charx2[i], chary2[i]);
  }
}

}

Golan

24 Jan 2013

Dear current IACD students, please make a comment on this post. Once I approve this comment, you’ll be approved to comment elsewhere on the site. (Also, I’ll read your comments.) Howzit going?

Bueno

23 Jan 2013

ofxGameCamera : This is something I remembered seeing during my time working at the Studio over the summer. While not particularly mindblowing, I think it’s good to have a general set of workhorse libraries – this might be one of them. I can imagine using it in a project requiring intuitive navigation of three-dimensional space. Such as one I might make with…

ofxFern : Yes, this is nothing new, considering Golan showed us the work by Camille Scherrer, le Monde des MontaignesBut I’ve noticed that most of what is generated from these images, though placed within three-dimensional space, is decidedly two-dimensional in and of itself. I would love to use Fern tracking to create miniature spaces generated from simple pictures, navigable using the FPS camera. Each might contain a small segment of a larger story (I am still playing with this, obviously). Perhaps this is infeasible, but I feel it might be a worthwhile experiment.

ofxTwitter : I once swore to myself that I would not mess with Twitter through code, but perhaps those days have finally passed. I have an idea for a project that involves automatically reading through the tweets of a user, noting things like frequency of tweets, word usage, and so forth, and from that data generate a song – a sort of aural atmosphere that defines the user’s social activity. I might then send that song to the user in question, or perhaps instead do a Tweet-concert as a performance using such songs. I like the idea of removing words, the essential units of our social networking, from the equation.

Ersatz

23 Jan 2013

Screen Shot 2013-01-23 at 11.27.49 AM

Sifteo Cubes – Friends

Here is a small fun app I made, the idea behind is pretty simple. Every cube starts with a face in a normal mood, but once it got to make more friends (get paired with another cube), it starts to get more happier and more happier, until it gets little bit overwhelmed (4 paired cubes). Here is a list of the process of making this app:

  • I drew the faces in this great pixel art drawing app – Pixen (http://pixenapp.com)
  • Then I made a Processing app (code), for converting the bitmaps in drawing functions supported by Sifteo SDK.
  • Then I modified a little bit the “sensors” example, included in the SDK

It will be a bit more fun to play around with the real cubes, and not the simulator, but Europe shipping will be available in March. I will follow the development of this project, really closely, because the potential for creating great interactive kids games is a big one.

Demo Video:

The whole project on Github: https://github.com/kamend/IACD_Sifteo_Cubes_Friends/

Ziyun

23 Jan 2013

{ofxPd by Dan Wilcox}

The ofxPd addon could be very helpful if you’re a Pure Data user and feeling more comfortable using Pure Data with sound related manipulation or prefer PD’s sound engine. It enables us to build patches in Pure Data and then directly use them in openFrameworks.

 

{ofxMSAPhysics by Memo}


A handy addon that simulate basic physics such as springs, attractors and collision. It could be very handy if you’re dealing with animations. It’s always fun to simulate “real-worldish” things in virtual environment and interact with them in the real world..

Also, he has a great fluid addon –ofxMSAFluid and music tempo detector ofxBPMTapper.

{ofxBackground – by JGL}

An openFrameworks addon to show several different methods of using openCV for foreground/background image segmentation

If you’re doing a project that would involve real-time cam streaming and needs to capture motions, I think that’s the very addon you want to try out. By tweaking thresholds and carefully choosing background, there’re many interaction possibilities..

 

SamGruber-LookingOutwards-3

ofxAsciiArt (Teehan+Lax)

A library for transforming regular pixel images into ASCII Art. This addon was developed for the project Painting with a Digital Brush to render the ASCII art on the GPU, increasing performance. Unfortunately, the addon interface seems to render directly to onscreen graphics, which means it wouldn’t be usable for creating an actual textmode project. An extension to actually render out to a terminal is a task I would be interested in undertaking.

ofxKinectUsers (Patricio Gonzalez Vivo)

This addon performs gesture recognition using inputs from a Microsoft Kinect. I think that the extension of gestures into 3D rather than 2D is a necessary and inevitable step forward in computer interfaces and presents an intriguing challenge for the designer. Since I do not have a Kinect at present, it is unlikely that I will work with this addon, but I might revisit it given the opportunity in the future.

ofxRemoteUI (Oriol Ferrer Mesià)

Serves variables up using OSC so they can be modified by a remote application. Interesting idea because it removes the control over what happens to the data in your application from the application (ordinarily even you define specific responses to specific stimuli). This really could be used to put “control” of the application out to a large group of users very simply.

Nathan

22 Jan 2013

ofxInteractiveSurface by Patrico Gonzales: This one is absolutely awesome. I believe that the surface interaction could be a great way to get an audience into a sculpture or performance. Something that this Addon could do for me is to make a sleek, intuitive, physical UI for intervening or contributing to a live performance.

ofxTwitter by Drew Veraga: Twitter is just such a useful tool. The ofxTwitter Addon allows you to see the TwitterSphere through your account. I believe that an traversable (on screen) map of a city based on tweets and their locations would be a beautiful image and project to make. Possibly a Twitter ofx sculpture based on some kind of keyword (example-build) that turns on a driver that proceeds to drill a screw into an ongoing formalist sculpture?

ofxImageSequence by Flightphase: It is as simple as it sounds. It plays back a sequence of captured or acquired images in a movie form at a specified fps. I think this could be used in combination with the ofxInteractiveSurface above. Potentially have an audience compose a movie out of a series of assorted ‘clips’ and images.

Yvonne

22 Jan 2013

Addon 1: ofxExplodingString
http://www.ofxaddons.com/repos/1970
Simple OF addon to quickly make ofTrueType based strings explode in pieces.
Font art, word art, typography work… Fun stuff. In addition, I’m looking for a fairly “easy” ofxAddon, simply because I have never worked with openFrameworks, C++, or Code Blocks. I could do something with this and particles… or maybe just animated text that explodes randomly. Who knows… What about exploding text rain? Now that sounds fun.

Addon 2 ofxParticleSystem
http://www.ofxaddons.com/repos/148
Simple Particle system built in openFrameworks
I love particles, why? I guess it goes back to animating particles in Cinema4D for architecture school… Lots of tiny little pieces, there’s just something about them. I have been working with this addon, it compiles, with what feels like a billion errors… but it’s still compiling! What about particles that are exploding letters from a string? Hm.

Addon 3 ofxMSAPhysics
http://www.ofxaddons.com/repos/2000
C++ openFrameworks addon for particle/constraint based physics library with springs, attractors and collision. It uses a very similar api to the traer.physics library for processing to make getting into it as easy as possible. All classes are template based with typedefs for physics in 2D or 3D – Potentially even more dimensions! Demo at www.memo.tv/msaphysics
Physics libraries are fun, I keep thinking of toxiclibs in Processing… alas, I must try something new. I’m thinking it would be fun to use this addon in combination with either the particles system addon or the exploding string addon. Maybe I could have exploding letters that are repulsed by some interactivity, like a mouse click.

Dev

20 Jan 2013

openFrameworks

1. Receipt Racer

Reciept racer takes a simple “dodge obstacle” game and adds a twist. The entire game is level is printed out on a long sheet of paper. The rate at which the game progressess is limited by the speed at which it can be printed. The player controls a light (projected on the paper) which is sensed by a camera.  If the camera sees the light intersecting an obstacle, the game is over.

I think this project is awesome because the printing makes the game more physical. Also, the entire journey the player took is printed. I think this recording is very deep since people never remember the past when playing games like the one demonstrated. Its always about the present. That said if the author did want to show destruction of the past, he could make the paper drop into a fire. This might add more anxiety to our player.

The author (http://www.undef.ch/cat/projects) seems to have done a number of print related projects in the past. His passion with this medium probably inspired him the most.

2. Particles

Processing is neat, and there are a lot of cool effects you can make for the confines of your computer screen. This project was particularly neat because it showed something that I would expect on a screen in real life. Seeing a display like this physically makes the experience really magical.

The artist essentially created a large “roller coaster” for glowing orbs. These orbs can transmit positional and glow information with the technology inside of them. With this, an elaborate effect can be constructed. I kind of wish they had added speakers to the orbs though. This would open up so much more potential, something like a marching band effect.

I was not surprised to find that the creator of this was an architect. When I first saw the image of the project, I thought that it was another light up building. I think the construction of the project mirrors what one might see in modern architectural buildings.

3. Precious

A bike, outfitted with sensors to measure speed, direction location, temperature, humidity, and more can communicate with the world through a website. The goal here was to create something that was informative with a human-like touch.

Humanizing objects is always cool, but I feel like with the bike it is even more appropriate. Since the bike was to go on a journey across the US, it made the process of presenting the journey a little more fun. Something interesting the creator could do to go one step further would be to add sensors to see if the bike was damaged or on its side. This may indicate that the user is hurt, and could be used to notify 911.

Joshua

20 Jan 2013

BIORYTHM

This little application is a beautiful visualization of noise/ PPG data. PPG stands for Photoplethysmograph, which is a device that provides data about the volume of blood pulsing into tissue or an organ. The data is used to distort various vertexes of a sphere. The entire thing is smoothed and rendered beautifully apparently with some help from stuff on this site: http://machinesdontcare.wordpress.com/, which is super awesome.  In addition, the user interface allows for the manipulation of the shaders and how quickly and at what magnitude the sphere distorts.  I find this project interesting for two reasons: 1) it is a visualization of data  (or noise as a test) that is not necessarily informative in a quantitative sense, but is still interesting aesthetically, and perhaps could be useful in a more qualitative fashion. 2) its making some beautiful blobs. I don’t know anything about this method of rendering, but it looks interesting and I want to learn.

 

SHADOW PLAY

 

This is an experiment using the Projector Camera Toolkit, an add on for openFrameworks.  This library allows precise projector calibration.  Shadow play involves two projectors, precisely aligned, and displaying inverse images.  The result is a white screen that only displays something interesting in the shadow cast by blocking light from one of the projectors.  Thus an animation, image, or whatever, is sort of encased in the shadow. I can imagine kids enjoying this.  Especially if the setup detected what sort of shadow was being cast and updated the image accordingly.

All The Universe is Full of the Lives of Perfect Creatures

 

All the Universe is Full of the Lives of Perfect Creatures is a screen based piece where a 3-d model of an animal head is overlaid on the reflection of a persons face. I suspect this is done using a lcd screen and a two-way mirror.  Using faceOSC, the animal head mirrors the motion and  expression of a person.  Apparently the animal sometimes makes its own expressions.  The animals are supposed to range from the highly domesticated, like a dog, to the extremely feral, like a wolf.  I am not entirely sure what the universe being full of the lives of perfect creatures has to do with overlaying those creatures on a persons face, but I think this an interesting project because the interaction seems entertaining and well-mapped and it is an elegant way of fiddling with the idea of identity and species.  It would be awesome to do this with bizarre monsters, or animals like nematodes and naked mole rats, or even other people’s faces.