Page 1 of 1

2-pop generator

PostPosted: Wed Jan 20, 2021 1:54 pm
by wkmpellucid
One thing missing from Resolve that was in Final Cut Pro 7, is the 2-pop countdown. It was a handy item to drop in the final edit, along with color bars, for delivery for broadcast. It is too bad that BlackMagic doesn't include something like that in their preset generators.

Re: 2-pop generator

PostPosted: Wed Jan 20, 2021 4:50 pm
by John Holt
Hello.

This is so far, I will add sound over the next few days and repost. However, you can create a 1Khz tone in Fairlight and add it to your timeline.

I have made this as a Fusion Comp, so just copy the code and paste it into the fusion graph. Then you can save it as a macro. I have assumed a 30fps timeline however in the next version I will get this to look up the timeline fps dynamically.

Once complete I'll turn it into a macro so you can just drag it in from the Effects Library.

Enjoy

Code: Select all
{
   Tools = ordered() {
      Rectangle1 = RectangleMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Center = Input {
               SourceOp = "XYPath1",
               Source = "Value",
            },
            Width = Input { Value = 1, },
            Height = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 82.5 } },
      },
      XYPath1 = XYPath {
         ShowKeyPoints = false,
         DrawMode = "ModifyOnly",
         CtrlWZoom = false,
         Inputs = {
            X = Input {
               Value = 0.5,
               Expression = "(-time/comp.RenderEnd)+.5",
            },
            Y = Input { Value = 0.5, },
         },
      },
      Background2 = Background {
         Inputs = {
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.525490196078431, },
            TopLeftGreen = Input { Value = 0.525490196078431, },
            TopLeftBlue = Input { Value = 0.525490196078431, },
            EffectMask = Input {
               SourceOp = "Rectangle1",
               Source = "Mask",
            }
         },
         ViewInfo = OperatorInfo { Pos = { 440, 115.5 } },
      },
      CoordinateSpace1 = CoordSpace {
         Inputs = {
            Shape = Input { Value = 1, },
            Input = Input {
               SourceOp = "Background2",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 148.5 } },
      },
      Background3 = Background {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Ellipse1_1",
               Source = "Mask",
            },
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 1, },
            TopLeftGreen = Input { Value = 1, },
            TopLeftBlue = Input { Value = 1, },
         },
         ViewInfo = OperatorInfo { Pos = { 660, 148.5 } },
      },
      Ellipse1_1 = EllipseMask {
         Inputs = {
            EffectMask = Input {
               SourceOp = "Ellipse1",
               Source = "Mask",
            },
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.0104, },
            Solid = Input { Value = 0, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input {
               Value = 0.327,
               Expression = "Height",
            },
            Height = Input { Value = 0.327, },
         },
         ViewInfo = OperatorInfo { Pos = { 660, 115.5 } },
      },
      Ellipse1 = EllipseMask {
         Inputs = {
            Filter = Input { Value = FuID { "Fast Gaussian" }, },
            BorderWidth = Input { Value = 0.0114, },
            Solid = Input { Value = 0, },
            MaskWidth = Input { Value = 1920, },
            MaskHeight = Input { Value = 1080, },
            PixelAspect = Input { Value = { 1, 1 }, },
            UseFrameFormatSettings = Input { Value = 1, },
            ClippingMode = Input { Value = FuID { "None" }, },
            Width = Input {
               Value = 0.412,
               Expression = "Height",
            },
            Height = Input { Value = 0.412, },
         },
         ViewInfo = OperatorInfo { Pos = { 660, 82.5 } },
      },
      Background5 = Background {
         Inputs = {
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftRed = Input { Value = 0.392156862745098, },
            TopLeftGreen = Input { Value = 0.392156862745098, },
            TopLeftBlue = Input { Value = 0.392156862745098, },
         },
         ViewInfo = OperatorInfo { Pos = { 165, 181.5 } },
      },
      Grid1 = ofx.com.blackmagicdesign.resolvefx.Grid {
         Inputs = {
            Source = Input {
               SourceOp = "Merge1",
               Source = "Output",
            },
            vernum = Input { Value = 2, },
            hornum = Input { Value = 2, },
            majorspace = Input { Value = 0, },
            lineprop = Input { Value = 1, },
            linecolorRed = Input { Value = 0, },
            linecolorGreen = Input { Value = 0, },
            linecolorBlue = Input { Value = 0, },
            horwidth = Input { Value = 0.01, },
            verwidth = Input { Value = 0.01, },
            majorwidth = Input { Value = 1, },
            tranform = Input { Value = 1, },
            pan = Input { Value = 0, },
            tilt = Input { Value = 0, },
            zoom = Input { Value = 1, },
            rotate = Input { Value = 0, },
            gridwidth = Input { Value = 1, },
            gridheight = Input { Value = 1, },
            ShearX = Input { Value = 0, },
            ShearY = Input { Value = 0, },
            pitch = Input { Value = 0, },
            yaw = Input { Value = 0, },
            blendGroup = Input { Value = 0, },
            blendIn = Input { Value = 1, },
            blend = Input { Value = 0, },
            ignoreContentShape = Input { Value = 0, },
            legacyIsProcessRGBOnly = Input { Value = 0, },
            refreshTrigger = Input { Value = 1, },
            resolvefxVersion = Input { Value = "1.0", },
         },
         ViewInfo = OperatorInfo { Pos = { 550, 214.5 } },
      },
      Merge1 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Merge4",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "CoordinateSpace1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 440, 214.5 } },
      },
      Merge4 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Background1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background5",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 165, 214.5 } },
      },
      Background1 = Background {
         Inputs = {
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            TopLeftAlpha = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 0, 214.5 } },
      },
      Merge3 = Merge {
         Inputs = {
            Background = Input {
               SourceOp = "Grid1",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Background3",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 660, 214.5 } },
      },
      Merge2 = Merge {
         CtrlWZoom = false,
         Inputs = {
            Background = Input {
               SourceOp = "Merge3",
               Source = "Output",
            },
            Foreground = Input {
               SourceOp = "Transform1",
               Source = "Output",
            },
            PerformDepthMerge = Input { Value = 0, },
         },
         ViewInfo = OperatorInfo { Pos = { 770, 214.5 } },
      },
      Transform1 = Transform {
         Inputs = {
            Input = Input {
               SourceOp = "Text1",
               Source = "Output",
            },
         },
         ViewInfo = OperatorInfo { Pos = { 770, 181.5 } },
      },
      Text1 = TextPlus {
         Inputs = {
            GlobalOut = Input { Value = 149, },
            Width = Input { Value = 1920, },
            Height = Input { Value = 1080, },
            UseFrameFormatSettings = Input { Value = 1, },
            ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
            Red1 = Input { Value = 0, },
            Green1 = Input { Value = 0, },
            Blue1 = Input { Value = 0, },
            StyledText = Input {
               Value = "0",
               Expression = "ceil((comp.RenderEnd-time)/30)",
            },
            Font = Input { Value = "Open Sans", },
            Style = Input { Value = "Bold", },
            Size = Input { Value = 0.5, },
            VerticalJustificationNew = Input { Value = 3, },
            HorizontalJustificationNew = Input { Value = 3, },
            ManualFontKerningPlacement = Input {
               Value = StyledText {
                  Array = {
                  },
                  Value = ""
               },
            },
         },
         ViewInfo = OperatorInfo { Pos = { 770, 148.5 } },
      }
   },
   ActiveTool = "Merge2"
}

