Dataflow @ ITP

Dataflow


ITP Help Pages


rss feed for this site


apple

Syllabus2009

Since this is a new class, this syllabus is liable to change

Assigments

  • 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

(1/27) Week 2: What is Dataflow?

(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

(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
  Edit | View | History | Print | Recent Changes | Search Page last modified on January 20, 2010, at 11:35 AM