bg

Sending OSC data to two applications on one computer

Problem description

Our customer offered us the following interesting case.

I would like to send OSC commands to two OSC Pilot applications running on the same computer. However, whichever application is started first appears to be the only one receiving any data. Is there any way to send to two different ports?

I've tried sending to my broadcast address and setting both applications to listen on the same port, but that didn't work.

Just wondering what the best workflow is for this, as I'm sure there is a way!

OSC Pilot features

It supports sending and receiving OSC (Open Sound Control) data:

  • Send OSC data to control other applications and devices that support OSC.
  • Control visual applications such as TouchDesigner, vvvv, Resolume, VDMX, Notch etc.
  • Receive OSC data from external sources to drive the content currently shown in the UI.

Limitations

There is a limitation with OSC and the UDP protocol. When a program starts listening or "binds" to a port, other application cannot listen on the same port. At the same time, multiple applications can send OSC/UDP packets to the same port.

How to split OSD (Open Sound Data) data

Our software works a workaround for this problem. It will listen on one port and rebroadcast to two different ports. So OSC/Pilot sends packets to TCP Splitter on port xxx1, and TCP Splitter rebroadcasts data onto xxx2 and xxx3 in real-time. Have your receiver programs listen to ports xxx2 and xxx3. The setting you want in TCP splitter is UDP split. Of course, you can select any port numbers in your setup.

UDP incoming port settings
Figure 1: UDP incoming port settings

UDP outgoing streams configuration
Figure 2: UDP outgoing streams configuration