nDisplay + multi pc + OSC = how?


We did a multi pc nDisplay shooting past days and i ran into some issues regarding input.
I was quickly running out of keyboard keys to map to custom functions at runtime, so i decided to dust off my “Lemur”(custom OSC iOS app) and make a interface for OSC and our needs.

The OSC and custom blueprints where working without any problem in the master, but nothing got passed onto the slave pc, what then made the whole idea worthless at time of shooting.

I was under the impression that input data can be send through the master via nDisplay when **ue4_input_sync_policy **is set to 1, but that doesnt seam to be working in my case.

Did anyone work with osc + multi pc setup in nDisplay and got it working?

On a side note, can we have a collective VP sub forum to have an easier overview of problems and solutions and maybe even share blueprints? VP is becoming quite a big deal since we cant have real events any more right now and it seams every event company is jumping the bandwagon.

Thank you

Kind Regards :slight_smile:

Hey trabtown! Thanks for reaching out to us. I can ask around about “osc + multi pc setup in nDisplay” to try and shed some light on your question.

I’ve also reached out to some folks about your request to creating a new forum. Thanks again for your feedback, and I’ll let you know if I hear anything.

That sounds good.

A central “Virtual Production” place for questions and guides would be awesome. I know there is good work done on Facebook by Matt and co, but not everyone is on FB anymore.

Thank you.

I totally agree with the need for a VP forum category, +1 ! It’s nice to see your reply @echo_four as I have seen a number of questions asked throughout the forum that have gone unanswered in this newish VP use case category, and my guess is not having a place for people to come means they have to guess at where best to post those questions, so perhaps they are getting missed since the right patrons and devs aren’t keeping an eye on all the places in the forums.

per your question @trabtown my assumption is since OSC is not a “standard” HID input sort of protocol, (its simply UDP network messages), it isn’t really included in the input sync features of nDisplay.

I’ve done a lot of work with OSC in other applications for large scale multi-output sort of things (mostly using TouchDesigner) and have had to get commands to multiple nodes all the time. I usually set my system up to have a master know that when it is in master mode it will relay commands ( either via more OSC or internally more robust protocols) and then the slaves, when in slave mode will adjust their listening to listen for commands from the master instead of an external controller. I think a similar thing could be done with nDisplay.

Alternatively you could look into the multi-cast options for Lemur and try to pick everything up on a multi-cast setup, though this could be error prone depending on your network.

Probably the most robust is to use the built in nDisplay sync components, which I am not super familiar with yet. I’ve only tried using them to keep actor and SM comp transforms in sync, but I believe I read in the documentation that you can keep other parameters in sync between nodes for the actors you want to synchronize.


@trabtown I assume that the ue4_input_sync_policy only applies to native input like keyboard strokes or mouse, but not to the OSC events.

I think you could pass the message along by either:

a) leveraging BP replication somehow as archo_p said above.

b) using Cluster Events on the master node to pass the message along to the slaves. Basically you’d set up your master node so that when it detects an incoming OSC message, you send a Cluster Event to the network. Then, on all your nodes, you respond to that cluster event by calling the function you want to get triggered. That way you’ll get frame-accurate results, where all your nodes trigger that command in the exact same frame of the game loop. You can read more about cluster events here:…nts/index.html

I wouldn’t try doing a multicast to more than one cluster node, as it’s likely that different nodes will receive the signal in different frames.

Thanks for your two answers :slight_smile:

You are most likely right with the “standard” events in sync policy and i also suspected that, but i hoped it was just me overlooking something.

I did try at some point to have multiple outputs in the Lemur app and had multiple osc server BP that had the different master/slave ip’s, so in “theories” that should have worked, but didn’t. I did however give me a input into the slaves when running in the editor itself on the slave. More to test i guess.

When i did set up “key” driven commands, they worked perfectly across all instances.

The stuff i wanted to do at this time wasn’t really anything that needs to be frame accurate, although it would be good to know if it is. What i tried to get going via osc was “light globes”, color changes and stuff like this, so when the DP wants some quick add-ons(what could be bespoke before the shoot) i can have them at hand with a unified BP.
Such a fun tool :slight_smile:

I will definitely look into the cluster events, cheers for that hint.

Thanks again, that was good food for thought.


Have you solved this? I am also having your same problem