Assignment for February 5, 2015

To begin learning how to control video and animation in Max, please read the following essays and tutorials. (The links provided here are to online sources, but the same readings and tutorials, with tutorial Max patches, are available within the Max application documentation, under Jitter Tutorials.)

Readings:
What is a Matrix?
Attributes

Tutorials:
Tutorial 1: Playing a QuickTime Movie
Tutorial 4: Controlling Movie Playback

Examples:
Attributes of jit.qt.movie
Simplest possible A-B video switcher
A-B video switcher

Find or make some video files that you think would be interesting source material, and try reading them into jit.movie, playing them in a jit.window, and controlling the playback (starting, stopping, changing the rate, jumping to a specific frame, etc.).

Assignment for February 3, 2015

Read the following articles, and study the Max examples they contain.

Randomness
Randomness and noise
Moving range of random choices
A simple probabilistic decision
Probability distribution

Read this chapter from the book Xenakis Matters.

Realtime Stochastic Decision Making for Music Composition and Improvisation

The following Max examples will help you use randomness in your own programs.

Some objects for generating numbers
Random note choices
Random voicings of a pitch class set
Look up chords in an array
Sequential or random access of a lookup table
Basic linear mapping
Controlling the range of a set of numbers
Generate random numbers within a specified range

Write a program that uses randomness—objects such as random, urn, drunk, (bang message to) table, noise~ (possibly with sah~), and rand~—to control the generation of notes or sounds. Rather than simply generating randomly-chosen events, however, constrain the random choices in a useful way to get an intentional musical effect. You might dynamically control the range of random numbers, or weight the random choices such that some events are more likely to occur than others, or make random choices from an established set of non-randomly selected possibilities, or make small random perturbations to an otherwise predictable process. The random numbers might control pitch choices, or loudnesses (velocities) or choices of soundfile cues, or rhythmic timings, or any measurable parameter of a music-making (or sound-making) procedure.

Place your completed program in the EEE DropBox called “Randomness4”.

Assignment for January 29, 2015

Attend the Gassmann Electronic Music Series lecture “Interactive Improvisation – Percussion and Computer” by percussionist Aiyun Huang at the usual class time, 11:00 am on Thursday January 29 in the Realtime Experimental Audio Laboratory (REALab), Room 216 of the Music and Media Building.

Attend the Gassmann Electronic Music Series concert Wired Percussion by Aiyun Huang at 8:00 pm on Friday January 30 in Winifred Smith Hall.

Both events are free.

Assignment for January 27, 2015

Learn all you can about how the Max transport object works, the different forms of time value syntax, the timing objects that can rely on the transport timing mechanism, and the ways you can access tempo-relative timing information.

Start by reading this article on Tempo-relative timing by Christopher Dobrian.

Read about the different ways to express timing in Max in the documentation of Time Value Syntax.

Check out Examples 42-48 (from the 2010 class) on the Max transport. (Example 46 uses some objects we haven’t discussed in class yet, but you can still try to understand the concept of what it’s demonstrating.)

Additional possibly-useful examples include “Convert between musical time and clock time“, “Tempo-relative timing with the transport object“, and “Delay with tempo-relative timing“.

Some primary things you’ll want to understand are:

1) The relationship between “clock time” (a.k.a. absolute time) and “musical time” (a.k.a. tempo-relative time). Clock time is measured in hours:minutes:seconds in everyday life, in milliseconds in Max, in hours:minutes:seconds:frames in filmmaking and video, in samples in digital audio, and sometimes in other units by programmers, such as QuickTime time units, or 1/60 second “ticks” in some other environments. Musical time is measured in bars:beats:divisions by humans, bars:beats:units in MIDI sequencers, (units are often called “ticks” and are 1/480 of a beat in most environments), or simply in ticks.

2) The difference between an interval of time and a position in time. We can designate any event as occurring at a point in time, and give a numerical value to that timepoint. We can specify the position of that timepoint either in musical time (such as 5:3:240, meaning “the and of three in measure 5”) or in reference to an arbitrarily chosen “zero” point in absolute time (such as 1384567988.962, meaning 1,384,567,988.962 milliseconds since the program started to run). An interval is the difference between two timepoints. So, for example, the start of a piece would be described in bars:beats:units as 1:1:0. That’s a timepoint, a position in time. After an interval of 4:3:240, the position in time would be 5:3:240. After another interval of 3:1:120, the position in time would be 8:4:360. That timepoint, 8:4:360, is an interval of 7:3:360 from the beginning of the piece. (Quick quiz: In 4/4 time, how many ticks is the interval 7:3:360?)

3) A metro behaves differently when it has an absolute time as its argument versus when it has a tempo-relative time unit as its argument. What exactly do the active, interval, quantize, autostart, and autostarttime attributes of metro mean?

