follow

Compare a live performance to a recorded performance

Description

follow records pitches, or you can give it a MIDI file, in which case it looks at the file's note-ons and ignores other events. When it is "following" it outputs the index of the last note matched.

Arguments

Name Type Opt Description
filename symbol opt The argument is the name of a file containing a previously recorded sequence, to be read into follow automatically when the patch is loaded.

Messages

bang Starts playing back the sequence stored in follow.
int input [int]
When follow is recording, the numbers received in its inlet are recorded as a sequence. The numbers may be bytes of MIDI messages (from midiformat or midiin), exactly as with the seq object. However, follow differs from seq in its ability to record individual integers; with follow you can record notes as a single pitch value. Whether the performance is recorded as complete MIDI messages or just as note-on pitches, follow can effectively step through the note-on pitch numbers later, when following a performance.
  (inlet1) input [int]
When follow is following, numbers received in its inlet are compared to the numbers recorded in the sequence. When a number is received that matches the number in the sequence, follow sends out the index of that number.
float input [float]
Converted to int.
append Starts recording at the end of the stored sequence, without erasing the existing sequence.
delay onset-time (milliseconds) [int]
The word delay, followed by a number, sets the onset time, in milliseconds, of the first event in the recorded sequence.
dump Calls up the standard Open Document dialog box, so that a previously recorded sequence or standard MIDI file can be opened as text and displayed in a new Untitled text window. This in fact has no direct effect on the follow object, but does allow you to view or edit a sequence, save your changes in a file, then load the new file into follow with a read message.
follow index [int]
The follow message is the main feature that distinguishes follow from seq. In effect, follow is like a score reader, comparing a live performance with the one previously stored.

The word follow, and a number, causes follow to begin comparing incoming numbers to its own stored numbers, beginning at the specified index (the specified event in its own stored sequence). When follow is following, and a number is received that matches the number recorded in follow, it sends out the index of that number.

The follow object is a forgiving score reader, and will try to follow along even if the incoming numbers do not exactly match the recorded sequence. If a number arrives that does not match the next number, or either of the two subsequent numbers in the sequence, follow does nothing. If a number arrives that matches a number up to two notes ahead in the sequence, follow assumes that the performer simply missed a note or two, and jumps ahead to the matched number.
next Causes follow to send out the index and the stored number it is currently trying to match, and move on to the next number.
print Prints the first few events of the recorded sequence in the Max window.
start tempo [int]
The word start by itself has the same effect as bang. The word start, followed by a number, plays the stored sequence at a tempo determined by the number. The message start 1024 indicates normal tempo. If the number is 512, follow plays the sequence at half the original recorded speed, start 2048 plays it back at twice the original speed, and so on.
stop Stops follow from recording, playing, or following. A stop message need not be received before switching directly from recording to playing, following to recording, etc.
read filename [list]
The word read with no arguments puts up a standard Open Document dialog box for choosing a sequence file to load into follow. If read is followed by a symbol filename argument, the named file is located and loaded into follow.
record Starts recording integers received in the inlet.
write filename [list]
Opens a standard Save As dialog box to save the follow sequence as a file.

Information for box attributes common to all objects

Output

int: Out left outlet: When follow is following, and the number received in the inlet matches the next number in the stored sequence (or one of the two numbers after that), the index of the matched number is sent out. The index of the next number is also sent out when a next message is received.

Out right outlet: When follow receives a bang or a start message, the recorded numbers are played back. When follow is following, and a next message is received, the next number in the recorded sequence is sent out.

Examples

A note that matches the recorded note can trigger a process or the notes can be stepped through

See Also

Name Description
seq Sequencer for recording and playing MIDI data
detonate Load/play a score of note events
Max MIDI Tutorial 4: MIDI Basic Sequencing Max MIDI Tutorial 4: MIDI Basic Sequencing