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

Protocols

French | Italian | Spanish

DMX & Art-Net

DMX
Art-Net
Art-Net spicification

Related nodes

ArtNet (Network Sender
ArtNet (Network Receiver
...and many more

The DMX-protocol transmits up to 512 channels per universe, this is equivalent to a spread of 512 slices.

DMX values are Integers in the range (0..255) but from vvvv you set them in a range of (0..1) instead. Keep in mind that the resolution is still 8-bit though, so only 256 steps (including 0 and 1) are possible.

Art-Net is a standard for transmission of DMX over Ethernet.

vvvv supports the Art-Net II specification with a total number of 256 universes: 16 subnets with 16 universes each.

As defined in the protocol, Art-Net talks over UDP on port 6454 (0x1936). This port number can be changed: just start vvvv from a command line with an option '/artnetport nnnn' (nnnn - your port number).

Examples in your vvvv\girlpower\ directory:

  • IO\DMX

See also:

HID

HID
HID Specification

Related nodes

HID (Devices)
HIDDecode (Devices)
HIDEncode (Devices)

vvvv can talk to any generic HID-Device (Human Interface Device). These can be joysticks, game pads and button panels, data gloves and other things connected via USB.

For more information check HID-nodes helppatches and the wiki-page on the HID nodes.

HTTP

HTTP
REST

Related nodes

HTTP (Network Get)
HTTP (Network Post)
HTTP (Network Receiver)
HTTP (Network Server)
...and many more

vvvv is able to send GET and POST requests to retrieve/send data from/to webservers.

vvvv can also be a webserver itself by using the HTTP (Network Server) node.

Examples in your vvvv\girlpower\ directory:

  • IO\Web

See also

ILDA

International Laser Display Association
ILDA Image Data Transfer Format
Minilumax Light Interface

Related nodes

Lumax (Devices)

vvvv can talk to ILDA-compatible lasers via the Lumax (Devices). For more information check its helppatch.

MIDI

MIDI protocol
MIDI specification
Very helpful MIDI Utility
MIDI Virtual Driver
Multi MIDI Virtual Driver
MIDI Virtual Network Driver

Related nodes

MidiNote (Devices)
MidiController (Devices)
MidiProgram (Devices)
MidiBend (Devices)
MidiClock (Devices)
TodoMap (TodoMap)
MidiIn (VAudio)
MidiNode (VAudio)
MidiFilePlayer (VAudio)
...and many more

In MIDI slang controllers are: volume knob, modulation wheel, pan fader, pedal, etc. The instrument as a whole is called a device and sends its data on a specified channel number.

vvvv counts midi channels from 0 to 15 and notes from 0 to 127. Note's velocities and control values are defined in the range (0..1).

The Buffer Length of the Midi input nodes sets the maximum number of incoming midi-messages that get queued for output in the patch. Only one message per vvvv-frame will be returned in the patch while within a frame's timespan more than one message could arrive.

  • If you want fast responses (messing around with a faderbox cause a lot of control messages): set the 'Buffer Length' low, even 0.
  • If you want to make sure that you receive every single midi-message: set the 'Buffer Length' to a high value (ie. 999).

A handy patch to receive and understand what your midi device is sending:

  • IO\Midi\02_KnowYourDevice.v4p

An example on how to receive different notes and control values on different channels:

  • IO\Midi\03_ReceivingNoteAndControl.v4p

Check all other examples about Midi:

  • IO\Midi\

VAudio

VAudio Pack supports MIDI events. This has a big advantage because the midi events happen as the occur and do not get quantized by the vvvv mainloop.
VAudio Pack is contributed by tonfilm.

TodoMap

There is also a useful MIDI & OSC mapper for vvvv called TodoMap. Check the video-tutorials from this contribution by vux & antokhio.

The TodoMap nodes are contributed by vux and are coming with the addonpack.

Useful MIDI-Modules:

Virtual Midi Ports use:
keep in mind that some virtual midi ports like loopBe or loopMidi need
the same architecture at both ends 32 OR 64 bits.
if you need to communicate between x86 and x64 softwares have a look at copperlan.

MQTT

MQTT protocol

MQTT is short for Message Queue Telemetry Transport, is a light weight open Source messaging protocol for the Internet of Things.

It is a great and easy way to exchange low frequency messages like sensor readings, or program states etc. between multiple machines and services. It's very robust with a small footprint.

Contributions:

OSC

OSC
OSC Apps for mobile devices.

Related nodes

OSCEncoder (Network)
OSCDecoder (Network)
TodoMap (TodoMap)
...and many more

The OSC protocol can be used to communicate between vvvv and other software like Ableton Live, Pure Data, Max/MSP, Resolume... you name it.

OSC is useful when you want to send different parameters via one udp-port. OSC adds an "address" to your data that you can conveniently filter for on the receiving end.

Examples in your vvvv\girlpower\ directory:

  • IO\Networking\2_Advanced (OSC)

There is also a useful MIDI & OSC mapper for vvvv called TodoMap. Check the video-tutorials from this contribution by vux & antokhio.

The TodoMap nodes are contributed by vux and are coming with the addonpack.

TUIO

TUIO protocol
TUIODroid at Google Play
TUIOPad at Apple Store

Related nodes

TUIODecoder (Network 1.0)

TUIO is a common protocol and API for tangible multitouch surfaces. This protocol encodes control data from a tracker application (e.g. based on computer vision) and sends it to any client application that is capable of decoding the protocol.

You can easily test communication via TUIO by using one of these software simulators (scroll to bottom).

The TUIODecoder (Network 1.0) node is contributed by Abomb and is coming with the addonpack.

Examples in your vvvv\girlpower\ directory:

  • IO\TUIO

UDP & TCP

UDP
TCP

Related nodes

UDP (Network Client)
UDP (Network Server)
TCP (Network Client)
TCP (Network Server)

Tokenizer (Raw FixedLength)
Tokenizer (Raw LengthPrefix)
Tokenizer (Raw Postfix)
Tokenizer (Raw Frame)

PrefixLength (Raw)
PostfixBytes (Raw)
FrameBytes (Raw)

The main difference between the UDP and TCP protocols is the fact that while UDP transmits faster, it does not guarantee all data to arrive. TCP tends to be a bit slower but it does guarantee the arrival of all data sent. Therefore UDP is generally used for streams of data where it does not matter if a single data is missing whereas TCP is used when every single data sent needs to arrive on the other side. Also UDP allows you to send broadcasts to a range of listeners. This can easily be done by using a broadcast IP like x.y.z.255 (where x.y.z is your subnet, like e.g. 192.168.0) for the Remote Host.

Note that choosing TCP requires you to take care of message framing for which vvvv offers the Tokenizer nodes.

More infos in your vvvv\girlpower\ directory:

  • IO\Networking

ZeroMQ

ZeroMQ
Wikipedia on ZeroMQ

ØMQ (also spelled ZeroMQ, 0MQ or ZMQ) is a high-performance asynchronous messaging library, aimed at use in distributed or concurrent applications.

Contributions:

anonymous user login

Shoutbox

~5d ago

joreg: vvvvTv S02E01 is out: Buttons & Sliders with Dear ImGui: https://www.youtube.com/live/PuuTilbqd9w

~12d ago

joreg: vvvvTv S02E00 is out: Sensors & Servos with Arduino: https://visualprogramming.net/blog/2024/vvvvtv-is-back-with-season-2/

~12d ago

~13d ago

fleg: hey there! What's the best tool for remote work? Teamviewer feels terrible. Thanks!

~26d ago

joreg: Last call: 6-session vvvv beginner course starting November 4: https://thenodeinstitute.org/courses/ws24-5-vvvv-beginners-part-i/

~1mth ago

joreg: Missed the last meetup? You can rewatch it here: https://www.youtube.com/live/MdvTa58uxB0?si=Fwi-9hHoCmo794Ag

~1mth ago

theurbankind: When is the next big event, like node festival ?

~1mth ago

~1mth ago

joreg: Join us for the next vvvv meetup on Oktober 17th: https://visualprogramming.net/blog/2024/25.-vvvv-worldwide-meetup/

~2mth ago

joreg: 6 session beginner course part 2 "Deep Dive" starts January 13th: https://thenodeinstitute.org/courses/ws24-5-vvvv-beginners-part-ii/