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 host 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. There are Agents that connect to Eigenharps, Agents that output audio, Agents that output to MIDI devices and Agents that host AU's and VST's.

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 (built into the Interpreter), which you can use by playing or typing Belcanto or, more conveniently, from our graphical tool Workbench.

In a normal factory setup there will be many of these Agents running at any one time. It is possible, however, to make a noise with as little as four Agents connected together. You can see such a basic setup shown here inside Workbench:


If you are interested in how a setup is built then reading the introductory Workbench tutorial here Building_your_first_setup_from_scratch is a good start.

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. Many Ports can be controlled from our Stage application - when you browse the available control tree in the Stage editor you are looking at EigenD Agent Ports.


An EigenD Agent (a Scaler, the agent that takes your keys and adds the musical scale information to them) shown expanded in Workbench. It's ports are the little coloured pins that stick out on each side.

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 more conveniently in many situations using the graphical Workbench application.

Back To: The_Official_Documentation