We will now describe a typical use case for the Integra library involving the on-line database, and a DSP environment running locally. The data flow is summarized in figure . We will assume that the database is empty.
Firstly, 'user A' (A hereafter) will create a couple of module implementations following the Integra module creation protocol. Once this is done, A will enter the modules' definitions into the database using the on-line web interface, and upload the implementations using an on-line form.
'User B' (B hereafter) will then launch the required GUI and DSP engine (these may be provided by the same program), both of which provide linkage to libIntegra. The GUI will call the serialization component for an up-to-date version of the available modules and their definitions which in turn acquires an archive of the definitions and the module implementation files.
Now that the GUI is aware of the available module definitions, modules can be instantiated and inter-connected in the Engine. If these are graphical modules, they will be instantiated in the GUI. In this example, B creates a slider in the GUI, and a sinus oscillator in the engine, and connects the port corresponding to the 'position' attribute of the slider to the port corresponding to the 'frequency' attribute of the sinus oscillator.
The user can modify the state of these modules by moving the slider. Once B is satisfied with the connected modules, the connection graph, and the current module state, it can be saved back to the Integra archive as XML, again by calling functions in the Integra library via the GUI. If the user has an Internet connection, then the new module collection can be written directly to the database using XML-RPC.
Any new user can now download the newly created module collection, load and modify it, and then commit their changes back to the database. The database employs a versioning system, so that at any point a collection can be reverted to a previous save-state.