A newer version of Max is available. Click here to access the latest version of the Max documentation

play~

Position-based sample playback

Description

Use the play~ object as a playback interface for a buffer~. that plays back samples based on an offset within the buffer. It is typically used with the line~ object, but can be used with any signal that generates a changing position value in milliseconds. The groove~ object provides another option for sample playback.

Examples

play~ is usually driven by a ramp signal from line~, but other signals create novel effects

Arguments

buffer-name [symbol]

The first argument names the buffer~ object whose sample memory is used by play~ for playback.

number-of-output-channels [int]

Optional

Specifies the number of output channels: 1, 2, or 4. The default number of channels is one. If the buffer~ being played has fewer channels than the number of play~ output channels, the extra channels output a zero signal. If the buffer~ has more channels, channels are mixed.

Attributes

interptime [float]

Sets the crossfade time for loop interpolation. If the value given is greater than the total loop duration, the total loop duration is used. The default crossfade duration is 50 milliseconds.

loop [int]

In loop mode, when playback reaches the end time (see start message) it continues again from the start time. Loop mode is off by default.

loopinterp [int]

Enables interpolation around the start and end points for a loop. By default, loop interpolation is off.

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. background 1 adds the object to the background layer, background 0 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.

patching_rect [4 floats] (default: 0. 0. 100. 0.)

Sets the position and size of the object in the patcher window.

position [2 floats]

g/s(set)

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]

g/s(set)

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]

g/s(set)

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 [float]

Sets the color for the object's text in RGBA format.

textjustification [int]

Text Justification

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

int

Arguments

start/stop-playback [int]
In left inlet: 1 (or non-zero value) begins playback of the currently set buffer~ object, and 0 stops playback.

(mouse)

Double-clicking on buffer~ opens a display window where you can view the contents of the buffer~. object that the play~ object references.

pause

In left inlet: Sending the message pause causes the playback to pause at its current playback position. Playback can be restarted with the resume message.

set

Arguments

buffer-name [symbol]
The word set, followed by the name of a buffer~ object, uses that buffer~ for playback.

start

Arguments

start-time [list]
end-time [list]
duration [list]
In left inlet: The word start, followed by a start time in milliseconds, moves to the specified position in the current buffer~ and begins playing. After the start time, an optional end time can be specified, which will set a point for playback to stop. A third optional value can be provided to set the playback duration from the start point to the end point. When used without arguments, start will begin at the beginning of the buffer~ and play to the end (equivalent to using the integer value 1 to start playback). The start time may be greater than the end time, in order to play a segment of the buffer in reverse.

stop

In left inlet: The stop message causes the playback to stop at its current playback position. (This is equivalent to sending the integer value 0 to stop playback).

resume

In left inlet: If playback was paused, playback resumes from the paused point in the audio buffer.

signal

In left inlet: The position (in milliseconds) into the sample memory of a buffer~ object from which to play. If the signal is increasing over time, play~ will play the sample forward. If it is decreasing, play~ will play the sample backward. If it remains the same, play~ outputs the same sample repeatedly, which is equivalent to a DC offset of the sample value.

The direction and speed of playback of a play~ object can be set using integer messages provided to the play~ object at signal rate. Typically, this is done using a line~ object.

Integer messages come in pairs - an initial integer that specifies the position in the buffer (in milliseconds) at which to start, followed by a second pair of numbers that specify the ending position in the buffer and the time (in milliseconds) over which the playback will occur. These messages are often sent as messages separated by a comma. Here are some examples:

0, 2000 2000- Starting at the beginning of the buffer, play 2 seconds of audio at normal speed
500, 0 500- Play the first half second of a buffer backwards at normal speed.
0, 1000 500- Play the first second of a buffer at double speed (i.e. transpose it up an octave)

Output

signal

Sample output read from a buffer~. If play~ has two or four output channels, the left outlet's signal contains the left channel of the sample, and the other outlets' signals contain the samples from the additional channels.

See Also

Name Description
2d.wave~ Two-dimensional wavetable
buffer~ Store audio samples
buffir~ buffer-based FIR filter
groove~ Variable-rate looping sample playback
record~ Record sound into a buffer
wave~ Variable size wavetable
index~ Read from a buffer~ with no interpolation
MSP Sampling Tutorial 1: Recording and Playback MSP Sampling Tutorial 1: Recording and Playback