» Pins and Data Types
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

Pins and Data Types

Russian | Italian

You can connect only outputs to inputs. It is not possible to connect just two inputs or just two outputs. Connecting is easy: You may start drawing the connection at either the output or at the input. Not all pins can be connected - each Pin in vvvv has a specific data type. So you can connect only numbers with numbers or colors with colors. It is not possible to connect pins with different data types.

Tip: Matching pins will light up as soon as you start drawing the connection, so you can not do anything wrong.

If an input pin is connected, it uses the data from the output above. It is not possible to change an input which is connected. Any input can accept only one connection.

Tip: The GUI will disconnect the existing connection from an input, if you try to connect a new one.

Also see this video tutorial.

Numeric Values

Numeric values (or short Values) are probably the most useful data type in vvvv – mainly because the concept of numbers proved to be one of the most valuable concepts in computation. Unlike other languages, vvvv does not distinguish between different numerical value types: it treats the traditional wide variety of floating point and integer types, booleans, bangs, and bytes simply as "values". This makes patching more intuitive and allows for more flexible mapping of data between different types of nodes (i.e. one can connect a number generating node to a logic node that responds to boolean input - and the logic node will respond as if it were receiving boolean data) All numeric pins are built to be robust, so you can connect anything to anything, similar to an analogue synthesizer. Modern processors usually spend more time converting between different representations than using floating point all the time, so this is not a fundamental performance issue any more.

When using a floating point value as an integer, the value is rounded.
When using a floating point value as a Boolean, everything larger than 0.5 is TRUE and everything below is FALSE.
Boolean outputs return either 0 or 1.


The concept of connecting anything to anything may be refreshing or may give some revolutionary feeling, but it may also give uninteresting results with everyday formulae: We tried very hard to fill gaps in the definition of logical and mathematical functions. These extensions were selected to give aesthetical results in special cases, but obviously there is never a general solution for this. Mostly these extensions are like converting negative values to positive values or extending integer ranges with a modulo operation. But even with all that freedom it doesn’t make sense to edit a Boolean value in 0.001 steps. Therefore the concept of subtypes was introduced:

Subtypes assist you in using the right values for your application. All numeric values do have an associated subtype, which includes flags for cyclic values (like angles), specification of default, minimum and maximum values, step sizes, dealing with integers, booleans, positive and negative flanks etc. Each value can also be associated with a physical unit. The subtype is ignored by the calculation, but is used by the GUI to edit or display the values.


A wide variety of text processing nodes exist, which allow you to create text processing applications. Strings can have any length, can include all possible UNICODE (UTF8) characters including zero. The user can choose between UTF8 and the ANSI character set.

Strings also do have a subtype system which contains information on whether the string is meant to be a filename, a directory, whether it can contain multiple lines of text, what the default value is etc. These informations are used in the GUI when entering and editing strings.


A system oriented at creating visual output should treat color as a fundamental data type. This simplifies the objects dealing with colours. You can add, subtract and blend colors without knowing anything about that or convert to different color models like HLS or RGB. This makes dealing with color really intuitive.


Modern programming is mostly about selecting between already existing options. Therefore a basic data type for exactly doing that is implemented. It is mostly used to create pull down menus on the fly, but there are also some basic operations on enumerations. Anyway, we mostly try to avoid enumerations, but you will see that there is a love and hate relationship to them.

Note that it is not possible to connect pins with different enumerations.

Node Pins

Apart from the above basic data types there are Node Pins, which use an advanced data type. These Node Pins do some deeper magic in the data flow graph. These pins have in common that you generally won’t be able to see or manipulate the actual data. This is partly because of performance reasons, but also because the data might be to abstract to visualize anyway.

From the users’ perspective, the most important difference between basic data types and node pins is that they don’t keep their value when they get disconnected. Instead the default value is used.

Currently the following types of node connection types are available:


Transforms are used in the DirectX Renderer to change the shape of the render objects or textures. You can connect different transforms to create compound transforms. Note that the link between transformations doesn’t hold the values which get transformed but more the quality of the transformation. This allows you to create complex hierarchical motion systems.

Transforms internally use 4x4 matrices for all classic things which are concatenated on the fly, but can also switch to a general method, which will allow for arbitrary transformation in a 3d x 3d space.

Renderstates and Samplerstates

Render states are used in DirectX internally to control various parameters of the graphics card. You can combine various render states to get compound render states. Think of the links as transmitting things like "the wireframeness" or "the sourceblendmodeness" which will help the render object doing the right things.


Meshes and Vertexbuffers

DirectShow Audio- and Videostreams

Various nodes from the DirectShow category have DirectShow Stream pins. These pins directly map to internal connections of the Microsoft DirectShow data flow graph. As the data is potentially transmitted in highly efficient kernel memory or in dedicated hardware, it can not be displayed in the tool tip.

Note that due to a limitation in DirectShow you can only connect one output to one input pin.

anonymous user login


~11h ago

joreg: another release candidate is out for the weekend: beta36-release-candidate #vvvv please test and report!

~2d ago

microdee: I realized that I will just do those updates on separate branches, Still stay tuned...

~2d ago

microdee: I'm making mp.* packs CI and release friendly. Meanwhile vpm downloads might not work with them for a bit. Stay tuned...

~2d ago

~3d ago

karistouf: thank you joreg

~3d ago

joreg: good to hear!

~3d ago

Xini: the old problem was the renderer on a second screen freezing when fullsize, under certain conditions which i can't remember now...

~3d ago

Xini: @joreg now i got hold of a projector and i tested, should be fine! :D @joreg

~3d ago

joreg: i'm not exactly sure what "old problem" you're talking about. have you tested if it still exists?

~3d ago

Xini: tx @joreg . Do you think it's better for me to install a 32bit version of vvvv, or is there another workaround for that old problem?