Category Archives: ICM

ICM classwork

PComp/ICM Week 14: Speaker Matrix (Final Project) Part 1.

Below is a brief introduction to my final Physical Computing and Intro to Computation Media final project.  There will be a full post coming in the next few days with detailed process documentation. 

Part 1.

This particular project started out relatively far from where it ended.  It started with using old sex toys to create a version of Operation followed by the first iteration of the speaker matrix.  Initially, I was hoping to create an interactive textile using the speakers from old and unused headphones, mainly Apple Earpods (corded).  I loved the idea of an interaction close to the body for the wearer and one for the audience, equally close to the wearer as well.  The textile would either have the speaker facing inward to inform the wearer of  how close someone thing or someone is to their body through use of the sound vibrations.   I realized that the vibrations were to subtle to accomplish this as it stands.  The other option of having the speakers face outward offered a different, yet close, interaction for those around.  The speaker were quite low and would require the some close encounters.  After experimenting with the speakers and continuing to think about the textile, I decided to go in a completely different direction. 

Speaker Matrix MockUp

I wanted to create something that brought joy to myself and others.  Above is an approximation of what I saw in my mind.   Here we have a wall full of salvaged speakers inside a white gallery space.  Upon encountering this room, one would hear the sound of a slow and barely recognizable song.  If the guest chose to continue into the room further, the playback speed would increase so that they might start to pick up on the name of the song.  My hope is that their intrigue into what was really happening would bring them to a few feet in front of the wall, initiating the piece’s dance party!

The dance party will feature club lighting, a disco ball and maybe some fun videos.  With this piece, I wanted to bring someone out of their current state and into joy.  Who doesn’t love a fun dance party?

There is opportunity for other interesting interactions between guests, besides dancing.  If someone enters the room while another guest is in the dance party area, would the piece revert to the bright white room and slowed down some?  How would that, supposed intruder feel and act?  Would they run to the front and join them or flee to another room?  

For this iteration, I have created a small scale mock-up to test the code and experiment with the components and have provided the following video. 

For a full view of the image and to play with controlling the playback rate yourself, here is a full-screen version.  The full p5.js code can be found here.  The Arduino code can be found here

In part 2 I will go through my process, inspiration and challenges as well as provide more technical details and resources.

12/15/2020 UPDATE:
I have successfully added PoseNet detection to the final code.  Now you are able to control the playback rate of the song, trigger the dance part and move the speaker output between speakers with your body.  The code will calculate the distance between your shoulder points to tell how far you are from the screen.   The code can be found here.

Week 11: Sound Project

Brandon Roots and I have teamed up to create a sound experience for our next project.  We will be using the code from our worksheet assignment (composition below) to create the experience of being in a dark basement and finding your way through.   This piece will be played by moving through the space and blindly encountering objects.  The encounters will be through sound.  We want to have something playful and a little scary overall.

We didn’t necessarily have any particular piece in mind as inspiration but I have included a few examples that resonated with the experience we are looking to create. 

Robin Arnott’s piece Deep Sea.  Check out this interview where Robin explains more about his piece. 

 

Sonic Labyrinth by Aviva Endean

Here is another piece by Aviva Endean that doesn’t entirely relate but I thought was interesting:


Space Guitar

Final Piece

This piece originally started out with the idea of having a sound exploration/narrative that was also an instrument.  I an invasion someone walking around, running from place to place using the objects on hand to make music.  This turned into exploring what it would be like to have a piece replicating what it would be like to stumble around a dark attic.  I imagine this piece can still be used as a non traditional instrument, one where it takes patience, understanding and memory to reproduce the exact sounds. 

Memory because the sounds appear randomly on the canvas when the sketch is started.  The user will need to remember where the sound was on the sketch in order to replay it. 

Also, the walking as a sort of rhythm to the piece as well. 

Our final piece does not embed correctly, so please do try it out at this here.   Take your time and enjoy the slow, peaceful interaction of the piece. 
 

For the next iteration, I would like to update the following:

  • Have the images fade at as the individual track plays.  I did try this using a for loop within the class’s method but kept getting an error that I could not figure out.   I would use the duration() function withing the Sound library tot determine how long the fade out will be.  I would also use a pixel array ( of the image) in conjunction with the for loop to face out the logo image. 

ICM Week 9: Pixel Manipulation Project

For our pixel manipulation project, Rajshree Saraf and I decided to make a lenticular art piece.  Below is a video demonstrating how to create your own  piece by hand. 

 

Another Lenticular Example – Captured on a walk in Brooklyn by Rajshree

Rajshree shared this piece by Kerry Rodden which inspired the user interaction we will work to create.  In Rodden’s piece, the sketch finds and tracks the user’s eyes in order to create the multicolored eye drawings.   The video below is a screen capture of my interaction with Rodden’s piece. 

Kerry Rodden Eye Sketch

 We began the project by working individually on our code then coming together at the beginning of week 9 to combine our work. 

For my part, I  started by creating the following draft sketches in order to test out the code.

Draft 1: Parallel Columns Displaying 2 Different Images

Code

Draft 2: Show 1 Background Image at a Time with Tints

 Code

