How to use DaVinci Resolve's DCTLs to automate repetitive tasks

Using DCTLs And Expanding Resolve’s Functionality

February 6, 2019

Do you perform repetitive tasks on a regular basis when color correcting or finishing? Then learn how to use DCTLs to automate those tasks!


Learning A ‘Hidden Tool’ To Customize DaVinci Resolve

If you watched my previous insights on AutoHotKey and Python scripting, it’s obvious that I love expanding the functionality of my tools to better suit my needs and workflow.

In general, if I find myself doing something repetitive, labor-intensive, inconvenient or in any way non-creative, I try to make a tool, shortcut, or workflow to automate it.

In fact, I would rather spend a full day writing a script to automate a repetitive task – then spend a single hour toiling through that task. I’m always on the lookout for cool ways to enhance my workflow, so I can spend more time focusing on being creative, and less time focusing on tools.

DCTL: Better than a LUT, not quite a plug-in

DCTL stands for “DaVinci Colorspace Transform Language”. It is a Resolve-specific implementation of the Academy’s Colorspace Transform Language, used to program custom color space transforms and it forms the foundation of the math behind ACES.

DCTLs can be used in the node tree just like LUTs. But unlike a LUT they don’t hard clip. You maintain 32-bit floating-point processing using them.

To me, the real power of the DCTL is in the OpenFX panel – DCTLs can be created to expose properties for the colorist to adjust. They work like a plug-in but are much easier to write.

Using DCTL To Make Custom Tools

I’ve used DCTL to build a few useful little custom utilities. If you’re a Mixing Light Premium member, you can download them in this Insight, in the Additional Downloads section under the video.

In this video, you learn how to get started with DCTLs, and how to install and use them. You also learn how to use the 3 DCTL tools I built and included with this Insight, which are:

  • A letterbox overlay with much more functionality than the built-in tools in Resolve.
  • A customizable title-safe generator that can dial in any aspect ration you desire.
  • blanking-error detector/visualizer with custom controls.

And since DCTLs are plain-text – feel free to break open my code and use it as a starting point to learn from, or to customize them to your own needs!



Member Content

Sorry... the rest of this content is for members only. You'll need to login or sign up to continue (we hope you do!).

Membership options
Member Login

Additional Downloads

Sorry... downloads are available for Premium Members only.

Become a Premium Member


Homepage Forums Using DCTLs And Expanding Resolve’s Functionality

Viewing 19 reply threads

    • Virgil T

      This is amazing, Joey! Can DCTL be used for creating a tool to control highlights, by using the multiply method? If so, I would definitely tinker with this.

    • Joey D’Anna

      Thanks! Not 100% sure what you mean by the multiply method – what is that?

    • Fabrizio P

      very useful… Thank you for sharing….

    • Willian Aleman

      Thanks a lot for the great insight. I have read a lot about DCTL trying to wrap my head around it.

      I hope there would be a Part 2, step by step insight, that takes us to the process of the basic programing of the syntax that takes to build the DCTL.
      Again, thanks for the amazing insight.

    • Marc Wielage

      The customizable Safe Action/Title generator is very much appreciated — I’ve been asking for this in Resolve for years and years.

    • Jeffrey S

      Blanking error detection is genius. Been wanting this feature forever.

    • Joey D’Anna

      yea its made life way better for me on a few docs recently.

    • Scott Stacy

      Brilliant, Joey. The blanking error detection is awesome.

    • Jonny E

      Joey – this is so great and really exciting to see a new way to customise and extend the power of Resolve. Keep up the great work!

    • Jaemie M

      OMG! I’ve put off watching this one for some reason. But that blanking thing is someone I was thinking of coding up in python or something! This will save some QC fails when you miss them, and even the QC house misses them! You are a life saver! Thanks Joey!

    • Jaemie M

      It would be awesome if this were to be automated to then add a marker to the timeline where blanking issues occur. Either way, very valuble tool. Thanks again!

    • Chris B

      Help! The DCTL is not showing up in my OFX (restarted resolve and computer twice) and when I use as a LUT i get the error: Error Processing Davinci CTL

      Anyone else have this issue?

    • Seth Goldin

      Thanks for this, Joey.

      For the output blanking, I’ve been using Walter Volpatto’s method of a LUT, just so that you can pop it at the very end of the signal, on the Output LUT:

      Is there some way of getting your BLANKING DCTL at the very end of the signal, so that you can review a whole timeline for blanking problems all at once?

    • Joey D’Anna

      Hey Seth – Yup, I would just put it on a timeline node. You can also apply it as an output CTL under project settings -> color management

    • Joey D’Anna

      Hey everyone – It looks like the UI controls I used in the code aren’t compatible with Resolve 14.
      If you are still on 14 – you’ll have this same issue, so we’ve also posted a 14 compatible blanking DCTL that doesn’t have the customizable controls.

    • Ariel Wollinger

      DCTL: Better THAN a LUT,

    • Stefan Weßling

      What if I want to “morph” a node tree into an OFX plugin – would DCTL be a way to go?
      I found compound nodes but thats not exactly what I’d like to have.

    • Pat Inhofer

      IF you understand all the maths in the node tree then yes, you can do this. But not as easy as generating a LUT from a node tree, if that’s what you’re getting at?

    • Scott A

      Hey Joey! Thanks for sharing this. This was insanely helpful. It seems now in 17, BM added more customization for title safe guides (now you can specify percentages in the USER preferences) but I still need more control like you have in the DCTL. I noticed in your DCTL you only have outer and inner box controls which scale proportionately to the defined number. The problem with this is that the boxes should be proportionate to the aspect ratio. For instance 93% of 1920 is different than 93% of 1080 so you should get more pixels outside of the boxes on the left and right as opposed to the top and bottom (as reflected in resolve’s built in guides).
      Do you know how to go about adjusting your code to fix this? I would assume you would need to break up outer/inner box controls into top and bottom / left and right as well or rethink the equation a bit so it scales appropriately. I looked at your code but I am not the best with DCTL yet. It would be great to hear your thoughts on this, thanks!

    • marc f


      thank you for posting these. The Letterboxing one was especially of interest. As there is no way that resolve shows you that blanking is on, this was a nice simple solution. 😉

      However, after trying it out on a few projects, we found, and the client side QC found, that the Blanking, is not correct. I exported each of the common aspect ratios, against a guide chart we’ve used for years, and though it was an HD chart scaled to UHD, what really matters is the measurements i took in Photoshop, of the blanking area above and below, in each aspect ratio.

      the dctl is consistently off by 1 line on the bottom. (which i find strange, as your script divides by 2). Is this a v17 bug?

      I attached my photoshop file for you if you feel like flipping through the different aspects.

      • This reply was modified 4 months, 2 weeks ago by marc f.
      You must be logged in to view attached files.
Viewing 19 reply threads
  • You must be logged in to reply to this topic.

Hundreds of Free Tutorials

Get full access to our entire library of 900+ color tutorials for an entire week!

Start Your Free Trial