/*
Project:
Intro to programming with P5js
*/

Week 1: Sept. 13 - 17

In-class:

P5js environment. Making a shape move inside the window. Code topics: Variables, operations, conditionals, comparison, functions. Concepts: movement, vectors, coordinate matrix, color space, color interpolation

In-class code example

Zoom recording

Homework:

Create a sketch that expresses non-linear movement on the screen. Look through the documentation to figure out how to add images and sounds that would support the movement.
Documentation: In the process of your work list the problems you encounter and the solutions you find. After you're done, pick out one of the problems - the most interesting one - and write 2 paragraphs about it and how it was solved. Capture a video of your animation. Post your sketch on openProcessing.

Week 2: Sept. 20 - 24

In-class:

Repetition, pattern and rhythm. Timing and oscillation. Code topics: arrays, loops, graphics matricies, keyboard and mouse events. Concepts: transformation and rotation, direct/indirect interaction

Zoom recording

In-class example 1 In-class example 2

Homework:

Use randomness and/or Perlin noise to create organic shapes. Add controls for the user to interact and modify them.
Documentation: in the process of your work capture the images of the iterations - at least 6 in total. Write a sentence or two for each image explaining the evolution of work. Post your sketch to openProcessing.


/*
Project 2:
Representing natural systems in code
*/

Create a sketch that would simulate an existing natural system - look at physics, biology, and other natural sciences for good examples. Start with the environment - where is the system situated? What are the forces the environment might exert on the system? Examine the agents in the system, their relationships to each other and the environment they are in. The look at how this system would develop over time. What are the rules that you are going to come up with, what are the parameters you are going to feed into them and what effect will the changes have on the development of the system.

Documentation: create two diagrams: explaining the components of the system and their relationships, and the rules (algorhythms) and how they unford over time. Write about the approximation - which aspects of the natural system that you simulated did you decide NOT to represent and why? Post your work on openProcessing.

Week 3: Sept. 27 - Oct. 1

In-class:

Object-oriented programming, data exchange, rulesets. Diagramming tools.

Zoom recording

Diagramming examples, Code example

Homework:

Select the system to model. Create the diagrams describing your system. Build out the environment with the basic relationships and behviours (graphics can be symbolic.)

Week 4: Oct. 4 - 8

In-class:

Workshop: finish and present your simulation.

Homework:

Compile and submit the documentation.


/*
Project 3:
Anything is an interface
*/

Create an interactive system (a game, a story, a performance, etc) that relies on the recognition and tracking of the real-world objects by a machine learning system (ML5js). Explore the possibilities of the technology: what it can and cannot do? how subtle can the variations be? what is easy and what is hard to do with the existing tech? Starting with your big idea outline a backup plan - what is plan B to scale it down? What is plan C? What will work if nothing else works?

Documentation: write down your responses to the questions posed in the brief. Capture your explorations of the technology as images; focus on the things you WERE NOT able to do. Post your work on openProcessing.

Week 5: Oct. 11 - 15

In-class:

Introduction to machine learning, frameworks and libraries, interface: Google's Teachable Machine, ML5js.

Zoom recording

Homework:

Formulate the proposal for an interactive experience controlled by real-world things not connected to your computer in any way - household objects, your body, etc. Build your first prototype using P5js with ML5js library.

Week 6: Oct. 18 - 22

In-class:

Workshop: finish and present your interactive experience.

Homework:

Compile and submit the documentation.


Week 7: Oct. 25 - 29 — NO CLASS


/*
Project 4:
Intro to Physical Computing
*/

Week 8: Nov. 1 - 5

In-class:

Basics of electricity: current, voltage, resistance, conductivity. Sensors, actuators, microcontrollers. Analog/digital read-write operations.

From electricity to computation, Voltage, Current, Resistance, and Ohm's Law

Homework:

Experiment with creating different patterns of blinking LED. You can use Morse code, you can try to recreate a musical rhythm, or any other familiar patters. Use buttons and potentiometers to modify and control the execution of your code. Create 3 of those rhythmic patterns and capture their execution and modification on video for documentation. Read DIY interfaces and Controllerism.


Week 9: Nov. 8 - 12 — NO CLASS


/*
Project 5:
Making music tools
*/

Create a system that allows you to play music (and possibly video) from your computer using a physical custom interface of your own design and creation. Will you make it for your own personal use or more general, usable by a larger group of people? Is it mean for solo preformance or multiple people? Will it be specific to a genre of music? How do you select the parameters that you can manipulate

Documentation: write down your responses to the questions posted in the brief. Create a video detailing the construction of the interface and another one demonstrating the perfomance of your musical instrument.

Week 10: Nov. 15 - 19

In-class:

Serial communication. Processing IDE.

In class code examples.

Homework:

Create a simple signle-channel controller that would allow you to change one parameter in a Processing program by applying a value received from ESP32 via serial communication. You can use any sensor to generate that value - except a potentiometer.


Week 11: Nov. 22 - 26 — NO CLASS


Week 12: Nov. 29 - Dec. 3

In-class:

Multi-channle communication. Sound library in Processing: playback and synthesis. Download sample sounds

Sending multiple values from ESP32 to Processing via Serial

Simple sound machine example

Homework:

Assemble all the physical components you will need for the project. Make decisions about the questions posted in the brief. Create a system that would allow you to send multiple messages via a serial communication from ESP32 to your computer.

Week 13: Dec. 6 - 10

In-class:

Workshop: finish and present your musical instrument. Controller layout, assembly.

Homework:

Compile and submit the documentation.


Week 14: Dec. 13 - 17 — NO CLASS


Resources

Software

Hardware

Documentation

Topics


Students