Interactive Arts Programming

Spring 2010

Assignments for the upcoming class session are posted below.

For Thursday June 10:

Perform/present your final programming/artistic project in the critique session scheduled for Thursday June 10, 10:00-1:00 in the REALab/MoCap Studio. You are responsible for making sure you have the necessary equipment and are properly set up to show your work. (I suggest arriving early enough that you can be fully set up and ready to go by 10:00.) Each person will have 15 minutes in which to present his project (including any necessary equipment-futzing between presentations), so plan and rehearse your presentation accordingly.

Hand in your final (well-commented!) program, including all necessary accessory files and a thorough prose explanation, in the EEE DropBox called "Final Project" by 5:00 pm Thursday June 10. If your project is too large to submit via the DropBox, please hand it to me on a DVD in the Thursday session (or, as a last resort, leave it in my mailbox by 5:00 pm). No late submissions of projects will be accepted. The final project should be sufficiently well commented that anyone fluent in Max could relatively easily understand the structure and operation of the program. The prose explanation should detail the objectives of the project, the important aspects of its design, issues confronted in its technical implementation, and a discussion of the artistic concerns (concepts, successes, failures, etc.) you addressed.

For Thursday June 3:

The class session will be an open lab for working on your own project and helping your classmates with theirs.

For Tuesday June 1:

Come to class prepared to show your work-in-progress on your final project, and to ask questions about problematic technical or artistic issues in your work.

For Thursday May 27:

Read Programming New Realtime DSP Possibilities with MSP (1999), which describes some ways to capture and fragment live sound.

Read Strategies for Continuous Pitch and Amplitude Tracking in Realtime Interactive Improvisation Software (.pdf format) (2004), which describes techniques for tracking audio signals to achieve "interactivity" between a live performer and a computer.

For Tuesday May 25:

Post your proposal for your final project on the MessageBoard by Monday night preceding class. The final project should be a composition, performance, or "user experience" of 5 minutes or more in which realtime human-computer interaction is an integral part of the composition.

Whereas the midterm projects were in most cases a sort of "proof of concept" demonstrating a particular technique or idea you were working on, the final project should be something that you are proud of artistically as a "piece" that you can perform/present. With that in mind, set yourself reasonable programming goals given the time remaining, and focus on the composerly job of trying to make your program work in the service of a good piece.

For Thursday May 20:

Read MSP Tutorial 25, which discusses the basic workings of the Fast Fourier Transform. To learn more about how the FFT is best implemented in MSP, also read MSP Tutorial 26, which shows a practical example of the FFT using the pfft~ object.

Don't be discouraged if you find the topic difficult to understand. For most people it takes many explanations before the process becomes comprehensible. If you want to do additional reading about spectral processing in MSP, try reading A Tutorial on Spectral Sound Processing Using Max/MSP and Jitter by Jean-François Charles (not the same person as Jean-Charles François who visited UCI earlier this year). You can also find several MSP examples that employ the FFT in the "examples" folder of the Max application, in the subfolder called "fft-fun".

For Tuesday May 18:

Read the blog chapter on Tempo-relative timing. Teach yourself about the transport object and the related objects timepoint and translate. Read about time value syntax and objects that support time values in the Max documentation.

Once you have learned about these topics, write a program that makes something interesting happen sonically, musically, or visually (i.e., with MSP, MIDI, or video/animation) based on tempo-relative timing.

And, as always, by midnight on the evening of Sunday May 16, post on the MessageBoard at least one useful thing you learned about Max programming this week from your own independent study and practice. (The more the better.)

For Thursday May 13:

