annotate trunk/external/oscpack/README @ 622:16918ffbf975

Carfac C++ revision 3, indluding more style improvements. The output structs are now classes again, and have separate storage methods for each output structure along with flags in the Run and RunSegment methods to allow for only storing NAPs if desired.
author alexbrandmeyer
date Fri, 17 May 2013 19:52:45 +0000
parents 4b37b53105a3
children
rev   line source
tomwalters@570 1 oscpack -- Open Sound Control packet manipulation library
tomwalters@570 2 http://www.audiomulch.com/~rossb/code/oscpack
tomwalters@570 3
tomwalters@570 4 Copyright (c) 2004-2005 Ross Bencina <rossb@audiomulch.com>
tomwalters@570 5
tomwalters@570 6 A simple C++ library for packing and unpacking OSC packets.
tomwalters@570 7
tomwalters@570 8
tomwalters@570 9 Oscpack is simply a set of C++ classes for packing and unpacking OSC packets.
tomwalters@570 10 Oscpack includes a minimal set of UDP networking classes for windows and posix
tomwalters@570 11 which are sufficient for writing many OSC applications and servers, but you are
tomwalters@570 12 encouraged to use another networking framework if it better suits your needs.
tomwalters@570 13 Oscpack is not an OSC application framework, it doesn't include infrastructure for
tomwalters@570 14 constructing or routing OSC namespaces, just classes for easily constructing,
tomwalters@570 15 sending, receiving and parsing OSC packets. The library should also be easy to use
tomwalters@570 16 for other transport methods (eg serial).
tomwalters@570 17
tomwalters@570 18 The key goals of the oscpack library are:
tomwalters@570 19
tomwalters@570 20 - to be a simple and complete implementation of OSC
tomwalters@570 21 - to be portable to a wide variety of platforms
tomwalters@570 22 - to allow easy development of robust OSC applications
tomwalters@570 23 (for example it should be impossible to crash a server
tomwalters@570 24 by sending it malformed packets, and difficult to
tomwalters@570 25 create malformed packets.)
tomwalters@570 26
tomwalters@570 27 Here's a summary of the key files:
tomwalters@570 28
tomwalters@570 29 osc/OscReceivedElements -- classes for parsing a packet
tomwalters@570 30 osc/OscPrintRecievedElements -- iostream << operators for printing packet elements
tomwalters@570 31 osc/OscOutboundPacket -- a class for packing messages into a packet
tomwalters@570 32 osc/OscPacketListener -- base class for listening to OSC packets on a UdpSocket
tomwalters@570 33 tests/OscUnitTests -- unit test program for the OSC modules
tomwalters@570 34 tests/OscSendTests -- examples of how to send messages
tomwalters@570 35 tests/OscReceiveTest -- example of how to receive the messages sent by OSCSendTests
tomwalters@570 36 examples/OscDump -- a program that prints received OSC packets
tomwalters@570 37
tomwalters@570 38
tomwalters@570 39
tomwalters@570 40 Building
tomwalters@570 41 --------
tomwalters@570 42
tomwalters@570 43 In general the idea is that you will embed this source code in your projects as you
tomwalters@570 44 see fit. The Makefile has an install rule for building a shared library and
tomwalters@570 45 installing headers in usr/local.
tomwalters@570 46
tomwalters@570 47 The Makefile works for Linux and MaxOS X except that if you are on a big endian
tomwalters@570 48 machine such as PowerPC Macintosh you need to edit the line which sets the
tomwalters@570 49 endianness to OSC_HOST_BIG_ENDIAN (see the makefile comment for details) or it won't
tomwalters@570 50 work. If you want to build and install liboscpack as a library on OS X you also need
tomwalters@570 51 to edit the $(LIBFILENAME) rule by commenting out the Linux case and uncommenting
tomwalters@570 52 the OS X case since OS X uses different gcc flags for shared libraries.
tomwalters@570 53
tomwalters@570 54 On Windows there is a batch file for doing a simple test build with MinGW gcc called
tomwalters@570 55 make.MinGW32.bat. This will build the test executables and oscdump in ./bin and run
tomwalters@570 56 the unit tests.
tomwalters@570 57
tomwalters@570 58 --
tomwalters@570 59
tomwalters@570 60
tomwalters@570 61 If you fix anything or write a set of TCP send/recieve classes
tomwalters@570 62 please consider sending me a patch. Thanks :)
tomwalters@570 63
tomwalters@570 64 For more information about Open Sound Control, see:
tomwalters@570 65 http://www.cnmat.berkeley.edu/OpenSoundControl/
tomwalters@570 66
tomwalters@570 67
tomwalters@570 68 Thanks to Till Bovermann for helping with POSIX networking code and
tomwalters@570 69 Mac compatibility, and to Martin Kaltenbrunner and the rest of the
tomwalters@570 70 reacTable team for giving me a reason to finish this library. Thanks
tomwalters@570 71 to Merlijn Blaauw for reviewing the interfaces. Thanks to Xavier Oliver
tomwalters@570 72 for additional help with Linux builds and POSIX implementation details.
tomwalters@570 73
tomwalters@570 74 Portions developed at the Music Technology Group, Audiovisual Institute,
tomwalters@570 75 University Pompeu Fabra, Barcelona, during my stay as a visiting
tomwalters@570 76 researcher, November 2004 - September 2005.
tomwalters@570 77
tomwalters@570 78 See the file LICENSE for information about distributing and using this code.
tomwalters@570 79
tomwalters@570 80