falkTX / Carla

Audio plugin host
https://kx.studio/carla
1.62k stars 146 forks source link

Feature request : Bidirectional OSC messages #884

Open BrelanBoogie opened 5 years ago

BrelanBoogie commented 5 years ago

When connected with the netsend object in puredata, Zynaddsubfx sends back OSC data if a parameter is modified in its UI. It looks like all communications happen on the same port. There is no need to use a netreceive object connected to another port. When using carla with carla-control it seems that OSC messages are bidirectional through TCP protocol. I’m trying to achieve the same kind of communication between carla and puredata. I succeed on controlling carla with an UDP connection from puredata, but carla doesn’t send any feedback when modifying a plugin parameter in the plugin window. I can't find a way to control carla in TCP. So I have two questions : Is there a way to achieve a bidirectional OSC communication between puredata and carla like between puredata and Zyn? Or is it possible to have a port in Carla for outgoing OSC messages when a plugin parameter is modified? Thanks!!

falkTX commented 5 years ago

You can use the /register command to make carla send all backend changes back to you. There is no documentation at all for this, it is an internal thing used for carla-control.

Try with the develop branch, you will see it sends you a lot of stuff (patchbay, transport, plugin details, etc) You need to pass 1 single parameter to this, which is the osc address of where carla should send messages to.

Let me know if that works for you.

PS: you can see the list of available commands and args within carla-code I guess. Start here https://github.com/falkTX/Carla/blob/de8e0d3bd9cc4ab76cbea9f53352c92d89266ea2/source/frontend/carla_control.py#L333

falkTX commented 5 years ago

oh the /register might need a TCP and UDP port connection (2 calls with 2 osc urls), not sure... for TCP carla sends the important stuff for UDP carla sends the info that can be ignored sometimes (transport info, peak values)