Read MSP Tutorial 22: MIDI panning. The real focus of that chapter is not on the use of MIDI for panning; MIDI is just a way to control panning. The real point of that chapter is to discuss how different ways of panning create different perceptual effects. Pay particular attention to the difference between "linear crossfade" and "equal distance crossfade". (The discussion of "speaker-to-speaker crossfade" is pretty geeky, so don't worry if it makes your brain hurt.)

See also 2009 class examples 43 and 44.

For Tuesday May 11:

Turn in your completed midterm project software in the EEE DropBox called "Midterm Project". Your project should include your (well-commented!) Max software, any media files needed for it to work properly, and a thorough prose description of its features, how it works, and how it should be used.

Study MSP Tutorials 27-31 dealing with audio delay and delay-based effects. Study also Examples from 2009 numbered 16, 17, 19, 20, and (especially) 33 and 34. Come to class ready to discuss these examples, and to ask questions about aspects of them that you don't understand.

For Thursday May 6:

There is no new assignment for Thursday. It's advised that you get a head start on the assignment for Tuesday May 11.

For Tuesday May 4:

Come to class prepared to give a brief presentation/demonstration of your midterm project in progress. There will not be a lot of time for each presentation, so please try to foresee what equipment you will need for your demo, and come to class early enough set it up beforehand. If you think you will need any special equipment, contact Martin to arrange for it to be available.

By midnight on the evening of Sunday May 2, post on the MessageBoard at least one useful thing you learned about Max programming this week from your own independent study and practice. (The more the better.)

For Thursday April 29:

Listen to the composition There's Just One Thing You Need To Know for piano and synthesizer mediated by an interactive computer program, and read the CD liner notes about it, in preparation for a discussion of the piece in class.

For Tuesday April 27:

By midnight on the evening of Sunday April 25, post on the MessageBoard at least one useful thing you learned about Max programming this week from your own independent study and practice. (The more the better.)

Work on your midterm programming project. Come to class with questions that have arisen in the course of that work. Be ready to report on your work in progress, and how that corresponds to your planned timeline.

For Thursday April 22:

Read -- and study the accompanying programs for -- the blog chapters titled Randomness, Randomness and noise, and A simple probabilistic decision.

For Tuesday April 20:

Write a proposal for your midterm programming project, and post it on the MessageBoard by midnight on the evening of Sunday April 18. Your midterm programming project will be due Tuesday May 11.

The midterm program should entail realtime human-computer interaction, and should include one or more of the following: algorithmic composition of music or visual imagery, interactive control of digital audio synthesis or sample playback, realtime audio signal processing, interactive control of digital video playback and processing, animation and/or processing of 2D or 3D visual images, use of alternative controllers as musical instruments, computerized control of robotic devices, computer-controlled lighting, audio/visual sculptural installation, performance involving interaction between networked computers, and intermedia data mapping.

Your written proposal should include a one-paragraph abstract explaining what the project is (what the finished program will do), a paragraph describing the conceptual/artistic basis (the reason why you are doing the project), and a description of your plan of action and goals, including a timeline with intermediate steps describing how you plan to achieve the project in the three weeks between April 18 and May 11. Your proposal may include diagrams, flow charts, and examples of partial or preliminary programs.

You won't be restrictively obliged to stick to this proposal as your work develops, but making and verbally expressing your plans with as much detail as possible is a vital step in working effectively on this programming project. Feel free to post rough ideas and preliminary thoughts on the MessageBoard for feedback from others before you post your finished project proposal.

As every week, by midnight on the evening of Sunday April 18, post on the MessageBoard at least one useful thing you learned about Max programming this week from your own independent study and practice. (The more the better.)

For Thursday April 15:

In the algorithmic composition blog, read the next two chapters, titled Linear change and Fading by means of interpolation.

Using the examples in those blog chapters and the examples shown in class as a starting point for ideas, you can probably think of ways in which range mapping and interpolation between values can be applied in the programs you're currently working on. Think about how those concepts are applicable to composing (or video processing, or robotics, or whatever you're most interested in), and see if you can write a simple program that puts one of those techniques to use.

For Tuesday April 13:

Read the chapter of the Jitter documentation titled "What is a Matrix?". Read also the chapter titled "What are Attributes?".

Study the first Jitter Tutorial chapter, titled "Playing A QuickTime Movie" and try the accompanying patch. Study also the example made in class demonstrating the basics of the object. A look at the help file will show you how very many messages and attributes that object has. Some are arcane and might not be very useful to you, but some are pretty essential, so look at them all and try to get some idea of the possibilities the object makes available to you. Most importantly, study the manual page for, and in a Max patch of your own try out a few of the messages and attributes you read about.

Write a (well-commented!) patch that you think does something interesting with You might particularly want to try using the computer keyboard (or a MIDI controller if you have one available) to control your patch, and/or you might want to use some kind of automated process (say, with metro, counter, etc.) to control the object automatically. Place your finished patch (and if it requires particular video files, include those with it in a compressed .zip archive) in the EEE DropBox called "" by noon on Tuesday April 13.

