This article needs additional citations for verification .(March 2014) |
Creative coding is a type of computer programming in which the goal is to create something expressive instead of something functional. It is used to create live visuals and for VJing, as well as creating visual art and design, entertainment (e.g. video games), art installations, projections and projection mapping, sound art, advertising, product prototypes, and much more.
Using programming to create art is a practice that started in the 1960s. In later decades groups such as Compos 68 [1] successfully explored programming for artistic purposes, having their work exhibited in international exhibitions. From the 80s onward expert programmers joined the demoscene, and tested their skills against each other by creating "demos": highly technically competent visual creations.
Recent exhibitions and books, including Dominic Lopes' A Philosophy of Computer Art (2009) have sought to examine the integral role of coding in contemporary art beyond that of Human Computer Interface (HCI). [2] Criticising Lopes however, Juliff and Cox argue that Lopes continues to privilege interface and user at the expense of the integral condition of code in much computer art. Arguing for a more nuanced appreciation of coding, Juliff and Cox set out contemporary creative coding as the examination of code and intentionality as integral to the users understanding of the work. [3]
Currently there is a renewed interest in the question of why programming as a method of producing art hasn't flourished. Google has renewed interest in their Dev Art initiative, [4] but this in turn has elicited strong reactions from a number of creative coders who claim that coining a new term to describe their practice is counterproductive. [5]
Some contemporary artists who use creative coding in their work are Daniel Shiffman, Zachary Lieberman, Golan Levin, Ben Fry, and Giles Whitaker (artist).
Although any technology or programming language can potentially be used for creative purposes, certain libraries and frameworks have been specifically crafted to aid in the rapid prototyping and development of creative works. Software toolkits frequently used in this context include:
Name | Description | Operating system | Programming language | License |
---|---|---|---|---|
Cinder | Library for programming with aesthetic intent, including domains like graphics, audio, video, and computational geometry. | Cross-platform | C++ | 2-Clause BSD License |
Dittytoy | Platform that allows you to create generative music using a minimalistic javascript API. | Any with a web browser | JavaScript | Proprietary |
generativepy | Library for creating visual generative art, and mathematical diagrams, as images and video. | Cross-platform | Python | MIT License |
Max MSP | Visual programming language for music and multimedia. | Windows, Mac OS | Visual programming language | Proprietary |
Nannou | Library that aims to make it easy for artists to express themselves with simple, fast, reliable code. | Cross-platform | Rust | MIT License |
openFrameworks | Toolkit designed to assist the creative process by providing a simple and intuitive framework for experimentation. | Cross-platform | C++ | MIT License |
OPENRNDR | Creative coding framework designed and developed for prototyping and developing robust performant visual and interactive applications. | Cross-platform | Kotlin | 2-Clause BSD License |
p5.js | Platform that empowers artists, designers, students, and anyone to learn to code and express themselves creatively on the web. Based on the core principles of Processing. | Any with a web browser | JavaScript | LGPL |
Processing | A flexible software sketchbook and a language for learning how to code within the context of the visual arts. | Cross-platform | Java or Python | GPL, LGPL |
Pure Data | Pd enables musicians, visual artists, performers, researchers, and developers to create software graphically without writing lines of code. | Cross-platform | Visual programming language | Modified BSD |
Shoebot | A creative coding environment designed for making vector graphics and animations with Python. | Cross-platform | Python | GPLv3 |
SuperCollider | An environment and programming language for real-time audio synthesis and algorithmic composition. | Cross-platform | SuperCollider | GPLv3 |
vvvv | Hybrid visual/textual live-programming environment for easy prototyping and development. It is designed to facilitate the handling of large media environments with physical interfaces, real-time motion graphics, audio and video | Windows | Visual programming language | Proprietary |
ZIM | JavaScript Canvas Framework adding many conveniences, components and controls with an emphasis on simplifying code for learners and professionals. | Cross-platform | JavaScript | MIT License |
Creative coding occasionally involves hardware components for inputting data from the environment, producing output or for interacting with participants. Examples of commonly used hardware includes microphones, webcams or depth cameras, motion controllers, single-board microcontrollers, MIDI controllers, projectors, LED strips, printers and plotters.
In the context of an operating system, a device driver is a computer program that operates or controls a particular type of device that is attached to a computer or automaton. A driver provides a software interface to hardware devices, enabling operating systems and other computer programs to access hardware functions without needing to know precise details about the hardware being used.
A graphical user interface, or GUI, is a form of user interface that allows users to interact with electronic devices through graphical icons and visual indicators such as secondary notation. In many applications, GUIs are used instead of text-based UIs, which are based on typed command labels or text navigation. GUIs were introduced in reaction to the perceived steep learning curve of command-line interfaces (CLIs), which require commands to be typed on a computer keyboard.
Digital art refers to any artistic work or practice that uses digital technology as part of the creative or presentation process. It can also refer to computational art that uses and engages with digital media. Since the 1960s, various names have been used to describe digital art, including computer art, electronic art, multimedia art, and new media art.
Interactive art is a form of art that involves the spectator in a way that allows the art to achieve its purpose. Some interactive art installations achieve this by letting the observer walk through, over or around them; others ask the artist or the spectators to become part of the artwork in some way.
The demoscene is an international computer art subculture focused on producing demos: self-contained, sometimes extremely small, computer programs that produce audiovisual presentations. The purpose of a demo is to show off programming, visual art, and musical skills. Demos and other demoscene productions are shared, voted on and released online at festivals known as demoparties.
Generative art is post-conceptual art that has been created with the use of an autonomous system. An autonomous system in this context is generally one that is non-human and can independently determine features of an artwork that would otherwise require decisions made directly by the artist. In some cases the human creator may claim that the generative system represents their own artistic idea, and in others that the system takes on the role of the creator.
A digital audio workstation is an electronic device or application software used for recording, editing and producing audio files. DAWs come in a wide variety of configurations from a single software program on a laptop, to an integrated stand-alone unit, all the way to a highly complex configuration of numerous components controlled by a central computer. Regardless of configuration, modern DAWs have a central interface that allows the user to alter and mix multiple recordings and tracks into a final produced piece.
In computing, a visual programming language, also known as diagrammatic programming, graphical programming or block coding, is a programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually. A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation. For example, many VPLs are based on the idea of "boxes and arrows", where boxes or other screen objects are treated as entities, connected by arrows, lines or arcs which represent relations. VPLs are generally the basis of Low-code development platforms.
Processing is a free graphics library and integrated development environment (IDE) built for the electronic arts, new media art, and visual design communities with the purpose of teaching non-programmers the fundamentals of computer programming in a visual context.
Scientific visualization is an interdisciplinary branch of science concerned with the visualization of scientific phenomena. It is also considered a subset of computer graphics, a branch of computer science. The purpose of scientific visualization is to graphically illustrate scientific data to enable scientists to understand, illustrate, and glean insight from their data. Research into how people read and misread various types of visualizations is helping to determine what types and features of visualizations are most understandable and effective in conveying information.
Interactive evolutionary computation (IEC) or aesthetic selection is a general term for methods of evolutionary computation that use human evaluation. Usually human evaluation is necessary when the form of fitness function is not known or the result of optimization should fit a particular user preference.
Live coding, sometimes referred to as on-the-fly programming, just in time programming and conversational programming, makes programming an integral part of the running program.
ixi software is an open source experimental project concerned with building musical instruments where the interface is at the same time a meta-composition. The instrument becomes a pattern generator suitable for the performance of generative music. ixi runs a label as well where music is released under the Creative Commons license.
Real-time computer graphics or real-time rendering is the sub-field of computer graphics focused on producing and analyzing images in real time. The term can refer to anything from rendering an application's graphical user interface (GUI) to real-time image analysis, but is most often used in reference to interactive 3D computer graphics, typically using a graphics processing unit (GPU). One example of this concept is a video game that rapidly renders changing 3D environments to produce an illusion of motion.
VJing is a broad designation for realtime visual performance. Characteristics of VJing are the creation or manipulation of imagery in realtime through technological mediation and for an audience, in synchronization to music. VJing often takes place at events such as concerts, nightclubs, music festivals and sometimes in combination with other performative arts. This results in a live multimedia performance that can include music, actors and dancers. The term VJing became popular in its association with MTV's Video Jockey but its origins date back to the New York club scene of the 1970s. In both situations VJing is the manipulation or selection of visuals, the same way DJing is a selection and manipulation of audio.
Algorithmic art or algorithm art is art, mostly visual art, in which the design is generated by an algorithm. Algorithmic artists are sometimes called algorists.
The demo effect is a name for computer-based real-time visual effects found in demos created by the demoscene.
Internet art is a form of new media art distributed via the Internet. This form of art circumvents the traditional dominance of the physical gallery and museum system. In many cases, the viewer is drawn into some kind of interaction with the work of art. Artists working in this manner are sometimes referred to as net artists.
New media art includes artworks designed and produced by means of electronic media technologies. It comprises virtual art, computer graphics, computer animation, digital art, interactive art, sound art, Internet art, video games, robotics, 3D printing, immersive installation and cyborg art. The term defines itself by the thereby created artwork, which differentiates itself from that deriving from conventional visual arts such as architecture, painting or sculpture.
Visual computing is a generic term for all computer science disciplines dealing with the 3D modeling of graphical requirements, for which extenuates to all disciplines of the Computational Sciences. While this is directly relevant to the software visualistics of Microservices, Visual Computing also includes the specializations of the subfields that are called Computer Graphics, Image Processing, Visualization, Computer Vision, Computational Imaging, Augmented Reality, and Video Processing, upon which extenuates into Design Computation. Visual computing also includes aspects of Pattern Recognition, Human-Computer Interaction, Machine Learning, Robotics, Computer Simulation, Steganography, Security Visualization, Spatial Analysis, Computational Visualistics, and Computational Creativity. The core challenges are the acquisition, processing, analysis and rendering of visual information. Application areas include industrial quality control, medical image processing and visualization, surveying, multimedia systems, virtual heritage, special effects in movies and television, and ultimately computer games, which is central towards the visual models of User Experience Design. Conclusively, this includes the extenuations of large language models (LLM) that are in Generative Artificial Intelligence for developing research around the simulations of scientific instruments in the Computational Sciences. This is especially the case with the research simulations that are between Embodied Agents and Generative Artificial Intelligence that is designed for Visual Computation. Therefore, this field also extenuates into the diversity of scientific requirements that are addressed through the visualized technologies of interconnected research in the Computational Sciences.