learning the ropes

things I made at ITP and after: sketches, prototypes, and other documentation

Thursday, October 11, 2007

Physical Theater

The second half of our class on Tuesday evening was spent working on physical theater at Judson Church. This was quite possibly the highlight of my week. We enjoyed an hour and a half of movement and really worked as a group in a way I hadn’t experienced in a class before.

I wanted to capture some of the energy of that experience, so I made some sketches yesterday evening on the bus.

movements

posted by Michael at 1:26 pm  

Thursday, October 11, 2007

Sonifying Datasets: Microsoft vs. Google

After we worked on sonifying EEG data in class, I wanted to try something on my own. I liked the “spectral” and ghostly qualities of the EEG sounds, but wondered what would happen if I tried to map the sounds of two competing sets of data — specifically stock prices. What would the Microsoft vs. Google race sound like?

I found stock quotes for the two companies at http://quotes.nasdaq.com and then massaged the downloaded data into a format I could easily read into a modified version of the Processing patch we were using in class. I made the mistake of trying to graph the data sets (containing over 2000 datapoints) using a spreadsheet program. It took forever.

What follows here are some of my notes as I worked through the process.

- Multiplied all values by 100 and rounded to get rid of decimal places
- sorted in ascending date order
- I want Google and Microsoft to duel, so I will insert blanks for dates that are missing from Google’s history.
- in ultraedit, I replace all CR/LFs with spaces so the existing program can easily read the data.

- I don’t really want to use different octave ranges for the two stocks; that might seem to give primacy to one over the other; perhaps I can change the type of base sound wave… one is a square, the other is a triangle
- what is going to happen when I scale the ranges? I can either take the total range or allow each dataset to use its own range

Initial Experiments
v1: [ listen ] google remains constant at a single pitch throughout the piece. Each dataset is using its own scale. I’m not sure I like the frequency range, either. I think I would like lower frequencies. First, I’ll try to get google out of the mud by choosing a different range…

v2: [ listen ] I changed the starting time so google doesn’t stay on 8.02 (D above middle C) the entire time. I needed to move later in the dataset since I only have 38 months of Google.

v3: [ listen ] Tried removing the drone from the times before Google starts rising, but I didn’t hear much difference

v4: [ listen ] made the scaling aware of both datasets. Now microsoft drones as google rises

v5: [ listen ] going for a longer dataset — nicer; I had the idea to do short snippets of this — making the composition out of corporate battles…. msft vs google; gm vs ford

v6: [ listen ] lower frequencies — and spread apart by a fifth (.07 in octave pitch class)

v7: [ listen ] changes the frequency relationship (spread out by .04) — I don’t like it

v8: [ listen ] lower frequency + a wider frequency spread (.11). I like the low, but the interval is weird. what would an octave and the original .07 feel like? I’d like to try different harmonics

v9: [ listen ] Interesting — but too short. I can only get 10 years of data right now. It might also be interesting to use daily market data — which could contain much more raw data for a 10 year period. The other alternative is to render fewer data points per second

Using More Data from the Dataset — Including Daily Stock Trading Volumes
I thought it might be interesting to control the intensity of the sound with the daily trading volume

My dataset looks like:
[round(closing price * 100)],[volume]
656,36140900
638,27227700
641,34314300
644,18598400
633,45610400
619,38191300
628,36933400
636,18076800
659,38905600

I’ll remove the CR/LF’s again and replace them with spaces so I’ll have:

656,36140900 638,27227700 641,34314300 644,18598400 633,45610400 619,38191300 628,36933400 636,18076800 659,38905600

After struggling for a bit to deal with the multiple sets of arrays, I decided to convert the program so it uses classes. This makes the data easier to access and the code more readable.

v10: [ listen ] don’t remember what I did here…

google vs msft v11: pushed the google and microsoft data through my revised code (now using volume information). I realized that frequencies were backwards, though. I want microsoft to be the low frequency.

v12: [ listen ]

Other Potential Experiments
- microsoft – left channel; google – right channel
- use the S&P500 or another index as the base level and then render the two competing stocks somewhere else in the frequency space

posted by Michael at 12:13 am  

Wednesday, October 10, 2007

Pranks and Activism

It was my intention to take the Mad Libs / Karaoke machine I created for my interactive narrative assignment and deploy it in a public space.

