New Media Initiatives Blog

Technology at the Walker Art Center

Part of: blogs.walkerart.org

 
by Justin Heideman at 3:27 pm 2007-08-13
Filed under:
3 Comments

A Beautiful Smiling Intern
The next After Hours Preview Party isn’t happening for another two months, but I have recently been doing some work on the Party People Photobooth. During the Picasso Preview Party, we experienced some trouble with the camera control system. Specifically, the camera, an older Canon 10D, would get into a frustrating state where it wouldn’t talk to the computer, and the only cure was to cycle the power by physically disconnecting it from a power source, cycling the power switch wouldn’t do the trick. Add in that the CF card somehow corrupted itself, that the timing of the capture was always tenuous at best, and it was clear gphoto2 as the camera connection program wasn’t working.

Enter PSRemote. Having seen the software package Photoboof, I knew there had to be a better way. Indeed, looking at the requirements for Photoboof, it is noted that if you need to buy PSRemote if you wish to use a Canon PowerShot camera. Looking at PSRemote, we see that it “also includes a DLL and a sample program (complete with C++ source code) which allows other applications to release the camera’s shutter and adjust the shutter speed and aperture”. Sounds nifty, huh? The only (big) downside of PSRemote is that it runs on Windows only. Despite the pain this would this would inflict upon me, I decided that the benefits potentially outweighed the personal suffering and inevitable reinstall/reboot sequences I would endure.

Camera and Software
The Cameron Wittig in the Walker Photography Studio happened to have a Canon G7 that we could use, and it worked beautifully with PSRemote. The sample program that PSRemote provides for CLI access to snapping photos also works great, giving a reliable delay of about 1.5 seconds from hitting enter to the flash going off. Instead of using Photoboof, I used the Max/MSP + Jitter to control the preview and PSRemote. Under Windows, Jitter needs java installed from Sun, and the vdig component for quicktime so quicktime can talk to firewire devices. For the Camera, we added the AC adapter so it wouldn’t run off batteries, the lens adapter and macro ring adapter so that the ring flash would fit on the camera. It fits great and the camera stays powered up.

Video Preview
PSRemote, in it’s GUI form, can show a live video preview of what the camera sees, pulled over USB. The CLI sample program doesn’t provide this, though it is certainly possible for a person who knows c++ and the Windows development environment. Instead, I used the video output from the G7 connected to a firewire digitizer box and then pulled the digitized video back into Max/MSP this way. Certainly it is not the most elegant solution, but it is very reliable. PSRemote does turn off all the icons on the Camera display when you enable the video out preview. The added benefit of all this was that I no longer have to align an iSight and the actual capture camera so they see the same things. Now, the capture camera is also the preview camera. Our capture station isn’t very fast (an old AMD XP1700), so I am only able to run the preview (320×240) at 5fps, but as a preview, it works great. For the countdown text, displaying text in Jitter on windows is not so good. The jit.gl.text2d produces text that is not anti-aliased and just not great looking. It does, work, however.

Talking to PSRemote from Max proved to be a little tricky at first, mostly because I had forgotten how windows is put together. The DOSHack external under Windows provides similar functionality to the shell or aka.shell externals on OSX. The trick here is that you can only call built-in commands, or call upon programs located in c:\windows\system32\ (which is why you can launch notepad with the external). The solution is to simply place the PSRemote sample program and the DLL into the system32 directory, and then it magically works. Coming from OSX/Linux land, this doesn’t really strike me as an optimal solution, but it does work.

Proof is in the Pudding
As a test of this whole setup, I set up the photobooth for a private event a little over a week ago. Despite only having a week to put this together, everything worked with only one minor glitch. PSRemote saves the captured photos in sequentially numbered files (1.jpg, 2.jpg, etc..). My scripts that transfered the files around were erasing the captured files after copying them to the display computers. When this happened PSRemote would name the next file 1.jpg, and when it got transfered, it would replaced the existing file named 1.jpg. A quick rewrite of my transfer script fixed this and then it was in business. During the event, there were almost 100 photos captured and no crashes or other glitches.

Future Plans
The G7 has different white balance and levels than the 10D does, so the post processing script needs to be adjusted. I am planning on cutting Photoshop out of the mix, and instead post-processing the images with Imagemagick, since that can be easily installed on the projection computers. I also plan on enjoying the Frida Kahlo Preview Party a lot more since I won’t have to be baby-sitting the camera the whole time. It is my hope that this will make the Party People Photobooth a much more stable platform that won’t need to be revisited for testing every time we set it up.

