OpenSound Control in Max/MSP for Macintosh and Windows

The OpenSound Control protocol and UDP communication have been implemented in Cycling 74's Max/MSP environment.

The most reliable implementation of the UDP part is the udpsend and udpreceive externals that are now distributed with Max 4.6. CNMAT recommends these over our own (or anybody else's) older implementations. (Why? 1. Because they interact cleanly with Max's threading and scheduling systems, 2. Because they were written recently rather than being a port of a port of a port..., and 3. because they're cross-platform.) If you have an older version of Max, you can download these objects for OSX or Windows.

The udpsend and udpreceive externals implement a limited subset of the OSC protocol, but they're compatible with CNMAT's OpenSoundControl and OSC-route objects, which are available from CNMAT's Max/MSP Downloads Page:

We recommend downloading Peter Nyboer's OTUDP primer (zip or sit) for an example of Max to Max communication (though it refers to the obsolete OTUDP instead of udpsend/udpreceive) and information on how to configure networking settings on Mac OSX, Mac OS9, and Windows.

Older UDP Implementations for Max

CNMAT no longer recommends, uses, or supports any of the following Max externals:

UDP Versus OSC

UDP, the "User Datagram Protocol," is the Internet Protocol for sending packets (a.k.a. "datagrams") between machines without establishing a connection between the machines and without any expensive mechanism for detecting lost packets and retrying them. UDP is used for streaming video and audio and many other applications on the Internet.

Open Sound Control is an application-level protocol invented by CNMAT. OSC defines only the bit format and interpretation of those bits; you could transmit OpenSound Control messages via UDP, TCP, shared memory, compact disc, a serial port, or any other digital medium.

Because UDP can be used to transmit many kinds of data besides OSC, and because OSC can be transmitted by many kinds of networking technology besides UDP, CNMAT's implementations put the UDP part and the OSC part in separate objects. People have used the OTUDP object without the OpenSoundControl object to send and receive data in formats other than OSC. (This requires writing a max external to translate between Max data and binary data in the non-OSC format.) These uses of OTUDP would also work with udpsend/udpreceive (via the "FullPacket" message).Conversely, people have used OpenSoundControl without UDP as a sort of super pack/unpack, to be able to pass entire OSC bundles as single Max messages.

Matt Wright, revised 8/28/2006