Jump to content

Timecode boxes: Ultrasync ONE vs Ambient NanoLockit vs Tentacle Sync


David Peterson

Recommended Posts

 

 

 

Started a new thread for this, as it is an area (timecode!) in which the sound department overlaps with the camera department thus it might interest the camera geeks here as well.

 

Because I got to try out the NanoLockit for the first time, was impressed with its feature in how it can autodetect FPS

 

But Ultrasync ONEs remain my favorite! And the Tentacle Syncs are still handy for DSLR/mirrorless shoots that lack a TC input on the camera.

Link to comment
Share on other sites

  • Premium Member

Here it is, for anyone who's interested!

void ltc_init_calibrated(uint32_t calibratedClockSpeed){
  ltc_bitperiod_longest = ((((calibratedClockSpeed/1000L)*1001L)/24L)/80L) + ltc_legal_period_wiggle;
  ltc_bitperiod_shortest = ((calibratedClockSpeed/60L)/160L) - ltc_legal_period_wiggle;
  ltc_fr_23976_min = (((calibratedClockSpeed/1000L)*1001L)/24L) - (uint32_t)ltc_frame_duration_wiggle;
  ltc_fr_23976_max = (((calibratedClockSpeed/1000L)*1001L)/24L) + (uint32_t)ltc_frame_duration_wiggle;
  ltc_fr_24_min = (calibratedClockSpeed/24) - ltc_frame_duration_wiggle;
  ltc_fr_24_max = (calibratedClockSpeed/24) + ltc_frame_duration_wiggle;
  ltc_fr_25_min = (calibratedClockSpeed/25) - ltc_frame_duration_wiggle;
  ltc_fr_25_max = (calibratedClockSpeed/25) + ltc_frame_duration_wiggle;
  ltc_fr_2997_min = (((calibratedClockSpeed/1000L)*1001L)/30L) - (uint32_t)ltc_frame_duration_wiggle;
  ltc_fr_2997_max = (((calibratedClockSpeed/1000L)*1001L)/30L) + (uint32_t)ltc_frame_duration_wiggle;
  ltc_fr_30_min = (calibratedClockSpeed/30) - ltc_frame_duration_wiggle;
  ltc_fr_30_max = (calibratedClockSpeed/30) + ltc_frame_duration_wiggle;
  ltc_fr_50_min = (calibratedClockSpeed/50) - ltc_frame_duration_wiggle;
  ltc_fr_50_max = (calibratedClockSpeed/50) + ltc_frame_duration_wiggle;
  ltc_fr_5994_min = (((calibratedClockSpeed/1000L)*1001L)/60L) - (uint32_t)ltc_frame_duration_wiggle;
  ltc_fr_5994_max = (((calibratedClockSpeed/1000L)*1001L)/60L) + (uint32_t)ltc_frame_duration_wiggle;
  ltc_fr_60_min = (calibratedClockSpeed/60) - ltc_frame_duration_wiggle;
  ltc_fr_60_max = (calibratedClockSpeed/60) + ltc_frame_duration_wiggle;
}

smpte_framerate ltc_get_framerate(uint32_t frame_duration){

  if(frame_duration > ltc_fr_23976_min && frame_duration < ltc_fr_23976_max){
    return R23976;
  } else if(frame_duration > ltc_fr_24_min && frame_duration < ltc_fr_24_max){
    return R24;
  } else if(frame_duration > ltc_fr_25_min && frame_duration < ltc_fr_25_max){
    return R25;
  } else if(frame_duration > ltc_fr_2997_min && frame_duration < ltc_fr_2997_max){
    return R2997;
  } else if(frame_duration > ltc_fr_30_min && frame_duration < ltc_fr_30_max){
    return R30;
  } else if(frame_duration > ltc_fr_50_min && frame_duration < ltc_fr_50_max){
    return R50;
  } else if(frame_duration > ltc_fr_5994_min && frame_duration < ltc_fr_5994_max){
    return R5994;
  } else if(frame_duration > ltc_fr_60_min && frame_duration < ltc_fr_60_max){
    return R60;
  } else {
    return UNKNOWN;
  }
}


  • Upvote 1
Link to comment
Share on other sites

  • 3 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...