Session 1 – 10.11.2026

Pads

Pads can be used to store data and use or modify this data in the next iteration. Basically it functions like a variable in other programming environments. Pads can be created from the Node Browser and should have a distinct name.

Pads can used them to store any data type, and in their default state they are simply grayed out, indicating that their data type is yet undefined. Once a pad knows which data type it should be holding, it will turn dark gray. To specify the data type of a pad, either connect a link from somewhere, or specify the data type in the configuration menu (right-click > Configure).

A pad can be placed multiple times in the patch and will make the data inside available in the next frame. Using pads like this requires caution – everything that is going in and out of a pad will have a delay of 1 frame as the value is delivered back in the next frame. So keep this in mind when you are dealing with real-time input.

Pads are a great way to modify data from one frame to the next by combining them with If regions, as the inside of the If only triggers when the Condition input is set to true. Make sure that in the end, the modified value gets stored back into the pad.

In our example we have used a pad only for the purpose of copying its content into the next frame. Doing this, we can make a distance calculation between the current position of the mouse and the one from the previous frame using the Distance node, and apply the calculated distance as the radius of a circle attached to the mouse position.

Update and Create

It is time to introduce you to the concept of operations in vvvv which is very powerful and the base for many further concepts, especially when defining your own data types. Every patch and document has the ability to execute parts of it on specific operations, of which Update and Create are the two default ones.

You can imagine the Update operation as the runtime mode of your patch which is constantly evaluating and executing your nodes. Links that are executed on Update are indicated in gray – which is the default style for all links when patching along.

Create on the other hand is an operation that runs only once when the patch is initialized. It can be used to set or compute a value one time on startup and provide this as the default value for a pad. Create operations are always styled as white links.

By right-clicking on a link and selecting the “Assign” entry, it is possible to define the operation of which the selected link should be evaluated. A link that is assigned to the Create operation will execute only one time when the patch started. This way it is possible to set default values for pads.

Here is also another example in which the Create operation for the pad involves more nodes that just IOBoxes. In this case, Create generates a random number between 0 and 1000, additionally adds 1000 and sets this computed value as the default for the pad.

Process Nodes

Most node based environments offer methods to create subpatches which abstract certain functionality and avoid duplicated code all over the place. This is also possible in vvvv using so-called Process Nodes. In fact, every node that is in the Node Browser and that we have used so far, is a Process Node in the background and it is open to the user to create as many of these as desired.

Let’s assume we patched along and the result is something like this – three red circles, each with random positions and sizes which are computed on the Create operation and saved into pads.

I hope that you can see the value of defining a process node here. This way we can get rid of some of these redundant nodes and bundle them into a little module. You can create a Process from the Node Browser and should give it a meaningful name, for example ColoredCircle.

What we have just created was the so-called definition of a process. All definitions are indicated by an arrow to the right, showing that it is something which can be opened and edited. After creating the definition, the node will show up in the Node Browser and can be used just like any other node.

Note that it has two input pins which we can use to set the color and stroke width from outside, and an output pin from which the layer can be connected to the final Renderer. Also the process nodes have a random position and size when the patch is loaded or restarted, exactly like before. This is because a Process node can also contain pads and have their individual implementations of the Create and Update operations.

Please right-click and select “Open” on one of the ColoredCircles underneath or the definition to find out more about creating pads and pins inside Process nodes.

Glad that you asked – of course any custom Process node also works when used in loops!