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