Demo Movie
Attached is also a revised clip of what the projection looks like. My original annoucement post featured a similar clip, but with test photos before we ever took real photos during an event. Here is a clip using some photos taken during the Picasso opening (but not with the picasso-ify filter).

 
by Justin Heideman at 1:53 pm 2007-06-15
Filed under:
8 Comments

Just a quick note, as we’re busy prepping for the sold out After Hours Preview Party tonight. As per usual, the pictures from Party People Photos will be uploaded to flickr during the event, and will show up in this set and also in the After Hours group pool. Don’t forget to join the group and add your own photos if you’re at the event and have a digital camera.

We’ve set up something special to happen with the photos (see above). I’ll share more after the event is over.

 
by Justin Heideman at 10:52 am 2007-03-05
Filed under:
1 Comment

I manned the photobooth this past weekend for our monthly Free First Saturday event. It was a hit, and the photos are just about the cutest thing ever. I made a special point to make sure the camera was positioned lower so that little kids, which are generally shorter than adults, could fit in the frame. Adults had to crouch down.

Take a look at the resulting set on flickr. Prepare to say awwww.

 
by Justin Heideman at 12:19 pm 2007-02-23
Filed under:
1 Comment

Buoyant Sultry Party People
Party People Photos was back in action at After Hours last week, and I promised more technical details of the new features. The big change this time around was automatic uploading to flickr. After each photo was taken, it was transfered, processed, uploaded and finally displayed on-screen in the lounges. I ended up re-writing all the transfer and processing scripts to work better, and they all functioned without problem.

After a photo was taken, it was saved to a folder on the capture iMac. A script started by launchd watched the folder and transfered the file via rsync to my workstation. The files were transfered to my workstation rather than directly to the display computers for two reasons.

Photoshop
Photoshop Events Manager Once the files got to my workstation, another script watched the incoming folder and sent all incoming jpg files to Photoshop. We wanted the process all the images to make sure they looked their best. Cameron, one of our photographers, developed a handy action for the photos that would give them more contrast and punch. The easiest way to automate this in photoshop is to use the script events manager to run an action on every file that is opened ( File > Scripts > Scripts Event Manager… ). The easiest way on OS X to get a particular application to open a file is to use the open command with the -a argument. The -a lets you specify the binary that you want to use to open the file. Otherwise, you’re at the mercy of whatever program has associated itself with jpeg files. Here’s the script:

#! /bin/sh

# this script takes files from the 1_incoming directory and tells photoshop to open them
# should be called by launchd which will be watching the 1_incoming folder
# photoshop should be set to perform the action on open new document

while true; do

