# Synchronize inputs

Receives data from multiple asynchronous sources and outputs the received objects in synchronization with the trigger input.

The synchronization tool can be used to combine unrelated data from sources such as digital inputs, data inputs and image sources to a single processing pipeline.

Another use case for the tool is to set the same input parameter value in many tools synchronously. For example, the branch of a begin branch and its opposite, end branch, should always be changed synchronously. If the branch is controlled asynchronously by setting a parameter from a UI, for example, a synchronization tool with a branch input parameter can be used. The synchronized branch output can then be used to set the parameter value in both tools synchronously.

## Inputs

trigger
A trigger input that accepts any object type. The tool will send the current values of all inputs whenever an object is received in this input.
synchronousInputs
If this parameter is true, the tool expects that whenever any of the connected dynamic input parameters changes, all of them will. This is usually true if the data to all dynamic inputs originates from one source. This ensures that at the time the next trigger object is received, all or none of the the dynamic input parameter values have been updated. If the dynamic input parameters come from unrelated sources, this parameter needs to be set to false, which means that the values of an input parameters will always be updated independently.
inputParameters
A table that defines dynamic input parameters. The first column contains the name of a parameter and the second one the data type of the parameter's value. All dynamic input parameters are optional. If none of them is connected, the tool always outputs the default values.

## Outputs

The outputs are defined by inputParameters. An output parameter will be created for each dynamic input parameter. If an optional input is not connected, the parameter's current value will be sent to the corresponding output whenever a trigger is received. If the input parameter is connected, the last value received in it will be sent to the corresponding output. As a consequence, all connected inputs must receive at least one object before anything will be sent out.