A friend of mine asked if I could put together a piece of software that would allow him to have a video playlist and live video in the same screen, for use in a performance art piece. I said sure and started to dust off whatever little knowledge I had of Processing.
As usual, once I got over the usual hurdles (ex. the GSVideo library won’t accept DV capture over Firewire, so I had to use the flaky video library bundled with Processing for that, but then GSVideo 1.0 — much, much better for the video playlist part — would crash when used together with it so I had to settle for a prerelease version of GSVideo… and etecetera) I finally proceeded to pimp the code and throw everything I could think of at it: a dialog to choose the folder where the videos are and a routine to check for valid video file extensions, the ability to swap the video/live feed sides, the ability to switch between multiple cameras (ex. webcam, firewire camera, screen capture driver, etc.), the ability to correct the cameras’ aspect ratio, a fullscreen mode, the ability to reposition the images on the screen, a cool ‘swooshy’ effect for the live feed, the ability to pause or advance the playlist at random.
I’ve been using GitHub for version control, finally getting the hang of it thanks to their friendly Windows client (sorry if this makes me uncool — I had previous struggles with Git which made me wait for this sort of desktop client). I think it’s incredibly cool there’s this record of the changes I made to my code as I went along. Here’s my repository of Processing sketches.
P.S.: If you’re looking at the code in picture and wondering, I know perfectly well Java/Processing variables don’t need to start with a dollar sign ($). I just use that as a notation for global variables.