Pony Express makes it easy to communicate via the Open Sound Control (OSC) protocol on Mac OS X 10.7+ and iOS 5.0+.
- OSC 1.1 over UDP with support for most 1.1 data types: Integer, Float, String, Blob, True, False, Null, Impulse and Timetag
- OSC messages can be sent to an IPv4 or IPv6 IP address, a symbolic hostname like localhost, ZeroConf hostname like one-eyed-jacks.local. or a hostname like audrey.horne.dk
- Integer and Float arguments are defined in NSNumbers, String as an NSString and Blob as NSData
- Pony Express makes use of Automatic Reference Counting (ARC)
- many items remain to be implemented inlcuding but not limited to OSC bundles, ZeroConf advertising, and querying. please see the TODO for more info
A simple message with a single float argument is sent to a receiver (setup not shown here).
PEOSCMessage* message = [PEOSCMessage messageWithAddress:@"/oscillator/3/frequency" typeTags:@[PEOSCMessageTypeTagFloat] arguments:@[@440.0F];
PEOSCSender* sender = [PEOSCSender senderWithHost:@"cray.local." port:31337];
[sender sendMessage:message handler:^(BOOL success, NSError* error) {
if (success) {
NSLog(@"message sent!");
}
}];
- clone the repository and submodules
git clone --recursive git://github.com/pizthewiz/PonyExpress.git
- open the project in Xcode, select the appropriate PonyExpress scheme and build; example applications are avaialble in the
Examples
directory.
NSArray, NSDictionary and NSNumber literals, object subscripting and instancetype are used throughout the Pony Express, and is available in Apple LLVM Compiler 4.0+, shipped as part of Xcode 4.4 or later.
the bundle version is optionally set from the repository state using Node.js and a few modules; if Node.js is not installed, the bundle version will remain unset.
- install Node.js 0.8.16 (or later) from binary package or build and install from source
- install node modules globally
npm install -g jake async NodObjC
- link global modules to local PonyExpress clone
npm link async NodObjC
- Dean McNamee for his great Node.js OSC implementation omgosc
- Ray Cutler for his conical OSC implementation in VVOpenSource
- Mirek Rusin for inspiration and reference with his svelte CoreOSC offering
- Robbie Hanson AsyncSocket and contributors for a convenient UDP socket wrapper
- Nathan Rajlich for NodObjC