Views
Graphical Dataflow Programming
The idea of graphical dataflow languages have existed for decades, yet this idea has not found the same level of acceptance as OO or procedural programming. There are two grapical dataflow languages which have gained widespread acceptance in specific realms: Max and LabView?. This course focuses on Pd (aka Pure Data) which is a member of the Max family of languages. It will start out with the basics of the Pd programming language, and move from the fundamentals of the language itself to how to organize large projects. The Max paradigm will also be compared to object oriented languages to get an idea of the differences and similarities.
week 1 Pd Overview
- what is Pd?
- what can you do with Pd?
- examples of works done with Pd.
week 2 objects and connections
- objects and connections
- bang
- always running
week 3 data and message types
- numeric and symbolic "atoms, pointers
- "symbol", "float", "list"
- selectors
week 4 processing generic messages
week 5 audio
- control rate versus audio rate
- special data type with distinct connection type
week 6 arrays
- storing numeric data
- visual representation of that data
- read, write, modify methods
week 7 graphical data structures
- structs and pointers
- arrays and structs
- visualization of data
week 8 encapsulation
The key to building large projects is encapsulating ideas into reusable chunks.
- subpatches
- writing objects in Pd
- Pd vs. Object Oriented Programming
week 9 video
- video tracking: grid, blob, color, movement
- realtime effects
week 10 OpenGL?
- Using 3D objects to represent interface ideas
- displaying data in 3D
Example: VIFE
week 11 input and output
- tablets, joysticks, gamepads, mice, keyboards
- serial, parallel, usb, HID
week 12 networking
- TCP, UDP, OSC, mDNS
- interacting across distances
- collaborative enviroments
Example: netpd
week 13 final project presentations
Readings
- Composing Interactive Music, by Todd Winkler ( MIT Press, ISBN 0-262-23193-x)
Optional Readings
This is a collection of readings on related topics for anything that you migth want to delve deeper into.
Interaction
- Buxton, W. (1990). The Natural Language of Interaction: A Perspective on Non-Verbal Dialogues. http://www.billbuxton.com/natural.html
- Buxton, W. (1990). A Three-State Model of Graphical Input. http://www.billbuxton.com/3state.html
Pure Data
- Puckette, M. 1991. "Combining Event and Signal Processing in the MAX Graphical Programming Environment." Computer Music Journal 15(3): 68-77. http://crca.ucsd.edu/~msp/Publications/cmj91-max.ps
- Puckette, M. 1996. "Pure Data: another integrated computer music environment." Proceedings, Second Intercollege Computer Music Concerts, Tachikawa, Japan, pp. 37-41. http://crca.ucsd.edu/~msp/Publications/icmf96.ps
- Puckette, M. 1996. "Pure Data." Proceedings, International Computer Music Conference. San Francisco: International Computer Music Association, pp. 269-272. http://crca.ucsd.edu/~msp/Publications/icmc96.ps
- Puckette, M. 1997. "Pure Data: recent progress." Proceedings, Third Intercollege Computer Music Festival, Tokyo, Japan, pp. 1-4. http://crca.ucsd.edu/~msp/Publications/icmf97.ps
- Puckette, M. Max at 17, Computer Music Journal, Volume 26, Number 4, 1 December 2002, pp. 31-43(13) http://crca.ucsd.edu/~msp/Publications/dartmouth-reprint.pdf
- Puckette, M. 2002. "Using Pd as a score language." Proceedings, ICMC, pp. 184-187 http://crca.ucsd.edu/~msp/Publications/icmc02.pdf
Input/Output
- Physical Computing http://itp.nyu.edu/~dbo3/physical/physical.html
Video
- Computer Vision for Artists and Designers http://www.flong.com/writings/texts/essay_cvad.html
OpenGL?
Networking
Ideas to Add
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.