4) Many other Max objects deal directly with time and thus can use tempo-relative time units. Check out how they can be used in delay, pipe, and makenote, for example.

5) Some MSP objects can deal with tempo-relative time directly, such as delay~, phasor~, line~, and snapshot~.

6) Any time you need to convert from musical time to clock time, you’ll want to know about the translate object.

7) For making things happen at a specific moment in musical time, you’ll want to know about the timepoint object.

For your weekly assignment:

Your goal is to produce a sequence of MIDI events (mostly notes) that you find musically interesting and that are synchronized by the transport. Use the transport object to control the progress of musical time, such as setting the beat tempo, starting, stopping, etc. Use timing objects such as metro and timepoint to produce triggers at desired moments in musical time. You might use makenote to control the durations of notes. You might want to look up messages or particular bits of information in a coll or a table. You might want to use a metro (probably a quantized one) to bang the transport object itself to get reports of what time it is, and then use that information to trigger events. Your resulting music might be completely deterministic (the same every time), or it might include some degree of variability, by clever use of the random and urn objects, for example. The resulting music can be of any duration you’re able to accomplish well. The user interface doesn’t have to be beautiful, but try to make it simple, clear, and efficient.

Place your completed assignment in the EEE DropBox called “RhythmicMIDI3”.

As always, take notes as you work, ask (and answer) lots of questions on the Q&A site, and contribute to the Wiki when you think you understand and can explain a key concept.

Assignment for January 22, 2015

Read about MIDI, and experiment with some Max patches that use MIDI, with the goal of understanding what MIDI messages do, and how they can be managed (received, modified, and transmitted) in Max.

Read “MIDI“, an explanatory essay by Christopher Dobrian.

I’ve done my best to find other readable writings on MIDI. Take a look at these Links for reading about MIDI and see which ones are at a level that is useful to you.

Try working through the MIDI Tutorials that are included in the Max Documentation. You can find them online, but you’ll want to open the tutorial patches while reading.

I’ve made a patch that shows all the MIDI objects in Max.

This example about linear mapping uses MIDI for its example, so it might be somewhat instructive. (None of the number boxes are initialized to good starting values, so you’ll need to drag them yourself. You can use the numbers in the example picture as a guide.)

This example shows random voicing of a five-note chord (by randomly transposing each pitch class some number of octaves).

There are quite a few other examples on that same page of examples from the 2013 class that deal with MIDI: notably examples 13-19.

Try generating a pattern of MIDI notes yourself using some of the objects you know such as metro, counter, random, line, and coll.

Assignment for January 20, 2015

1. Using what you know about playing sound files or sound cue excerpts of files with sfplay~, and what you know about synthesizing sounds using oscillators such as cycle~, saw~, rect~, and tri~, and controlling those sounds by modulation with low-frequency oscillators such as cycle~ and phasor~ and/or linear control signals from line~, and what you know about timing using metro and/or LFOs, make one or more rhythmically changing sounds that you consider to be truly musically interesting and engaging.

Create a simple but effective user interface that allows the user to start and stop your sound(s). Your interface might also give the user a way to exert some additional control over the sound, but that’s not really necessary because the majority of the interest should be generated automatically by the way you’ve programmed the sound characteristics.

The main points of this assignment are a) to get experience combining those objects and finding the ranges and combinations that achieve the sort of effects you find interesting, and b) exercise your creative imagination to think of how sound can be modified and/or triggered rhythmically to make interesting “musical” results (musical in the sense of exhibiting some sort of organization and aesthetic quality).

Place your completed assignment, including any additional media files that might be needed to make it work properly, in the EEE DropBox called “RhythmicSound2”.

For examples, ideas, and inspiration, you might look at:
Modulating oscillator
Using phasor~ directly as a control signal
Sine wave as control function
Pulse wave, a binary control function
Control function as a recognizable shape

2.Writing on your blog is implicitly always part of the assignment. Continue to take lots of notes on your website about what you learn, discoveries you make, and tricks of programming or Max that you pick up.

When you have something you believe is a true statement or definition that you can contribute to the class Wiki, go to the Wiki and either add to an existing page or add a page of your own and enter the information like an encyclopedia entry.

When there’s a question or problem to which you have tried but have been unable to find the answer, post the question or problem to the class Q&A site. You’ll most likely get a response from others in the class very quickly.

As you’re working in Max, make much use of the help files by Option-clicking (Alt-clicking in Windows) on objects and by reading the Max Documentation. In addition to the help files, there’s a detailed reference page for each object, and additional instructional texts about many Max topics. In addition to being available in the Help menu of the Max application, all of the documentation of Max 7 is available online.

There are many other ways to learn about Max, many of which are listed on the Links page, including video tutorials by several individuals and a user’s forum supported by Cycling ’74.

Assignment for January 15, 2015

Study the two types of control signal discussed in class: the low-frequency oscillator (LFO) and the linear ramp.

