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.