After nearly 3 semesters of steep learning curves, I’ve decided to step back from the physical computing and software design in order to embrace the still image. Ironically, this lead me into new levels of PComp and programming as I created more and more elaborate mechanical control systems to assist with the evolving complexity of the software used to create the still images.
The images are essentially screen shots of a generative art piece made with Processing. The FP-13, a homemade media controller utilizing an Arduino microcontroller running 10 potentiometers, along with a medley of keyboard commands, allowed me to animate various levels of symmetry by steering the parameters of a generative algorithm.
For source material, I started with a series of still images, which were themselves screenshots taken from a recording of analog video feedback. To create the video feedback, I used several video cameras, pointed at multiple televisions and projection surfaces. I then mixed the camera signals together using multiple video mixers. Each video mixer output was then fed back into each mixer, essentially creating several interlocking, co-evolving infinite loops. From there, I dropped in pieces of video content: cutup and remixed samples of a variety of camera/mixer feedback loops combined with random footage of people, places and things that I had previously filmed and edited. At that point, I asked my friends for 10 of their favorite meaningful words (eg. balance, justice, within, allow, providence, presence, hope, foundation, boundary, actualize, etc). From that, I compiled a list of 250 words. With list in hand, I went back through the 100+ hours of recorded video feedback in search of still frames that best represented, in my eye, the abstract ideas to which the specific words made reference. With 250 still frames of video art representing the same ideas as the corresponding words, I had managed to compile a small dictionary of Pattern Language. In an attempt to then imprint this new pattern language into the collective mind of my community, I printed the images in business-card size, and on the back of each, I wrote the corresponding word. To insure some longevity, I laminated the cards before passing them out to the community. Actually, the cards weren’t “passed out” per se. The dissemination method was more of a divination process. Rather than giving a card to someone, I would have them pick from the deck.
Once selected, we would meditate on the image and discuss in detail, or not, the relevance of that particular idea in their life. The divination process, much like the video feedback system from which these images were wrought, takes full advantage of the tendency of chaotic systems to change and fluctuate wildly based on the slightest variations in initial conditions. What I mean by, “takes full advantage of,” is that, according to the ideas of divination, information that would be otherwise imperceptible as an initial condition, finds a channel, is amplified by the chaotic system, and is subsequently manifested physically as the outcome of that particular divination method. In this case, the information comes in the form of an abstract idea represented on a laminated card by a word on one side and a pattern on the other. Since I was also providing video art for clubs and parties at the time, I was constantly incorporating these images into large scale immersive video projections visible for extended periods to 100s of people at a time, including those in my immediate community. I encouraged card trading between those who had cards, and card gifting for those you hadn’t yet received a card, and all the while I continued giving them away and reprinting more. For many years this continued, and the results were extraordinarily profound for all of us involved, but that, too, is another story. Here’s a slideshow of the video feedback still image Pattern Language, which came to be known by my community as Angel Cards.
Of importance to this Printed Pattern Language Project, is that after 4 weeks of Dan Shiffman’s Introduction to Computational Media, I imported these images into a Processing sketch and began experimenting with translation, rotation, and the PImage data type . I first called 3 separate images and oriented them perpendicular to, and off set from, each other. A simple translate function moved them to the center of the screen, and an animated rotation function created the spin. For the rotation rate, I plugged in a 5 digit number: 2 numbers, a decimal, and then 3 more numbers. 10.021, I believe. What happened next was one of those OMG, awe-inspiring, life changing insights into the nature of reality that instantaneously gives rise to radical and complete paradigm shifts and truth laden epiphanies. I had stumbled upon an angular rotation velocity that gave rise to a stable 5-fold symmetry, a five pointed star. Now this may seem trivial, but not when one takes into consideration that the video feedback techniques used to originally create the source images for this experiment were themselves based on 5-fold symmetries which I had accidentally and instantaneously, inadvertently stumbled upon. It wasn’t as if I had been typing in 5 digit numbers all night. That was the very first number I tried. Something similar had happened to me with the video feedback work. At the time, I had no idea just how slight the sweet spot’s range really was. Not until I had changed the camera angels in the feedback loops did I realize how close to impossible it is to hit the sweet spot in the variables that give rise to an emergent system without a feedback system in place that allows for tuning the system into emergence. Years later, when I saw the 5-fold symmetry emerge from the randomly assigned rotation velocity, I at least was aware that I hit a sweet spot. But still, at the time, I had no idea just how narrow the range of velocities which give rise to that stable configuration. When at last I mapped my mouseX mousepad to the rotational velocity and observed the changing rates relative to symmetry, I sat there at my little table in Think Cafe, utterly astounded by the beauty and magic of this statistically improbable pattern of chance. Here’s a recording of the program in action recorded just a few days after the initial discovery. The first functionality I added was the ability to switch the images. Keeping consistent with the divination component of the process, I used the mousePress to initiate a random selection of all three images from the 247 total images. Once the mousePress is released, the call to random ends and 3 specific images are selected. My second order of business was adding some control of the images. The initial ratios of the images’ widths and lengths relative to each other were also just shots in the dark. I kept these ratios (and still use them today, a year later), but I added mouseX and mouseY as a variable.
When I opened the previous video in quicktime, I noticed that I could “perform” the piece by moving the playhead back and forth as if I were scratching a record. From there I simply setup quicktime to record the screen while I used my trackpad to jump around on the video’s timeline. Look closely and you’ll see the semi-transparent quicktime controller hovering in the corner.
From here, I continued to play around and experiment, pulling it off the back burner every once in awhile to tweak it and add functionality, like mapping the rotation rate to mouseX. By doing so, I discovered a few things, primarily that I had indeed stumbled into a very narrow functional range of angular rotation for 5-Fold symmetry. Increasing velocity increased the forward rotation rate of the 5 pointed star, as would be expected, but at a certain threshold, the 5 pointed star would evaporate and turn into a bloomin’ buzzin’ confusion. Stable symmetry fell into chaos. To my surprise however, if you continued to increase the velocity, eventually a stable pattern would begin to reemerge, but this time it was a star with 6-fold symmetry, and it wasn’t moving forward, it started by moving backwards, then it slowed, and then, with very little tolerance and with minute movements on the trackpad, the 6 pointed star came to a stand still, perfectly balanced in a stable configuration. Then with slight increases in velocity, it began to tumble forward and was finally met with the same fate as the five fold symmetry. And then it happened again: 7, 8, 9, even 10 fold symmetry. Immediately apparent was the diminishing range of requisite velocity relative to the increasing symmetry. With 10, I could just barely get it to emerge, fading in and out of chaos, it flipped flopped my awareness of it like an automated version of those dual images you see in Psych 101 of the Maiden and the Crown or the Duck and the Rabbit. I was stunned by how little difference there is between something of extremely high order and relative noise. And as guessed, slowing down would take you to 4, 3, 2, 1 with increasing windows of emergent opportunity. What I hadn’t expected is the cycle to start over. 1-10, and then 1-10 again. The cycle, it turns out happens in multiples of 2PI, which would make sense since 2PI radians equals the circumference of a circle. My mouseX cycled through the symmetries twice precisely because I had mapped mouseX between 6 – 13 (10.021 falling right where you would guess 5 to fall). I’m guessing there’s all kinds of things going on here that currently exceed my mathematical capacities to describe. Notes, harmonics, calculus, fractal geometry, etc etc etc. Well, this was about the time I went to see Shiffman. He had 2 things to say that made me smile. 1. Wow, this thing is really hypnotizing; I found myself staring at it for a long while, and 2. It took me some time to figure out how it worked. FYI, for any would be ITP students reading this, Nature of Code is the best class at ITP (in my humble opinion). Just sayin. Anyway, with Shiffman’s encouragement, I kept working on this thing. What I found is that recording the output as video in Processing proved to be impossible. The finely tuned nature of the various symmetries do not lend themselves to shared CPU power. What I added instead was the ability to take high res snap shots, which after some experimentation with up-sampling in Photoshop, lead to a stunning discovery: these images can be blown way way up and still look amazing crisp and clean. And thus begins the inexorable march towards AMS and the massive canvas prints which currently hang in front of Shiffman’s office. But before that, we had to first create a media controller worthy of project. At first, with the introduction of just 3 knobs and the hi res images, my fiance and I were overcome with the need to print these things everywhere. Let’s make iPhone cases!! Which we did, and they’re actually kinda cool. Then I sent away for an enlargement on canvas, and WOW, it was beautiful. But before I could go on, I had to take the controller to the next level. The results of what had already happened were so captivating that I decided to enlarge more images and place them in various kinds of frames and light-boxes, which, thanks to my materials and prototyping class, I was able to fabricate from scratch (except for light box made from the top of a scanner that I salvaged from the junk shelf). The Printed Pattern Language project is a series of still frame screen-shots from a generative Processing sketch presented in 4 light boxes and on 3 large canvases. Before taking that step, however, I had to create the FP-13 Media Controller.
Ah yes, the FP-13 Media Controller. 10 potentiometers connected to an Arduino Uno via a multiplexer, all encased in the semi-transparent blue plastic box I discovered at the container store nearly a year ago. At the time, I need a container for the Intelligent Curtain Controller I was designing in Physical Computing. Well, “designing” might be an overstatement. At the time, I was in the middle of nervous break down having not yet received my financial aid some 12 weeks into the semester. Yes, 12 weeks! That equals 3 months without paying rent. My Mom and sister were sending care packages of rice. I nearly dropped out. Fortunately, a few angels stepped in to prevent my withdraw from grad school. In the midst of that, I put together a simple device that retracted a miniature curtain from a miniature healing space. I had just returned from a public exhibition of Recursion Projection Therapy, and what I found is that I had to continually walk back and forth from the massage table to the curtains in order to show the setup to the public in-between sessions while maintaining privacy during a session. What I cooked up was a device that would allow me to remotely open and close the curtains. For the controller, I found this blue container. Since then, I’ve used it for a variety projects. It’s really come in handy, my own controller. What I didn’t have however, were very many knobs. MORE KNOBS! 220, 221, whatever it takes. The Pattern Language Project proved to be the perfect pie in the sky as I was persistently pushed to pile on potentiometer after potentiometer in my pursuit to surpass all previous prototypes. Plain and simple, I plateud at 10, which is two more than the single sided multiplexer could handle. I hadn’t really considered the complexity of the process, since I’d never used a multiplexer and had just a vague sense that since I was 2nd year student, everything PComp related would just naturally be alot easier than it had been previously. Colombo knocked me from the delusion when he remarked that the multiplexer setup was confusing and difficult. Fortunately, the blue box size limited me to 10 knobs, otherwise I would have spent another day at least learning how to string together multiplexers. As it was, I stuck with 8 inputs to the multiplexer and 2 extra inputs to their own analog inputs on the Arduino.
As for the name: FP-13. I finished construction of the controller just as we turned the corner and headed down the straight away towards final projects. My plan for the Winter Show was to display a variety of images from the PImage Pattern Language Processing app, but the images I would use had not yet been created. My idea was to evolve the application, the controller and the images to their maximum potential given the time constraints. As it was, the images were on their 5th generation. The 4th had been generated with additional controlls (3 potentiometers), while the 5th generation had included original Angel Cards (as opposed to the Unedited Angel cards which composed all the PatternLang images previous to the 5th generation). What I needed to do was combine the 4th and 5th generation images into a single data folder in a newly reprogrammed? resourced? refactored! newly refactored version of the PatternLang app. That newly updated version was actually rebuilt right here at Table 12 (where I currently find myself writing about writing about writing about….). That was the day I discovered, or was actually introduced to Table 12, by the amazing Saraswathi. I walked into Table 12 at 330pm on a Friday afternoon and left at 1030am the next day. Through the night, I had implemented nearly all my programming knowledge and in the process nearly doubled my skill set as I refactored the PatternLang Processing app. So, with that done, all I needed to do was to build a new controller AND create a data folder with a collection of the best images from the 4th and 5th generations along with all the orignal Angel Cards and all of the “UneditedAngels.” This actually proved to be such a difficult task, that on more than one occasion, I decided to forego the evolutionary process and settle for images that had already been created. This would ensure that I had plenty of time to create the light boxes and AMS canvas prints. I was indeed, up against the clock. But you would think that choosing images to through in to the new data folder would be a relatively easy task. It wasn’t. Especially not with nearly 3 thousand images from which to choose. Many a night was spent searching through the lists. Finally, however, I compiled something useful and set about batch processing them through Photoshop in order to reduce their size and resolution. The name changing process was also involved, but not nearly as time consuming as that animation I did back in 1999. Took me just as long to animate as it did to change the names, and I ended up having to change the names several times by hand to thousands of those damn animation frames. So, no, it wasn’t like that. We learn as we go, and this is certain.
So, as for the name: FP-13. At the time I finished the controller, my fiance Suzan and I had reason to believe that she was pregnant. We were elated by this unfolding since we had only the month before decided it was time for us to start having children. Well, with this excitement over the possibility of more mouths to feed, I realized that my preferred name for a boy was no longer Tronik, but instead was Flynn. I saw the name somewhere associated with some rule in technology: Flynn’s Rule. Currently, I really have no idea where or how that came to me. No, it was a movie; some modern movie paying homage to our beloved TRON. Anyway, yes, FLYNN. ”F” for Flynn. And then we have 13, since 13 is my fiance’s number, and we have “P” since 13, we thought, was possibly pregnant. Flynn Pregnant – 13. FP-13. And now that I’ve explained that, I am now left to come to terms with my well honed and time tested skills at procrastinating. Hell, I wouldn’t have written any of this if there wasn’t something else that I really needed to get to. Mixed Reality Therapy? No. That’s after. After what? AFTER AFTER! For now, it’s a Computational Kinematic Analyzer for use by Medical Massage Schools as a training tool for teaching healthy body mechanics to massage students. I’m flying out in 8 days to install, test, check, refine and evolve a version of this project at a medical massage school in Albuquerque, New Mexico.
Here’s a slideshow of a few hundred screenshots from the PImage PatternLanguage sketch.
And to finish things off, here’s a peak at some animation created with the newest version of the software. Keep in mind, our 7xl is not yet invented….something interesting starts happening around 1:03…hey that looks like more 5-fold symmetry…