Archive for the ‘computer art’ Category

Ambient Recursion Algorithmic Art cropped version.Click the image to see the uncropped version.The original artwork is 30 by 30 inches printed at 300ppi.

What could be the first in a series of algorithmic artworks, Ambient Recursion was created using a programming technique known as recursion. Note that the image above has been cropped to fit the screen. To see the complete artwork, click on the cropped image above. A new window will open revealing the complete artwork. Note that a full size excerpt from the center of the artwork is displayed at the bottom of this post. Once you’ve viewed the uncropped image, it will be clear that while the artwork is strongly symmetrical, it is not perfectly symmetrical. I find that by avoiding perfect symmetry, the image becomes more interesting and aesthetically pleasing.

The programming language I used for this work was the Processing programming language. The most challenging part of writing this Processing program was in getting the recursion to perform as I wanted it to – especially with respect to screen boundary conditions.

Because I used a random factor to determine which sub-functions would be called, which in turn influenced the depth of recursion, I found that much of the drawing was being done off-screen – or so I guessed when viewing the program’s output. To get a handle on just where the drawing was happening, I replaced the drawing commands with print commands that dumped out the x,y coordinates and other supporting parameters for every shape being drawn.

This problem solving tactic proved to be most useful as it led me to reevaluate the entire drawing process. If I could dump the coordinates and associated parameters of every shape to a print file, why not write them to a Java arrayList and then draw using the data stored in the list. While the principal benefit of this approach was in insuring that every rectangle would appear within the canvas, it also provided me with the opportunity and ability to manipulate the relationships between the shapes. This was a true case of serendipity.

The second most challenging aspect was in coming up with a title. Given the nature of the image and the fact that I was listening to a collection of ambient music by Brian Eno while developing and writing the program used to create this artwork, the title Ambient Recursion was a natural choice.

While I have not yet added Ambient Recursion to my gallery of artworks here on Artsnova, I have made it available on Redbubble.

The process in which a function calls itself directly or indirectly is called recursion and the corresponding function is called as recursive function. Using recursive algorithm, certain problems can be solved quite easily. Examples of such problems are Towers of Hanoi (TOH), Inorder/Preorder/Postorder Tree Traversals, DFS of Graph, etc.

Orbital Decay is a work of algorithmic art I created last night and is 25 by 25 inches when printed at 300ppi (pixels per inch). To create this art I used an interactive algorithmic art program I finished writing yesterday. Traditionally algorithmic art was defined as art created by a largely deterministic, algorithmic process using parameters to control the process. Complicating the matter of categorization has been the introduction of that category of digital art known as generative art – which has substantial overlap with the algorithmic art category with respect to how the art is created from a computational perspective. In fact it has been argued that algorithmic art is a subset of generative art – even though the former precedes the later. Wikipedia has this to say on the subject:

Algorithmic art, also known as computer-generated art, is a subset of generative art (generated by an autonomous system) and is related to systems art (influenced by systems theory). Fractal art is an example of algorithmic art. Source: Wikipedia entry for algorithmic art

Why Algorithmic and not Generative?

So why have I categorized Orbital Decay as a work of interactive algorithmic art and not as a work of generative art? That’s a good question because this work does qualify as a work of generative art. However as I am the artist I get to decide what I want to call it – although I could argue that to label this art as generative would be equally appropriate.

You will note I have added the qualifier interactive to the algorithmic label. I did this because the creation of this artwork did require direct interaction from me. Unlike traditional algorithmic art programs which can be driven entirely by parameters and parametric settings (an autonomous system), this program as written could not create anything without the artist’s direct input throughout the creation process.

Orbital Decay is available as wall art and as illustration on a variety of products offered by Redbubble. Clicking either the link button or the image below will take you to the Orbital Decay Redbubble product page.

I write this as a creative coder dismayed by my own lack of foresight in keeping a record of some recent coding failures. It was only a week ago that I wrote an article about glitch art – Glitch Art or Not Glitch Art. You would think that with having just written about deliberately capitalizing on failure that I would be more attentive to my own coding failures. But alas no.

I’ve used the artwork titled Linear Moon shown above to illustrate this story. I created this art using a brand new program I had just finished writing. I knew that I’d written a similar program in the past but did not have the patience to go looking for it (yes, my hard drives are just that cluttered – even with files being organized by directory). Instead I decided that starting fresh would be the best way to go.

My early versions of this new program featured some mathematical logic mistakes with respect to what I wanted to accomplish. If I had been wiser I would have kept these mistakes for later evaluation with respect to their artistic merit. But no, I was in hot pursuit of the right program – the program that would generate a picture that matched the one in my head. It was only when my internal visualization of what I wanted to achieve matched what I saw on the screen that I ceased twiddling with my code and began experimenting with different parameter values to create Linear Moon.

