Awesome
extOSC - Open Sound Control Protocol for Unity
Created by iam1337
Table of Contents
Introduction
extOSC (Open Sound Control Protocol) is a tool dedicated to simplify creation of applications with OSC protocol usage in Unity (Unity3d). Supported platforms are PC, Mac and Linux / iOS / tvOS / Android / Universal Windows Platform (UWP) and other.
Also extOSC is available on the Unity Asset Store for free.
Features:
- OSC with coding<br> Massive implementation of methods, utils, and other for simple operations with OSС through code.
- OSC without coding<br> With extOSC components you can easily implement basic program logic in your application without coding. Components for basic functions: sending, receiving, mapping.
- OSC Console<br> New separated console for tracking sending and receiving OSC packages: Video.
- OSC Debug<br> New easy to use tool for debugging sending and receiving OSC packages: Video.
- Map OSC packages<br> OSCMapping allows you to map float values: Video.
- UI<br> Four new UI-components for easy creation of remote control apps with OSC-protocols: Video.
- Addresses with masks support<br> You can bind addresses with mask (for instance: "/lights/*/value").
- Auto pack bundle<br> extOSC will bundle your packages for optimisation purposes.
And also:
- Every data type support (include Array and MIDI)
- Compatible with OS X, Windows, iOS & Android, Windows Store (Hololens and Hololens 2)
- Tested with TouchOSC, VVOpenSource, OpenFrameworks and others frameworks and applications
- Examples
And much more
Installation
Old school
Just copy the Assets/extOSC folder into your Assets directory within your Unity project, or download latest extOSC.unitypackage.
OpenUPM
Via openupm-cli:<br>
openupm add com.iam1337.extosc
Or if you don't have it, add the scoped registry to manifest.json with the desired dependency semantic version:
"scopedRegistries": [
{
"name": "package.openupm.com",
"url": "https://package.openupm.com",
"scopes": [
"com.iam1337.extosc",
]
}
],
"dependencies": {
"com.iam1337.extosc": "1.19.7"
}
Package Manager
Project supports Unity Package Manager. To install the project as a Git package do the following:
- In Unity, open Window > Package Manager.
- Press the + button, choose "Add package from git URL..."
- Enter "https://github.com/iam1337/extOSC.git#upm" and press Add.
Examples
Create OSC Transmitter
// Creating a transmitter.
var transmitter = gameObject.AddComponent<OSCTransmitter>();
// Set remote host address.
transmitter.RemoteHost = "127.0.0.1";
// Set remote port;
transmitter.RemotePort = 7001;
Or you can simple create OSCTransmitter component in Unity editor, or use Create/extOSC/OSC Manager in Hierarchy window.
Send OSCMessage
// Create message
var message = new OSCMessage("/message/address");
// Populate values.
message.AddValue(OSCValue.String("Hello, world!"));
message.AddValue(OSCValue.Float(1337f));
// Send message
transmitter.Send(message);
Or you can use any extOSC/Transmitter components.
Create OSC Receiver
// Creating a receiver.
var receiver = gameObject.AddComponent<OSCReceiver>();
// Set local port.
receiver.LocalPort = 7001;
Or you can simple create OSCReceiver component in Unity editor, or use Create/extOSC/OSC Manager in Hierarchy window.
Receive OSCMessage
Bind method to special address. In address argument you can use masks like: "/message/*"
// Bind "MessageReceived" method to special address.
receiver.Bind("/message/address", MessageReceived);
Method realization:
protected void MessageReceived(OSCMessage message)
{
// Any code...
Debug.Log(message);
}
Or you can use any extOSC/Receiver components.<br>
Get value from OSCMessage
You have two ways to get the value from the message.
var value = message.Values[0].FloatValue;
// Any code...
Debug.Log(value);
or
if (message.ToFloat(out var value))
{
// Any code...
Debug.Log(value);
}
Other examples you can find in Examples folder.
Extensions
List of useful repositories to help make extDebug easier to use:
- extOSC.InEditor - Extension to support extOSC behaviour in Unity Editor
Author Contacts
> telegram.me/iam1337 <br> > ext@iron-wall.org
License
This project is under the MIT License.