/arduino-osc

Simplified wrapper for OSCuino.

Primary LanguageC++

OSCuino is an Arduino and Teensy library implementation of the OSC encoding (http://opensoundcontrol.org)
It was developed primarily by Yotam Mann at CNMAT where OSC was invented.
It benefits from contributions from Adrian Freed, John MacCallum, Matt Wright and Andy Schmeder

This release:

- Supports the four basic OSC data types (32-bit integers, 32-bit floats, strings, and blobs - arbitrary length byte sequences)
- Sends and receives OSC packets over any transport layer that implements the Arduino  Stream - Class such as Serial, EthernetUdp, MIDI, and more.
- Tested on Arduino Ethernet, Arduino Leonardo, Teensy
- Address pattern matching
- Dynamic memory allocation

Features for next time:
- nested bundles
- TCP/IP Examples
- deadline scheduling of OSC 64-bit timetags
- Due support
- ADK support


API Documentation and examples are available at http://cnmat.berkeley.edu/oscuino

////////////////////////////////////////////////////////////////////////
SLIPSerial

The library  includes extensions of the USB serial and Hardware serial functions of the Arduino which sends and receives data using the SLIP encoding This makes Max/MSP and PDintegration very simple using CNMAT's slipOSC object connected to the Serial object. The SLIPSerial library implements the same methods as the Serial object except for an additional "endPacket" method which transmits for marking the end of teach packet in a serial stream. 

////////////////////////////////////////////////////////////////////////
Installation

Make sure you're using Arduino 1.0.4 or greater.
Download the zip from github. Unzip it and remove text after the "-" in the name (i.e. -master) because
Arduino doesn't allow some characters in library names.
 Move the OSCuino folder into your "libraries" folder in your Arduino Sketch search path. 
Now you will see OSCuino examples under the Examples menu of Arduino.


The Applications folder contains examples for Max/MSP and PD that work with the example sketches. This will be expanded to include other applications like TouchOSC and Processing
For the Max/MSP examples you will need to download the CNMAT max externals package that includes the odot objects available at http://cnmat.berkeley.edu/downloads
////////////////////////////////////////////////////////////////////////
Guide

As well as many small examples illustrating the API, there is a larger application called "oscuino"
which illustrates how to use OSC to simplify situations  Firmata and Maxuino  are typically used in.
////////////////////////////////////////////////////////////////////////
Performance

Currently best performance is achieved with Arduinos with built-in USB Serial, i.e. Teensy 3.0, Teensy 2.0 and 2.0++ and Leanardo variants (12Mbps max)

This is because the Wiznet 5100 used in the Ethernet Arduino and shields uses really slow SPI (0.3Mbps)
This will change as people retool to use the much faster Wiznet 5200 which has been measured with the Due at 6Mbps
http://forum.pjrc.com/threads/17951-WIZ820io-Ethernet-and-2nd-power-supply-with-teensy-3-0
http://arduino.cc/forum/index.php?topic=139147.0

The oscuino serial examples use 9600 baud serial which is reliable on most of the FTDI based Arduinos.
The slow rate is required for Arduino's without clock chips such as the TinyLili.
Once you have established that things work at 9600 baud try increasing the rate.
e.g. Serial.begin(345600);   // !! 115200, 230400, 345600,   460800 X