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

grab

Intercept the output of another object

Description

grab can send a message and extract the result from the receiving object.
Note: The grab object cannot be used to communicate from a send to a receive between Max for Live devices.

Arguments

Name Type Opt Description
number-of-outlets int opt The first argument sets the number of outlets, in addition to the right outlet. If there is no argument, grab has 1 additional outlet.
receive-name symbol opt If a symbol is present as a second argument, the message received in the inlet is sent to all receive objects named by the symbol, instead of being sent out the right outlet. In this case the rightmost outlet, which would normally send out the incoming message if no second argument were present, will not exist.

Messages

bang Performs the same function as anything.
int input [int]
Performs the same function as anything.
float input [float]
Performs the same function as anything.
list input [list]
Performs the same function as anything.
anything input [list]
The message is sent out the right outlet, or if a second argument is present the message is sent to receive objects named by the second argument.
set input [symbol]
If a second argument has been typed into grab specifying the name of a receive object, then the word set, followed by a symbol, specifies the name of a (different) receive object via which grab can grab messages from remote objects.

Information for box attributes common to all objects

Output

anything: Out right outlet: The right outlet should be connected only to the leftmost inlet of other objects. The message received in the inlet is sent out to the left inlet of all objects connected to the right outlet. Whatever goes out their outlets, however, is then intercepted by grab.

Out other outlets: Whatever would normally be sent out the outlets of the objects connected to the right outlet, is sent out the grab object's outlets instead, in response to a message from grab. Whatever would be sent out the leftmost outlet of the other objects is sent out the leftmost outlet of grab, and so on. Note: Only the output that is sent out the outlets of other objects can be intercepted by grab. Other types of output, such as transmission of MIDI messages or printing in the Max window, cannot be intercepted by grab. Also, grab does not intercept the output of timing objects such as seq, metro, and clocker.

Connecting the right outlet of grab to the inlet of a patcher object, however, will not grab the output of the subpatch. It will simply grab the output of the inlet object inside the subpatch, which is exactly the same as its input. However, grab can communicate with remote objects via a receive object named as the second argument to grab.

If a second argument is present, the message received in the inlet is sent directly to receive objects named by the argument instead of being sent out the right outlet. Any such receive objects should be connected only to the leftmost inlet of other objects. The rightmost outlet, which would otherwise be used to grab the output of other objects, does not appear if the second argument is used.

Note that if grab is connected to other objects remotely via numerous receive objects of the same name, the order in which grab communicates with those other objects is undefined, so the order in which their output will be sent out of the grab object's other outlets is unpredictable.

Examples

Get an object's output by 'grabbing' it before it comes out the outlet... grab can communicate with any receive object specified by a set message

See Also

Name Description
preset Store and recall the settings of other objects
table Store and graphically edit an array of numbers