Announcement: Max For Live workshop at Ircam.

Learn about building and using Max for Live devices.
emmanuel_2
Posts: 127
Joined: Fri Sep 11, 2009 7:54 am
Location: Paris
Contact:

Announcement: Max For Live workshop at Ircam.

Post by emmanuel_2 » Tue Jan 26, 2010 4:10 pm

Hey,

I'll be teaching (in French…) a workshop at Ircam soon. There's some seats available, more info over here.

Hope to see you there.
ej

technog0d
Posts: 265
Joined: Mon May 26, 2008 1:14 pm
Location: Philly
Contact:

Re: Announcement: Max For Live workshop at Ircam.

Post by technog0d » Tue Jan 26, 2010 5:44 pm

ej,

I would love to get to Ircam sometime. It sounds like such an interesting establishment. I will have to plan a trip to France. Good luck with your class.

Regards,

Mike
Websites:
Max For Live Community site:
http://www.max4live.info
http://www.noisemakers.info

Controllers: Lemur, Ohm 64, Monome, APC40, Launchpad
Daw: Live 8 Suite
Audio Interfaces: Apogee Ensemble & Duet
Monitors: JBL LSR 4300

julienb
Posts: 1815
Joined: Sat Oct 29, 2005 1:15 pm
Location: France
Contact:

Re: Announcement: Max For Live workshop at Ircam.

Post by julienb » Tue Jan 26, 2010 8:18 pm

emmanuel,
quel est le programme ?
Julien Bayle
____________________________________________________________________________________________________

art + teaching/consulting
ableton certified trainer
____________________________________________________________________________________________________

emmanuel_2
Posts: 127
Joined: Fri Sep 11, 2009 7:54 am
Location: Paris
Contact:

Re: Announcement: Max For Live workshop at Ircam.

Post by emmanuel_2 » Wed Jan 27, 2010 2:48 pm

julienb wrote:emmanuel,
quel est le programme ?
Something like that.
ej

broc
Posts: 1151
Joined: Mon Jul 26, 2004 8:37 am

Re: Announcement: Max For Live workshop at Ircam.

Post by broc » Thu Jan 28, 2010 10:12 am

emmanuel,

in your program overview I've noticed the item "threading: why send/receive is bad".
Can you recommend any other method for data communication between M4L devices?

julienb
Posts: 1815
Joined: Sat Oct 29, 2005 1:15 pm
Location: France
Contact:

Re: Announcement: Max For Live workshop at Ircam.

Post by julienb » Thu Jan 28, 2010 10:20 am

broc wrote:emmanuel,

in your program overview I've noticed the item "threading: why send/receive is bad".
Can you recommend any other method for data communication between M4L devices?
not using multiple device and directly link the sub-system... :?
Julien Bayle
____________________________________________________________________________________________________

art + teaching/consulting
ableton certified trainer
____________________________________________________________________________________________________

hoffman2k
Posts: 14718
Joined: Tue Jun 15, 2004 6:40 pm
Location: Belgium
Contact:

Re: Announcement: Max For Live workshop at Ircam.

Post by hoffman2k » Thu Jan 28, 2010 10:34 am

broc wrote:emmanuel,

in your program overview I've noticed the item "threading: why send/receive is bad".
Can you recommend any other method for data communication between M4L devices?
I concur. If we're all using a bad method, it would be nice to get a heads up.
Could you please elaborate a little on that Emmanuel?

julienb
Posts: 1815
Joined: Sat Oct 29, 2005 1:15 pm
Location: France
Contact:

Re: Announcement: Max For Live workshop at Ircam.

Post by julienb » Thu Jan 28, 2010 10:44 am

hoffman2k wrote:
broc wrote:emmanuel,

in your program overview I've noticed the item "threading: why send/receive is bad".
Can you recommend any other method for data communication between M4L devices?
I concur. If we're all using a bad method, it would be nice to get a heads up.
Could you please elaborate a little on that Emmanuel?
+1 (of course)
Julien Bayle
____________________________________________________________________________________________________

