Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Simple Foundation framework to send and receive OSC messages and bundles
Objective-C JavaScript
tree: f929a91cfb

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.

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


  • 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
  • Integer and Float arguments are defined in NSNumbers, String as an NSString, Blob as NSData and Timetag as NSDate
  • 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!");

How To Build

  • clone the repository and submodules git clone --recursive 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


  • 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
Something went wrong with that request. Please try again.