All signals flow through the ER-301 at the same rate (48kHz or 96kHz, depending on the sample rate configuration in the system settings) and there is no difference between an audio signal or a modulation (aka CV) signal. As is natural for open-ended DSP environments like the ER-301, algorithms and their associated parameters are encapsulated into discrete blocks called units. However, distinct from other open-ended environments (such as Max or Pd), I opted for a restricted form of signal routing in order to avoid the complications that arbitrary networks cause for UI design. I believe that the ER-301’s restricted style of signal routing has grown to be one of its core strengths.

# A Patching Language

Signal routing and processing in the ER-301 are handled according to the following 3 rules:

• A chain is a sequence of zero or more units where signal flows from left to right.
• A unit encapsulates a signal processing algorithm and exposes the algorithm’s parameters as controls.
• Unit controls are modulated by other chains. In the following diagram, we can see how this recursive signal flow can extend as deeply as necessary to meet (most of) a patch’s signal routing requirements.

A concrete example: In the patch depicted below, an audio signal is tapped from external input IN2 and fed into a Linear VCA unit. The level control of the Linear VCA unit is modulated by another (sub)chain which contains an ADSR unit that is excited by a gate signal arriving at external input G4. After the Linear VCA unit, the signal is further processed by a Ladder LPF (low pass filter) unit whose frequency control is modulated by a Sin Oscillator unit. The final output of this patch is routed to the output OUT3.

# Chains

A chain is a sequence of units with signal coming in to the chain via a source, flowing through the units and then leaving the chain via a sink. All sinks have exactly one chain associated with them, making sinks and chains one-to-one.

## Sink

A sink may be:

• one of the 4 outputs (OUT1-4).
• the control port of a unit (e.g. the speed control of a Sample Player unit).
• the source of another chain.

It is not required to assign a sink to a chain. Instead, every sink is associated with its own chain already. In fact, the name of a chain corresponds to the name of its sink because they are in fact synonymous. This just reflects the fact that a sink can only be fed a signal from one chain at a time. Contrast this to how sources can have their signals routed to as many destinations as necessary.

This stereo chain routes to the stereo channel group OUT1+OUT2.

This mono chain routes to the ‘shift’ control of a Sample Player unit.

This mono chain routes to a user-created global source called ‘clock’.

 If you need to combine multiple signals to feed to a sink then you should use the Mixer unit.

The name section of the chain UI (also referred to as the header) shows a menu (in the sub-display) when it is focused:

• Clear: Deletes all units in the chain.
• Save: Save the current chain’s state (source assignments and units) to a preset file on the SD card.
 When viewing a chain and its contained units, pressing HOME will move the UI focus to either the focused unit’s header, or if no unit is focused, to the chain’s header. This is usually faster than scrolling with the knob.

## Source

A source may be:

• one of the 20 external inputs (G1-4, IN1-4, ABCD1-3).
• one of the signal-generating units (e.g. Sample Player, Sine Osc, and so on).
• the output of another chain (e.g. global or local chains).

You select a chain’s source by using the source menu located in the header of a chain. In the case of stereo chains, there will be separate source selection menus for each channel, left and right. Once entering the source selection screen, you are first presented with the 20 external inputs (plus a loop-back copy of the outputs OUT1-4). To access the local or global sources, press the choose (S1) button to cycle among the 3 types of sources. Scroll through the list with the knob and use the M1-6 buttons to first expand a section of sources and again to choose the desired source.

On the other hand, pressing clear (S3) will clear any existing source assignment from the focused channel.

## Inserting Units

Units can be inserted at any position in a chain by placing the cursor at the desired location (such as the beginning/ending of the chain, or, between two units) and pressing the insert (S3) button. This will bring you to the unit selection menu where you can choose from a growing library of units.

Placing the cursor in between units will reveal an insert button (S3), as well as a sub-display scope that shows the signal that is passing through here.

Pressing the insert button (S3), takes us to the unit selection screen where we can scroll through the available units with the knob and choose one to instantiate using its corresponding M button.

If you hold down one of the S buttons and turn the knob, you can change the filter operands and thus pare down the number of displayed units to a particular type.

## Output Meters

At the end of a chain is a level meter for each channel that displays the chain’s final RMS signal level in decibels of full-scale (dBFS). The level meters display signal levels from -60dBFS to +12dBFS with a line indicating 0dBFS. In the case that the chain is routed to an output (OUT1-4) than any signal over 0dBFS will be hard clipped by the DAC.

 A Limiter unit at the end of an output chain is very useful for soft clipping a hot signal before it reaches the DAC (unless that is what you want).
 Don’t know what dB or dBFS means? Having a hard time getting a feel for -6dBFS in term of actual signal level? Try this excellent decibel calculator.