The first problem with this is that it would require a bunch of equipment. Perhaps I could do a performance with it in a bar, but definitely not in Washington Square Park.

I started thinking about ways to move the program online and enable the collaborative “storytelling” gag I used in class. One of the ideas I had was a simple web site that would ask each successive visitor one of the questions. When all of the questions for the current “story’ were exhausted, I would be notified by email and could perform the song in a video recording and upload it, which would then notify all of the participants.

PHP and Me
The site would be driven by some PHP code, I thought. After breaking the problem into a number of small pieces, I spent a bit of time trying to work out the little prototypes:

  • Loading items from a text file residing in my web directory

  • Displaying a form on a webpage that could post its results to another portion of the script
  • Saving users’ answers in another text file and keeping track of the current question (later working out how to deal with multiple simultaneous users)
  • Automatically generating email when all questions were answered

How hard could PHP be, I thought? It was easy enough to find documentation about reading and writing files, and I got pieces of that working without too much trouble.

This is not how I should have begun, however. Eventually, I had the sense to recall Amit Pitaru’s strategy for moving forward on a project: figure out how hard it is going to be to do something before doing it. This, coupled with Wendy Richmond’s strategy to keep doing easy things, led me to type “madlibs php” into Google. No sense in learning how to write madlibs if it’s already been done. I’m not here to learn another programming language. I’m here to learn how to prototype things quickly. So… I dumped code onto my site and within moments I had a PHP-based madlibs game running. I hated it immediately. It lost the feeling it had when I performed the first version of the piece in class. I could no longer experience the entertainment of people shouting out goofy answers to the questions. The web was not a good setting for this performance — at least not as I was envisioning it.

Again, a personal admonishment that bears repeating over and over again: when prototyping, look first to find out how hard something is going to be — and whether there is already something that will get you close. Hack!

Back to the Drawing Board
I decided to search for other ideas for public pranks / performances. The following are images from my notebook. If you want to see captions, please click on the images.

Technology Pranks-0 Technology Pranks-1 Technology Pranks-2 Technology Pranks-3 Technology Pranks-4

I would like to play around a bit more with the LCD screen idea, since I spent some time over the summer working with character LCD screens. I’ve also started putting together my first XBee radio breadboard.

posted by Michael at 8:56 pm  

Tuesday, October 2, 2007

PeopleScrubber Prototyping

Today, when I wasn’t on the bus or in class I was building. I took the initial work I did last night and built it up into a mostly usable prototype. I designed the pulleys and sensor mounting brackets in Visio, printed them out, and glued them directly to cardboard in order to skip tedious measurements. If you want to see more details about the process, click on any of the pictures below. They all have captions.

2007 10 02 Prototyping-0 2007 10 02 Prototyping-1 2007 10 02 Prototyping-2 2007 10 02 Prototyping-3 2007 10 02 Prototyping-4 2007 10 02 Prototyping-5 2007 10 02 Prototyping-6 2007 10 02 Prototyping-7 2007 10 02 Prototyping-8 2007 10 02 Prototyping-9 2007 10 02 Prototyping-10 2007 10 02 Prototyping-11 2007 10 02 Prototyping-12

I presented a partially working prototype in class this evening. I couldn’t figure out the direction detection algorithm and didn’t have enough time to start experimenting with my MAX patch.

posted by Michael at 11:50 pm  

Monday, October 1, 2007

PeopleScrubber Prototyping

Now prototyping in earnest. I realized that older computer mice knew whether they were moving backwards or forwards. Perhaps I could use an optical encoder wheel. Time was running out, so I started working with IR LEDs and photo-detectors. I’m not sure if I have photo-diodes or photo-transistors. The parts I have are from high school — and completely unlabeled. In order to figure out the polarity of the devices, I examine the lens of the LEDs using the digital camera, which allows me to “see” infrared light.

2007 10 01 Prototyping 2007 10 01 Prototyping-0 2007 10 01 Prototyping-1 2007 10 01 Prototyping-2 2007 10 01 Prototyping-3 2007 10 01 Prototyping-4 2007 10 01 Prototyping-5 2007 10 01 Prototyping-6

posted by Michael at 10:10 pm  
« Previous Page

Powered by WordPress