art + teaching/consulting
ableton certified trainer
____________________________________________________________________________________________________

josquin2000
Posts: 36
Joined: Wed Mar 16, 2005 5:24 pm
Location: Deep in 'it'.

Re: Announcement: Max For Live workshop at Ircam.

Post by josquin2000 » Thu Jan 28, 2010 2:31 pm

As I understand the issue:
Send and Receive are quite useful constructs to use while programming, because
units that were not designed together can be 'connected remotely' by send/receive pair.
But this happens at a execution time cost in Max/Msp/Jitter & runtime, and in MaxForLive,
it introduces an unpredictable latency to the values being 'sent': an audible one, much too often.

To 'directly connect' to another "sub" piece of maxforlive, it will have to be in the same master patcher,
and the values being 'sent' be communicated by audio / data connect 'lines'. not very convenient, eh? But no ruinous latency in control! Welll....

there is another, more complex method of remote communication, one that underlies the LiveAPI...it admits only of extremely short networking latencies (ever), definitely not audible, and can handle all sorts of data, up to and including complex spectral data structures: it is called OSC . Do check it out.
With it you can control any control value in the running Live App, and if you could program it, even control other applications, even other applications running on other machines on a shared network.
MaxForLive provides a lotta ways to get and work with the 'namespace' & the cool thing is that if you program your patcher's data objects with recognizable 'scripting names' I think they'll probably be available to controlled with the MaxAPI...check it out...and you didn't even have to do much beyond naming stuff! Think of Live as a single very complex ur-instrument that can both contain & call a large set of internal instruments, and provide (most of ) the 'control points' of said instruments in a unified hierarchical 'control space' or 'namespace'. This 'namespace' will change every time you add or remove a new live device or track. Thus the LiveAPI idea of the Live 'path': it's a 'path' to the place in the namespace hierarchy where the device control value you're interested in lives, in the running Live Application. It is way too cool.

