Live's Looper device uses the wrong class designation

ShelLuser's icon

Hi gang!

First things first: this isn't my discovery, I'm just the messenger. u/El_Vikingo_ on Reddit noticed something weird with Max for Live and Looper. He asked about it which I noticed and I can reproduce his issue. Better yet: I think I found a possible cause as well.

The LOM says that Looper uses the LooperDevice class, and because of that we should have access to specific properties such as record_length_index and record_length_list (which is what Vikingo was after). The only problem: these properties aren't accessible.

I checked out the Looper device using my ancient LOM.Navigator device when I noticed something peculiar: if I check the classname of the device on a track then Looper comes back as Looper, nothing weird here. But if I check the canonical parent of a device parameter then it tells me that Looper is designated as Device, but that should have been LooperDevice. When I check the compressor for example then this "inner classname" does come back as CompressorDevice.

So to be more specific:

live_set tracks 1 devices 0 => classname is Looper.

live_set tracks 1 devices 0 parameters 0 canonical_parent => classname is Device, should be LooperDevice.

As mentioned, if I try this with a compressor or shifter, even a Max for Live device, then they all behave in the right manner. As such I suspect a bug here.

Here's my patch showing proof of concept... just dump a couple of devices onto a track (make sure to include Looper ;)), add a M4l audio effect and use this code. Then just click the button and watch the output.

I'm using Live 12 suite, with the latest Max 8.6.2.

Thanks for reading, hope you guys can give some feedback.

Max Patch
Copy patch and select New From Clipboard in Max.

Rivanni's icon

I can reproduce in Live 12.0.2 Suite. However, Live 12.0.5 beta returns LooperDevice.

get record_length_index and get record_length_index are also available in the beta, as mentioned in the 12.0.5b1 release notes:

  • The following Looper properties are now available in the Max for Live API:

    • record

    • overdub

    • play

    • stop

    • clear

    • undo

    • half_speed/double_speed

    • half_length/double_length

    • record_length_index/record_length_list

    • overdub_after_record

    • loop_length

    • tempo

ShelLuser's icon

@Rivanni

I can reproduce in Live 12.0.2 Suite. However, Live 12.0.5 beta returns LooperDevice.

Thanks for the feedback, much appreciated. And an interesting find too! So for all we know the bug could also be with the documentation which might got prematurely released.

I guess Vikingo will have to wait for the next Live update then ;)