Triggering abelton live clips from juce plugin?

Is there a way to trigger abelton clips from a juce plugin and getting information about a clips length?

I tried to send such OSC messages https://github.com/ideoforms/LiveOSC/blob/master/OSCAPI.txt with the juce::OSCSender… but Abelton 11 seems to not notice my messages… maybe the port is wrong, I tried 9000, 9001,8000 and 8001? Or do I need to activate anything in abelotn first?

Does anyone have experience with host communication?

As far as I know, this is not possible in Juce.

I am felling chatty and perhaps my long winded response here my in fact help other developers from falling down a rabbit hole (which I fell down head first) by making assumptions of what one can actually utilize OSC for in the real world.

Disclaimer:
This is of course my opinion, fell free to disregard anything am saying here.

Specific to Ableton:
There is the Ableton Connection Kit.
Look at the OSC Devices and OSC send. I believe that not of this will help you though

Sad to say, but not many DAW’s actually support OSC natively.
The only 2 DAWS I am aware of that support OSC natively are Reaper And Ardour.

DAW developers have never taken OSC seriously. This is due to the ‘nature of the beast’. OSC runs on top of IP (Internet Protocol) and UDP (User datagram protocol, Which runs on top of IP). This is analogous to standard internet protocols such as a simple web browser talking to a web server:
– Browser->Web Server is HTTP/TCP/IP, Hyper Text Transfer Protocol over Transmission Control Protocol over Internet Protocol).
– OSC Client → OSC Server is OSC/UDP/IP, Open Sound Control over User Datagram Protocol over Internet Protocol.

In order for a DAW to support OSC it must act as two separate things:
1.) An OSC ‘Server’ (the code stack that sends OSC commands)
2.) An OSC ‘Client’ (the code stack that receives OSC commands).

On the other side the ‘application’ (your plugin or application in this instance) must also support the same ‘Server’ and ‘Client’ stacks in order to send (from its client) and receive (from its server)
commands from the DAW.

In the end ‘internet protocols’ are not real time, and never will be. It is assumed that the reader understands the basics of an HTTP:// request and response in the browser world. This is not real time. It is asynchronous…

To make matters worse for OSC, it does not specify a request /.response strategy, but rather is simply blindly sending commands. As an example I have a plugin that is able to operate the transport controls in Reaper via OSC. To tell reaper to stop playing my OSC client (juce::OSCSender) sends /stop 0 to Reaper. How does my plugin know that Reaper actually received the /stop 0 and has in fact stopped? My OSC client code does not really know as the OSC specifications does not specify a response to this command (Like. OK,Done!). So in the OSC world the only way to know the transport has stopped is by waiting to see a notification from Reaper on my plugins OSC server (juce::OSCReceiver) that it has stopped playing (I.e., a /stop 0).

I will also note that since OSC never became viable there is not such thing as a specification for DAWS as to how to support it, Case in point to stop the transport in a DAW:
– Reaper: /stop 0
– Ardour: /ardour/transport_stop

In the end since OSC is not real time it is not suitable for use when the DAW is playing (rendering). On the other hand it did look like it may be promising if one needed / wanted to control the DAW from within a plugin.

In the end the OSC specification originated in 2002. This was the era when a lot of developers where sitting around saying to themselves ‘Hey, the internet is here, what can I do with it?’.

In closing, all one really needs to do is look at the OSC organization server
opensoundcontrol.org
in order to understand that it is probably a non-starter in the DAW world.

I am aware of things like TouchOSC, DawOSC which look like fun ‘toys’ to myself. Perhaps they have real world applications is a DJ or someone like that is utilizing a DAW.

If you’re looking to do an Ableton-specific plug-in, with that degree of interaction with the host, then Max for Live is probably the way to go.

1 Like

Thank you for sharing your opinion on OSC ! I was wondering, why abelton is not providing a default OSC interface, but probably what you are saying makes sense…
I would have expected OSC to be near real time, when used in a LAN situation… But maybe you are right and it is only for toys. Does anyone know, how fast the communication is in LAN?

Do you know, whether sending and receiving MIDI messages is faster than OSC? In case it is real time, a solution could be to create a midi control surface in abelton to trigger clips?