Abstract From Line Segments Algorithmic Art Fail

The good and the bad about every run of the program was that the final step always wrote its results to a file so I had a visual record of every failed image. The good was in being able to go back and look over these image fails. The bad was in seeing that a number of them had artistic value and knowing that I had failed to keep a copy of the version of the program that produced that image. One example of an early failure is Abstract From Line Segments shown above and created from a painted version of The Beatles Abbey Road album cover art.

In contrast, the correct version of that same input image is shown below and accurately reflects the look I was going for. Between the two images were a number of program variations where I experimented with my program’s math and logic. These variations produced a range of visual results.

A successful interpretation of a painting of The Beatles Abbey Road album cover art

After the challenge of successfully creating the linear/line segment effect that I wanted, adding a coloring option was fairly straight forward. The only challenges associated with adding color were those of sampling and manipulation. An example of an initial color experiment is shown below using a portrait of SpaceX CEO Elon Musk.

Elon Musk Algorithmic Portrait, color version

There is one big difference between a program that works correctly and a program that leads to erroneous results: it is quite easy to recreate a program that works correctly but exceedingly difficult to recreate a specific set of errors.

My advice to all creative coders out there is this: slow down a little bit, take a look at your failures, and ask yourself “is this an error worth keeping?”

About Linear Moon Algorithmic Art

Linear Moon is the first work of art I’ve formally created using my new program. The original is 30 by 30 inches printed at 300 ppi (pixels per inch). To provide a better idea of what the image looks like at actual size, below is an excerpt that features Tycho Crater. Note that its size on your device screen will vary due to the different pixel densities of different screens.

Tycho Crater actual size detail from Linear Moon Algorithmic Art

While I have not yet added Linear Moon to my web site, I have made it available as merchandise on Redbubble

In my previous blog post, Fresh Brewed Coffee Digital Art, I made mention of the fact that I create my digital art using software of my own design and that for those digital artists interested in pursuing this aspect of digital art creation, there were some alternative tools available. In that post I mentioned Processing, openFrameworks, and Cinder. I would like to take this opportunity to say a little more about each of these three options.

Processing

Starting with Processing, this is a framework and programming language that is built on top of Java, an object-oriented programming language. Like Java, Processing is free and available on a variety of platforms. Personally I use Processing on both Windows 7 and Ubuntu Linux. Because the Processing programming language was created for artists and musicians with little or no programming background, beginners can quickly be up, running, and creating with this wonderfully flexible software tool. The flexibility of Processing as an environment for creative coding is expanded by the abundance of third party libraries that have been made available. It is also the most flexible tool in terms of the variety of platforms it works with. I have taken advantage of the ability to write Processing sketches for the web using the Javascript version of Processing (Processing.js) as well as for creating Android apps and for interacting with the Arduino (see The Arduino Starter Kit – Official Kit from Arduino with 170-page Arduino Projects Book). For those new to programming and creative coding, Processing is my number one recommendation.

Processing Resources

Following are three books on Processing that I recommend and own. There are a number of other books on Processing that are also quite good. Please be aware that Processing is now on version 3 and version 2 is still widely used but do avoid any book that was written for version 1 of Processing.

openFrameworks

Like Processing, openFrameworks is also free and available on multiple platforms. In fact I even had the opportunity to write some openFrameworks programs on a Raspberry Pi (see CanaKit Raspberry Pi 3 Ultimate Starter Kit – 32 GB Edition) that was running the Raspbian operating system. The primary difference between Processing and openFrameworks is that whereas Processing is a framework that sits on top of the Java programming language, openFrameworks sits on top of the C++ programming language. Personally I find openFrameworks to be somewhat more challenging than Processing, particularly with respect to the use of off-frame buffers in conjunction with OpenGL. And by challenging, I am speaking in terms of the number of lines of code I must write in order to achieve some objective.

If you are searching on Amazon for books about Processing and/or openFrameworks, you may come across the book Programming Interactivity: A Designer’s Guide to Processing, Arduino, and openFrameworks by Joshua Noble. My advise is do not buy this book. It is quite out of date and the source code for the examples never was made available.

Cinder

Cinder is a third creative coding platform and, like openFrameworks, relies on the C++ programming language. I have no personal experience with Cinder but I will say that when I was investigating openFrameworks vs Cinder as a creative coding toolset for the C++ environment, openFrameworks won out.

