Documentation Wiki rss-feed

Routing Matrix


As of EigenD release 1.3, we have introduced a new and more powerful version of the MIDI routing and control matrix for both MIDI outputs and AU or VST instruments running in EigenD.

Every MIDI Converter or AU/VST that is in your setup has one of these (you may have several in your setup). You can open this list by clicking on the 'Window' menu of EigenD. There you will see all of the MIDI Converters and AU/VST hosts that you have running. For MIDI converters, just select the MIDI Converter that you wish to configure and the routing and control matrix will appear. For AU's or VST's, select the one you wish to configure. The AU or VST window will appear with all of the instruments controls. In the top left hand corner you will see the word 'Configure'. Click on this and the routing and control matrix will appear.

Introduction

EigenD provides a routing matrix window. It allows you to route expression signals from your Eigenharp to control different aspects of your instruments.

The routing matrix is also available for MIDI output instruments and will in that case not provide control over plugin parameters, but only over MIDI messages.

To access the different routing tables, simply click the corresponding tab.

image:routing matrix tabs.png

The top row of the routing matrix contains the Eigenharp signals and the AU/VST plug-in parameters or the MIDI messages are displayed in a column on the left hand side.

Global settings

image:routing matrix global settings.png

The 'Settings' button at the top left of the routing matrix opens the global settings dialog. This gives you control over the following global behavior:

Data decimation

In the next section you'll learn about the data decimation setting for each mapping. The minimum data decimation setting here takes precedence over the individual settings. If the individual setting is lower than the minimum data decimation value, the value in the global settings will be used instead. This makes it easy to quickly impose a global data decimation rate without having to reconfigure each individual mapping.

MIDI

  • Send notes:

When checked, 'note on' and 'note off' MIDI events will be sent. When unchecked, no note events will be sent. This can be useful when you're setting up the Eigenharp keys for control and not for music.

  • Send pitch bend:

When checked, pitch bend MIDI messages will be sent. When unchecked, no pitch bend message will not be sent.

  • Active MIDI channel:

Selects the channel on which MIDI messages have to be sent. Values 1 to 16 select a single MIDI channel, the 'poly' setting will spread out MIDI messages over several MIDI channels.

  • Minimum poly channel:

Selects the minimum channel that will be used when the active MIDI channel is in poly mode.

  • Maximum poly channel:

Selects the maximum channel that will be used when the active MIDI channel is in poly mode.

More about 'poly' mode

MIDI has been designed to use a single device or instrument for each MIDI channel. It supports polyphony for 'note on' and 'note off' messages on a single channel, however only supports one control message that is note-specific: polyphonic aftertouch. This makes using a single MIDI channel very restrictive in terms of expressiveness, it's not even possible to individually bend the pitch of a note while keeping others unchanged.

EigenD's poly mode allows you to use several MIDI channels for the same instrument. When a note is being played on the keyboard of the Eigenharp, it will pick the next MIDI channel that's available and reserve that channel for the key. If no notes are being played yet, the minimum poly channel will be used, otherwise it will cycle through the next channel numbers to find one that's not being used yet, up to and including the maximum poly channel. If no channels are available, EigenD will start using channels that are already in-use by other keys. With a maximum polyphony of 16 channels, it's however possible to configure EigenD so that duplicate keys per channel never occur in practice.

When the control scope of a CC message mapping is set to per-note and the signal originates from a key, EigenD will retrieve the MIDI channel that belongs to that key and send the CC message only to that channel. Similarly, pitch bend messages will only be sent to the channel that corresponds to the note that is being shifted in pitch.

This provides almost limitless expressiveness for each individual note that is played on the Eigenharp over MIDI.

Basic operation

image:routing matrix basic.png

To enable control of a parameter, click once within the desired cell. A popup dialog will appear with a collection of options that are specific to this intersection in the routing matrix. Depending on the context, this dialog will contain a different set of options, only showing the ones that make sense.

Routing configuration dialog

image:routing matrix configuration.png

This is the list of possible configuration parameters in the popup dialog:

  • Scale factor:

