|
Dataflow
ITP Help Pages
rss feed for this site
|
Syllabus-Spring2008
Since this is a new class, this syllabus is liable to change
Assignments
- 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.
- There will be class time to present homework. You can optionally present any homework assignment during the semester, you are strongly encouraged to present at least a few times throughout the semester.
- The assignments and readings are always due the week after they are assigned (i.e. the next class).
Midterm and Final Projects
The goal of these projects is to develop a substantial program using Pd. This allows you to put to good use all of the knowledge learned over the semester. Ideally these projects would be in conjunction with another class, so you can merge the design thinking of another class with the architecture/implementation thinking of this class.
Laptops
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 of this, but even better would be if everyone does so naturally.
Discussion of Example Projects
Every week, we will see a demo of a related project, talk about how it was done, and critique it. 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 people should talk about the music, sound, and performance itself, how it was made, how the parts all relates to the whole, whether the implementation effectively conveyed the idea, etc.
Course Schedule
(1/20) Week 1: Pd Overview
- Class introductions
- Course overview
- what is Pd?
- Pd and read/write tools
- you own Pd, do whatever you want with it!
- Example Project: Attach:bangtris_v0.2.zip
- In-class Demo: ring modulate your voice
- Reading:
- Assignment:
- 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
(1/27) Week 2: What is Dataflow?
- History of Max and Pd
- bang!
- 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: RjDj (Pd for iPhone): First contact with RjDj
- In-class Demo: simple sequencer with metro, a counter, and select (here are some WAV files to play with: continuous soft and relaxing.zip)
- Reading:
- Assignment:
- make a sequencer of sounds and samples using metro, a counter, trigger, select, readsf~, osc~, noise~, phasor~, etc.
(2/3) Week 3: processing generic messages
- [route], [select], [list], [moses]
- messages and selectors
- lists vs. other messages
- dataflow vs. procedural vs. object-oriented
- translating logical operators, "if", "for", etc to dataflow
- Example Project: Terre Natale EXITS Part 2 (scoring to video)
- In-class Demo: mouse instrument with route and unpack
- Reading:
- Miller's Pd Documentation, chapter 2 "Theory of Operation", section 2.6 "semantics" (2.6.1 through 2.6.5)
- Assignment:
- use the mouse data, or other source of sensor data to add live controls to your sequence from last week
(2/10) Week 4: digital signal processing
- digital audio
- control rate versus audio rate
- special data type with distinct connection type
- In-class demo: the basics of filtering
- Example Project: procedural audio in EA's Spore
- Reading:
- Assignment:
- go thru Part 2: Earth, air, fire and water tutorials (Firestarter, Bubbles, Running water, Rain, Tea, Thunder and wind).
- make a composition using no samples or sound files. Instead use synthesis, filtering, etc. Copy and paste whatever you need to make a workable whole. Create a sequence that generates a composition. Make a central clock and then use [route], [select], [moses], etc. to trigger and control events during the composition.
(2/17) Week 5: storing data
- storing numeric data in arrays
- visual representation of that data
- storing text data in [textfile] and [qlist]
- read, write, modify methods
- In-class Demo: qlist + video (gobangmovie.zip)
- Example Project: The first patcher language, in User Interface I (Alan Kay), 23:30-26:30
- Reading:
- Assignment:
- sequence some sounds and/or soundfiles to a movie
(2/24) 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.
- subpatches
- writing objectclasses (aka "abstractions")
- using arguments
- installing externals
- In-class Demo: turning example patches into objects
- Example Project: Dinosaurs, by Damian Stewart, download: dinosaurs.zip
- Reading:
- Assignment:
- Pick a midterm project and start working on it. Bring ideas, problems, and questions for the next class.
(3/3) Week 7: Midterm Workshop
- bring questions and we'll work through them in class
- Example Project: Pure, by Gerard Van Dongen
- Assignment:
- Finish Midterm projects to present next class
(3/10) Week 8: Show Midterm
- Show and discuss your project in class, keep it short, we can spend about 8 minutes a piece.
(3/17) Spring Break, no class!
(3/24) Week 9: OpenGL and Video
(3/31) Week 10: Input/Output
- tablets, joysticks, gamepads, mice, keyboards
- serial, USB HID, MIDI
- In-class Demo: Arduino/Firmata and USB HIDs
- Example Project: fijuu2
- Guest Demo: Luke DuBois and Max/MSP/Jitter
(4/7) Week 11: Networking
- TCP, UDP, OSC, mDNS
- interacting across distances
- collaborative environments
- In-class Demo: build a chat client/server
- Example Project: netpd download: netpd-2009-04-07.zip
(4/14) Week 12: Contributing/Final Project Workshop
(4/21) Week 13: Final Project Workshop
- bring questions and we'll work through them in class
- finish Final Projects to present next class
(4/28) Week 14: Final Project Presentations
- Show and discuss your project in class, we can spend about 8 minutes per presentation.
- talk 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
|