Data Flow: Signals & Events

Besides data types, Wire deals with two kinds of data Flow: Event and Signal.

Event flow can be recognized by rectangular in- and outlets and Signal flow can be recognized by circular in-and outlets.

Signal

A signal flow continuously transmits data at the framerate of the patch. If you hover over a signal outlet, you will always see a value. It’s not possible to have a signal flow without a value. Signal is by far the most used flow type in Wire and is used for everything that has to be updated each frame.


Event

Events are messages that only occasionally happen. This is often used for MIDI or OSC, for example, where there can be a state when there is no message. Events are passed into the patch using an outer process (such as pressing a MIDI button or clicking on a trigger parameter), the event data is sent through the cords. This data flow is then used to trigger a clip, reset a parameter or bypass an effect. After that, the event data is gone, it doesn't exist continuously in the way that signal does. Events can be triggered multiple times in one frame.


Example

The video player node is an excellent example of the two data flows. The output of the node is a signal since the video needs to be continuously updated to your screen. The inlets of the nodes are mostly events since you only need to start/stop/pause the clip once every input.



How to flow

Now you might be like “Uncle Wire, how should I flow?”

Don’t worry about it too much, Wire will often choose the correct variant for you. It is more important to understand the difference between the two when working with Wire.

Events can always be connected to Signal inlets (rectangle to circle, remember?) but not the other way around directly. You can use the OnChange node to go from Signal to Event.
It is advisable to use events where it makes sense (boolean switches for example) but we won’t punish you for using signals everywhere.


Related Articles