# Units

For further details on available units, see the library of units.

A unit encapsulates a signal processing algorithm and exposes it parameters as controls. Signal enters a unit either from the left or via its control ports (from below). Signal leaves a unit from the right. Stereo chains will contain only stereo units, while mono chains will contain only mono units.

If you move the cursor over to any unit’s header area (i.e. or press HOME while the cursor is inside a unit), the sub-display will switch to the unit’s header menu containing 3 commands:

• Bypass: Re-route the chain’s signal flow so that this unit is skipped.
• Re-init: Restore all unit parameters to their default values.
• Delete: Remove this unit from the chain.

## Bypassing

Activating the Bypass command located in a unit’s header menu will cause the unit’s output to be disconnected from the next (non-bypassed) unit. The next unit will instead get its input from the previous (non-bypassed) unit.

 By default, a bypassed unit will still process its inputs and thus consume CPU cycles. The reason for this is to provide smoother transitions when un-bypassing a unit. If you wish to have bypassed units completely disabled see the next section.

## Disabling

There is a setting in Admin>Settings that let’s you choose whether bypassing a unit should also disable it. In this context, “disabling a unit” means removing it from the DSP scheduler so that the unit no longer consumes CPU cycles. Un-bypassing the unit will re-enable it.

# Controls

Most units have controls that allow you to alter the parameters of its algorithm. Various types of controls are needed to handle the wide variety of of algorithmic parameters as well as their various ranges and quantities (e.g. frequency, time, gain, pitch, and so on).

## Gain/Bias

This is the most common and most versatile control type. It is essentially a modulation source plus controls for attenuation (gain) and offset (bias).

$\text{value} = \text{gain} * \text{modulation} + \text{bias}$

As its name implies, the final value of the parameter is derived by multiplying any incoming modulation by a gain and then adding a bias. If there is no modulation then the value of the parameter is just the bias. When you first select this control (with the M button underneath it), the knob will be focused to and controlling the bias parameter. You can use the S2 and S3 buttons to switch between adjusting the gain and bias parameters, respectively. To dive down into the modulation sub-chain, press S1. Pressing UP will deselect this control and restore focus to the chain.

The quantity, range and units of the bias value will depend on the actual parameter. Refer to the documentation for each unit for these details.

An example of a Gain/Bias control is the speed parameter of the Sample Player unit.

The Gain/Bias control shows the bias value on the left fader and the final value (or its range if changing quickly) on the right fader.

The sub display gives access to the modulation sub-chain and provides a mini-scope view of the signal that is being fed to this control.

 You can quickly zero a focused parameter by pressing ZERO (Shift+HOME). You can also quickly restore a parameter to the value it had when you focused it by pressing the CANCEL button.

## Pitch

This control is used whenever we want to utilize a V/oct signal to sequence a unit’s pitch (or pitch-like) parameter. There is no gain because scaling a V/oct signal would destroy the volt-per-octave relationship. However, you can transpose the incoming modulation up or down in cents (¢).

$\text{value} = 10*\text{modulation} + \frac{\text{transpose}}{1200}$

Why 10? This is the gain necessary to convert the internal signal range back to a voltage. Recall that the ABCDx inputs accept inputs from -10V to 10V and that signals in this range are digitized and mapped to the interval between -1 and 1. Multiplying by 10.24 essentially undoes this mapping so that we can operate on the voltages necessary for V/oct calculation.

An example of a pitch control is the V/oct parameter on the Sample Player unit.

The Pitch control shows the transpose amount on the left fader and the actual resulting pitch (or its range if changing quickly) on the right fader.

The sub display gives access to the modulation sub-chain and provides a mini-scope view of the signal that is being fed to this control.

 Accurate V/oct tracking is only possible with the calibrated ABCDx inputs

## Threshold

This control changes its digital output (high/low, on/off) every time the incoming modulation crosses an adjustable threshold from below. Focusing this control (via an M button) and then pressing S2 will allow you to adjust the threshold. The S3 button will manually ‘fire’ additional gates into the unit. There are 3 ways that the digital output is derived from the input signal:

• trigger: Positive going edges cause instantaneous (single sample) trigger events.
• gate: The parameter is ON only while the incoming signal exceeds the threshold.
• latch: If OFF, a positive going edge cause the parameter to turn ON. If ON, a positive going edge cause the parameter to turn OFF.

Refer to the individual unit documentation for details on which behavior is configured for each unit control.

An example of the Threshold control is the trig parameter of the Sample Player unit.

The Threshold control’s circular display pulses whenever the incoming signal crosses the threshold.

The sub display gives access to the modulation sub-chain and provides a mini-scope view of the signal that is being fed to this control.