wiki:IngenArchitecture

This page is a "big picture" description of how Ingen (or "The Ingen System", maybe?) is designed. Read this if you want to do anything beyond simply using a single Ingen GUI instance.

Client/Server? System

Ingen itself is (or can be, at least) an independent process with no user interface to speak of. All controlling of the engine is done via [OSC http://www.opensoundcontrol.org/what_is_osc/] - creating a patch, loading a plugin, connecting two ports, etc. Clients connect to the engine and can "register" to receive notification from the engine (again via OSC) of when things change.

The key idea here is that many clients can connect to the engine at one time (even from multiple machines - collaborative modular synthesis!). Clients can come and go as they please, keep up to date with the engine status, etc. etc.

Having no clients connected at all is perfectly okay (for situations like running on a headless machine for live performance, etc.)

Patch Files

Patches are loaded on the client side. In other words the engine doesn't know anything about patch files at all. (This was done so the engine can be used as an audio system in other applications that don't care about the particular file format the included clients use, scripting, etc). From the engine's perspective there is no different between a user building a patch manually and loading a patch (except of course that it happens a lot faster).

There is a command-line patch loading client included called ingen_load. This will load a patch into the engine and exit - useful for headless setups (or if you're just a console junky). You can use ingen_load to load a patch file while the GTK client is running, and the patch will show up in the GTK client just as if you loaded from within; there is no difference.

More

Ask about anything you would like explained here and I will add it.

Last modified 9 years ago Last modified on 09/15/08 13:39:29