All posts by Dakota J Deady

Tuner

For the sound project I attempted to create a ukulele tuner (to little success). The idea was to listen to the microphone input, call on the fft functions of p5. Find the frequency of the input sound, and map a range to a note – which would tell me if the ukulele was within that range. The program should display The note being played on the screen. For some reason (which I can’t identify) the frequencies didn’t display as the notes I assigned them to. But the actual frequency would print. Ideally I would add more specific ranges to incorporate more notes.

Here’s my code

The ISS Flying through SPACE!

For the data project I wanted to find a simple API to play around with. The position of the international space station is one that is readily available (and doesn’t require a key!). I decided it would be fun to draw the ISS in p5 (well, a basic representation of it), and change its color based on the current position of the ISS. I also decided to track its position to the actual positional data of the ISS. Finally I wanted to make it look like it was flying through space (wee!), so I added loads of ellipses, made them all white, and had their positions change randomly — making it appear as if the station was flying rapidly through a star-field.

Here’s the Code

Here’s it in action

Social Weight Instagram Machine

For my final project I set out to create a machine that puts Instagram notifications in the physical world. I initially wanted to work with the Instagram API to make it so I could simply type in a username and the notification data from their most recent post would be pulled (This should have been possible given that this is public content, but apparently Facebook hates developers). When I discovered that I couldn’t access public content without greater API approval than sandbox, and was rejected from that approval process, I decided that as a proof of concept I would simply build the machine for myself.

The Idea of the final product had two elements, a physical representation of the “likes” and a textual representation of the user’s “self-worth” based on the number of likes on a photo. Every time the photo got a like, a ball would drop and a message would show on the screen. The messages began as condescending, and progressed to more pleasant and kind messages. i.e. the first message is “sad” at 15 likes the message “not everyone hates you, just most people” appears, and at 40 likes “good content” is displayed.

Of these two pieces I was only able to get the second one to work consistently. The messages, stored in an array, are displayed in the most condescending font imaginable — comic sans. I would have liked to make this code a bit more efficient, perhaps storing the number of likes in an array as well, therefore only having to type the font information once rather than for every instance of the messages (which became a bit tedious). Regardless, it worked in the way it is written.

The second piece of the project proved much more difficult, I’m still not incredibly proficient with JavaScript (and my lack of sleep didn’t help toward the end, sorry for being incompetent at times…), so making this part took a lot of work, and a bit of help. For a while I was able to print the notification info in the console, but for some reason (which I still don’t know) I couldn’t call it anywhere. I decided it was best to rewrite everything from scratch and organize it more sensibly/comment out more of my code to make it easier to find things.

The machine eventually worked for a bit at a time before failing, so going forward I’d like to do a few things to improve it.

First – I need to update the communication between the Arduino and p5 to set up a ‘checks and balances’ sort of system where p5 doesn’t send the Arduino new information until it asks for it. Currently too much info is being sent and the whole program freezes up after a few notifications.

Second – On the physical build of the machine, I’d either like to better figure out the correct angle of the delivery tube, and rate at which the servo motor opens and closes, or create a new delivery system that doesn’t rely on such finicky machines.

Third – I want to house the whole project in a nice chassis, I plan to 3D print a new chassis for the whole project to make it more aesthetically pleasing and function more smoothly.

Finally – Instead of using Instagram’s API I want to switch to YouTube, making the machine a subscription counter. YouTube’s API is much easier to work with and much less restrictive, so the whole machine would hopefully work better.

 

My Code is available here

It will currently only work with media ID’s from my own instagram @chestahab due to Instagram’s restrictions.

You can try it here (but it’ll just be the text responses since you don’t have the machine – Also it might not work unless you download it)

Here are a few Media Id’s for testing

1469227156566679526_40290595

1470499988697034800_40290595

1471185248866935939_40290595

1471956652910591666_40290595

1247180011493478957

Characteristics of Computational Media

Since humanity began using numbers to catalog data, we’ve sought to find ways to improve efficiency. As far back as 4000 B.C.E. civilizations have been building computational devices to assist in accounting, trade, and even navigation. From the earliest abacus to the newest smartphone, these tools have been used as a means to improve human lives and economic efficiency.

