Creative Coding Tools, which is the best?
Now I am almost studying Interactive Art for one year. Me, as a Flash and Flex Developer, like coding with audio-visual and interaction-based content. But if I am honest, in the last time I did not use Flash in my projects at all. I had to deal with some other powerful creative coding tools. Some of these tools provide me, as an artist, much more freedom than the Flash plattform can ever provide. For example, creating a visual output for multi-displays applications, programming on hardware (arduino), some real-time video tracking (face detection) experiments, using special Open-GL Renderer for 3D graphics and so on. But I also ran into problems, which I would never have with using Flash. Especially, when I worked together with unexperienced programmer. For this reason, I will describe some of these creative coding tools with their inherent advantages and disadvantages. After this article you should have a good overview about the available tools in creative coding.
Adobe delivers a very good IDE for creative coding. Many people complain about the IDE, but it is the best tool to start coding for media designer, artist etc. You have the whole familiar layer infrastructure from Photoshop, and you can easily import your Photoshop, Illustrator graphics. After importing the graphics and the artist can start coding directly on the graphics. To see the graphics visually and arrange them on the stage, and then coding seamlessly with them (connected via symbolname = variable name) minimizes the obstactles for newbies so much. The same is valid for working with interactive video and audio. I know the Flash IDE is not cheap, but it is definitely the money worth for getting a perfect start. After reaching the intermediate level, you can switch to Flash Builder Coding Editor. This editor is quite advanced and it is free for students and teacher.
In a summary Flash is perfect for starting creative coding. For heavy graphic and media (video + audio files) projects it is perfect and delivers a unique workflow. Flash is also a very good solution for web-based project and the community is very big and active. So you can be sure to find a whole set of additional libraries and help. Because of the simplicity the Flash Plattform has got two disadvantages. The lack of perfomance compared to other technologies (C++, Java, Python) can be a problem for complex visual renderings and algorithms. The second disadvantage is the less freedom for physical computing based projects. An Alternative for Flash is Microsoft Silverlight
Processing is a specific Java based framework for creative coding. Ben Fry and Casey Reas simplified the programming language Java, so it is easier for media artist diving into creative coding. In my opinion, it is not a good solution for starting creative coding with this tool, even it is for free! In my class and at my old university I often saw the same misunderstanding in the beginners eyes when they started with processing... This whole text-based coding without any reference to the graphics is still too abstract for beginners. That lead for unhappy artist. Then maybe they started hating programming... That is not cool... Maybe the new IDE project Kaleido can solve this.
The syntax of Processing is quite similar to ActionScript. So it is not so difficult for Flash Coder to switch to Processing and vice versa. Processing is able to use Open-GL. In this case it makes much more sense to use this tool for 3D Project than Flash. Even you can connect Java Libraries with your Processing projects. That enables completely new application possibilities. Speech recognition, video tracking, working with Bluetooth Networks are only a few examples. Also collaborative coding via SVN is quite easy in Processing and the active community is the best evidence for this.
With openFrameworks we enter the big world of C and C++. C and C++ is quite old and for this reason the language has got some ugly inherent characteristics. For advanced programmer the concept of pointers is quite easy to understand. In contrast intermediate programmers will get surely fucked up with the header file concept. Beginners are going to get lost in this big world... That sounds terrible, but it is not so worse. C and C++ provides the biggest freedom an artist can ever get. For getting this freedom the artist has to put some effort into it.
Afterwards the artist can code directly on hardware (e.g. Arduino). Also high-end performance optimizing of your application is possible here. Especially for heavy 3D -based projects you are supposed to use this platform. The team around openFrameworks created successfully an easy to use C++ Library for audio-visual coding. Their tutorial page gives an easy start and their classes makes it quite easy working with audio,video and drawing operations in C++. The openFramework approach is very similar to the Processing project in Java World. It exist an active community, who extend the openFramework toolkit successively. A disadvantage of openFrameworks could be the slow development process. If no suitable add-on is available for your project (for instance: network-based multi-user interaction) it can get very fast complex and time-consuming to solve this technical issue. An alternative for openFramework could be Cinder.
The table above reveals that there is no real winner available. All the tools do a great job in their special domain. So Flash and Processing are very good tools for web-based projects, openFrameworks and Max/MSP/Jitter are better for media installations and complex animations. Beginners should check which tool is really easy to learn. An easy start and enjoying coding is very important in the beginning! Advanced Programmer and artist should distinguish between perfomance-based/hardware-based or graphic-based/media-file-based/web-based projects. For perfomance-based/hardware-based projects openFrameworks, Max/MSP/Jitter and maybe Processing is the best solution. For web-based and media-file/graphic-based projects Flash delivers a very good solution. In some cases (e.g. big Information Design projects) Processing is more suitable... So Happy Coding and visit CreativeApplications.Net to see what is possible!