Goals

  • Eclipse
    • Setup
    • public static void main...
    • What is a PApplet anyway?
  • Max and VVVV
    • Compare to programming environments
    • All code on the inside
  • C++ Libs and Frameworks
    • Why C++?
    • Power comparison

Resources

Processing in Eclipse
Max MSP
VVVV
Cinder
OpenFrameworks
Polycode

"An artist can be truly evaluated only after he is dead. At the very 11th hour, he might do something that will eclipse everything else." ~ Van Cliburn

Eclipse - Setup

Processing in Eclipse

Setup for processing in Eclipse is covered in detail in the above link. However it might be nice to get a big picture overview.

Almost everything in Java is an object. In fact, when we've been writing sketches, processing has been running our code as an instance of the class PApplet. What that means is that all of our sketches and code can easily be used inside of Eclipse if we set up the PApplet correctly.

All sketches are instances of PApplet.

public static void main...

So what's this stuff in Java? Well, when a full Java application runs, it's running in a desktop environment.

The following method:
public static void main(String args[]) { ... }
Is the main method (entry point) for all Java applications written.

The parameter String args[] is a string array of arguments to the application (made from the command line).

Almost everything in Java is an object. In fact, when we've been writing sketches, processing has been running our code as an instance of the class PApplet. What that means is that all of our sketches and code can easily be used inside of Eclipse if we set up the PApplet correctly.

public static void main(String args[]) { ... } is the main method of all Java applications, it's the "setup" of Java applications.

What's a PApplet?

PApplet is the main class of processing. It's the portion of the processing library that takes care of things like calling setup and draw. Global sketch variables like width, height, mouseX, mouseY, ...

It should be noted that a PApplet functions differently in full Java mode (when used in Eclipse). These differences are well documented online. We've also included an example of using full Java mode in this section. Even though this example is using full Java mode from within processing, since there is no public static void main... The principles of Java access control apply in the same way in Eclipse as in this example.

Max and VVVV

Graphical programming languages (or node based frameworks) are very popular among artists and designers since they offer ease of use, extendibility, and a graphical layout environment for their objects.

At their core all of these environments are running code. Through patches, addons, or whatever they're called.

The pros to these environments are many. An easy to use interface to snap together programming objects like lego. Very clear to see an overall picture of the application and what's happening, even while it's running. Redesigns and changes are quick and painless.

There are some drawbacks to getting comfortable in these environments. Mainly, what happens to the specifics of an application. If we're snapping and layering output patches, what happens when our application ends up looking like the filtered output of lots of other applications using the same patches or combinations of patches.

In order to produce a truly unique and original experience in an application, some programming must always be done. Something new has to be created!

Thankfully these environments do offer the ability to create custom own patches, but guess what? You need to know how to program...

Cinder

Cinder is a fantastic library. Very well structured and easy to learn by following examples. The code is commented and documentation is auto generated which can be confusing to some beginners.

Cinder offers more complex graphical processes straight out of the box. Edge detection and image filtering can be done with single method calls. There are also examples of more advanced OpenGL concepts such as: FBOs, VBOs, and shaders.

The community is sparse but growing rapidly. As more coders migrate from existing frameworks, Cinder looks to be the #1 C++ framework for creative coding.

Openframeworks

The original C++ framework for creative code, Openframeworks has a huge following online. Large community means lots of help and lots of forums.

Compared with Cinder, Openframeworks initial offerings are fewer, but the addons are many.

Personally the updates to the main Openframeworks branches have been slow, the community is fragmented, and large portions of the community are moving to Cinder.

PolyCode

Brand new, small community, very few projects.

This is a full C++ framework with added IDE for scripting projects (ala processing).

Since it's new, there might not be much in terms of documentation. Coming from a processing background the scripting IDE makes sense.

Summary

Creative code is just that, code.

Anyway or at any level you decide to work with the code is up to you.

There are pros and cons to all approaches and at the end of the day you should develop a workflow that works for you. It should allow you to express yourself in code as quickly and painlessly as possible.