While computers in some form have existed for thousands of years, commmunication via computers was impossible until relatively recently. Communication in general has always been difficult, both because of distance but also because of cultural differences. Two people who haven’t shared life experience may have no common points of reference on which to base their conversation. That lack of cultural understanding leads to a communication barrier even greater than distance. One that in the past would have required incredible amounts of research and time to overcome. With the advent of computers however, both of these issues with communication are easier to overcome. Distance is a barrier that has long-since been broken. But cultural differences are still tough. Access to information about other cultures, however, has lowered barriers to cross-cultural understanding. Today it is relatively easy to learn about a culture’s history, customs, and even language, making cross-cultural communication accessible to anyone with an internet connection.

Communication isn’t always a two-way street, people have shared information about themselves as well as stories and ideas through various media forever. Modern social-media though allows those stories to be shared with a broader audience, faster than ever before. This accessibility often inspires people to share more about their lives. Whether that is better or not is a matter of subjectivity, but it certainly is easier. The ability to share this sort of information has made many people more open to expressing their spur-of-the-moment opinions and feelings on subjects, where previously those thoughts would be filtered by the very nature of the time it took to put the thoughts down, edit them, and publish them.

A side effect of the onset of computational media has been its contribution to the entertainment industry. Both in the assistance of pre-existing mediums such as film, music, and publishing, and in the creation of new forms of entertainment. The video game industry has quickly become one of the largest industries in the world, taking in tens of billions in yearly revenue. A key draw of video games is the fact that they bring a sense of control and interactivity to narrative content. Players feel rewarded when their accomplishments in the game progress the story. Some games take things even further, allowing the player to make choices, directly impacting the narrative. This level of interactivity creates immersive experiences, connecting the player to the story and characters in ways other media simply can’t do.

Computational media has unparalleled power to increase efficiency, and power, build industries, even teach. It also allows for anyone to connect to limitless information, to learn anything about anything and anyone. To share opinions and ideas beyond the scope of our own lives.

This capability has both great benefits, and great downfalls. On one hand it allows anyone to be exposed to limitless opposing viewpoints, allowing for the potential of a more well-rounded person with well-informed viewpoints. However it also exposes people to a lot of the same opinions they already had. reinforcement of pre-conceived notions can be dangerous, it makes people feel self-righteous and if those viewpoints are reinforced too often, can make people more close-minded than they would be without. Essentially, access to limitless information allows for the capacity to be more understanding of those with opposing viewpoints, but only if that power is understood and respecting, and if people remain curious and open to listening to things they don’t agree with. That’s something that hasn’t changed, but with access to more information the effect has compounded.

Potato Masher

Ahh potatoes…

boil em

mash em

stick em in a stew.

I found a potato cutout and a mashed potato cutout and wanted to use them to play with image manipulation and sound files. The basic principle I wanted to work with was that each time I clicked the potato would become less and less opaque until it was gone and replaced with a plate of mashed potatoes! Accompanying this transition would be a sound.

Here’s what I made

Github Repository

Sketch in Action

My only real issue was not being able to get the sound to stop once it started playing…

Final Progress

So far I have made a temporary landing page but am waiting for the domain registrar to give me access to the domain I purchased for this project.

I registered for use of instagram’s API’s I’m allowed in sandbox mode, but haven’t yet been approved for full access which I will need.

I plan to purchase the parts I need for assembly later today after looking through what’s available in the scrap shelves.

Flying Balls EVERYWHERE

I wasn’t exactly sure what you meant by ‘many things’ so I took a look at the stuff that had already been posted. Dominique’s inspired me to do something similar, but I  wanted the system to feel chaotic. So I randomized almost every variable including speed, size,  a direction, and color so that each click would bring a new result. I also made it so the ball generated randomly within a radius of the mouse, to add to the chaos of the whole thing.

Running

Repository

 

(Attempted) Paint Program

For this assignment, rather than creating art or a game, I wanted to make a program that would allow you to create art– a paint program. After watching several of the coding train tutorials I figured I could build off of what he’d already made with his ball generator. I removed the segments of the code that made the balls disappear after a time, and got rid of the alpha channel in the colors. I then added an array of colors, at first using RGB values, but after having trouble with those, resorting to hex codes. I called this array using a keytyped function, changing the array value based on the key pressed, hence changing the color of the draw function. Additionally I added a key at the top to explain the color picking process. I could not, however, figure out how to make it so that the object already painted would stay as they were and only the new objects would change color. It seems that the loop won’t allow for something like this, and I if I were to recreate the program I would not use a loop.

Here’s the Code

The Seinfeld Theme Song But It Keeps Varying in Speed

