OSC Timecode data stutters and sends uneven intervals

Hi all,

We’re trying to add frame countdown to our the timecode interface in the client, but we are encountering a weird behaviour. We have a .net app that receives all the osc info and displays it.

Our config file has several channels, but we don’t really use them all at the same time, there are that many to allow flexibility within the client app, which assumes that certain channels are used for certain tasks (preview, OSD, multiview, etc) so that’s why there needs to be to many channels.

All the tests are only playing one video in channel 1 or 2, or both together, with nothing else going on in Caspar.

With this many channels configured (13):
Channel 1 always has 0.02 intervals so the current frame and remaining tc is always smooth and even.

3,06
3,06
3,08
3,08
3,1
3,1
3,12
3,12
3,14
3,14
3,16
3,16
3,18
3,18
3,2

Any other channel skips frames unevenly and randomly.

3
3
3,04
3,04
3,08
3,08
3,24
3,24
3,3
3,3
3,32
3,32
3,34
3,34
3,52
3,52
3,6
3,6
3,62
3,62
3,68
3,68
3,7
3,7

With only 2 channels configured in Caspar, both have OSC timecode in intervals of 0.02.

The weird thing is that Channel 1 always works flawlessly, no matter the config.

Here’s the config file with 13 channels:

<configuration>
  <log-level>info</log-level>
  <paths>
    <media-path>C:\APP\MEDIA\</media-path>
    <log-path>C:\APP\LOG\</log-path>
    <data-path>C:\APP\data\</data-path>
    <font-path>font/</font-path>
    <template-path>C:\APP\TEMPLATES\</template-path>
  </paths>
  <lock-clear-phrase>secret</lock-clear-phrase>
  <channels>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
    <channel>
      <video-mode>1080i5000</video-mode>
      <consumers />
    </channel>
  </channels>
  <controllers>
    <tcp>
      <port>5250</port>
      <protocol>AMCP</protocol>
    </tcp>
    <tcp>
      <port>5251</port>
      <protocol>AMCP</protocol>
    </tcp>    
  </controllers>
  <amcp>
    <media-server>
      <host>localhost</host>
      <port>8000</port>
    </media-server>
  </amcp>
  <osc>
    <default-port>6250</default-port>
    <disable-send-to-amcp-clients>false</disable-send-to-amcp-clients>
    <predefined-clients>
      <predefined-client>
        <address>127.0.0.1</address>
        <port>6251</port>
      </predefined-client>
  </osc>
</configuration>

Here’s a video of the difference between the two channels. It’s not an awful sight, but comparing with how smooth channel 1 runs, it’s a bit of a shame.

We did many tests to rule out errors in how we handle OSC messages in the .net app and tried different builds of Caspar with the same result.

Any ideas?

Thanks!