OSCTRL "Open System Control" (or Open Sound Control Control) is an OSC API, a defined set of OSC messages enabling different elements to share resources and be managed thru a common interface. OSCTRL is abbreviated as CTRL
  • CTRLable an element that is controlable thru CTRL
  • CTRLer a manager of CTRLables and is itself also a CTRLable
  • CTRLGUI a GUI element ususally corresponding to exactly one CTRLable but may work with many

CTRL- 'ables, 'ers, and 'GUIs are all infinitely recursively nestable across multpile computers and networks

The CTRL package includes reference implementations for all CTRL objects that adhear to the CTRL API and defines some Core and Example elements as plugins. While applicable to any controllable system, of particular interest is in the realm of audio of video applications many of which have an OSC interface. The OGRE rendering engine is used for the reference GUI implementation and used to glue objects rendered from different sources.


  • an individual controllable unit
  • only sends and receives from one CTRLer in its InterNet to maintain simplicity within the CTRLable. When CTRLables communicate directly or to multiple other CTRLables at once, they use a single CTRLer as their "agent". Allowing CTRLers to specialize in CTRLing the CTRLables.
  • may have one or more CTRLers in its IntraNet
  • has a ONE-to-ONE relationship with other CTRLables
  • ? because is CTRLer itself, may call self->ctrl() and that may behave different depending on the CTRL


  • is an OSC message router, message proxy and CTRLable collection manager
  • a specialized CTRLable that communicates and maintains connections to multiple CTRLables including other CTRLers
  • manages CTRLable inter-communications, broadcasts, subscriptions, publications, etc
  • has a ONE-to-MANY relationship with CTRLables
  • enables a collection of CTRLables to be managed as a single unit
  • uses OSC path pattern matching to match which CTRLables to address


  • osc.tcp::/meta.neoharmonix.net:2160/:33/speed
  • osc.tcp::/meta.neoharmonix.net:2160/StateManager/0/cosm/3/gizmo/33/speed
Manager has a map of CTRLableID:String. where String is the PATH part of the URL for the CTRLable with the corresponding ID.
CTRLale has getCTRLURL() that queries its Manager to return its URL from its CTRLableID. The map only has the last part of the URL (the path), as the first part is the URL of the base Server and is subject to change.


  • A human interfaceable CTRLable
  • may be directly associated with one CTRLable
  • may provide GUI management of many CTRLables


Plugin: Console, implements Log interface plus:
/ctrl/console/command s:command
/ctrl/console/implements/get,<string> :: returns "|" seperated list of CTRLable Interfaces implemented by this CTRLable

Interface: Log
/log/message s:message i:type
Log a message of a specified type

/log/message s:message
  • Log a message of a default type

/log/default/type/set i:type
/log/default/history/limit/set i:limit
/log/default/history/filtertypes/set s:filtertypes

/log/history i:limit s:search s:filtertypes
Returns log history
limit don't return more than this many log entries
search (optional) limit to entries matching the search string
filtertypes (optional) limit to entries matching the types

http://en.wikipedia.org/wiki/Control_key(external link) - Check out the "standard" symbol for the Control key.