Documentation Wiki rss-feed

The EigenD System and its Agents

EigenD is the software that you run on your computer that works with your physical Eigenharp to form the complete Eigenharp instrument. You do not need to know anything about how it works if you simply want to play, but if you want to configure, change and modify your Eigenharp to suit yourself then it is useful to have some understanding of EigenD's internals.

EigenD is a software system that usually contains a large number of individual programs called Agents. Each Agent may do something completely different, and Agents may be connected together to exchange information, performance data and audio using virtual 'wires'. Part of the power and flexibility of the Eigenharp comes from this.

For example, there is a 'Sine Oscillator' that makes sine wave noises. There is an Agent called a 'Scaler' that adds the scale you wish to play to your keyboard data. The Agent that you play Belcanto to is called the 'Interpreter' as it interprets your commands. Connections between Agents are made for you by an Agent called the Plumber. In a normal factory setup there will be hundreds of these Agents running at any one time.

Each Agent has Ports, Verbs and Nouns .

A Port can be an input, output or both. You can connect any Port output to any other Port input (and although this is not always guaranteed to do anything useful it will not break your system). The values of many Ports can be set using the 'set' verb or nudged up and down with the 'up' and 'down' verbs using Belcanto (the musical language described elsewhere on the site). Examples of Ports might be the Yaw output of a set of keys, or the Audio Output of a Sample Oscillator. The Audio Mixer inputs are Ports. Most values, parameters and signals in EigenD are Ports.

Ports have a Type and some have a Range. Type may be one of:

  • Number - such as '1.345' and usually has an associated range
  • Integer - like number but must be a whole number like 1 or 2 rather than allowing fractional values
  • On/Off - must be one of two values, usually on/off but may be yes/no or true/false, they're all equivalent
  • Text - words in text, usually cannot be changed
  • Dictionary - a signal that contains complex information like scale, course or tonic
  • Generic - a Generic Port usually doesn't care what is connected to it, it just uses that signal. Recorder inputs are like this, for example, they'll record whatever you connect to them, and output it as well
  • Audio - a high speed Port that can carry very rapid performance data or audio signals

Range expresses what the Port may vary from and to (for example it might be from -1 to 1). EigenD does it's best to make sense of incompatible Types and Ranges. To modify Ranges in more flexible and intersting ways, there is a dedicated Ranger Agent.

Verbs are instructions to the Agent to do something, such as saying 'connect' to the Plumber or 'start' to the Metronome. You cannot connect anything to a Verb.

Nouns are used by an Agent to groups things together or express abstract ideas. You can usually use a Noun in a Belcanto sentence but it may not represent an actual thing inside EigenD. You cannot connect a Port to Noun, you can only use it in a Belcanto sentence.

Ports on different Agents may be connected together using the Plumber Agent using Belcanto, or starting in the winter of 2011 using the graphical Workbench application.