Home > Gedanken, Interaction, Programming > Creative Coding Tools, which is the best?

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.

Creative Coding Tools Overview

Creative Coding Tools Overview

Adobe Flash (text-based 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 (text-based coding)

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.

Max/MSP/Jitter (node-based coding)

This tool is a node-based  programming tool for media artist. Every node has an input and a output. The artist can connect this nodes with cables, like it was used to do in the earlier times with the audio synthesizer. The node-based approach may be a good starting point for beginners. For experienced programmer (also for me) it can be very weird to programm in this environment. But if I am honest, Max/MSP/Jitter delivers a big repertoire of audio effect nodes, video effect nodes and User Interface elements. Also working with hardware is quite well supported in this environment. Connecting MIDI devices, special sound-cards and several displays (or projectors) to Max/MSP/Jitter is not a big problem. For this reason Max/MSP/Jitter is perfect for live audio-visual performances and media installations. A further advantage is the extensibility of Max/MSP/Jitter. Advanced programmers can use the included JAVA  API or JavaScript API for creating and extending new nodes (e.g. OpenCV in Max) and user interface elements. Only for web-based projects this tool is almost useless, and even working together with other artist seems not so easy. Alternatives for the commercial based product MAX/MSP/Jitter can be PureData (mainly for audio processing), VVVV (video and visuals) and EyesWeb Framework (video and stage-based installations).

openFrameworks (text-based coding)

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 End

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!

  1. Mathias
    June 3rd, 2010 at 11:26 | #1

    I’d definitely add Expression Blend IDE (for WPF,Silverlight Apps) to the chart. Its on the same level with Flash I’d say with all the APIs and hardware support. Speakin gof hardware support, I saw some interesting sessions at the Webinale during the recent days. One was from Justin Mclean when he was playing around with Arduino and Flash/Flex. Another one was by Sascha Wolter when he controlled a Lego Mindstorm Robot with Voice with a few lines of code in Silverlight. Moreover he created a live stereoscopic webcam with two webcams and some lego stones and Silverlight saying that everything is pretty much possible in Flash too.
    I think there’s good potential in using RIA technologies for creative coding and even for interactive art and installations. Though the other tools you mentioned are way more sophisticated for creating interactive art.

  2. June 3rd, 2010 at 12:30 | #2

    Hi Mathias

    thanks for comment! You are right I should add Silverlight as an alternative to the Adobe Flash Plattform. I am going to add this! Thank you very much


    Jens Franke sent me also some very useful links for creative Coding:

    And two nice articles Linkliste and Umfrage Interactive Tools

  3. June 8th, 2010 at 10:59 | #3

    What about Aftereffects? You can incorporate all your flash and 3d graphics etc into that.

  4. admin
    June 8th, 2010 at 11:24 | #4

    @Sam Coding
    Hi Sam,

    in my opinion After Effects is not a Creative Coding Tool. It is very good for combine and pre-render animations. After effects also does not provide any interaction input for the user. It is a very good tool for static content, but not for dynamic content.

  5. enrike
    June 28th, 2010 at 14:53 | #5

    what about adding PureData?
    There is also a python library called pyProcessing which tries to mimic Processing API in Python. It is based on PyGlet which is a nice python library for multimedia. One last python thing is http://www.nodebox.net, there is a beta version now which should run on windows and linux as well.

  6. admin
    June 30th, 2010 at 15:35 | #6

    Hi enrike,

    thank you very much for your comment. I mentioned PureData as an alternative for Max/MSP/Jitter above. Also the python Tools pyProcessing and pyglet looks very interesting. Thanks! I did not know that so many python tools are available.

  7. admin
    November 28th, 2010 at 12:43 | #7

    Two further interesting software products. More and less exotic, new or however you want to call them.

    SuperCollider (programming language for real time audio synthesis and algorithmic composition)

    Isadora (node-based coding tool for creating interactive visual and aural experiences)

  8. admin
    June 3rd, 2011 at 18:30 | #8

    New project for creative coding in Ruby. Project is called Zajal is very processing like for fast start.

  9. MG
    January 24th, 2013 at 05:20 | #9

    Have to say that I would say Max/MSP/Jitter is “perfect” for rapid prototyping, especially in comparison to Flash. An experienced Max developer can throw together a system in 15 minutes that would take hours with other frameworks.

  10. admin
    February 25th, 2013 at 23:01 | #10

    Duration Timeline is a nice creative coding tool, as well. In some cases maybe a simple alternative to Max/MSP

  11. admin
    December 12th, 2013 at 23:21 | #11

    C4 is a creative-coding framework, which gives you the power of the native iOS programming. The Framework is based on Cocoa and Objective-C and is built by Travis Kirton.

  12. August 7th, 2014 at 01:49 | #12

    A new creative coding framework / library for JavaScript is published, which is strongly inspired by Processing. P5.js combines all the features of JavaScript and HTML5, therefore it is a serious technology for web-based project and a valuable alternative compared to Flash.

  13. August 11th, 2014 at 11:21 | #13

    Sometimes it makes sense to combine some of these technologies and frameworks in one application. In this case, some visual content can be streamed as textures via OpenGL/DirectX between the various applications (Flash, Processing, VVVV, OpenFrameworks, Cinder, Max/MSP, etc.). The software tools Syphon (Mac OSX) and Spout (Windows) take over the role as connector and provide a nice tool for artists, who does not want to change their tool set.

  1. No trackbacks yet.