Giter Site home page Giter Site logo

osc-bridge's Introduction

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.

osc-bridge's People

Contributors

dsheeler avatar fundamental avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.