[PD] FUDI protocol and interfacing external programs with netreceive

afleck at inventati.org afleck at inventati.org
Thu Dec 5 15:20:23 CET 2019


I have been looking into writing some external programs to send messages 
to pd via netreceive.

With netreceive in udp mode (-u), sending bytes not terminated by a 
newline does not generate anything at the outlet.
By "sending bytes" I do not mean that I have netreceive in -b mode, just 
that I am not automatically terminating the message with a newline,
as would happen with "echo foo; | pdsend 9999 localhost udp." In -b mode 
no newline is necessary.

As soon as a newline is added, the message is at the outlet. 
Furthermore, it's actually not even necessary to include a semicolon in 
the datagram.
If i send the bytes \102\111\111\10 ("foo\n") to a netreceive connected 
to print, i see "print: foo" in the console.

This is not at all clear from either the help patches on netsend and 
netreceive or the little information available online about FUDI,
all of which mention that a message is just atoms, numbers, and 
whitespace terminated by a semicolon. The Wikipedia page on FUDI even 

"A newline is just treated as whitespace and not needed for message 
termination." as far as I can tell this was sourced from a (now offline 
but archived) pure data wiki page, the genesis of which can be found at: 

There's a good lead at 
mentioning the required newline, but it also says a semicolon is 
required, which I have found to not be the case.

Can anyone clear this up for me? Is there any official specification of 
FUDI available? I think having this information easily available would 
be nice, and after I get to the bottom of it I'll correct the Wikipedia 

I would also like to know how to send multiple messages in one datagram. 
Sending "foo;bar;\n" to a netreceive connected to print only gives me 
"print: foo" at the console, and trying to [route foo bar] doesn't work.


More information about the Pd-list mailing list