Re: 2-pop generator

PostPosted: Wed Jan 20, 2021 7:22 pm
by wkmpellucid
Thank you.

Re: 2-pop generator

PostPosted: Wed Jan 20, 2021 8:50 pm
by John Holt
Hello

This is a .setting file which you place in your default title folder. You need to unzip the folder first.

FOR WINDOWS
C:/Program Files/Blackmagic Design/DaVinci Resolve/Fusion/Templates/Edit/Titles

FOR MAC OS
Library/Application/Support/Blackmagic Design/DaVinci Resolve/Fusion/Templates/Edit/Titles

Restart Davinci Resolve and the assets will be listed in the "Effects Library".

The 2 x 1khz Audio files are separate for you to put below the seconds in the "Title". The countdown is responsive, however, occasionally Resolve "Cache" plays up and you need to clear the cache to get the correct reading. The default length is 5 seconds, you can drag the countdown to any length.

I have set it to look up your timeline FPS so it will work at any frame rate and give you access to font controls. There's no point in having the styled text as it is an expression.

Once you have set up the countdown to your preferences you could render it out and just have it as stock footage.

https://drive.google.com/file/d/1dTIW07 ... sp=sharing

Hope it's okay.

John
Ps Here's the code if anyone wants to reverse engineer or improve on it.
Code: Select all
{
   Tools = ordered() {
      PopCountDown = MacroOperator {
         Inputs = ordered() {
            Input1 = InstanceInput {
               SourceOp = "CountDown",
               Source = "Font",
               ControlGroup = 1,
            },
            Input2 = InstanceInput {
               SourceOp = "CountDown",
               Source = "Style",
               ControlGroup = 1,
            },
            Input3 = InstanceInput {
               SourceOp = "CountDown",
               Source = "Red1Clone",
               Name = "Color",
               ControlGroup = 2,
               Default = 0,
            },
            Input4 = InstanceInput {
               SourceOp = "CountDown",
               Source = "Green1Clone",
               ControlGroup = 2,
               Default = 0,
            },
            Input5 = InstanceInput {
               SourceOp = "CountDown",
               Source = "Blue1Clone",
               ControlGroup = 2,
               Default = 0,
            },
            Input6 = InstanceInput {
               SourceOp = "CountDown",
               Source = "Alpha1Clone",
               ControlGroup = 2,
               Default = 1,
            },
            Input7 = InstanceInput {
               SourceOp = "CountDown",
               Source = "Size",
               Default = 0.5,
            },
         },
         Outputs = {
            Output1 = InstanceOutput {
               SourceOp = "XYPath1",
               Source = "Heading",
            },
            MainOutput1 = InstanceOutput {
               SourceOp = "Merge2",
               Source = "Output",
            }
         },
         ViewInfo = GroupInfo { Pos = { 0, 0 } },
         Tools = ordered() {
            CountDown = TextPlus {
               NameSet = true,
               Inputs = {
                  Width = Input { Value = 1920, },
                  Height = Input { Value = 1080, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                  Red1 = Input { Value = 0, },
                  Green1 = Input { Value = 0, },
                  Blue1 = Input { Value = 0, },
                  StyledText = Input {
                     Value = "4",
                     Expression = "ceil((comp.RenderEnd-time)/(comp:GetPrefs(\"Comp.FrameFormat.Rate\")))",
                  },
                  Font = Input { Value = "Open Sans", },
                  Style = Input { Value = "Bold", },
                  Size = Input { Value = 0.5, },
                  VerticalJustificationNew = Input { Value = 3, },
                  HorizontalJustificationNew = Input { Value = 3, },
                  ManualFontKerningPlacement = Input {
                     Value = StyledText {
                        Array = {
                        },
                        Value = ""
                     },
                  },
               },
               ViewInfo = OperatorInfo { Pos = { 770, 148.5 } },
            },
            Rectangle1 = RectangleMask {
               Inputs = {
                  Filter = Input { Value = FuID { "Fast Gaussian" }, },
                  MaskWidth = Input { Value = 1920, },
                  MaskHeight = Input { Value = 1080, },
                  PixelAspect = Input { Value = { 1, 1 }, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ClippingMode = Input { Value = FuID { "None" }, },
                  Center = Input {
                     SourceOp = "XYPath1",
                     Source = "Value",
                  },
                  Width = Input { Value = 1, },
                  Height = Input { Value = 1, },
               },
               ViewInfo = OperatorInfo { Pos = { 440, 115.5 } },
            },
            XYPath1 = XYPath {
               ShowKeyPoints = false,
               DrawMode = "ModifyOnly",
               CtrlWZoom = false,
               Inputs = {
                  X = Input {
                     Value = -0.426174496644295,
                     Expression = "(-time/comp.RenderEnd)+.5",
                  },
                  Y = Input { Value = 0.5, },
               },
            },
            Background2 = Background {
               Inputs = {
                  EffectMask = Input {
                     SourceOp = "Rectangle1",
                     Source = "Mask",
                  },
                  Width = Input { Value = 1920, },
                  Height = Input { Value = 1080, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                  TopLeftRed = Input { Value = 0.5254901960784, },
                  TopLeftGreen = Input { Value = 0.5254901960784, },
                  TopLeftBlue = Input { Value = 0.5254901960784, },
               },
               ViewInfo = OperatorInfo { Pos = { 440, 148.5 } },
            },
            BGColor = Background {
               NameSet = true,
               Inputs = {
                  Width = Input { Value = 1920, },
                  Height = Input { Value = 1080, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                  TopLeftRed = Input { Value = 0.3921568627451, },
                  TopLeftGreen = Input { Value = 0.3921568627451, },
                  TopLeftBlue = Input { Value = 0.3921568627451, },
               },
               ViewInfo = OperatorInfo { Pos = { 220, 181.5 } },
            },
            CoordinateSpace1 = CoordSpace {
               Inputs = {
                  Shape = Input { Value = 1, },
                  Input = Input {
                     SourceOp = "Background2",
                     Source = "Output",
                  },
               },
               ViewInfo = OperatorInfo { Pos = { 440, 181.5 } },
            },
            Merge4 = Merge {
               Inputs = {
                  Background = Input {
                     SourceOp = "BG",
                     Source = "Output",
                  },
                  Foreground = Input {
                     SourceOp = "BGColor",
                     Source = "Output",
                  },
                  PerformDepthMerge = Input { Value = 0, },
               },
               ViewInfo = OperatorInfo { Pos = { 220, 214.5 } },
            },
            Merge1 = Merge {
               Inputs = {
                  Background = Input {
                     SourceOp = "Merge4",
                     Source = "Output",
                  },
                  Foreground = Input {
                     SourceOp = "CoordinateSpace1",
                     Source = "Output",
                  },
                  PerformDepthMerge = Input { Value = 0, },
               },
               ViewInfo = OperatorInfo { Pos = { 440, 214.5 } },
            },
            Grid1 = ofx.com.blackmagicdesign.resolvefx.Grid {
               Inputs = {
                  Source = Input {
                     SourceOp = "Merge1",
                     Source = "Output",
                  },
                  vernum = Input { Value = 2, },
                  hornum = Input { Value = 2, },
                  majorspace = Input { Value = 0, },
                  lineprop = Input { Value = 1, },
                  linecolorRed = Input { Value = 0, },
                  linecolorGreen = Input { Value = 0, },
                  linecolorBlue = Input { Value = 0, },
                  horwidth = Input { Value = 0.01, },
                  verwidth = Input { Value = 0.01, },
                  majorwidth = Input { Value = 1, },
                  tranform = Input { Value = 1, },
                  pan = Input { Value = 0, },
                  tilt = Input { Value = 0, },
                  zoom = Input { Value = 1, },
                  rotate = Input { Value = 0, },
                  gridwidth = Input { Value = 1, },
                  gridheight = Input { Value = 1, },
                  ShearX = Input { Value = 0, },
                  ShearY = Input { Value = 0, },
                  pitch = Input { Value = 0, },
                  yaw = Input { Value = 0, },
                  blendGroup = Input { Value = 0, },
                  blendIn = Input { Value = 1, },
                  blend = Input { Value = 0, },
                  ignoreContentShape = Input { Value = 0, },
                  legacyIsProcessRGBOnly = Input { Value = 0, },
                  refreshTrigger = Input { Value = 1, },
                  resolvefxVersion = Input { Value = "1.0", },
               },
               ViewInfo = OperatorInfo { Pos = { 550, 214.5 } },
            },
            BG = Background {
               NameSet = true,
               Inputs = {
                  Width = Input { Value = 1920, },
                  Height = Input { Value = 1080, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                  TopLeftAlpha = Input { Value = 0, },
               },
               ViewInfo = OperatorInfo { Pos = { -110, 214.5 } },
            },
            Background3 = Background {
               Inputs = {
                  EffectMask = Input {
                     SourceOp = "Ellipse1_1",
                     Source = "Mask",
                  },
                  Width = Input { Value = 1920, },
                  Height = Input { Value = 1080, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
                  TopLeftRed = Input { Value = 1, },
                  TopLeftGreen = Input { Value = 1, },
                  TopLeftBlue = Input { Value = 1, },
               },
               ViewInfo = OperatorInfo { Pos = { 660, 181.5 } },
            },
            Merge3 = Merge {
               Inputs = {
                  Background = Input {
                     SourceOp = "Grid1",
                     Source = "Output",
                  },
                  Foreground = Input {
                     SourceOp = "Background3",
                     Source = "Output",
                  },
                  PerformDepthMerge = Input { Value = 0, },
               },
               ViewInfo = OperatorInfo { Pos = { 660, 214.5 } },
            },
            Ellipse1 = EllipseMask {
               Inputs = {
                  Filter = Input { Value = FuID { "Fast Gaussian" }, },
                  BorderWidth = Input { Value = 0.0114, },
                  Solid = Input { Value = 0, },
                  MaskWidth = Input { Value = 1920, },
                  MaskHeight = Input { Value = 1080, },
                  PixelAspect = Input { Value = { 1, 1 }, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ClippingMode = Input { Value = FuID { "None" }, },
                  Width = Input {
                     Value = 0.412,
                     Expression = "Height",
                  },
                  Height = Input { Value = 0.412, },
               },
               ViewInfo = OperatorInfo { Pos = { 660, 115.5 } },
            },
            Ellipse1_1 = EllipseMask {
               Inputs = {
                  EffectMask = Input {
                     SourceOp = "Ellipse1",
                     Source = "Mask",
                  },
                  Filter = Input { Value = FuID { "Fast Gaussian" }, },
                  BorderWidth = Input { Value = 0.0104, },
                  Solid = Input { Value = 0, },
                  MaskWidth = Input { Value = 1920, },
                  MaskHeight = Input { Value = 1080, },
                  PixelAspect = Input { Value = { 1, 1 }, },
                  UseFrameFormatSettings = Input { Value = 1, },
                  ClippingMode = Input { Value = FuID { "None" }, },
                  Width = Input {
                     Value = 0.327,
                     Expression = "Height",
                  },
                  Height = Input { Value = 0.327, },
               },
               ViewInfo = OperatorInfo { Pos = { 660, 148.5 } },
            },
            Merge2 = Merge {
               Inputs = {
                  Background = Input {
                     SourceOp = "Merge3",
                     Source = "Output",
                  },
                  Foreground = Input {
                     SourceOp = "Transform1",
                     Source = "Output",
                  },
                  PerformDepthMerge = Input { Value = 0, },
               },
               ViewInfo = OperatorInfo { Pos = { 770, 214.5 } },
            },
            Transform1 = Transform {
               CtrlWZoom = false,
               Inputs = {
                  Input = Input {
                     SourceOp = "CountDown",
                     Source = "Output",
                  },
               },
               ViewInfo = OperatorInfo { Pos = { 770, 181.5 } },
            }
         },
      }
   },
   ActiveTool = "PopCountDown"
}