Welcome!
Creative Coding is a loosely defined term used to describe a wide range of artistic practices that use computer code as a medium. Creative Code typically distinguishes itself from regular coding by the fact that it doesn't follow pre-defined specifications, and is aimed at expressing ideas and concepts rather than solving specific problems for a user.
Getting started in any new field can feel overwhelming. You don't know what is possible or even what terms to look up online. This page is meant to help beginners by offering some basic context and answer some commonly asked questions. It is not meant to be a comprehensive list of tools or resources, but a starting point for your creative code journey.
“Which language/tool should I learn?”
This depends a lot on what you want to do, but it also doesn't matter as much as most people think. The basic principles of programming are transferable between most languages, and you'll likely try a few different tools before settling on the one that works for you. If you're not sure how to decide and you just want to start somewhere, p5.js is a great choice. For younger artists, Scratch is a perfect way to get into coding.
“I want to learn shaders, what should I do?"
For an easy way in, try The Book of Shaders by Patricio Gonzalez Vivo and Jen Lowe. For inspiration, have a look at what people make on Shadertoy.
Keywords: HLSL, GLSL, RayMarching, Metal(iOS)
Tools: Shadertoy, openFrameworks
“How can I use music or my microphone to make things move on screen?”
One fun way to get into creative coding is to make something audio-reactive. For example bouncing a ball based on the volume of your microphone input.
Keywords: Audio-reactive visuals, Sound-visualisation, FFT
”I want to make things that people can interact with in a space”
Keywords: Interactive installations, Depth sensor
Tools: Kinect, Posenet, RGBD camera, OpenCV
”I want to create visuals with code”
Keywords: Generative art, Generative Design, Procedural generation
Tools: Hydra, MarchingJS, Processing, p5js, OpenFrameworks, Cinder
“I want to create music with code“
Keywords: audio synthesis, algorithmic composition, algorave,
Tools: Supercollider, SonicPi, TidalCycles, Tone.js
“I want to build/use a drawing machine“
Keywords: plotter, pen plotter, vinyl cutter, Vector Graphics (SVG)
Tools: AxiDraw, Cricut, Silhouette
“I want to make art using Artificial Intelligence“
Keywords: Machine Learning, NeuralNetworks, GANs, StyleTransfer, Pix2Pix
Tools: RunwayML, ml5.js
“I hate math. Don't I need to be good at math?"
“Do I really need to write code?”
Actually no, you can use visual programming too.
Keywords: Visual programming, Node based programming, Blockly
Tools: Unreal Blueprint, VVVV, Nodes.io, Cables
“How can I make creative code stuff on my smartphone?”
Tools: phonk, touchOSC, Shade, Spark AR
“How can I make creative things in Augmented Reality“
Keywords: MixedReality, WebXR,
Tools: ARjs, ThreeJS, SparkAR (instagram), FaceMesh, Bodypix, ARkit, ARCore, ARFoundation
“I want to use computer vision“
Tools: openCV, ml5.js, posenet,
"I want to build physical objects/products"
Keywords: 3D printing, Additive Manufacturing, CNC, Digital Fabrication
Tools: Rhino3D, Blender, Fusion360
- Funprogramming: https://funprogramming.org/
- Machine Learning for Artists: https://ml4a.github.io/guides/
The Coding Train https://www.youtube.com/user/shiffman
- The Nature of Code https://natureofcode.com/
- Computational Drawing - Carl Lostritto
- Generative Design: http://www.generative-gestaltung.de/
- shadertoy
- OpenProcessing https://www.openprocessing.org/
- p5.js Editor https://editor.p5js.org/
- Turtletoy: https://turtletoy.net/
- glitch.com https://glitch.com
School for Poetic Computation (SFPC): NYC based but they are offering courses online Website: https://sfpc.io/
School of Machines, Making, and Make-Believe: Berlin based Website: http://schoolofma.org/
The Node Institute: Berlin based Website: https://thenodeinstitute.org/ Kadenze
- HappyLab: an open workshop with laser cutter, 3D printer, cnc milling machine, cutting plotter and electronics.
- State Studio
- Retune Festival & Retune Studio visits
- Mapping
- Kikk
- Node
- Transmediale
- Ars Electronica
- Laval Virtual
- Sonar +D
- ...
- Niklas Roy
- Kling Klang Klong
- Waltz Binaire
- NEEEU
- RLON
- Onformative
- PCH Innovations
- So Kanno
- ...
- Creative Code Berlin
- School of Machines, Making, and Make-Believe
- Choreographic Coding Lab
- School For Poetic Computation
Scratch:
Processing: Creative Coding tool/language Based on Java (and Python). It's meant to be easy to learn for artists and designers. There is a large community and a lot of resources online. Often used in schools to teach programming to art students. Good for interactive installations, generative design, and as a Swiss-Army knife of creative code tools. Platform: Windows, macOS, and Linux. Licensing: Free and Open Source. Website: https://processing.org/
p5.js: The javascript-based younger cousin of Processing. With the online editor at https://editor.p5js.org/ there is nothing to install and you can get coding straight away. Like Processing, it has a large community and lots of learning resources online. Good for generative visuals, web-based art, and if you want to show your work online. Licensing: Free and Open Source. Website: http://p5js.org
OpenFrameworks: Open source toolkit designed for creative coding, written in C++ and built on top of OpenGL. Good if you already know C++, care about performance, or want to build more complex projects. Licensing: Free and Open Source. Website: https://openframeworks.cc
Python: a high-level, general-purpose programming language. Interesting modules / libraries: Pygame: Advertised as a library for making arcage games, but you can use it to create static and interactive pixel-based graphics. Processing.py: Python Mode for Processing p5: provides high level drawing functionality to help you quickly create simulations and interactive art. It combines the core ideas of Processing with Python readability Turtle Graphics: Originally designed for teaching coding to children, a fun library for drawing
A-Frame: easy 3D+VR [TBD]
Unity: [TBD] Licensing: Free for non-commercial or commercial use up to $100.000 revenue per year.
Supercollider: “SuperCollider is a platform for audio synthesis and algorithmic composition, used by musicians, artists, and researchers working with sound.“ Platform: Windows, macOS, and Linux. Licensing: Free and Open Source.
- FoxDot: “Live coding with Python and SuperCollider”
- TidalCycles: "live coding environment designed for musical improvisation and composition.”
TouchDesigner: a node based visual programming language for real time interactive multimedia content. Create performances, installations, and fixed media works. License: Free for personal use or learning.
OpenRNDR: [TBD]
VVVV: a 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 that can interact with many users simultaneously. License: Free for evaluation and non-commercial use
Thi.ng: “An open source collection of 20+ computational design tools for Clojure & Clojurescript. The libraries address concepts related to many displines, from animation, generative design, data analysis / validation / visualization with SVG and WebGL, interactive installations, 2d / 3d geometry, digital fabrication, voxel modeling, rendering, linked data graphs & querying, encryption, OpenCL computing etc.“ Licensing: Free and Open Source.
nannou: “An open-source creative-coding toolkit for Rust.”
- Runway ML https://runwayml.com/
- ml5.js https://ml5js.org/
TouchOSC: “A fully modular control surface that runs on all iOS and Android devices. Send and receive Open Sound Control or MIDI messages over Wi-Fi to control all compatible software and hardware.”
Vezér: “Vezér enables control and synchronisation of any MIDI, OSC or DMX enabled environments - realtime video softwares, lighting rigs, etc. - through the use of timeline based automations.“ Licensing: Free demo. Paid licence.
Chataigne:“Artist-friendly Modular Machine for Art and Technology”
Phonk: ”Self-contained Creative scripting toolbox for new and old Android devices”
Wekinator: “The Wekinator allows anyone to use machine learning to build new musical instruments, gestural game controllers, computer vision or computer listening systems, and more. The Wekinator allows users to build new interactive systems by demonstrating human actions and computer responses, instead of writing programming code.” Licensing: Free Open-Source
OSCulator: “OSCulator is the missing link between your controllers and your music or video software. For example, you can use your Nintendo Wiimote or Apple iPhone with Ableton Live or any MIDI compatible application, with ease.“
Arduino: [TBD]
Depth cameras: [TBD]
Sometimes just the one computer is not enough and you want to connect things together. Whether it's a musical instrument, a fog machine, or your smartphone, there are many ways to get your device to play nice together. Here is a selection.
OSC: Useful when you want several devices to talk to each other (for example in an installation). It is widely supported by audiovisual software and creative coding environment.
MIDI: [TBD]
WebRTC: [TBD]
Syphon: [TBD]
Spout: [TBD]
DMX: “DMX512 (Digital Multiplex) is a standard for digital communication networks that are commonly used to control stage lighting and effects.“
UDP: [TBD]
This list is created and maintained by the Creative Code Berlin team as resource for people coming to our bi-monthlymeetups. We hope it can be helpful to others as well :)
If you are looking for a more comprehensive list, check out this curated list of awesome creative coding resources.