As for remote audio connections, uh, this a DAW we're in, and it has a type of audio channel called "auxiliary", if I'm not mistaken. Could be useful in routing audio around? They often come in different sizes (#chans).

Good Luck!

just my tuppence.
YourMileageMayVary.
L&K,
J2K

emmanuel_2
Posts: 127
Joined: Fri Sep 11, 2009 7:54 am
Location: Paris
Contact:

Re: Announcement: Max For Live workshop at Ircam.

Post by emmanuel_2 » Thu Jan 28, 2010 4:17 pm

julienb wrote:
broc wrote:emmanuel,

in your program overview I've noticed the item "threading: why send/receive is bad".
Can you recommend any other method for data communication between M4L devices?
not using multiple device and directly link the sub-system... :?
That's exactly it ;-)
ej

julienb
Posts: 1815
Joined: Sat Oct 29, 2005 1:15 pm
Location: France
Contact:

Re: Announcement: Max For Live workshop at Ircam.

Post by julienb » Thu Jan 28, 2010 4:23 pm

emmanuel_2 wrote:
julienb wrote:
broc wrote:emmanuel,

in your program overview I've noticed the item "threading: why send/receive is bad".
Can you recommend any other method for data communication between M4L devices?
not using multiple device and directly link the sub-system... :?
That's exactly it ;-)
:lol:
Julien Bayle
____________________________________________________________________________________________________

art + teaching/consulting
ableton certified trainer
____________________________________________________________________________________________________

hoffman2k
Posts: 14718
Joined: Tue Jun 15, 2004 6:40 pm
Location: Belgium
Contact:

Re: Announcement: Max For Live workshop at Ircam.

Post by hoffman2k » Thu Jan 28, 2010 4:40 pm

josquin2000 wrote:As I understand the issue:
Send and Receive are quite useful constructs to use while programming, because
units that were not designed together can be 'connected remotely' by send/receive pair.
But this happens at a execution time cost in Max/Msp/Jitter & runtime, and in MaxForLive,
it introduces an unpredictable latency to the values being 'sent': an audible one, much too often.

To 'directly connect' to another "sub" piece of maxforlive, it will have to be in the same master patcher,
and the values being 'sent' be communicated by audio / data connect 'lines'. not very convenient, eh? But no ruinous latency in control! Welll....

there is another, more complex method of remote communication, one that underlies the LiveAPI...it admits only of extremely short networking latencies (ever), definitely not audible, and can handle all sorts of data, up to and including complex spectral data structures: it is called OSC . Do check it out.
With it you can control any control value in the running Live App, and if you could program it, even control other applications, even other applications running on other machines on a shared network.
MaxForLive provides a lotta ways to get and work with the 'namespace' & the cool thing is that if you program your patcher's data objects with recognizable 'scripting names' I think they'll probably be available to controlled with the MaxAPI...check it out...and you didn't even have to do much beyond naming stuff! Think of Live as a single very complex ur-instrument that can both contain & call a large set of internal instruments, and provide (most of ) the 'control points' of said instruments in a unified hierarchical 'control space' or 'namespace'. This 'namespace' will change every time you add or remove a new live device or track. Thus the LiveAPI idea of the Live 'path': it's a 'path' to the place in the namespace hierarchy where the device control value you're interested in lives, in the running Live Application. It is way too cool.

As for remote audio connections, uh, this a DAW we're in, and it has a type of audio channel called "auxiliary", if I'm not mistaken. Could be useful in routing audio around? They often come in different sizes (#chans).

Good Luck!

just my tuppence.
YourMileageMayVary.
L&K,
J2K
Thanks for the advice. Does this mean the unpredictable latency even happens in devices which aren't remotely connected. E.g. Devices that use Send/Receive for internal communication.

And in regards to your comment about OSC, are you talking about using UDPsend/receive instead of send/receive for all intents and purposes?

LOFA
Posts: 3365
Joined: Mon Jan 10, 2005 7:10 pm

Re: Announcement: Max For Live workshop at Ircam.

Post by LOFA » Thu Jan 28, 2010 5:16 pm

I am also very interested in hearing the same information that Hoffman2K is asking. Currently I am running a complex set that relies on sends. If replacing the sends with osc modules would improve the timing I would surely implement it.

In fact, I am open to any advice on how to improve timing when using tens or hundreds of communicating pairs of objects between Live and M4L.

emmanuel_2
Posts: 127
Joined: Fri Sep 11, 2009 7:54 am
Location: Paris
Contact:

Re: Announcement: Max For Live workshop at Ircam.

Post by emmanuel_2 » Thu Jan 28, 2010 5:21 pm

Let me explain a little bit more. Each MfL device potentially live its life in a different thread than the others, and you don't have any control over it (Live does the threading repartition/optimization). Furthermore, each device use its own scheduler (synched to the Live transport). Using send/receive within the device is totally fine because it will stay in the same thread, but if you use send/receive across devices the timing is just unpredictable. OSC won't do a better job, updreceive has to resynchronize what it received with the scheduler of the device its into.
ej

LOFA
Posts: 3365
Joined: Mon Jan 10, 2005 7:10 pm

Re: Announcement: Max For Live workshop at Ircam.

Post by LOFA » Thu Jan 28, 2010 5:59 pm

emmanuel_2 wrote:Let me explain a little bit more. Each MfL device potentially live its life in a different thread than the others, and you don't have any control over it (Live does the threading repartition/optimization). Furthermore, each device use its own scheduler (synched to the Live transport). Using send/receive within the device is totally fine because it will stay in the same thread, but if you use send/receive across devices the timing is just unpredictable. OSC won't do a better job, updreceive has to resynchronize what it received with the scheduler of the device its into.
Great! Thank you for clearing this up- very, extremely helpful!!!

Post Reply