myls=`ls /Volumes/Patience/_after_hours/1_incoming/`

	if [ "$myls" != '' ] ; then
		for myFile in /Volumes/Patience/_after_hours/1_incoming/*.JPG
		do
			/usr/bin/open -a /Applications/Adobe\ Photoshop\ CS2/Adobe\ Photoshop\
				CS2.app/Contents/MacOS/Adobe\ Photoshop\ CS2 $myFile
			sleep 2
			mv $myFile /Volumes/Patience/_after_hours/2_incame/  2>&1 > /dev/null
		done
	fi
	sleep 10
	#take care of pesky .DS_Store files, which can pop up from the Finder
	find /Volumes/Patience/_after_hours/ -name .DS_Store -exec rm -f {} \;
done

# added a return on the photoshop open line for clarity in the browser


Every 10 seconds, if there is a new file, and it is a jpeg, it will get sent to Photoshop. Photoshop runs the action, and saves the file to a new folder, again as a jpeg.

I used my workstation for this because it already had Photoshop installed, and I didn’t want to deal with licensing issues on another machine. I created another account that had photoshop set up just right and the launchd jobs start onload. When we set up PPP again for Picasso show, I’d love to be able to do post-processing via imagemagick, since it is command-line, easy to install and unencumbered by licensing issues.

Flickr Uploading
Photoshop has now saved the jpeg to a different folder. This folder is being watched by yet another script, similar to the last. This script does two things: copies the jpegs to our projection machines and uploads them to flickr. The copy process is mostly unchanged, though I used scp instead of rsync, since the I want to copy files one at a time. As with all the rsync or scp transfers, I just made sure I had my keys set up and authorized, and it worked fine.

Uploading to flickr was the trickiest part of the operation, but thankfully flickr provides a great API and there are a lot of libraries that simplify the process. I ended up using phpflickr. I am pretty familiar with php, and phpflickr only requires php4, which is the version of php-cli in OS X. In order to get it working, you have to apply for an API key, giving it write permission. Using your API key and the secret, you generate a token that you can use to upload with (you need all three to upload). Phpflickr provides the scripts necessary to provide the callback URL that flickr needs, even if you’re not uploading things directly from the web. It is somewhat confusing, and I’m not entirely sure I need the callback url, but it works all the same.

With the tokens all set, uploading the photo is as simple as upload, add to group, add to set. To get the ID of the group and the set, I just used the API explorer, which lists the groups and sets I visited. I had to create the set before I started uploading, though it is possible to create a set through the APIs. I also created a function in the upload script that used a word list to generate a title for each photo as it was uploaded to flickr. I am not a fan of seeing photos with names like IMG_4097.JPG, and this solved that and created some fun and funny juxtapositions.

Other notes, future
I enabled printing of all our photos on flickr, so you can now get prints if you want. In the US, flickr and yahoo do the printing through Target, which also happens to be a major sponsor of After Hours. Perhaps that is an opportunity for the future.

I still had some trouble with the camera not acting the way I wanted. Sometimes it would get into a state where it was totally locked, and the only way to reset it was to pull the power by removing the battery adapter; turning it off and on again wouldn’t do it. Due to the way that gphoto2 talks to the 10D, the capture command doesn’t fully finish, so I kill it after a few seconds. I think what was happening was that in some focus situations, the autofocus was taking too long and the camera hadn’t finished capturing when I kill the command. In the future, I am going to experiment with using a manual focus, which will eliminate that problem.

Gphoto2 was also recently updated to 2.3.0, and it now compiles without too much trickery on OS X. However, it hasn’t fixed my problems with capture on the Canon 10D. I might experiment with modifying the Canon class for the 10D a bit to see if I can get it to work.

We also had some problems with the flash not always firing when the camera went. Unfortunately, the flash we’re using doesn’t have an input for a power adapter, so we were running on batteries. It also doesn’t indicate low batteries, leaving us, literally, in the dark. For the Picasso After Hours, we’re planning on jerryrigging a wired power adapter to provide the 6V it requires.

I’ll also be setting up Party People Photos for the Free First Saturday on March 3rd. I think kids will get a kick out of it. We won’t add the photos to the After Hours Group Pool, but we will put them on our Flickr. Watch for it (or attend, it is free).

 
by Justin Heideman at 1:32 pm 2007-02-16
Filed under:
0 Comments

IMG_4591.jpg

If you attended the After Hours party for Heart of Darkness, odds are you might have participated in one of the 300-plus photos taken during the night. Another After Hours is happening again tonight, and PPP will be there for all the action.

This time around, the technical setup is more automated and much improved. Photos will be automatically uploaded to flickr during the party. You won’t have to wait for me to come into work the next morning, batch process them, and upload them. I’ll try to post some more technical details on the workflow next week, since it has taken a bit of debugging and might be useful for some to know.

In the meantime, you can find the photos in the Kara Walker After Hours flickr set, and also in the After Hours group pool. If you take any photos at the party with your own camera, add them to the pool!

 

Whitney's Photobooth

One of my favorite sites, Photojojo, has a roundup of a few different photobooths (they forgot us). The first is very similar to Party People Photos, in that it uses projection to display the shots immediately and has been installed in another museum.

The ability to print photos is a nice touch, since the only thing people like more than seeing themselves on the screen is getting some free personalized schwag to take with them. Of course, if someone really wanted to, they could visit our Flickr page to download and print a photo on their own. The photo’s from Mark’s setup at the Whitney also have a very nice lighting quality, much like ours, which makes all the difference in the world. Their photos are more true to form of the old style black and white photobooth, whereas ours are a more modern fashion-esque interpretation. It also looks like Mark’s setup was a more self contained, appliance-like box rather than the more ad-hoc approach we used. Perhaps we can use the instructions to make our own for the Kara Walker Preview Party. I hope to have automatic uploading to Flickr part of the installation at that point, too.

And, just to make a friendly jab at the Whitney, our installation was three days before theirs. Neener Neener. Sadly, I didn’t see any photos of Ivanka Trump at our party. In Minnesota, we’ve got Al Franken or Prince, neither of which showed up.


 
by Justin Heideman at 2:03 pm 2006-10-21
Filed under:
0 Comments

IMG_4387.jpg

I’ve uploaded everything to flickr and put it in our group. Don’t forget to join our group and add your photos to the pool once you’ve joined the group!

 
by Justin Heideman at 3:34 pm 2006-10-19
Filed under:
7 Comments

At this Friday’s After Hours event, we’ll be debuting our latest crowd pleaser. “Party People Photos” is an installation that lets people take their own photos and have them projected onto several screens during the party. Additionally, we’ll be putting all the photos up in a Flickr Pool for all to see and even add their own photos to the pool.

The idea for the project grew out of the theme of the ads for the party, “Party People”, which uses images of people from the expansion opening party back in 2005. We like the opening photos, but we want more of them and we want everyone to be able to experience the party. We did a test run of the installation on monday and it went quite good. Word got out among some of the staff and we captured quite a few photos. Funny, sassy, weird… Exactly what we’re hoping for.

Below is a screenshot of the projection movie from the test, which is what it will look like on Friday night.

After Hours Projection
Quicktime h.264, 880K

Capturing
We’re using an iMac with a built-in iSight to capture the images. The iMac is hooked up to a Canon Eos 10D via USB, which is the camera that actually takes your picture when triggered. To trigger the capture, we have a big red button connected to the computer via an i-pac. I soldered up the connection for the button and the iPaq, which marks the first time I’ve ever got to do soldering at my day job. The button took some googling to find, but it turns out the company that makes it is actually located in Roseville, MN. The flash on the camera is a ring flash, so they have a sexy, fashion photo feel.

Tying all of the inputs together is Max/MSP + Jitter. When the button is hit, it acts as if the “x” key has been hit on the keyboard, which starts the countdown. At 7 seconds, the camera capture is started. As I talked about in a previous post, we’re using gphoto2 to handle the capture. It takes a few seconds for it to happen, but goes off at right about 0. The built-in iSight on the iMac is used to give a preview image so people can compose their shot with the proper amount of sass and pizzaz (heavy on the sass, please).

Some geek porn:
max patch for after hours capture station

Once the photo is downloaded, it is dropped in a folder where launchd sees it and triggers a script that rysync’s it to the projection computers. At this point, the capture station is ready to take another photo.

Projection
The projection isn’t quite a slide show, but achieves the same goals as a slide show in that it shows a collection of images. We’re using quartz composer to do this, since it’s the hottest graphic tool on OS X and makes this kind of thing very easy and very smooth. In this patch, the images around the edges randomly pick an image from the pool of available images and display it. The center images have a simple algorithm that displays a mix of the most recently taken images, but some other random ones as well. This way, if you’ve just gotten your picture taken, you’ll be able to see it big, but you’ll also have an opportunity to see other photos.

Even more geek porn:
quartz composition patch for after hours

If all goes well, the projection will be showing on “The Rock” in the Bazinet Garden Lobby and on the shades in the Cargill lounge.

On the Web
Once the party is over, we want the fun to keep rolling, so all the photos are going up on flickr. Not only do we want an easy way to show the photos, and flickr has one of the best web-based interfaces for that, but we also want people to be able to add their own. We’ve set up a group for the After Hours parties, where we’ll be putting our photos. If you go to the event and take some photos with your phone or digicam, join our group and add it to ourAfter Hours Flickr Pool. We’ve also set up a page on the walker site that has some info about After Hours and the flickr group.

One small note: By attending the party and getting your pictures taken in the photo booth, you give us the rights to use your photo in documentation of the party and project. This is all covered on the back of your ticket for the event, so it is basically a condition for getting in the building. If you add your photos to our pool, they’re covered by whatever copyright restriction you put on them in Flickr.

So, go to the party, get your picture taken, take some photos of your own (just not in the galleries), join our flickr group, and upload your pictures. If you have any feedback, we’d love to hear it.

 
by Justin Heideman at 4:55 pm 2006-09-25
Filed under:
8 Comments

For an upcoming project, we want to capture high resolution digital still images onto a computer from a camera. This is a technique used quite often in stop motion animation. A digital still camera is a very inexpensive way to capture images that are many, many times higher resolution than the HD video they will eventually be a part of. A simple method would be to capture a large amount of images onto a camera’s storage card, download them, and them import and compose them in a compositing program such as After Effects.

However, for this project, we need the image capture to be triggered not by the button on the camera, but by the computer the camera is connected to. I initially looked at both FrameTheif and iStopMotion because they support digital still cameras and have an applescript library. However, both have spotty support for remote capture and would want to grab onto any other cameras connected to the system (such as a dv cam). Eventually, I found the gphoto project on sourceforge.

(more…)

 

Powered by WordPress