In the above draft, I am not getting the proper opacity for the edges of the siding images.   When the mouse is on the right side of the window, the central image is correct but the translucent layers are not what I desire.  The opacity of the two images on top of the third image are showing through.  When the mouse is on the left side of the window, there are no translucent panels to the image.  Both of theses sketches are using the function get().  Since this project is about manipulating pixels, the next step was to utilize the pixel array.   Fortunately,  that is exactly the piece Rajshree was working with in her sketches. 

We went through several drafts figuring out how to get the effect utilizing two images and one video (some drafts utilized the video capture). 


Code
Here, we added mouseX to control the opacity of the pixels.  As you moved across the canvas, you are able to see the three different pictures.   Next we worked to add the use of videoCapture() to control the mouse and change the pictures.

 Draft with poseNet added for Pixel Manipulation
Code

Lastly, here is our final piece!  Due to the use of the camera, I am not able to embed the sketch here, but please do check out the following links to view our piece. 

Final Project – Full screen
Code

Challenges:

Sizing – We had to scale down canvas to 400 by 400 pixels (vs full screen) as the sketch was not able to load when it needed to manipulate so many pixels.  Instead, we placed the sketch centered on a red background.

Centering – Ideally, the sketch would be centered both vertically and horizontally on the page.  Unfortunately, I had trouble getting that to work.  I tried both div.center() and div.position(CENTER) within the p5 sketch. 

Please do also check out Rajshree’s fantastic blog of this project. 

ICM Week 8: Pixel Project

For our pixel manipulation project, Rajshree Saraf and I decided to make a piece inspired by a hologram card where, as you move the card, another image is revealed.  I am having trouble finding a image reference of the optical illusion but will update once acquired. 

Rajshree shared this piece by Kerry Rodden which inspired the user interaction we will work to create.  In Rodden’s piece, the sketch finds and tracks the user’s eyes in order to create the multicolored eye drawings.   The video below is a screen capture of my interaction with Rodden’s piece. 

Kerry Rodden Eye Sketch

 Currently, we are working individually on our code and will come together to create the final piece.

ICM Week 6: Objects and Array…Jelly Fish Life

This week we were tasked with creating an object-oriented sketch, consisting of objects and arrays.   I was inspired by the following clip to create a jellyfish sketch where the jellies would interact with the environment and eventually an intruder. 

In order to track my progress, I made multiple drafts of the sketches so that I can present them here.

I envisioned a scene in the deep ocean where a school of jelly fish were floating around and reacting to the currents.  As the jelly fish floated downwards, their movement would be easy/gradual.  Once they hit the point where they wanted to swim up, their movement would increase.  Eventually, an intruder, possibly a shark, would enter their swarm entered causing the jellies to move away to avoid the intruders. 

 Draft 1:

Code

I began this journey by creating a jelly fish function that had all the capabilities I desired.  Once that was working, I created a class titled JellyFish which housed the the methods constructor(), show(), swim() and move(). 

I had originally wanted to have a more fluid shape for the jelly fish but, after experimenting with various combinations of functions, settled on using an ellipse and an arc.  I would like to learn how to crate different shapes outside of the ones we have available to us in the P5.js reference for 2D shapes.   Had I been able to create the shape I wanted to, I was worried as how to make those shapes interact with each other.  As noted in one of Dan Shiffman’s videos, it is possible to work with shapes other than rectangle and ellipse but it is just more complicated. 

Draft 2:

 Code

Next, I worked to create varying sizes of the jelly fish.  I do like this effect but am not totally satisfied with how the jelly fish are all oriented so that as you go closer to (0, 0) they get smaller.  I was not sure why that happens when I used push(), scale(), and pop(), to create the different sizes.  This is a nice effect and adds the dimension I would like but I am not sure why this effect happens this way. 

Draft 3:

Code

For the 3rd draft, I worked to make it appear as if the jelly fish were in a confined space.  I added the height and the width of the sketch as a boundary for where they could swim.  When the jelly gets to the edge, it reverses course and swims away.  As you can see, I also removed the scaling of their sizes. 

 
Shark:

 Code

Next, I looked at adding an intruder into the jelly fishes’ environment.   Above is the shark I created much in the same way I created the JellyFish class. 

Draft 4:

 Code

Since I wanted the scale of the jelly fish and sharks to be proportional, I shrunk the jellies.   Within this sketch the JellyFish and SharkAttack are in two different classes.  I played with getting the jelly fish to move out of the way of the shark unsuccessfully.  IN the next draft, I moved the SharkAttack into the JellyFish class, renaming it JellyFishLife. 

Draft 5 Final:

 Code

I merged the classes into one, but did create two different objects using for the jelly and the shark. 

In conclusion and questions:

In order to bring this project to where I would like it, I need to figure out the following:

  • How can I get the two classes in draft 4 to interact with each other?  I would like to also have the sharks moving along both the x and the y axis .  Maybe even chasing after the jelly fish. 
  • How can I make color change in a liner fashion in stroke.  Instead of the stroke being a strobe, I would like the color to move around the body like on actual jelly fish. 
  • Is there a millis() function, or something comparable, within JavaScript?  I would like to know how to work with objects that have various timing in their effects.  Currently, I am working with frameRate() to adjust the rate at which the effects happen.  Unfortunately, this makes all the effects happen at the same rate.
  • I need to look into scale() further in order to get the varying sizes I would like.  This will help to create depth within my sketch.