Spent today getting to know Objective C and the iPhone SDK. I’m only about 6 hours in or so and I’ve already got some really fun stuff working. After struggling for about a month to get started learning the SDK and OC, I went out and picked up a couple books on the subject. I picked up both
and
I began today with the former, the poorly titled iPhone SDK Programming, and am having a blast with it. Maher Ali starts with a great Objective C primer. It assumes comfort with the C/C++ languages and their conventions, but assumes NO Objective C knowledge, which is fantastic. I’ve already got an app up and working on my device that accepts user touch input and uses some built in easing functions and animations to move a rectangle around on the screen. Nothing too fancy yet, but it feels pretty awesome to have something I’m building be on my iPhone already.
Bottom line - buy a book to learn, use Apple’s docs only after you know what you’re doing.
I wanted to mess some more with the physics library and also explore OpenGL 3D rendering, so I came up with a sort-of block snowing effect. The mouse movement controls the viewing eye (camera), both depth and angle.
I made my first visualizer using Processing and the minim sound library coupled with the traer.physics Particle system library. The inspiration comes from the traer.physics smoke demo, which is pretty boss. Here’s the video (sorry about the really loud volume).
Song is ‘The Reward is Cheese’ by Deadmau5 and Jelo.
Its like a primitive paint application. My setup includes
Computer with modified webcam attached (more later)
Infrared LED on a AAA battery
The webcam is a Philips SPC900NC. I’d link to the manufacturer’s site on it but it seems to crash my browser each time I visit it. I followed the instructions on the NUI Group page to modify the camera so that it can see infrared light. The IR LED attached to the AAA battery shines IR light into the camera. I use some camera settings to increase the contrast and shut out all the external noise so the point created by the IR LED is very small and accurate to its position — without picking up any external light sources. Then, using v3ga’s BlobDetection library for Processing, I analyze the blob positions (blobs are created by the camera seeing the IR LED’s light) and draw a line between the previous blob position and the new blob position. I experimented with drawing curves instead of lines, but the math required made it feel too slow and unresponsive for a marginal-if-any improvement in line quality.
This video is just to show you what it looks like in action. Unfortunately, I don’t have a video of me interacting with it, so this video feels incomplete to illustrate its full functionality. I’m working on coming up with new ideas for how to use this technology appropriately and interestingly. One group (the Graffiti Research Lab) uses a similar technological approach using lasers and computer vision to create non-destructive graffiti art. A video of their approach can be found here. I really like their stuff.
For the second attempt at Processing I decided to push myself some more. With the help of my roommate Eli’s mad math and physics skillz and ideas, I got some interesting stuff working. I’m using my same 49-key MIDI keyboard to control the block releases. The modulation wheel on the keyboard (which starts in the off/lowest position) controls the effect of gravity on the blocks that are to be released. The volume slider (which starts in the off position also) controls the degree of the inversion of the colors.
This was my first attempt at using the Processing framework along with ProMidi. I used my M-Audio Keystation 49e (looks a lot like the 61es…but with fewer keys) as the controller. Each line is tied to a single key. The line height is determined by the velocity of the keystroke, with the color being random.