Multi-cast or client sync

Hello Jean-Emmanuel,

Even though I’m French, I’ll be writing in English to be more useful for people.

Man, amazing work! Really astonishing how you can maintain it by yourself. Bravo!

I used your app to create a generic AV installation control running 24/7. Normally, we develop it per installation basis for visual experience reasons, but this time around your modular approach and a galor of widgets won handsdown (once again, bravo!).

Right now, I’m in kind of dilemma and I can’t understand why it doesn’t work the way you made it too (I perused discourse and docs).

Basically, it’s about multi-client and syncing.

Normally we use multi-cast for that. For example, 224.0.0.0 with different ports for send and receive.
This time around, it doesn’t work. it sends on this adress alright, but when I send it back (from Touchdesigner) on this address with the osc port, it never gets anything. In the console it curses at me that it cannot bind to 0.0.0.0 . It still launchs the app though.

My problem is multiclient sync. When an iPad is up, I used custom module to get sessionOpened event send an osc so Touchdesigner could send back the full current state for all the controls. But if I open another client on an iPhone let’s say, whatever I do on the pad doesn’t show on the iPhone.

My workaround would be on sessionOpened to send on the multi-cast address the states of the widgets and control on the Touchdesigner side if value changes, should I action anything or not.

Hopefully my explanation is not too confusing.

My goal is simple:

  1. when you launch an app on a client, get the current state of the controls (/SET? /STATE/SET?)
  2. whatever I do, sync those controls across clients

I seem not to get smth and I’m banging my head around :slight_smile:

Thanks for your enlightening

Best
sh

Thanks a lot for your feedback, I really appreciate it !

About multi-cast, I must confess I’ve never looked into it, the osc engine at work here exposes some options that might make it possible to implement in open stage control : https://github.com/colinbdclark/osc.js/#udp-in-nodejs

Now on the multiclient sync matter, before getting any further : are you talking about syncing multiple clients connected to the same o-s-c server ? This is actually the default behavior : widgets that have the same [address, preargs & targets] are synced across clients as long as their targets property doesn’t contain a null value (and if bypass is false). Currently this fails if the widget’s [address, preargs or targets] depends on its own value, it’s been added to the todo recently : https://github.com/jean-emmanuel/open-stage-control/issues/587. Also if you’re not using the latest version, this feature was broken from v0.41.4 to v0.44.0.

By the way, just out of curiosity, feel free to post a screenshot of what you did with o-s-c :wink:

Hey man,

Thanks for your thorough reply. I appreciate your time and effort, especially in those late hours.

I’m quite new in O-S-C (very clever!) and not coming from web-based background (this is where I draw a line), the learning curve is quite steep. You created a very flexible and deep tool and it will take me some time to get a handle on it. I’m doing my best to promote it over Touchdesigner/visual art community where I myself learnt of its existence.

Btw, is there a way to contact you in pm? I may have a proposal to you.and I haven’t found a non-public way to this (mine is shandor@ovvo.eu). - on pourra effacer ça plus tard…

So, I knew I left smth out and I thought I saw in your callbacks.js function oscsync that must take care of that. The target should not be null is intriguing. it means I need to add an ip:port target pair for each widget? Can it be itself? like localhost? right now I just leave it blank as well as preargs that I don’t really use. I do all the parsing and logic on the Touchdesigner side.

I’m definetely running all your latest and greatest: it shows 0.49 is available, but not on your git, btw :slight_smile:

Of course I will post screens, I need to style it better though and it’s wip for now.

thx
sh

The target should not be null is intriguing. it means I need to add an ip:port target pair for each widget?

I meant an explicit null token in the target property (one would hardly do that without knowing what it does), leaving it empy is fine and should let the sync happen.

I’m definetely running all your latest and greatest: it shows 0.49 is available, but not on your git, btw :slight_smile:

You may have downloaded a build test then, you’d better downgrade to the latest official release (v0.48.8) until the next version is ready to use (aaalmost there).

Could you create a minimal session (say, with just one fader), open it with two clients and check whether they are synced or not ?

Btw, is there a way to contact you in pm

I’ve sent you an email.

Thank you for your reply. I’m actually running 0.48.7, it was just btw in the upper corner that says 0.49

No sync as you can see from 2 clients and my phone says the same.

So, for now it is that.

How would you set it up to work the following way:

                            Touchdesigner
                               /\    |
                                |    |
                                |    |
                                |   \/
                            O-S-C Server
                                | |
       -------------------------------------------------------
       |  |                     |  |                     |  |            ...
       \/ /\                    \/ /\                   \/ /\
   client 1                client 2            client 3         client N

Thnx

As it turned out, the multiclient sync was not working properly when the targets was empty. The fix is in git and will be included in next version.

1 Like

Wah, amazing! Can’t wait to try it out. I think it can resolve a lot of my problems.

Wahhhhh!

0.49 is looking HOT HOT HOT!

Sync - check! Now it works flowlessly without me doing anything.
Multi-cast - blackmagic.

So far, so supergood!

Thank you!