Creative coding

Last updated
A heavily modified version of the classic 1980s video game Breakout produces visually interesting glitches. Creative coding breakout modification.png
A heavily modified version of the classic 1980s video game Breakout produces visually interesting glitches.

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.

Contents

History

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 why programming as a method of producing art hasn't flourished. Google has renewed interest with 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]

Artists using creative coding

Some contemporary artists who use creative coding in their work are Daniel Shiffman, Zachary Lieberman, Golan Levin, Ben Fry, and Giles Whitaker (artist).

List of creative coding software

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:

NameDescriptionOperating systemProgramming languageLicense
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
generativepyLibrary 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
ShoebotA 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

Hardware use

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.

See also

Related Research Articles

<span class="mw-page-title-main">Device driver</span> Computer program that operates or controls a device that is attached to a computer

In computing, 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.

<span class="mw-page-title-main">Graphical user interface</span> User interface allowing interaction through graphical icons and visual indicators

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.

<span class="mw-page-title-main">Amiga demos</span>

Amiga demos are demos created for the Amiga home computer.

<span class="mw-page-title-main">Digital art</span> Collective term for art that is generated digitally with a computer

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.

<span class="mw-page-title-main">Interactive art</span> Creative works that rely on viewer input and feedback to provoke emotional responses

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.

<span class="mw-page-title-main">Demoscene</span> Computer art subculture

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 at festivals known as demoparties, voted on by those who attend and released online.

<span class="mw-page-title-main">Generative art</span> Art created by a set of rules, often using computers

Generative art refers to art that in whole or in part 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.

<span class="mw-page-title-main">Visual programming language</span> Programming language written graphically by a user

In computing, a visual programming language 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.

<span class="mw-page-title-main">Processing</span> Free graphics library

Processing is a free graphical 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.

<span class="mw-page-title-main">Scientific visualization</span> Interdisciplinary branch of science concerned with presenting scientific data visually

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.

<span class="mw-page-title-main">Live coding</span> Integration of programming as part of running program

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.

<span class="mw-page-title-main">Ixi software</span>

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.

<span class="mw-page-title-main">Real-time computer graphics</span> Sub-field of computer graphics

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.

<span class="mw-page-title-main">VJing</span> Broad designation for realtime visual performance

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.

<span class="mw-page-title-main">Algorithmic art</span> Art genre

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.

<span class="mw-page-title-main">Demo effect</span>

The demo effect is a name for computer-based real-time visual effects found in demos created by the demoscene.

<span class="mw-page-title-main">Computational creativity</span> Multidisciplinary endeavour

Computational creativity is a multidisciplinary endeavour that is located at the intersection of the fields of artificial intelligence, cognitive psychology, philosophy, and the arts.

<span class="mw-page-title-main">Internet art</span> Form of art distributed on the Internet

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.

<span class="mw-page-title-main">New media art</span> Artworks designed and produced by means of electronic media technologies

New media art includes artworks designed and produced by means of electronic media technologies, comprising virtual art, computer graphics, computer animation, digital art, interactive art, sound art, Internet art, video games, robotics, 3D printing, and cyborg art. The term defines itself by the thereby created artwork, which differentiates itself from that deriving from conventional visual arts. New Media art has origins in the worlds of science, art, and performance. Some common themes found in new media art include databases, political and social activism, Afrofuturism, feminism, and identity, a ubiquitous theme found throughout is the incorporation of new technology into the work. The emphasis on medium is a defining feature of much contemporary art and many art schools and major universities now offer majors in "New Genres" or "New Media" and a growing number of graduate programs have emerged internationally. New media art may involve degrees of interaction between artwork and observer or between the artist and the public, as is the case in performance art. Yet, as several theorists and curators have noted, such forms of interaction, social exchange, participation, and transformation do not distinguish new media art but rather serve as a common ground that has parallels in other strands of contemporary art practice. Such insights emphasize the forms of cultural practice that arise concurrently with emerging technological platforms, and question the focus on technological media per se. New Media art involves complex curation and preservation practices that make collecting, installing, and exhibiting the works harder than most other mediums. Many cultural centers and museums have been established to cater to the advanced needs of new media art.

References

  1. "Compos 68 - Monoskop". monoskop.org. Retrieved 2020-06-10.
  2. Lopes, Dominic (2009). A Philosophy of Computer Art. London: Routledge. ISBN   0415547628.
  3. Toby Juliff, Travis Cox (April 2015). "The Post-display condition of contemporary computer art". eMaj. 8. Archived from the original on 29 June 2016. Retrieved 31 May 2016.
  4. "DevArt Website" . Retrieved 29 September 2016.
  5. "Hack The Art World". www.hacktheartworld.com. Retrieved 16 July 2014.