Skip to content

Latest commit

 

History

History
43 lines (34 loc) · 3.02 KB

README.md

File metadata and controls

43 lines (34 loc) · 3.02 KB

Pony Express

Pony Express makes it easy to communicate via the Open Sound Control (OSC) protocol on Mac OS X 10.7+ and iOS 5.0+.

General

  • 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

Example

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!");
    }
}];

How To Build

  • 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.

Soft Requirements

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

THANKS

  • 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