Read the essay titled “Line-segment control function” in Christopher Dobrian’s blog on Algorithmic Composition. You don’t need to follow the links that reference other chapters (unless you want to), but do try to understand the new (italicized) terms that are introduced, and do try out the example Max patch in that essay, try understand how it works, and read about any objects or messages in it that you don’t understand.

Then study the rather simple examples “Synthesize a sinusoid in MSP“, “Vibrato“, and “Linear control function“.

Read two other essays in the Algorithmic Composition blog that discuss the use of “Classic waveforms as control functions” and the “Sine wave as control function“.

And if you want still more examples and explanations, you can check out “Amplitude envelope with the function object“, “The function object“, and “Line segment control functions“.

Assignment for January 13, 2015

Begin to teach yourself the Max programming environment, especially the objects for audio known collectively as MSP (Max Signal Processing). The following paragraphs will give you some suggestions about how best to do that.

Then look below that for the specific project assignment.


Resources for Learning Max

There are many resources for learning Max, including (but certainly not limited to):
1) The tutorials that are provided as part of the application, each of which is accompanied by an example program. You can access those tutorials via the Help menu within the Max application, or you can read the Max Tutorials and MSP Tutorials online.
2) You can open a help file for any Max object, which itself is a working Max program demonstrating the object in action, by Alt-Clicking or Option-Clicking on the object in a Max patcher window.
3) For a super basic introduction to the rudimentary concepts and conventions of Max, you can read this excerpt from an old version of the Max documentation. The graphics are antiquated but the information is still largely correct.
4) You can find online many of the professor’s examples made for prior classes that involved Max.
5) As you work in Max, you can consult the extensive reference documentation via the Help menu or on the Web.
6) You can find many video tutorials about Max on YouTube.


The MSP Tutorials are written in a way that assumes you already know the basics of Max programming for non-audio events. But rather than you actually spending a whole lot of time on the non-MSP Max Tutorials, for the most part I think you’ll do OK by jumping right into the MSP Tutorials and then looking up aspects of Max that those tutorials don’t explain. So I suggest:
1) Read the pages of information about the Rudiments of Max excerpted from an old version of the Max documentation
2) Read the introductory chapters of the MSP Tutorials titled “Introduction” and “How MSP Works“.
3) Work through MSP Tutorials 1, 2, and 3 (plus 6 if you feel like testing what you’ve learned).
4) Study the following examples online:
– Example 1: Open a sound file and play it.
– Example 2: Preload and play sound cues.

Then you will know enough to do the following project assignment.

Project

Try out the online Drum Kit program by Ron Winter. 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 (although your program can be a much smaller and simpler version with fewer sounds and less stunning graphics). Here are some hints of Max 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. Use AIFF or WAVE or MP3 files. Download them from the web (e.g. www.freesound.org) or borrow them from other programs or sources, or record them yourself. You don’t need to use the same sounds or graphics as are used in the model program; feel free to create your own library of interesting sounds for this purpose if you’d like. 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 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.

Deposit your solution in the EEE DropBox called “SamplePlayer1”. Since your project probably needs to reference specific sound files, save your .maxpat Max patch(es) and your .wav or .aif sound files in the same folder, compress that folder as a .zip archive, then upload the .zip file to the DropBox.

Assignment for January 8, 2015

Prepare to participate in the class research, discussion, and documentation by doing the following:

  1. Create an account for yourself on Wikia. You’ll use this account to log in when you make an edit or addition to the wiki, so that you’ll be properly credited.
  2. Create an account for yourself on Piazza. You’ll use this account to ask and answer questions.
  3. Create a website and/or blog for yourself where you’ll take notes and document what you’ve learned. (You can use WordPress or Blogger or any other web/blog hosting method.) Email the URL of your site to the professor so it can be added to the list of student pages.
  4. Read the article Digital Audio by Christopher Dobrian. You should try to understand the meaning of the following terms: simple harmonic motion, fundamental mode of vibration, harmonics (overtones, partials), harmonic series, spectrum, amplitude envelope, loudness, amplitude, pitch, frequency, decibel, analog-to-digital converter, digital-to-analog, converter, digital sampling, Nyquist theorem/rate/frequency, sampling rate, aliasing/foldover, quantization, quantization precision, signal-to-quantization noise ratio, clipping. If you don’t understand the explanation of those terms in the article, do some research to try to learn more about the things you don’t understand, and if you can’t find the answer, ask a question on Piazza.
  5. Summarize what you’ve learned by posting on your website. When you feel understand something well enough to write a simple definition or explanation of it, create a wiki entry for it (or contribute to an already-started entry). Try to do this for at least one term or concept from the reading. (Your wiki entry might be a subset of your website post.)
  6. Bring a pair of headphones or earbuds to class that have a 1/8″ (3.5mm) stereo plug.