I hope you’ve found this information useful. I also hope that, even if you are not a digital artist or musician or programmer, you check one or more of these creative coding toolsets because you never know – you just might have a knack for creative coding.

Over the last several days I’ve created a number of new works of algorithmic art. One of these pieces is Tunnel Vision – shown above. After creating this particular artwork I began to wonder if the orientation I had used in its creation would actually be the orientation that other people would find to be the most aesthetically appealing. To get an idea of what that answer might be I posted the image below to several art groups and asked people to identify which of the four orientations they found to be the most aesthetically pleasing.

The Four Artwork Orientation Choices

While early voting had A as the overwhelming preference, by the time voting was effectively over, D had emerged as a close runner up. With respect to the two portrait oriented choices, I find it easy to see why D was clearly preferred to C as that’s the choice that I find more aesthetically pleasing. With respect to the two landscape oriented choices, option A was clearly preferred over option B. Again I agree.

Abstract Art Orientation Survey Results

Taking a step back, you can see in the survey results that there is almost a 50-50 split between people selecting a landscape orientation versus a portrait orientation. So the real challenge is choosing between options A and D with the core question being does this artwork work better as a portrait-oriented artwork or as a landscape-oriented artwork? Given the symmetry of this piece, I think the answer to this question is really one of personal taste.

Creating Tunnel Vision

In creating Tunnel Vision, I was working with a program that is a descendant of a very simple spirograph program I had written for a class I taught on using Processing to create digital spirographs and harmonographs. The image below is an example of the type of output that original spirograph program created.

Original spirograph program output

Over a period of time I gradually enhanced and expanded that program along several separate aesthetic lines of evolution. Tunnel Vision is the result of one of those evolutionary lines.

And My Aesthetic Vote Is…

When I created Tunnel Vision, I did so with the orientation of the canvas corresponding to option A. And it was with that landscape orientation in mind that I modified various parameters to create a work that satisfied my personal aesthetic. Fortunately for me the survey results served as a confirmation of the creative choices I had made.

Open Edition Prints

Open edition prints of Tunnel Vision are available from the following art print sites:

I spent this last weekend attending Musecon which was held at the Westin Chicago Northwest in Itasca, IL. MuseCon is a three day convention for makers, artists, musicians, and other creatives that provides a wide range of creative programming. For my part, Musecon began Friday afternoon with the class I was teaching on how to use the Processing programming language to create a digital spirograph and a digital harmonograph (for more, see Creating Digital Spirographs and Harmonographs with Processing).

The class went quite well and I was surprised by the number of students I had since my class was in the first block of programming – which was Friday at 1:30pm. I can’t complain about the scheduling of the class since I was the one who selected that time slot. Getting my programming done at the very start of the convention meant that I had a worry-free weekend to attend the other programs that interested me without having to carry around the electronic baggage needed for the class. This is the third year that I’ve had the opportunity to participate as a presenter in Musecon’s programming lineup and it was nice having completed my part within the first hours of the convention. If you want to read about what I did last year, check out Generative Art plus Instagram and Pinterest at Musecon.

I spent the rest of the weekend attending programming and chatting with folks I only see maybe once or twice a year. With respect to the programming I attended, my top three favorite programs were:

God’s Mechanics: The Religious Life of Techies

Physical Properties of Meteorites

Photography: Champagne lighting on a grape juice budget

This year the convention had as Guest of Honor Brother Guy Consolmagno. In addition to having his PhD in Planetary Science and having authored a number of excellent books, Brother Guy recently won the Carl Sagan Medal and is now President of the Vatican Observatory Foundation.

My second favorite program was also a presentation by Brother Guy. Physical Properties of Meteorites was an interesting look at the history of meteorites in terms of human understanding of how the solar system works. Brother Guy also discussed some of his own research and its relevance to the larger field of study. Once upon a time my interest in meteorites was keener than it is today – particular since I served as an officer and director of the Planetary Studies Foundation, which at the time had one of the top meteorite collections in the world. The overwhelming bulk of that collection had been received as a donation from the DuPont family. It was in those years that I once had the opportunity to be on a panel about meteorites with Brother Guy at a science fiction convention – though I no longer recall which one it was.

Lastly my third favorite program of the weekend was Photography: Champagne lighting on a grape juice budget which was led by Richard France, Ken Beach, Bruce Medic – all of whom are really excellent photographers whose work I admire. The theme of their program was about taking a DIY (do it yourself) approach to coming up with alternative lighting and equipment solutions. Think in terms of retasking old items or using as substitutes items that could be purchased from your local hardware store.

In closing, Musecon 2015 was a totally enjoyable weekend and one I look forward to repeating in 2016.