Just discovered the sync mode for TouchIn and Out.
Two things came up:
It seems like the channel names are not transported correctly, bur remembered when first running in non-sync mode.
I can only have on TouchInCHOP with sync enabled in a project, the previous one stopping to work, but I have no problem having to projects runnign with each one TouchIn in SyncMode.
Using synced mode on Touch IN in the same app instance creates issues, the node takes over that is placed last time in network. I think it may relate to socket binding somehow though not sure. This is easy to resolve with selects. Using synced ports mode on on the sending touch out and having multiple apps with touch in synced mode on works for me fine. But switching between synced ports on and off on the touch out node in some cases result in socket binding unknown error. all of this through local host single computer.
I dont get the same naming issues… simply copying the touch in node several times makes the last one receive the channels with correct names… switching between synced port on and off in some cases makes channels not update… but this is inconsistent… .cant really pinpoint yet.
ah ok, im getting the naming issue too when dropping new touch in node. if copied it just takes over with correct channel names… deleting one by one in creation order gets allways the previously placed touch in node active… synced ports off doesnt have this issue. though i suspect that using synced port on may suggest to keep using only one node par project and distribute via selects from there… similar to sync in node
and maybe one last finding: when the touch in node is copied the channel names are correct, toggleing bypass off than on results in losing the names as if placing a new node.
Thanks for the report. I’ve fixed this so the channel names should be sent across when a new client connects.
It’s expected only one node can read from a specific ‘port’ when using synced mode. You can use multiple nodes using different ports though.
Note that underneath, there is only one actual network port being used, and we are packaging up all of the TouchOut data into a single set of data sent at the end of the frame. The receiver (which also only connects to a single real port), then splits up the data based on the ‘port’ parameter, but which used just as a tag on the data in this case.
Hi Malcolm,
thanks for the fix.
The docs only note that one syncedCHOP can send data. For the inCHOP this behaviour ist not dscribed in the docs and I do not see a reason why this should be the case. This also contradicts the fact that I can run one ore more of these syncedCHOP in differrent processes, which works fine.
I’ll update the docs. The reason this is the case is because there is only a single network connection per process, so each node picks up the data for it’s own ‘port’. Different processes means different copies of the data.
@malcolm@snaut thanks for looking into this, and for the fix. I have been absent for a bit, now back and installed the latest build.
I think there may be more to this. I encountered the same issue but in different context that I was able to test before:
I am now testing to send timecode channels from win 11 TD process (2023.12.120) to mac Sequoia to drive audio playback on a mac machine. Synced port mode i was not able to get running at all, but during attmepts by switching between modes the same disappearence of channels names happened as before.
Messaging and Streaming protocol modes work, however connection does not get established reliabley, need to change port to different and back, or toggle active on/off and eventually it gets up and running.
Synced port does not work.
Multicast work, however playack of the audio on the mac end based on the transmitted timer channels gets glitchy.
both computer run only a single TD process, and only a single touch out on win machine and a single touch in on the mac laptop
hw: macbook pro m4 max, mac os sequoia
lenovo legion7 rtx 4090, win 11
I have more extensive Touch in / out problems in Chop, Dat, Top worlds.
TOP:
I am getting glitchy behaviour and occasional and incosistent loss of connection. Toggling active on/off sometimes help, but not all ways. Copy , Delete, Paste helps in most cases but not all. Restart of whole app in 99% of cases but sometimes port seems to get stuck.
Has been present via local host, and on two different test configs among 3 computers. ( win 10 pro , win 10 ntsc, rtx 4080, rtx ada 6000 )
Video:
DAT:
I am getting invalid message received on a DAT touch in in streaming mode. I dont get the error in messaging or in multicast
example sender and receiver here:
CHOP:
Connection breaks ( similar to TOP problem ) needs toggle active on off to return. Streaming mode. Synced ports dont work across machines ( is this expected ? )
I have the above problems apparent on localhost, and in two separate systems as stated above…
Would be also nice to properly understand how these nodes work, what are the best most reliable environments for them to operate steadily on a switched network as well as on localhost.
Update:
With the TOP Touch In/Out I eventually was able to have connection working between 3 servers over 10gbs lan.
First the connection to one server came online with slight delay and quite decent quality set to 30FPS Hap on sending side.
Sender sends to two destinations.
Connection to second server lagged and stayed still… investigating network load showed low 100-200 MBps speed.
I left the setup to run for 12 hours. By the morning the second connection went up to 5GBps and the second down to also 5Gbps - meaning the max out bandwith got evened out.
how is bandwith allocation managed with these nodes?
I have to share that during wider functionality and load testings there have been some wierd issues with the second server ( the one that lagged behind in bandwith… ) also networking is suspected to not operate folly predictable - IT is set to investigate.
Felt this is valuable though… Also echoes the question and wish to really understand how these nodes work in each category… bandwith management. and most suitable network architecture.
Transmitted pixel data is big. though at 10gbps was able to get to a fairly acceptable full res result. ( full res on the first line is approx 22000 x 1900, on the second 7600x7600px )
( my experience w NDi is that its not really going above 1GBps network utilization… )
All this stream scenario is not the main use, but in a parallel fasion is equally important. I seek all info / knowledge to advise IT and make relevant architectural changes if needed while also have a better or possibly full understanding how the nodes actually work to make best use of them
So in the same files you are posted, I noticed you are using port 11 for both the UDP and TCP connection. Also I would not suggest using such low ports, as they are often used by the OS. You should be using ports up in the 50000-65000 range. The samples also start up with errors for missing expression targets (due to missing OP.shortcut). Are you able to post cleaner examples and steps to reproduce?
Offhand I’d assume packets are getting sent to the wrong port possibly though…
For Synced Ports, you need to set an environment variable for them to connect to the correct source machine, if they are on a different machine. Are you doing that? It’s in the documentation here:
For your Touch In/Out TOP question, we don’t do any bandwidth management. Each node tries to send it’s data at the requested rate, and the OS will slow us down if it determines the connection isn’t able to keep up.
The glitch you are seeing is very odd though. That seems like something else, since Touch In/Out TOP is using TCP/IP, it really shouldn’t be possible for it to have that kind of corruption. It’s not like ST2110 where packets can get lost.