ITP Help Pages
rss feed for this site
(redirected from Main.Syllabus)
Reorganizing for the 2-point format, this syllabus is liable to change
- There will be regular homework assignments to suppliment the in-class learning. The assignments are designed around the specific class topics. If you are working on an outside project that is related to the current homework topic, work on that project instead of the assignment. It must be related to the current class topic though.
- Upon completion, upload all homework patches to class wiki, in the Students section. All homework patches must be uploaded there.
- The assignments and readings are always due the week after they are assigned (i.e. the next class).
The central goal of this class is to start developing fluency in the Pd programming language so that you are able to express ideas in the form of functioning projects. The class focuses on the programming language itself, and works best when you bring in project ideas to work on. Then you can focus on building real projects while developing fluency in Pd. Therefore, this class ends with a final project. It should be a substantial chunk of work, but it need not be something entirely new. Working on a project for a good chunk of the class is the best for learning, but it is also acceptable to present some smaller chunks as long as you can demonstrate basic understanding of what it takes to complete a larger project.
Breakdown of Example Projects
One approach to becoming good at a programming language is to learn a set of building blocks very well, then think in terms of those building blocks. This is the approach that this class aims to teach. To that goal, we will see a demo of a related project every week, talk about how it was done, and break it down. The central idea is to focus on what is happening rather than whether we liked it or not. The discussion can cover any topic, the only thing that is not allowed are judgments, like "I liked it", or "that sucked", or "that's a nice guitar sound". Instead we should talk about how to implement it using the tools we know, whether the idea was well implemented, whether a different approach would have been more effective, etc.
For this course, Pd will the used throughout. Max/MSP is similar enough to Pd that the knowledge is directly applicable. Quartz Composer, Eyesweb, Labview and other graphical programming languages share similar ideas, but are not similar enough for this course. There will be brief introductions to other graphical programming languages throughout the semester.
During much of the classtime, you will be following along and programming on your own laptop. Therefore it is essential that you bring your laptop to every class. That said, laptops are also very effective instruments of distraction. Everyone benefits if we all pay attention. I'll do my best to keep the class interesting, I hope you'll join me in this pursuit. You are welcome to use your laptop in class when I am speaking, or when it is relevant to the classwork being presented. However, during discussions and when your fellow students are talking, please be respectful of everyone's time and close the lid. If necessary, I'll remind you of this, but even better would be if everyone does so on their own.
(1/28) Week 1: Pd Overview
- Class introductions
- Course overview
- What is Pd? The Max family of programming languages
- Pd and read/write tools
- you own Pd, do whatever you want with it!
- Example Project: Attach:camera_wavetable.pd
- In-class Demo: ring modulate your voice and see it
- download and install Pd-extended
- In Pd-extended, go to the Help menu, then choose Browser, then navigate to Manuals -> 0.Intro. In there, play with patches 01.hello_world.pd through 27.Example-all_just_data.pd
- try adding to the ring modulator patch we built in class
(2/4) Week 2: What is Dataflow?
- History of Max and Pd
- objects and connections
- always running
- time and [metro]
- numeric and symbolic "atoms, pointers
- "symbol", "float", "list"
- execution order and [trigger]
- hot and cold inlets
- Example Project: song in a patch: christchurch.pd
- In-class Demo: simple sequencer with metro, a counter, and select (here are some WAV files to play with: continuous soft and relaxing.zip)
- make a sequencer of sounds and samples using metro, a counter, trigger, select, readsf~, osc~, noise~, phasor~, etc.
(2/11) Week 3: processing generic messages
- [route], [select], [list], [moses]
- messages and selectors
- lists vs. other messages
- translating "if", "for", etc to dataflow
- Example Project: Solenoid Concert, an example of sequencing
- In-class Demo: sequence sound and video (example media: Pd-SMU.zip)
- FLOSS Manuals Pure Data: Lists, Cordless Connections
- Miller's Pd Documentation, chapter 2 "Theory of Operation", section 2.6 "semantics" (2.6.1 through 2.6.5)
- In Pd-extended, go to the Help menu, then choose Browser, then navigate to Manuals -> MessageOddness and browse thru these odd cases of messages.
- use the mouse data from [cursor], or other source of sensor data like [hid] or [arduino] to make a simple instrument using sounds/samples, [line~], [trigger], readsf~, osc~, noise~, phasor~, etc.
(2/18) Week 4: lines and signals
- functions to generate lines over time
- [line], [line~], [vline~] and simple lists
- control rate versus audio rate
- special data type with distinct connection type
- In-class demo: using lines to control sound and video
- Example Project: frey-wubwubwub.tar.gz
- Example Project: Terre Natale EXITS Part 2 (scoring to video)
- Programming Electronic Music in Pd: Line
- FLOSS Manuals Pure Data: Envelope Generator
- In Pd-extended, go to the Help menu, then choose Browser, then navigate to Pure Data --> 3.audio.examples, and read through A03.line.pd and A04.line2.pd
- use a line object to control sound and/or video playback
(2/25) Week 5: storing data
- storing numeric data in arrays
- visual representation of that data
- read, write, modify methods
- arrays as audio, controlled by line~
- In-class Demo: arrays and tables for storage and control
- Example Project: procedural audio in EA's Spore
- Example Project: The first patcher language, in User Interface I (Alan Kay), 23:30-26:30 (excerpt on local mirror)
- Pick a final project and start working on it. Bring ideas, problems, and questions for the next class.
(3/4) Week 6: encapsulation
The key to building large projects is encapsulating ideas into reusable chunks. The difference between a code block and a function: subpatches are code blocks and abstractions are functions, kind of. The real power of abstractions is not, that they are in their own files so they can be used for code reuse. The real power is, that they can accept arguments.
- writing objectclasses (aka "abstractions")
- using arguments, inlets, outlets
- installing externals
- In-class Demo: turning example patches into objects
- Example Project: reacTable: improvisation demo
- Example Project: Dinosaurs, by Damian Stewart, download: dinosaurs.zip
- Finish final project for presentation in the next class
(3/11) Week 7: Final Project Presentations
- Show and discuss your project in class, we can spend about 8 minutes per presentation.
- 8 minutes per project
- one sentence about your idea
- show your project
- talk about one thing that felt natural or good in Pd
- talk about one thing that was frustrating
- optional: a pie in the sky idea for how Pd should work
Old versions of this Syllabus