Skip to content

michiboo/osc-bridge

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OSC-Bridge

OSC-Bridge is a library for managing state stored in a remote OSC aware application. OSC-Bridge uses UDP to communicate with remote (or local) applications using libuv for cross platform portability.

OSC-Bridge manages:

  • Loading an OSC API specification in the form of an OSC schema

  • Fetching parameters stored in a remote OSC client

  • Caching OSC parameters in sync with remote application for low latency lookups

  • Managing callbacks for when parameter values change

  • Invoking arbitrary OSC actions

  • Repeating parameter requests if UDP packets are lost

  • Debouncing parameter values when remote application responds with a notable delay

  • Simple parameter invalidation when presets are loaded

  • Setting up data watch points [ZynAddSubFX Specific]

Roadmap

Most of the intended functionality is implemented at the time of writing this README, though several additions are planed.

Paths to OSC Schema files should not be assumed

Currently schema/test.json is assumed to be the only valid OSC schema. Custom paths should be usable and for embedding purposes it should be possible to load directly from a preloaded const char *.

OSC actions should be verified to be valid when they’re sent

Currently, OSC mapped parameters are specified in the schema, but actions (basically remote procedure calls which can emit parameter changes or /damage messages). Actions aren’t specified in the schema at all, but once they’re sent, then br_action() should be capiable of verifying if an OSC message is going to be sent to a valid non-parameter OSC port.

Loading default values from OSC schema

Many OSC parameters have either a default value or at least a default value dependent on another parameter. Default values make it possible to mitigate some of the overhead of latency introduced by OSC clients across the network. Current schema revisions don’t include default values, but work is being done to draft an implementation.

More efficient parameter lookup

Finding a parameter in the OSC schema is currently O(n) when it could be much closer to O(log(n)) as the current implementation iterates through all leaf nodes of the OSC tree and checks for matches, when it’s possible to search one OSC path level at a time.

Parameter randomization

Parameters provide a range of valid values, so (mostly a a fun option) it should be possible to apply a random value to any parameter.

LICENSE

OSC-Bridge was written by Mark McCurry and is available under the MIT License.

About

Open Sound Control Bridge

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 99.6%
  • Makefile 0.4%