ideoforms / AbletonOSC

Control Ableton Live 11 via Open Sound Control (OSC)
MIT License
406 stars 68 forks source link

Different response times #106

Closed Coupe70 closed 9 months ago

Coupe70 commented 9 months ago

I noticed very different response times depending on the category a OSC call belongs to.

TRACK /track/get/color 19-120ms /track/get/name 19-120ms

CLIP SLOT /clip_slot/get/has_clip 205-310ms /clip_slot/get/has_stop_button 205-310ms

CLIP /clip/get/name 19-120ms /clip/get/color 19-120ms

This was all measured with Live and TouchOSC on the same laptop (127.0.0.1) and the time ranges can be reproduced. It can make a huge difference when reading a complete Live set (2x-15x slower). With a small 3x3 set it is already very noticeable. I don't know if this is maybe on Lives side, but maybe you want to check if something is wrong in your clip_slot code.

ideoforms commented 9 months ago

Very curious, and I can't see any obvious cause... I'll do some timestamping later and see if I can find anything. Thanks for spotting!

Coupe70 commented 9 months ago

Hm, I just got much better response times... I took a break and turned off my laptop, so now everything is started from zero. Maybe something was wrong on my side.

ideoforms commented 9 months ago

I just ran some timestamps from the command line, and got consistent results when querying the above properties, in the region of 80-150ms (which is to be expected given Live's 100ms tick time).

/live/track/get/name: mean = 0.099, min = 0.083, max = 0.107
/live/track/get/color: mean = 0.101, min = 0.094, max = 0.112

/live/clip_slot/get/has_clip: mean = 0.101, min = 0.084, max = 0.145
/live/clip_slot/get/has_stop_button: mean = 0.100, min = 0.094, max = 0.106

/live/clip/get/name: mean = 0.099, min = 0.076, max = 0.113
/live/clip/get/color: mean = 0.101, min = 0.094, max = 0.111

So I think it was probably a measurement issue. Glad it seems to have resolved itself on your side. One question - have you looked at using /live/song/get/track_data for batch property queries? Or is parsing this kind of query beyond what is achievable with TouchOSC?