This number is the amount by which EigenD multiplies the signal data. Clicking the 'Invert' checkbox allows you to reverse the behavior of the signal. Setting the number to a larger value will normally mean that it has a greater effect. The scale factor will also be displayed in the table cell when the popup dialog is not visible.

  • Bounds:

This allows you to fine-tune the data that is generated from a control signal. 'Base' sets the starting point that corresponds to a neutral signal on the Eigenharp control, 'lo' allows you to configure the amount of travel below the neutral point and 'hi' does this for the amount of travel above. The default values of 100% for 'lo' and 'hi' indicate a maximum amount of travel.

For instance, setting 'base' to 50% for the 'key yaw' control and touching the key in its resting position, will generate the middle value of the parameter that you're controlling. Moving the key into either direction allows you to decrease or increase that middle value. Without increasing the base value above 0%, it wouldn't be possible to decrease the value by moving the keys, it would only be possible to increase it. By decreasing the 'lo' or the 'hi' value, you reduce the effective range of data that the Eigenharp control will generate, but you will still benefit from the full physical movement range of that control. This can allow you to for instance set the lower level on volume messages to prevent it from ever going to an inaudible value, or to make sure that it never becomes too loud.

Note that these settings are dependent on the data that the control signal generates, the 'key yaw' signal has a low and high travel distance from its resting point, the 'key pressure' signal only has a high travel distance (the amount of pressure).

It's also important to realize that the 'bounds' settings are applied after the 'scale factor' settings, meaning that the 'invert' checkbox will switch the 'lo' and 'hi' settings around.

  • Always return to origin:

Certain expression signals don't always send their origin position when you stop using them. The key yaw for instance, doesn't send out its resting position signal when you remove your finger from the key when it's still tilted. Depending on what you map the expression signal to, you might however always want this origin value to be sent, this checkbox allows you to do just that.

  • Data decimation:

Eigenharp signals operate at a very fine level of detail. For certain instruments, this might generate too much data, too quickly. By increasing the data decimation rate, EigenD will remove all the data within the interval you specified, only sending out data each time the interval has passed. This can dramatically reduce the amount of information that instruments have to process, at the expense of fine-grained expressiveness. Note that this works together with the global data decimation setting, the one with the largest interval will have priority. If your local decimation value is smaller than the global one, its number will be coloured red instead of white.

  • Control scope:

Certain Eigenharp controls can be tied to musical notes. When the plug-in is set to polyphonic MIDI mode, you can use the 'Per-note' setting to only send the data to the MIDI channel that corresponds to the musical note that was played by the same control. If the signal has no note information, for instance the breath pipe, the 'Per-note' setting will cause for no data to be sent. If you use the 'Global' setting, the data will be sent to all MIDI channels. The 'Fixed channel' setting allows you to force the data to always be sent to the midi channel you specified.

  • Resolution:

MIDI CC messages are by default 7-bit, which means that only 128 possible values can be sent. The Eigenharp controls are much more detailed and by switching to 14-bit and selecting an appropriate secondary MIDI CC number, you can combine the resolution of both MIDI CC messages and leverage more of the detail of the Eigenharp.

  • Enabled:

Clicking the 'Enabled' checkbox allows you to turn the mapping on or off without losing its settings.

  • Clear:

To erase the routing for a particular cell, click on the 'Clear' button in the popup dialog.

Examples of scale factor and bounds settings

Below are a couple of examples that demonstrate some possible use cases of the scale factor and bounds settings:

Control pan with key yaw

The key yaw neutral point should be in the middle for controlling pan, with the low and the high travel covering half of the distance.

image:routing parameter yaw-pan.png

Control volume with key pressure

The key pressure controls the volume of an instrument, it starts at 40% of the full volume with the low travel doing nothing (there is none) and the high travel covering the remaining 60% to reach full volume.

image:routing parameter pressure-volume.png

Control two effects with key yaw

The key yaw controls two effects, one for each side.

The travel is inverted in the scale factor for the first effect, becoming the high setting in the bounds. The low travel is set to 0, the base remains at 0 and the high travel covers the full range (which physically is the low travel, but it has been inverted).

image:routing parameter yaw lo-fx1.png

The low travel has been set to 0 and the base and high travel are at default values.

image:routing parameter yaw hi-fx2.png

