Randomness is all around is a class by Aarón Montoya-Moraga.
Randomness is all around was taught at School of Ma, in an online non-presential way, over 4 weeks, one three-hour class every week, between Monday January 14th 2019 and Monday February 4th 2019.
- Code of conduct
- Materials for the class
- Class videos
- Week 1: Numbers with Python
- Week 2: Audio with Pure Data
- Week 3: Image with p5.js
- Week 4: Video with VidPy
- Additional resources
Code of conduct
This class is part of School of Ma, and will be ruled by their code of conduct.
Randomness is all around us and is what drives natural events such as the weather and dice-throwing. Randomness is behind noise, and noise is present in every sensor measurement, including our audiovisual perception of the world. Randomness is what makes vinyls sound different than digital audio and film look different than digital video. Randomness is the lack of pattern and or predictability in patterns.
Computers allows us to create mathematical models of randomness and incorporate to our art practice, rendering new exciting new generative and unpredictable artworks, like it has been done in genres such as aleatoric music and automatic drawing, and by artists like Lillian Schwartz, Max Hawkins and John Cage, and featured by institutions such as the Random Institute.
We will cover math for randomness and probabilities, programming with scripts, programming audio synthesis and manipulation, computer graphics, video manipulation, and web concepts.
Applicants from diverse backgrounds, with varied skillsets and interests are welcome.
Don't feel discouraged if you know nothing about any of these topics, if you can use a computer you will be able to follow and learn in every class.
If you are an expert in any of these topics, you will learn how to incorporate other disciplines to your practice.
Each class includes explanations of theory and concepts, and practical examples with software.
Students are encouraged to ask questions and branch out from the proposed timeline for class.
All the notes and code written is included on this GitHub repository, so that students can focus on following along the coding examples and not worry about taking notes or missing out.
There are also several links for further reading and studying.
All the contents of this repository will be updated during the duration of this class.
Materials for the class
The materials needed include:
- A computer running either Linux, MacOS, or Windows. (No tablets)
- Internet connection
We will use free libre open source software, including:
- Audacity, for editing audio.
- ChucK, software for computer music.
- Command line interface, environment for executing code.
- p5.js, for interactive audiovisual web apps.
- Processing, for programming interactive audiovisual apps.
- Python3, for math.
- Pure Data, for audio and sound manipulation.
- Text editor, for writing code. I recommend Atom or Sublime Text.
- VidPy, for video manipulation.
Refer to the installation.md file to install the required free libre open source software we will use in this class.
All the material of this class is free, libre, open-source, and available on the web on a GitHub repository.
It is highly encouraged to use GitHub to share the work you do and the notes you take for this class. If you are not sure what GitHub is, here are some links:
I would love it if everyone would upload the code they write using GitHub to share it with all classmates but it is not mandatory, it is totally OK to not do it.
If you want to start using Git over GitHub, I suggest these resources:
- installation notes, instructions for installing Git and GitHub.
- GitHub for Desktop, free desktop app for GitHub.
- Learn enough, free online books about command line, text editor, and git.
Week 1: Introduction to randomness for numbers and text with Python
- Randomness and computers
- Uniform distribution
- Normal/Gaussian distribution
- Poisson distribution
- Markov chains
- Normalization of signals
- Python for math and randomness
- Randomness on the internet: random.org
- Randomness and text: Tracery for Python
Before starting the class, let's do short introductions 90 seconds timer:
- Why did you take the class?
- What are your expectations out of this class?
- Background in programming?
- Background in arts/design/music/stuff?
Week 1 assignment
Write a Python script that outputs random numbers in a creative way. Write a blog post about the way your Python script works, include your inspiration, your successes, your shortcomings, and failures. Include also your research links, and bibliography, and any doubts you have about randomness, Python, or anything we have seen so far.
Week 2: Introduction to randomness and sound with ChucK and Pure Data
- Sound art and computer music
- Human sound perception
- Pure Data environment
Week 2 assignment
Create a sound art piece that uses randomness, using either ChucK or Pure Data.
Week 3: Introduction to randomness and computer graphics
- Human color perception
- Introduction to p5.js
- Drawing basic shapes
- RGB / HSB color models
- White noise, pink noise
- Brownian noise, Perlin noise
- Interactivity with mouse and keyboard
Week 3 assignment
Create a visual art piece that uses randomness.
Week 4: Introduction to randomness and video manipulation
- Human vision temporal sensitivity
- Introduction to VidPy
- Video format conversion
- Frame rate manipulation
- Stitching videos programmatically
Week 4 assignment
Create a video art piece that uses randomness.
- Automating video, by Sam Lavigne
- Detourning the web, by Sam Lavigne
- FLOSS Manuals: Pure Data
- Learn enough command line to be dangerous
- Python for beginners
- p5js reference
- p5.js tutorials
- p5.js editor
- Reading and writing electronic text, by Allison Parrish
- Tracery tutorial, by Allison Parrish