Data is information such as numbers, text, and images. Nodes use the data in their input ports to control how they do their job. The goal of a composition is almost always to create or transform data in some way.
Numbers, text, and images are all examples of data — but they’re not all the same type of data. You can do things with a number (such as calculate the square root) that wouldn’t make sense with a sentence of text. Similarly, you can do things with an image (such as applying a kaleidoscope filter) that wouldn’t make sense with a number.
In Vuo, data is categorized by data type. A node can only input and output certain data types that make sense with the job that the node does, such as calculating numbers or filtering images.
Here are the most common data types in Vuo:
Name | Examples | Description |
---|---|---|
Integer | -5; 0; 103 | A positive or negative whole number |
Real | -1.2; 0.0; 33.333 | A positive or negative decimal number |
Text | Thank you! | A sequence of characters |
Boolean | true; false | “Yes” (true) or “no” (false) |
2D Point | (0.1, -1.5) | A position in 2-dimensional space |
3D Point | (0.1, -1.5, 0.8) | A position in 3-dimensional space |
4D Point | (0.1, -1.5, 0.8, 1.0) | A position in 4-dimensional space |
Color | A combination of hue, saturation, and lightness | |
Image | A rectangular grid of pixels | |
Layer | A 2D shape or image that can be stacked with others | |
Scene Object | A 3D shape that can be placed with others in a scene |
If your computer is configured to use a comma instead of a period for the decimal mark (
), then Vuo displays numerical types accordingly.Vuo has dozens of other data types, many of them specific to certain tasks (such as processing audio or receiving keyboard input). You’ll learn about those data types in the process of learning how to perform the tasks.
You can see which data type a port has by clicking on the port to open its port popover.
When you start dragging a cable from a port, Vuo shows you which ports you can connect the other end of the cable to — ports that have a compatible data type — by fading out all other ports. Ports that remain opaque have the same data type as the original port. Ports that are slightly faded have a data type that is different but related, so it’s possible to convert from one data type to the other.
The Quartz Composer equivalent to a type-converter node is represented as a darker red line in QC. The benefit of exposing these conversions is greater control over how your data is interpreted.
The two ports at either end of a cable always have the same data type. If you need to connect an output port of one data type to an input port of a different but related data type, you can insert a type-converter node. A type-converter node’s job is to translate data from one type to another.
When you drop a cable endpoint onto a port of a different but compatible data type, either Vuo will ask you to choose which type-converter node to use or, if there’s only one type-converter node available for that pair of data types, Vuo will go ahead and insert it.
For example, if you want to connect a Real output port to an Integer input port, you can choose the Round, Round Up, or Round Down node to convert the Real (number with a decimal point) to an Integer (number without a decimal point).
Vuo inserts the type-converter node in a collapsed form to save space. You can still click on the node to see its uncollapsed form and description in the Node Documentation Panel.
For every single-value data type in Vuo, there’s a corresponding list data type.
For example, the Split Text node inputs a single Text and separates it into parts. Each part is a Text. The node outputs the collection of parts as a List of Text.
A list is a sequence of data items. Lists are useful when you want to work with a collection of data items instead of just one.
With a list, each item is identified by its position in the sequence. With a different kind of collection called a dictionary, each item is instead identified by a name or key.
For example, the Calculate node’s Values input port has a dictionary data type, specifically Dictionary of Text keys and Real values. The keys are the names of variables in a math expression. The values are the numerical values that the node should substitute in place of the variables to calculate the result.
Some nodes can work with many different types of data. For example, the Add node can add Integers, Reals, 2D Points, 3D Points, or 4D Points. The Hold Value node can hold a 3D Point, an Image, a Color — or, in fact, any single-value type of data.
When using nodes that are flexible about the type of data they can work with, you can choose the data type that suits your composition.
To see the data types that a port can be changed to, right-click on the port and look at the
submenu. (Only ports with changeable types have a submenu.)
The generic data type — a stand-in for when the port’s data type hasn’t been decided yet.
menu item means that the port has aYou can connect a cable from a port that has a generic data type to a port that has any of the data types in the first port’s
menu. When you connect the cable, the first port’s data type automatically changes to match the second port.On some nodes, multiple ports share the same data type. When you change one to Generic, all become Generic. When you change one to 2D Point, all become 2D Point.
An example is the Subtract node. All of its ports share the same type. When you subtract one 2D Point from another, the result is a 2D Point. The same goes for other data types that the Subtract node can work with.
On a few nodes, one group of ports shares the same data type and a separate group of ports shares another data type. The Process List node is an example. The Start Processing port has a list data type, and the Item port outputs the items of that list. So if Start Processing has type List of Text, Item must have type Text. Similarly, the Finished Processing port has a list data type, and its items must match the type of Processed Item. But Processed Item doesn’t have to match the type of Item. You can see which ports on a node share a data type by selecting for each port, then opening the port popovers and observing the numbers on the generic data types (generic #1, generic #2, etc.).
You can connect a generic port to any port that has a compatible data type (which may be either generic or non-generic). When you start dragging a cable, Vuo fades out the incompatible ports, so you can easily see which ports it’s possible to connect to.