tomwalters@570: oscpack -- Open Sound Control packet manipulation library tomwalters@570: http://www.audiomulch.com/~rossb/code/oscpack tomwalters@570: tomwalters@570: Copyright (c) 2004-2005 Ross Bencina tomwalters@570: tomwalters@570: A simple C++ library for packing and unpacking OSC packets. tomwalters@570: tomwalters@570: tomwalters@570: Oscpack is simply a set of C++ classes for packing and unpacking OSC packets. tomwalters@570: Oscpack includes a minimal set of UDP networking classes for windows and posix tomwalters@570: which are sufficient for writing many OSC applications and servers, but you are tomwalters@570: encouraged to use another networking framework if it better suits your needs. tomwalters@570: Oscpack is not an OSC application framework, it doesn't include infrastructure for tomwalters@570: constructing or routing OSC namespaces, just classes for easily constructing, tomwalters@570: sending, receiving and parsing OSC packets. The library should also be easy to use tomwalters@570: for other transport methods (eg serial). tomwalters@570: tomwalters@570: The key goals of the oscpack library are: tomwalters@570: tomwalters@570: - to be a simple and complete implementation of OSC tomwalters@570: - to be portable to a wide variety of platforms tomwalters@570: - to allow easy development of robust OSC applications tomwalters@570: (for example it should be impossible to crash a server tomwalters@570: by sending it malformed packets, and difficult to tomwalters@570: create malformed packets.) tomwalters@570: tomwalters@570: Here's a summary of the key files: tomwalters@570: tomwalters@570: osc/OscReceivedElements -- classes for parsing a packet tomwalters@570: osc/OscPrintRecievedElements -- iostream << operators for printing packet elements tomwalters@570: osc/OscOutboundPacket -- a class for packing messages into a packet tomwalters@570: osc/OscPacketListener -- base class for listening to OSC packets on a UdpSocket tomwalters@570: tests/OscUnitTests -- unit test program for the OSC modules tomwalters@570: tests/OscSendTests -- examples of how to send messages tomwalters@570: tests/OscReceiveTest -- example of how to receive the messages sent by OSCSendTests tomwalters@570: examples/OscDump -- a program that prints received OSC packets tomwalters@570: tomwalters@570: tomwalters@570: tomwalters@570: Building tomwalters@570: -------- tomwalters@570: tomwalters@570: In general the idea is that you will embed this source code in your projects as you tomwalters@570: see fit. The Makefile has an install rule for building a shared library and tomwalters@570: installing headers in usr/local. tomwalters@570: tomwalters@570: The Makefile works for Linux and MaxOS X except that if you are on a big endian tomwalters@570: machine such as PowerPC Macintosh you need to edit the line which sets the tomwalters@570: endianness to OSC_HOST_BIG_ENDIAN (see the makefile comment for details) or it won't tomwalters@570: work. If you want to build and install liboscpack as a library on OS X you also need tomwalters@570: to edit the $(LIBFILENAME) rule by commenting out the Linux case and uncommenting tomwalters@570: the OS X case since OS X uses different gcc flags for shared libraries. tomwalters@570: tomwalters@570: On Windows there is a batch file for doing a simple test build with MinGW gcc called tomwalters@570: make.MinGW32.bat. This will build the test executables and oscdump in ./bin and run tomwalters@570: the unit tests. tomwalters@570: tomwalters@570: -- tomwalters@570: tomwalters@570: tomwalters@570: If you fix anything or write a set of TCP send/recieve classes tomwalters@570: please consider sending me a patch. Thanks :) tomwalters@570: tomwalters@570: For more information about Open Sound Control, see: tomwalters@570: http://www.cnmat.berkeley.edu/OpenSoundControl/ tomwalters@570: tomwalters@570: tomwalters@570: Thanks to Till Bovermann for helping with POSIX networking code and tomwalters@570: Mac compatibility, and to Martin Kaltenbrunner and the rest of the tomwalters@570: reacTable team for giving me a reason to finish this library. Thanks tomwalters@570: to Merlijn Blaauw for reviewing the interfaces. Thanks to Xavier Oliver tomwalters@570: for additional help with Linux builds and POSIX implementation details. tomwalters@570: tomwalters@570: Portions developed at the Music Technology Group, Audiovisual Institute, tomwalters@570: University Pompeu Fabra, Barcelona, during my stay as a visiting tomwalters@570: researcher, November 2004 - September 2005. tomwalters@570: tomwalters@570: See the file LICENSE for information about distributing and using this code. tomwalters@570: tomwalters@570: