This file describes the protocol used for communicating packets. See include/pdp.h and the sources in this directory for more info. There are 3 kinds of pdp messages: [pdp register_ro ] [pdp register_rw ] [pdp process] Together they form the pdp protocol. An object can receive a packet by catching the 3 kinds of messages: When a register_ro message is received, the object can call pdp_packet_copy_ro(packet) to reserve a read only copy for itself. The same goes for handling the register_rw message. You can reserve a read/write copy by using pdp_packet_copy_rw(packet) When a process message is received, the object is allowed to start processing the packet data end send the resulting packet(s) out. To send out a packet, use the pdp_packet_pass_if_valid(outlet, &packet) method. It passes a packet, and sets the reference to -1 (the undefined packet id). If you want to write pdp externs, consider using the pdp_base object to derive your object from. Have a look at pdp_add, pdp_gain, pdp_noise to see how to do this.