FUDI

FUDI (Fast Universal Digital Interface[1]) is a networking protocol used by the Pure Data patching language invented by Miller Puckette. It is a string based protocol in which messages are separated by semicolons. Messages are made up of tokens separated by whitespaces, and numerical tokens are represented as strings.

Format

FUDI is a packet oriented protocol.

Each message consists of one or more atoms, separated by one or more whitespace characters, and it's terminated by a semicolon character.

An atom is a sequence of one or more characters; whitespaces inside atoms can be escaped by the backslash (ascii 92) character (see Examples below).

A whitespace is either a space (ascii 32), a tab (ascii 9) or a newline (ascii 10).

A semicolon (ascii 59) is mandatory to terminate (and send) a message. A newline is just treated as whitespace and not needed for message termination.

Implementations

pdsend / pdreceive

Those command-line tools are distributed with the software Pure Data. They are meant to be used with their counterparts, the classes [netsend] / [netreceive] of Pd.

[netsend] / [netreceive]

Those classes can be used to transport Pd-messages over a TCP or UDP socket. Both are part of Pd-vanilla.

[netserver] / [netclient]

Those are part of maxlib and allow bidirectional connections of multiple clients with one server.

Example messages

test/blah 123.45314;
my-slider 12;
hello this is a message;
this message continues
in the following
line;
you; can; send; multiple messages; in a line;
this\ is\ one\ whole\ atom;
this_atom_contains_a\
newline_character_in_it;
gollark: I don't really need any significant scaling, but interesting.
gollark: Actually implementing minoteaur, ideally.
gollark: The opposite of C is... Prolog, maybe?
gollark: (I consider C 🐝 for my intended uses and also most other uses)
gollark: Ah, palaiologos, ¬🐝 programming language recommendations?

References

  1. Puckette, Miller. "FUDI protocol specifications (acronym)". Pure Data Mailinglist. Retrieved 24 January 2019.


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.