For more on, its most important attributes and messages, and some ideas of the kind of things you can do with it, see also the examples from some previous classes. There is at least one relevant example from 2009, 2007, 2006, and 2004.

As every week, by midnight on the evening of Sunday April 11, post on the MessageBoard at least one useful thing you learned about Max programming this week from your own independent study and practice. (The more the better.)

For Thursday April 8:

In the algorithmic composition blog, read the chapters titled Counting through a List, Analysis of Some Patterns, and That's Why They Call Them Digital Media. (Read other chapters, too, if you're so inspired, of course.)

Experiment with some aspect of MIDI, such as:

For Tuesday April 6:

Read chapters 1 and 2 of the Apple Macintosh Human Interface Guidelines, available online and on reserve in the Arts Media Center. Pages 1-11 outline Apple's basic principles for good software. The remaining pages explain practical ways of implementing those principles, based on the original Macintosh interface.

Try to maintain a daily regimen of working through the online Tutorials. (You can access the Tutorials and all the other online documentation via the Help menu in Max.) If you are new to Max, begin with the Max tutorials. Open and try out the Max program associated with each chapter. Once you feel you have the hang of how Max works, and have encountered a modest number of Max objects, you should start reading the MSP tutorials, too. (Continue working on both sets of tutorial lessons in parallel.)

To learn about programming audio in Max, if you have not already done so, read MSP: Introduction, MSP: How Digital Audio Works, and MSP: How MSP Works. Then begin working through the MSP Tutorial chapters.

Try out the Ron Winter drum sampling program. Think about how the program works. Could you make a program in Max that works similarly? Try to build a Max patch that duplicates as much of the capability of that program as possible. Here are some hints of objects that you might need: dac~, sfplay~, key, select, message, fpic (or the Paste Picture command in the Edit menu), ubutton, comment, loadbang. You'll also need some sound files. Download them from the web (e.g. or borrow them from other programs or sources, or record them yourself. You don't need to use the same sounds as are used in the model program; feel free to create your own library of interesting sounds for this purpose. Note that the model program can play polyphonically (i.e., can play multiple simultaneous sounds); that's a moderately complicated thing to program successfully in Max, so don't feel obliged to try to implement that capability (unless, of course, you're an experienced Max programmer and want to take on the challenge). If you think of improvements or elaborations or new ideas to change or extend the program, that's fine, but make a basic imitation of the model program first. Be prepared to demonstrate your program in class.

By midnight on the evening of Sunday April 4, post on the MessageBoard at least one useful thing you learned about Max programming this week from your own independent study and practice. (The more the better.) Don't worry about whether the information is sophisticated enough to be useful to others in the class; chances are it will be.

For Thursday April 1:

Read Music Programming by Christopher Dobrian.

Make arrangements to come to class with a computer to work on Max. If you can bring your own laptop, download the Max software and all necessary documentation and tutorials to that computer. If you cannot bring a laptop computer, you can use one of the computers in the REALab during class time, and you can use the computers in the Arts Media Center and the Gassmann Studio for your work outside of class.

Begin studying the instructional materials provided in the online documentation of the Max application.

In previous versions of Max, prior to version 5, there was a different set of Max Tutorials that came with the program. In Max 5, those tutorials were replaced by a new set. That was necessary because Max 5 had so many changes that much of the information in the old tutorials and documentation was no longer true. However, some people think that the older set of tutorials was simpler and clearer for people who are just beginning with programming and Max. You can still find those old tutorials online. (Clicking on that link will immediately begin downloading a .zip file of the older documentation.)

These older tutorials will be suggested reading for getting started in the class, so if you are just beginning with Max, you might want to begin by reading the chapter in the old documentation titled "Overview: The Max Application" in the document titled Max46Fundamentals.pdf. (Yes, some of the information is obsolete for Max 5, but the basics are the same.) Then go on to the actual tutorials in the document titled Max46Tutorial.pdf There are even more tutorials that come as part of Max 5, as well as tutorials specifically for MSP and Jitter (the audio and video programming parts), but those older tutorials are the simplest introduction (even if not always the most exciting).

To learn about programming audio in Max, read MSP: Introduction, MSP: How Digital Audio Works, and MSP: How MSP Works.

This page was last modified May 31, 2010.
Christopher Dobrian,