Dataflow @ ITP

Dataflow


ITP Help Pages


rss feed for this site


apple

IntroToDataflow

Reorganizing for the 2-point format, 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.
  • The assignments and readings are always due the week after they are assigned (i.e. the next class).

Final Project

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.

Software

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.

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 you of this, but even better would be if everyone does so on their own.

Course Schedule

(1/28) Week 1: Pd Overview

(2/4) Week 2: What is Dataflow?

(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)
  • Reading:
    • 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.
  • Assignment:
    • 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)
  • Reading:
    • 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
  • Assignment:
    • use a line object to control sound and/or video playback

(2/25) Week 5: storing data

(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.

(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

  Edit | View | History | Print | Recent Changes | Search Page last modified on March 20, 2012, at 03:46 PM