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

/<module instance name>/<attribute name> <value>

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/<module instance name>/<attribute name>?<value>

Pd

|<module instance name> <attribute name> <value>(
|
[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:

/<collection name>/<collection name>/.../<collection name>/<module instance name> <value>

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:

<module instance name>/feedback

TapDelay:

<module instance name>/feedback

Personal Tools