live.path left/middle outlet usage?
I understand what the left and right outlet of live.path do. However, Im confused as to their usage? Can anyone explain some common scenarios in which each outlet would be suitable?
From what I can see, the middle outlet follows the linked parameter around in the set, so if you move around the device, live.path remembers which device it is connected to.
Basic left outlet use: Any Live object that won’t change. Often this includes [live.path live_set], or [live.path live_set view].
Basic left outlet use: Any time you want to manually trigger output of the [live.path] object by using its inlet. This is NOT considered a notification — (your code triggered the output from [live.path], not a change in Live). Therefore your code can continue on after exiting the left outlet of [live.path], and eventually lead to a change in the Live set. (…and a [deferlow] would not be needed.)
Basic middle outlet use: Any time you want your [live.path] object to output automatically when a change in Live is detected. In this way the [live.path] object acts exactly like an observer. (An observer of IDs.) If a change in Live is "observed" by a [live.path], output is automatically sent out its middle outlet. This is a notification and cannot lead to a change in the Live set (at least not without a [deferlow] somewhere).
Basic middle outlet use: [live.path live_set view selected_track] would send the ID of the newly selected track out its middle outlet automatically whenever the ID of the currently selected track changes. (You could then, for example, go on to send the ID into the right inlet of a [live.observer arm] object and the value (0 or 1) will be sent out its left outlet.)
Very Important: If you provide an argument to the [live.path] object, as in the previous paragraph, **the object will fire at loadbang** using that argument. If you don’t want the [live.path] object to fire at loadbang, or if you want it to fire at live.thisdevice time (…and not have it firing twice), use [live.path] without arguments and send it a message such as ["path live_set etc etc"].
Basic middle outlet use: [live.path live_set view detail_clip] is another popular usage.
There is also a very illustrative example in the M4L documentation regarding inserted tracks. (I know you have already seen that Newtfish — I mean, you’re Newtfish! — but others should regard it as an excellent example.)
Also note that [live.path] objects trigger output automatically, and in in-determinant order, at loadbang! …or is it at [live.device] time??? hmm…not sure.
I hope this helps.
I hope its error-free (I’m an intermediate at best).
Excellent summary Miguel3d, thanks so much :)