Toggle a button by touching a strip controller

The base value is set at maximum, low and high travel do nothing. Checking the return to origin option ensures that the value always returns to 0 when nothing is touching the strip controller. However, as soon as it is touched anywhere on its surface, the maximum value will be sent.

image:routing parameter strip-toggle.png

Key position signal

image:routing matrix key position.png

Expression signal 16 is a special case that extracts the key position at initial key press and sends that value once. It's not a continuous signal, but can be used to trigger events. One example is to map '16: Key position' to 'Program Change' in the 'MIDI Behaviour' panel to change programs in your software synthesizer by pressing a particular key in the keygroup.

Legato trigger

image:routing matrix legato trigger.png

The 'Legato trigger' row in the 'MIDI Behaviour' panel allows you to temporarily change the behaviour in which channels are selected in polyphonic MIDI mode. The 'legato trigger' is activated when the data of the expression signal exceeds 50% of the value. This can be fine-tuned with the configuration dialog to make the trigger more or less sensitive.

When the trigger is activated, the channel selection in polyphonic MIDI mode will not cycle through the next available channels, but will use the same MIDI channel for all the notes that are played while the trigger is active. The first note after the trigger was activated will still select a new channel so that phrases will be isolated from chords that you are already playing.

This allows a series of notes to always be sent out on the same MIDI channel, allowing a software instrument to treat them as legato-style playing with appropriate sounds.

Row highlighting

image:routing matrix row highlight.png

To make it easy to find your way around the matrix while doing a mapping, you can click on a name in the left hand column to highlight the entire corresponding row, hence making it much easier to visually spot the row at a later time.

Belcanto configuration

All routing matrix mapping functionalities are available through Belcanto.

For example:

Creating a mapping

To control a AU/VST parameter Y through breath, use:

1118 8728 ? 5 134 233 ? 8826
audio unit X hey breath for Y map

where 'breath' refers to an input parameter on the routing matrix, these can optionally be referred to in a generic fashion as such:

8731 ? 233 ? 8826
parameter X for Y map

To control a MIDI parameter X through breath, use the midi noun:

134 233 1215 ? 8826
breath for midi X map

Creating a mapping for the MIDI instruments is possible by talking to the midi converter agents, for example:

1215 8755 ? 5 134 233 1215 ? 8826
midi converter X hey breath for midi Y map

Removing a mapping

To remove a mapping, use un map, for example:

8731 ? 233 ? 6 8826
parameter X for Y un map

or for a MIDI mapping:

8731 ? 233 1215 ? 6 8826
parameter X for midi Y un map

Disabling/enabling a mapping

To disable a mapping without losing its configuration, use:

5584 113 8731 ? 233 ? 6 67
enable from parameter X for Y un set

It can be re-enabled afterwards as such:

5584 113 8731 ? 233 ? 67
enable from parameter X for Y set

Configuring a mapping

All aspects of a mapping can be configured through Belcanto.

For example:

Set the scale factor

135 113 8731 ? 233 ? 23 26 13 67
scale from parameter X for Y to - 3 set

Set the lower bound

4313 113 8731 ? 233 ? 23 12 15 67
low from parameter X for Y to 2 5 set

Set the base

1812 113 8731 ? 233 ? 23 15 22 67
base from parameter X for Y to 5 0 set

Set the higher bound

4312 113 8731 ? 233 ? 23 17 15 67
high from parameter X for Y to 7 5 set

Set return to origin

8863 8862 113 8731 ? 233 1215 ? 67
origin return from parameter X for midi Y set

Set the control scope

1166 113 8731 ? 233 1215 ? 23 4584 67
scope from parameter X for midi Y to global set
1166 113 8731 ? 233 1215 ? 23 124 67
scope from parameter X for midi Y to note set

Set the resolution

8852 113 8731 ? 233 1215 ? 23 17 67
resolution from parameter X for midi Y to 7 set
8852 113 8731 ? 233 1215 ? 23 11 14 67
resolution from parameter X for midi Y to 1 4 set

Set the secondary CC for 14-bit resolution

8853 113 8731 ? 233 1215 ? 23 13 16 67
secondary from parameter X for midi Y to 3 6 set