After fixing the issues with serial control on my computer I decided to do some research into media controls with p5. Initially I wanted to have 5 videos in a playlist and have the potentiometer cycle between them when turned, but after spending about 2 hours trying and failing I gave up on that and moved on. One of the fun things I came across in my research was the ability to control the speed of media via a slider, so I chose to adapt this to use the potentiometer as the slider. After a bit of experimentation I made it work. I then decided that I needed a better song than one of the windows default sounds, so I chose the Seinfeld theme as it’s the most beautiful ballad ever constructed (fun fact it was rerecorded for every single episode of Seinfeld to match the tone and length of Jerry’s monologue at the beginning of each episode.)

This worked out fairly well. Enjoy

Github Folder

In Action!

 

Final Project Idea

For my final project I want to make an interactive art piece that changes for each individual. I’d like to have a scale and a reservoir of ball bearings. The ball bearings are attached to the scale via a track. a servo motor would be able to open a door and allow a ball bearing out when activated. What I’d like to do is integrate various social media sites’ notification APIs (Probably either facebook or instagram) so that whenever someone gets a notification another ball bearing drops onto the scale. Anxiety over social media is something that I find to be an important issues personally and among my friends, so I want this project to reflect the weight of that anxiety.

Toilet Seat Activated Light

For this project I used the orientation sensor as my switch. I then attached the circuit to the toilet seat. When the seat goes up, the light turns off. When the seat goes down, the light turns on. The point being to remind people to put the seat down. The problem is that the light should be on when the seat is left up, as a reminder to toilet-goers to put it back down, but I don’t believe that can be accomplished without code.

Photo of circuit

In operation WITH MY FOOT!!!

Bouncing Ball

Since I missed class last week I was a bit confused on some of the possibilities regarding angle, direction, and color changes. What I could figure out was how to increase the speed exponentially, which is always fun. I increased the speed by 1.1x each time, so it’s a slow burn, but eventually very satisfying.

Here’s a link

(Attempted) Match striker

This week I attempted to use a servo motor to strike a match on its box. Unfortunately I was unsuccessful in my goal and instead resorted to simply waving the match about in the air until it caught fire over a lighter.

The circuit was fairly simple, as was the code, but for some reason my variable resistor was producing random numbers whenever it got about approximately 750 and having strange effects below 500 (I suspect it’s an issue with the potentiometer itself and I will get a new one to test). In order to compensate I simply set the total range from 501-749, which worked well, but occasionally had some jitters.

Here is a picture of the circuit setup, you can see the charred match on the side.

Here is a link to the code

And here’s a video of me attempting to make it strike and giving up.

https://goo.gl/photos/ohhGuAvxxdoK8zTk9

The issue here was that the servo motor simply wasn’t strong enough or fast enough to strike the match– especially these matches. I had a difficult time striking them myself, as the matches and the box’s striker were somewhat smooth.

Variable Strumming Pattern Ukulele Strummer

This week I wanted to do something musical as my “Dog Trick” I though about what I’d learned about analog inputs and using them with digital outputs and wanted to do something with something other than an LED. I tested out the motor and found it worked, but I couldn’t adjust the spinning speed without a transistor. I got the idea to use the motor at intervals to create strumming patterns for my ukulele that would change based on the input of the potentiometer. Using this I set up 3 states that the motor could be in, a delay of 80 millis and another of 400 millis. These provided rather different strumming patterns. I also created an option for the motor to be fully on. Using these I can play various songs with different moods based on the speed of the track.

The sketch can be found here

A video of it in action

A picture of the setup

I’ll demonstrate with a song or two in class

Toilet Seat Reminder

Since I only got my Arduino kit on Friday I needed to do a bit of catching up, so I repeated the lesson from class to make the bulb flash and change timing. I Then decided to build on the same basic code in order to make a practical application. I decided to use the piezo buzzer from my arduino kit to create an indicator of whether or not the toilet seat was up. The idea being that when the seat was up it would buzz, and when it was down it would stay silent. This way it would remind the user to always put the seat down.

To achieve this I simply modified the variables of the example code a bit, switching HIGH and LOW so that when connected it would be “off” and when disconnected it would turn “On”. I also removed the resister connecting the buzzer to the circuit, as I found it got ever so slightly louder, and the buzzer can accept a large range of voltages.

Once I uploaded the sketch to the arduino I powered it using a 9V battery so that I wouldn’t have to bring my laptop into the bathroom.

Toilet Buzzer in action!

Circuit Connected

It worked fairly well, the only problem is the wires I have aren’t very long, so I would be unable to actually open the toilet seat all the way with the current setup.