====== Integra Communication Protocol ====== Integra defines a very simple protocol that defines how messages may be passed between modules. ===== Semantics ===== Messages are constructed using an Object-Attribute-Value syntax based on the following data: * The module's instance name * The attribute name * A value Integra places no restriction on what the attribute name and the value represent. The **attribute name** is just a //namespace reference// that corresponds to an element in the module's interface definition. The **value** is an arbitrary piece of data, whose type corresponds to the module attribute's //type// in the module's interface definition. (see blah for module definition schema). ===== Syntax ===== The Integra protocol makes no assumptions about the underlying transport used to pass messages between modules. Currently the protocol only defines a syntax for sending OSC messages: ==== OSC ==== // Here are some other possible implementations of the procotol: ==== C/C++ ==== void send_message(char *module_instance_name, char *attribute_name, void *value); ==== URI ==== http://integra-server//? ==== Pd ==== | ( | [s integra] ===== Scope ===== Integra modules can be grouped together in collections and collections can contain collections. To pass a message to a module inside a given collection, we must prepend the instance name with the collection instance name in all but the top-level collection (TLC) in which case it is optinal. Using the OSC syntax, the address string gets extended as follows: ///...// ===== Attribute Inheritance ===== Modules may inherit attributes from other modules. Inherited attributes are semantically and syntactically equivalent to 'standard' attributes. For example, if a Multi-tap delay inherits the attribute 'feedback' from a standard delay, the 'feedback' attribute is referenced as if it is an attribute of the Multi-tap delay: Delay: /feedback TapDelay: /feedback