mtr
Description
Records messages and provides sequenced playback.
Examples
Discussion
mtr acts as a multi-track recorder for any kind of message. The leftmost inlet of mtr is a control inlet for all tracks. You can send the same messages to individual tracks as well. Each track records what comes into its inlet, and plays it back through the outlet directly below the inlet.
Time is measured in mtr in two different ways, depending on whether the sync attribute is enabled or disabled. When sync is off, time units are in milliseconds. When sync is on, time units are in ticks. The remainder of this document will refer to "time", with the understanding that the type of time units depends on the sync setting.
Arguments
tracks [int]
Specifies the number of tracks in mtr. The number of tracks determines the number of inlets and outlets in addition to the leftmost inlet and outlet. Up to 128 tracks are possible. If there is no argument, there will only be one track.
Attributes
autostart [int]
Sets whether mtr plays all tracks when the transport is started. Default is 0 (off). This attribute can only be set globally, and does not apply to individual tracks.
autostarttime [Time Value]
Sets the autostarttime for mtr. If the autostart attribute is enabled, mtr will play all tracks automatically at the time specified with this attribute. autostarttime can only be set globally, and does not apply to individual tracks.
bindto [atom]
Bind individual UI objects to tracks without patch cords using pattr scripting names. If you assign a scripting name to a UI object, you can use that same name to set bindings to mtr. The typed in arguments for @bindto should be the track number followed by the scripting name of the desired object.
embed [int]
When embed is set to 1, any recorded data is saved with the patcher. Note that recording, changing, or clearing data does not cause the patcher to be dirtied. This attribute can only be set globally, and does not apply to individual tracks.
length [float]
Sets the length of all tracks in time units. This defines when the track will stop or loop. If the length is shorter than the original recorded length, events after the specified time are not played but are still present in the track. This attribute can be set via the inspector, attrui, as a typed-in argument, or as a message to the left inlet. When set this way, length is considered a global attribute and will overwrite any previously set track-specific length values.
If sent as a message to any non-left inlet, it sets the length of the track in time units that corresponds to the inlet. If a length value is subsequently set globally (see above), all track-specific values are overwritten.
loop [int]
Turns looping off/on for all tracks. This attribute can be set via the inspector, attrui, as a typed-in argument, or as a message to the left inlet. When set this way, loop is considered a global attribute and will overwrite any previously set track-specific loop values.
If sent as a message to any non-left inlet, it sets the looping state of the track that corresponds to the inlet. If the loop value is subsequently set globally (see above), all track-specific values are overwritten.
mode [int]
Enables automation playback mode, which when starting or restarting a track will play the last event before the selection (if a selection start point is non-zero). The default value is 0 (off). This attribute can be set via the inspector, attrui, as a typed-in argument, or as a message to the left inlet. When set this way, mode is considered a global attribute and will overwrite any track-specific settings that were previously specified.
If sent as a message to any non-left inlet, it enables/disables automation playback mode for the track that corresponds to the inlet. If the mode attribute is subsequently set globally (see above), all track-specific settings are overwritten.
nextmode [int]
Sets how the nextmode is set to 0, a message after the last event will produce an event with a delta time of -1. When nextmode is set to 1 (loop mode), a message after the last event will immediately loop back to the first event. This attribute can only be set globally, and does not apply to individual tracks.
Possible values:
0 = 'end'
1 = 'loop'
quantize [Time Value]
Sets playback quantization. This does not change the actual events in tracks, only how they are played. This attribute can only be set globally, and does not apply to individual tracks.
selection [2 floats]
Sets the playback selection of all tracks. The selection is made in normalized units based on the length of the track, either defined via the length attribute, or if length is 0, the total recorded time. For example, "selection 0.25 0.75" will play the middle section of a track. When sending a message to a track, it will start at the selection point, not the beginning. Playback is (subtly) affected by the mode attribute.
This attribute can be set via the inspector, attrui, as a typed-in argument, or as a message to the left inlet. When set this way, selection is considered a global attribute and will overwrite any previously set track-specific selection values.
If sent as a message to any non-left inlet, it sets the playback selection of the track that corresponds to the inlet. If the selection attribute is subsequently set globally (see above), all track-specific values are overwritten.
speed [float]
Sets the global multiplier to be applied to the speed of all tracks, where 1.0 is the original speed. This allows you to have individual tracks running at different trackspeed s, and then apply a global speed change. This attribute can only be set globally, and does not apply to individual tracks.
sync [int]
When sync is enabled, mtr syncs to a named transport (“internal” is the default). When sync is off, time units are in milliseconds. When sync is on, time units are in ticks. This attribute can only be set globally, and does not apply to individual tracks.
trackspeed [float]
Sets the speed of all tracks, with 1.0 being the originally recorded speed. The actual track speed is a combination of the mtr's speed attribute, the trackspeed, and the . This attribute can be set via the inspector, attrui, as a typed-in argument, or as a message to the left inlet. When set this way, trackspeed is considered a global attribute and will overwrite any previously set track-specific trackspeed values.
If sent as a message to any non-left inlet, it sets the speed of the track that corresponds to the inlet. If a trackspeed value is subsequently set globally (see above), all track-specific values are overwritten.
transport [symbol]
Sets the transport name. The default setting is "internal", which is the global transport. This attribute can only be set globally, and does not apply to individual tracks.
Common Box Attributes
annotation [symbol]
Sets the text that will be displayed in the Clue window when the user moves the mouse over the object.
background [int] (default: 0)
Adds or removes the object from the patcher's background layer.
adds the object to the background layer, removes it. Objects in the background layer are shown behind all objects in the default foreground layer.color [4 floats]
Sets the color for the object box outline.
fontface [int]
Sets the type style used by the object. The options are:
plain
bold
italic
bold italic
Possible values:
0 = 'regular'
1 = 'bold'
2 = 'italic'
3 = 'bold italic'
fontname [symbol]
Sets the object's font.
fontsize [float]
Sets the object's font size (in points).
Possible values:
'8'
'9'
'10'
'11'
'12'
'13'
'14'
'16'
'18'
'20'
'24'
'30'
'36'
'48'
'64'
'72'
hidden [int] (default: 0)
Toggles whether an object is hidden when the patcher is locked.
hint [symbol]
Sets the text that will be displayed in as a pop-up hint when the user moves the mouse over the object in a locked patcher.
ignoreclick [int] (default: 0)
Toggles whether an object ignores mouse clicks in a locked patcher.
jspainterfile [symbol]
JS Painter File
patching_rect [4 floats] (default: 0. 0. 100. 0.)
Sets the position and size of the object in the patcher window.
position [2 floats]
Sets the object's x and y position in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its size unchanged.
presentation [int] (default: 0)
Sets whether an object belongs to the patcher's presentation.
presentation_rect [4 floats] (default: 0. 0. 0. 0.)
Sets the x and y position and width and height of the object in the patcher's presentation, leaving its patching position unchanged.
rect [4 floats]
Sets the x and y position and width and height of the object in both patching and presentation modes (if the object belongs to its patcher's presentation).
size [2 floats]
Sets the object's width and height in both patching and presentation modes (if the object belongs to its patcher's presentation), leaving its position unchanged.
textcolor [4 floats]
Sets the color for the object's text in RGBA format.
textjustification [int]
Sets the justification for the object's text.
Possible values:
0 = 'left'
1 = 'center'
2 = 'right'
varname [symbol]
Sets the patcher's scripting name, which can be used to address the object by name in pattr, scripting messages to thispatcher, and the js object.
Messages
bang
int
Arguments
float
Arguments
list
Arguments
anything
Arguments
Although mtr can record individual bytes of MIDI messages received from midiin, it stores each byte with a separate delta time, and does not format the MIDI messages the way seq does. If you want to record complete MIDI messages and edit them later, seq is better suited for the task. On the other hand, mtr is perfectly suited for recording sequences of numbers, lists, or symbols from virtually any object in Max: specialized MIDI objects such as notein or pgmin, user interface objects such as number box, slider, and dial, or any other object.
In order for a file to be read into mtr for playback, it must be in the proper format. An mtr multi-track sequence can even be typed in a text file, provided it adheres to the format. The contents of the different tracks are listed in order in an mtr file, and the format of each track is as follows. Note that a semicolon ( ) ends each line.
Line 1: (Track in which to store subsequent data)
Line 2, etc.: Last line: (End of this track's data)
addevent
Arguments
clear
Arguments
In other inlets: Erases the track that corresponds to the inlet.
cleareventat
Arguments
definelengthandstop
Arguments
In other inlets: Stops and sets the length of the track that corresponds to the inlet.
delay
Arguments
In other inlets: Sets the initial delta time of the track that corresponds to the inlet.
deleteeventat
Arguments
dictionary
Arguments
dump
, when sent to any inlet offirst
Arguments
info
mute
Arguments
In other inlets: Mutes the track that corresponds to the inlet.
next
Arguments
In other inlets: Outputs the next message stored on the track that corresponds to the inlet.
play
Arguments
In other inlets: Plays back all messages on the track that corresponds to the inlet. When the message is sent to specific track inlets you can give it two optional arguments: number of iterations and timescale. 100 is the original timescale. The message "play 3 200" will play the track three times, at twice the speed.
playat
Arguments
In other inlets: Starts playback of all messages on the track that corresponds to the inlet. Playback stars at a specific point, which is specified in a normalized range from 0-1.
playatms
Arguments
In other inlets: Starts playback of all messages on the track that corresponds to the inlet. Playback stars at a specific point, which is specified in milliseconds.
read
Arguments
In other inlets: Opens a file containing only the track that corresponds to the inlet.
record
Arguments
In other inlets: Begins recording messages on the track that corresponds to the inlet.
rewind
Arguments
In other inlets: Returns the pointer to the beginning of the track that corresponds to the inlet.
stop
Arguments
In other inlets: Stops the track that corresponds to the inlet.
timescale
Arguments
In other inlets: Sets the timescale for the track that corresponds to the inlet.
touch
Arguments
This message is for individual track inlets. To enable/disable touch automation recording on multiple tracks at once, use the and messages, which are sent to the left inlet of mtr.
touchdisable
Arguments
touchenable
Arguments
unmute
Arguments
In other inlets: Unmutes the track that corresponds to the inlet.
write
Arguments
In other inlets: Writes a file containing only the track that corresponds to the inlet.
writejson
In other inlets: Writes a file, in JSON format, containing only the track that corresponds to the inlet.
Output
anything
Out all track outlets: When a
When a message is received in the leftmost inlet, the next message in each track is sent out its corresponding outlet. The word , received in the inlet of an individual track, sends out the next message in that track.
list
Out left outlet: Whenever a value is sent out in response to a
message, the track number, delta time, and absolute-time of that value are sent out the left outlet as a three-item list.See Also
Name | Description |
---|---|
MIDI | MIDI |
multislider | Display data as sliders or a scrolling display |
seq | Sequencer for recording and playing MIDI data |
rslider | Display or change a range of numbers |
slider | Move a slider to output values |