The following tools are some recommended development environments for interactive, computational and generative systems:
This list is far from exhaustive; for example, you are invited to explore Blender, Isadora, ChucK, Context Free, DrawBot, GEM, Grasshopper3D, Field, Irrlicht, NodeBox, Ogre, Pygame, RhinoScript, Scriptographer, Structure Synth, and SuperCollider, among others!
Processing is a free, open source programming language and environment for people who want to program images, animation, and interactions. It is used by students, artists, designers, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool. A visually-oriented variant of Java, Processing is free to download and available for GNU/Linux, Mac OS X, and Windows. See also: Processing @ Vimeo, Processing @ Flickr.
Openframeworks is a free C++ library designed to assist the creative process by providing a simple and intuitive framework for experimentation. The library is designed to work as a general purpose glue, and wraps together several commonly used libraries under a tidy interface: openGL for graphics, rtAudio for audio input and output, freeType for fonts, freeImage for image input and output, Quicktime for video playing and sequence grabbing. The code is written to be both cross platform (PC, Mac, Linux, iPhone) and cross compiler. The API is designed to be minimal and easy to grasp. See also: openFrameworks @ Vimeo, openFrameworks @ Flickr.
Max/MSP/Jitter is an interactive graphical programming environment for music, audio, and media. For over two decades, people have been using Max/MSP/Jitter to make their computers do things that reflect their individual ideas and dreams. Compatible with Mac and Windows, Max/MSP/Jitter provides true cross-platform authoring and a free runtime version — a common framework in which artists and researchers from varied disciplines can collaborate and cross-pollinate, building upon their respective specialties, all within the same flexible architecture. Max/MSP/Jitter is available free and/or inexpensively to students and includes three core components: (1) Max, a graphical programming environment that provides user interface, timing, communications, and MIDI support; (2) MSP, for real-time audio synthesis and digital signal processing; (3) Jitter, for video and matrix data processing.
Pd (a.k.a. Pure Data) is a free real-time graphical programming environment for audio, video, and graphical processing. Pd was created to explore ideas of how to further refine the Max paradigm with the core ideas of allowing data to be treated in a more open-ended way and opening it up to applications outside of audio and MIDI, such as graphics and video. It is easy to extend Pd by writing object classes (“externals”) or patches (“abstractions”).
VVVV is a free toolkit for real time video synthesis — and a graphical programming language which allows you to draw a program while it is running. It is designed to facilitate the handling of large media environments with physical interfaces, real-time motion graphics, audio and video that can interact with many users simultaneously. VVVV uses a “visual programming” interface, wherein user programs are created by connecting various function blocks by “wires”. In this way, VVVV provides a graphical programming language for easy prototyping and development. VVVV is real time. Whereas many other languages have distinct modes for building and running programs, VVVV only has one mode — runtime. VVVV interfaces with a wide variety of external devices and protocols, including UDP, TCP, RS232, OSC, MIDI, DMX, HTTP and plugin standards like VST and FreeFrame, and allows for advanced graphics control such as realtime programming of HLSL shaders.
Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It’s intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. Arduino can sense the environment by receiving input from a variety of sensors and can affect its surroundings by controlling lights, motors, and other actuators. The microcontroller on the board is programmed using the Arduino programming language (based on Wiring) and the Arduino development environment (based on Processing). Arduino projects can be stand-alone or they can communicate with software on running on a computer (e.g. Flash, Processing, MaxMSP). The boards can be built by hand or purchased preassembled; the software can be downloaded for free.