Controlling parameters — Natron 2.5.0 documentation

# Controlling parameters

## Accessing a node’s parameters:

As for nodes, parameters are auto-declared objects. You can access an existing parameter of a node by its script-name:

    app.BlurCImg1.size

Note that you can also access a parameter with the `getParam(scriptName)` function:

    param = app.BlurCImg1.getParam("size")

but you should not ever need it because Natron pre-declared all variables for you.

The script-name of a parameter is visible in the user interface when hovering the parameter in the settings panel with the mouse. This is the name in bold:

## Parameters type:

Each parameter has a type to represent internally different data-types, here is a list of all existing parameters:

> - IntParam to store 1-dimensional integers

> - Int2DParam to store 2-dimensional integers

> - Int3DParam to store 3-dimensional integers

> - DoubleParam to store 1-dimensional floating point

> - Double2DParam to store 2-dimensional floating point

> - Double3DParam to store 3-dimensional floating point

> - BooleanParam to store 1-dimensional boolean (checkbox)

> - ButtonParam to add a push-button

> - ChoiceParam a 1-dimensional drop-down (combobox)

> - StringParam to store a 1-dimensional string

> - FileParam to specify an input-file

> - OutputFileParam to specify an output-file param

> - PathParam to specify a path to a single or multiple directories

> - ParametricParam to store N-dimensional parametric curves

> - GroupParam to graphically gather parameters under a group

> - PageParam to store parameters into a page

## Retrieving a parameter’s value:

Since each underlying type is different for parameters, each sub-class has its own version of the functions.

To get the value of the parameter at the timeline’s current time, call the `get()` or `getValue()` function.

If the parameter is animated and you want to retrieve its value at a specific time on the timeline, you would use the `get(frame)` or `getValueAtTime(frame,dimension)` function.

Note that when animated and the given frame time is not a time at which a keyframe exists, Natron will interpolate the value of the parameter between surrounding keyframes with the interpolation filter selected (by default it is smooth).

## Modifying a parameter’s value:

You would set the parameter value by calling the `set(value)` or `setValue(value)` function. If the parameter is animated (= has 1 or more keyframe) then calling this function would create (or modify) a keyframe at the timeline’s current time.

To add a new keyframe the `set(value,frame)` or `setValueAtTime(value,frame,dimension)` function can be used.

To remove a keyframe you can use the `deleteValueAtTime(frame,dimension)` function. If you want to remove all the animation on the parameter at a given dimension, use the `removeAnimation(dimension)` function.

Warning

Note that the dimension is a 0-based index referring to the dimension on which to operate. For instance a Double2DParam has 2 dimensions x and y. To set a value on x you would use dimension = 0, to set a value on y you would use dimension = 1.

## Controlling other properties of parameters:

See the documentation for the Param class for a detailed explanation of other properties and how they affect the parameter.

## Creating new parameters:

In Natron, the user has the possibility to add new parameters, called User parameters. They are pretty much the same than the parameters defined by the underlying OpenFX plug-in itself.

In the Python API, to create a new user parameter, you would need to call one of the `createXParam(name,label,...)` of the Effect class.

These parameters can have their default values and properties changed as explained in the documentation page of the Param class.

To remove a user created parameter you would need to call the `removeParam(param)` function of the Effect class.

Warning

Only user parameters can be removed. Removing parameters defined by the OpenFX plug-in will not work.