This semester will be about generating images using code and algorithms. You will make use of and create your own generative systems with the means of a range of coding techniques and good ideas. To get started, a quote by Philip Galanter from his paper What is Generative Art?
Generative art refers to any art practice where the artist uses a system, such as a set of natural language rules, a computer program, a machine, or other procedural invention, which is set into motion with some degree of autonomy contributing to or resulting in a completed work of art.
P. Galanter, "What is Generative Art? Complexity theory as a context for art theory," in International Conference on Generative Art, Milan, Italy, 2003.
There will be 5 sessions this semester. Each week we will meet for 3 hours, optional and upon appointment you can book individual tutorials (up to 30 minutes) with me.
Week 1-4. Getting to know the Processing Environment. During this session you will learn a range of programming principles that will help you to create generative visual through coding.
- What is an API?
- Where to find documentation?
- How to save and organize your documents?
To successfully complete all required assignments, the following concepts must be understood and practiced. You will find an example for each item inside the sessions folder.
- Blocks, Functions, Scope
- Variables and Data Structures
- Loops
- Conditionals
- Objects
- Various drawing techniques
- Shape primitives
- Lines and Curves
- Custom shapes
- Transformations
- Pixel manipulation
- Shaders
- what is a shader?
- a simple shader example, a filter.
- Libraries
- how to extend Processing with Libraries
- controlP5
- midimapper
- VideoExport
- how to extend Processing with Libraries
Assignment A due in week 4.
Week 5-6 In this session you will familiarize yourself with different recording methods to capture the visual output of your Processing sketches.
- saveFrame, how to use Processing's saveFrame function and the MovieMaker Tool
- Syphon, how to use Syphon recorder to record Processing sketches
- ffmpeg, how to use ffmpeg with the VideoExport library to record a Processing sketch
Week 6-9. This session will explore the beauty of algorithms/
- Linear, Random and Noise
- random walk
- perlin and simplex noise
- Data Driven
- Particles and Complexity
- Glitch
Furthermore we will look into the characteristics and strategies of computation and generative aesthetics that have been widely used within the context of generative art.
Assignment B due in week 9.
Week 10-11. In this session we will look at different forms of input and how they lead to output through evaluating and translating incoming data. We will briefly look at the MIDI and OSC protocol and will look at the Duration app, a timeline editor for creative coding, which can be used to synchronize tracks with Processing generated visuals. Duration introduction
Assignment C due week 11
Week 10-15.
- work on your Assignment D project, class attendance is required.
- individual tutorials upon appointment
Assignment D due Monday of week 16
This semester you will learn about generative systems and processes, the following 4 assignments will help you exercise and practice various coding techniques covered in class.
- Assignment A Create a series of 3 sketches that resemble one work of each of the following artists: Frieder Nake, Sol Lewitt, Ryoji Ikeda. (naming convention, sketch size is 960x540, include image in data folder)
- Assignment B Use a selection of your current Processing sketches that use code to animate abstract, geometric visuals. add your own sound track that supports the visuals and create a 15 seconds long generative video. (sketch size is 960x540, sketch archiving, quicktime format and quality, 1x vimeo format, 1x instagram format)
- Assignment C Choose one Processing project from the Processing Exhibition that relates to the concept of Generative Art (see References to get to know more about Generative Art) and describe in 150 words why you like the project. Then describe in your own words (150) how the project works technically. Create a Processing sketch that visually-animated illustrates one aspect of the project you have chosen. (use markdown format and export your document as pdf, properly structure your text, include 2 project images and 1 sketch still, include references)
- Assignment D Create a 90-120 seconds music video using your own sound track and a range of coding techniques you have learned so far. Combine at least one of each of the following categories: A algorithmic, generative, interactive, geometric B camera reactive, audio reactive, shaders, C midi, live performance, projection mapping, animated-gifs D mellow, calm, suspense, frantic (sketch format is 1920x1080, sketch and process archived on github, process documentation, project description (elaborate on the techniques used, give examples), title)
All assignments accumulate to one final project. All assignments must be documented on your blog.
What you need to prepare for the following week, or just to recap what has happened the current week.
Week | Prepare for the following week |
---|---|
Week 1 | Processing tutorial, Overview of topics by Daniel Shiffman Review and read through Processing's Tutorials website Getting Started with Processing Transformations |
Week 2 | Objects A brief introduction into Object-oriented programming ArrayList, a data structure, a collections of variables |
Week 3 | Submission of Assignment A |
Week 8 | Submission of Assignment B |
Week 10 | Submission of Assignment C |
Week 15 | Submission of Assignment D |
- Generative Art
- Generative Process
- Data, Parameters
- Input, Process, Output
- Systems
- Code
- Creative Coding
- Computational
- Algorithm
- Glitch
In this class we will focus on Processing as our learning tool. Processing comes in various flavors, the most prominent and the original version is written in Java hence the java like syntax, and you can make use of existing Java libraries and code. P5js is the Javascript sister project that allows you to create Processing sketches that can run inside a browser. This project is relatively young and currently supports 2D visuals and only to a certain extend 3D graphics. The syntax is slightly different from the Java version but similar in vocabulary.
Other frameworks for creative coding include
- [What is Generative Art] 1, Philip Galanter
- [The Jacob’s Ladder of coding] 2, Karsten Schmidt
- [Closed Systems: Generative Art and Software Abstraction] 3, Marius Watz
- [Ten Questions concerning Generative Computer Art] 4
- [Vehicles] 5, Valentino Braitenberg
- Daniel Shiffman's Processing Tutorials on youtube, episodes 0-17
- The Nature of Code by Daniel Shiffman also available as video tutorials, Processing Tutorials, The Nature of Code.
- Processing Reference
- Processing Tutorials
- Processing Forum
- eyeo festival
- resonate festival
- Karsten Schmidt, The Tower of Babel. Resonate Festival 2013. link
- To keep your code organized and in one place, consider to use Github (create an account for free) to host your code repositories. Github offers a GUI desktop app that makes it very easy to create and update repositories. Please read through
- Getting your project on Github using the github Desktop application
- Github's Clone to Desktop shows you how to clone a repository to your local desktop using Github's Desktop application. This is very useful to for example keep track of the class repository which will continuously be updated as we proceed.
- Some exercises require you to write short texts, do consider to write these texts in markdown, a very simple formatting syntax for writing text inside simple text editors like TextEdit, Sublime Text, or Atom. On osx add a markdown quickview (for example qlmarkdown but there are more out there) to see your document rendered in markdown when quick-viewing it.
- Some insightful tips about being a beginner, intermediate or advanced programmer: A guide on how to be a programmer