Live toolkit: MIDI to CV with Expert Sleepers ES-5 'ES-3 Expander'


In this writeup I'll be using the Voice Controller and ES-5 Controller plugins included in Expert Sleepers' Silent Way suite, as well as two ES hardware modules: the ES-3 Lightpipe/CV and the ES-5 'ES-3 Expander'.

The ES-3 can send pitch, gate, envelope, and trigger CV signals, and the ES-5 can send gate and trigger CV signals. Silent Way plugins work with these hardware modules, converting MIDI to CVs that can be used to directly control hardware devices from a computer or MIDI controller.

ES-5 Expansion Explained

There are many Expert Sleepers hardware modules that can be used together in a variety of configurations. The ES-3 and ES-5 are unique in the lineup (for now) in that the ES-5, which connects behind the panel to an expansion header on the ES-3, has expansion headers of its own, enabling it to become a hub for further expansion. To accommodate this, the ES-3 gives up one or two of its outputs, depending on which of the ES-5's six expansion headers you use. There are some helpful diagrams in this Modwiggler post illustrating how it works.

My Expert Sleepers setup includes one each of the ES-5 and ESX-8MD expander modules, which are connected behind the panel like this:

  ES-3 --> ES-5 --> ESX-8MD

When I'm using only the ES-3, all eight of its outputs are available. When I'm using the ES-5 and/or ESX-8MD, ES-3 output 7 is used as a bus for accessing those modules. The reason is that the six ES-5 expansion headers are split between the left and right channels in a stereo signal: expansion headers 1-3 are associated with the left channel (output 7), and expansion headers 4-6 are associated with the right channel (output 8). Since I'm only using the ES-5's expansion header 2 to connect the ESX-8MD, everything I send to those two modules happens on the left channel of the expansion bus.

I showed in an earlier post that I've named my ADAT outputs in Live's preferences so that I can more easily differentiate them in my track routings. This bussing explains then why I included elements of the ES-3, ES-5, and ESX-8MD in the names for the last two outputs. It's not as precise as I'd like, but it keeps the names relatively short.

(Side note: If your expansion modules, like mine, only use the left channel of the bus, consuming only ES-3 output 7, there's a devil in the detail to be aware of if you want to use output 8: Live routes signals around in the DAW using stereo channels, and some things just work best if you go with the flow on that. So even though only output 7 is used as a bus for ES-5 expansion headers 1-3, you must still specify the stereo channel (i.e. outputs 7-8) on the track output when referring to modules attached to the ES-5. ES-3 output 8 can still be used as normal on a different track at the same time, but that one needs to be mono or it'll interfere with the bus channel.)

Alright, so if pointing to expansion modules hanging off the ES-3/ES-5 combo is done at the track level, how does one specify the outputs themselves on those modules? Since they're not available in the track's output chooser, the expander module outputs are specified in certain Silent Way plugins that can access them, and they have names like 'Gates 1/5' and 'Gates 2/1'. The names are generic since there could be a variety of expanders connected to the expansion headers, and the type and order in which they appear may differ from user to user.

The first 'Gates' number indicates the expansion header on the ES-5 to which the destination module is connected. The second number indicates the physical output on the destination module. If nothing is connected to the ES-5's first expansion header, the '1/' refers to the ES-5 itself. On my system I skipped the ES-5's first expansion header and connected the ESX-8MD to the second one. So the following output names on my system would mean:

  - Gates 1/5 = Output 5 on the ES-5 itself
  - Gates 2/1 = Output 1 on the ESX-8MD connected to the ES-5's expansion header 2

Using up ES-3 outputs

In the last post I left off with a Live set and patch using only the ES-3 that included a single voice and some additional CVs. I suggested that one could support up to four pitch/gate type voices with the ES-3's eight outputs. But as you find more things to send through the ES-3 the more precious those outputs might become. An ES-5 is a great investment since it can take over some responsibilities from the ES-3's more capable outputs, while also providing for further expansion capacity as described above.

A good use case, presented next, is a patch with four monophonic voices using only ES-3 outputs for pitches and gates. I'll use that as a jumping off point to peel off the gate CVs and put those on the ES-5. I'll look at a couple ways that can be done using the ES-5 Controller plugin.

A few quick comments about the sets that follow: 1) The V/Oct calibrations saved in the Voice Controller instances might work as-is for you, but I'd recommended doing your own calibrations; 2) Your interface numbering may be different than mine, so you may need to adjust the tracks' outputs; and 3) I'm using the VST3 format of the Silent Way plugins, so the input/output pairs appear in Live with different names (e.g. Input2, Output3, etc) than their VST/AU counterparts (e.g. 3/4, 5/6, etc).

Live set: MIDI to CV - 4-VCO - ES-3 pitches & gates.als

This is a simple VCO/EG/VCA patch -- times four (full patch details can be found in the lower left of the screenshot above). The Expert Sleepers portion of the patch currently looks like this:

  -ES-3:1 (pitch1) -> VCO1 V/Oct input
  -ES-3:3 (pitch2) -> VCO2 V/Oct input
  -ES-3:5 (pitch3) -> VCO3 V/Oct input
  -ES-3:7 (pitch4) -> VCO4 V/Oct input

  -ES-3:2 (gate1) -> EG1 gate input
  -ES-3:4 (gate2) -> EG2 gate input
  -ES-3:6 (gate3) -> EG3 gate input
  -ES-3:8 (gate4) -> EG4 gate input

The Live set includes tracks for separate keyboard control for each voice, which eliminates fussing with input monitoring when switching between MIDI keyboard and MIDI clips.

I opted to use the Instrument type of Voice Controller for this set. Pitch and gate are sent to each instance's main outputs by default, so the only other configuration needed is to point each VC track to a pair of ES-3 outputs.

Freeing up ES-3 outputs

Now let's move the ES-3 gates over to the ES-5 using the ES-5 Controller plugin. The remainder of this post is dedicated to demonstrating two different ways to do this.

The previous physical patch will now look like this, and will remain unchanged from here:

  -ES-3:1 (pitch1) -> VCO1 V/Oct input
  -ES-3:2 (pitch2) -> VCO2 V/Oct input
  -ES-3:3 (pitch3) -> VCO3 V/Oct input
  -ES-3:4 (pitch4) -> VCO4 V/Oct input

  -ES-5:1 (gate1) -> EG1 gate input
  -ES-5:3 (gate2) -> EG2 gate input
  -ES-5:5 (gate3) -> EG3 gate input
  -ES-5:7 (gate4) -> EG4 gate input

This patch reorganizes things so that the first four ES-3 outputs are used for Pitch. The Gates are moved over to the odd numbered ES-5 outputs (odd: for no other reason than to give them some visual space).

I collapsed the keyboard control tracks and the VCO audio tracks in the remaining screenshots for visual clarity since the focus from here is on the Voice Controller and ES-5 Controller tracks.

Remember that these are only examples. There are other permutations, even within each of these approaches. But if you work through these yourself and carefully observe how the signals route in each case, you'll probably have a better grasp of your options in a given situation. I sure learned a lot putting these together.

ES-5 Controller method 1: Stacked instances

This method "stacks" (or chains) multiple instances of ES-5 Controller. We'll look at this set more closely since it illustrates some things about how the stereo channels operate. It's also a chance to see manipulation of the Voice Controller's Output Matrix in action.

Live set: MIDI to CV - 4-VCO - ES-3 pitches & ES-5 (stacked) gates.als

Notice how the Voice Controller tracks' outputs appear to overlap -- the first and second both point to ES-3:1/2, and the third and fourth both point to ES-3:3/4. What makes this work is how each VC's Output Matrix is configured. (For each VC instance, I turned off all of the output functions, and only turned on the ones I needed).

Normally Pitch and Gate are sent to VC's first two outputs, which happen to be the plugin's main outputs to the track. We took advantage of that in the previous Live set. Recall from the previous post that for the VST/3 format the default VC output arrangement groups its outputs in stereo pairs (Stereo x3). With that in mind, we can route signals in a stereo pair using only the left or right channels. More precisely, we can route odd numbered VC outputs to the left channel, and even numbered VC outputs to the right channel.

And that's what we've done here for Pitch: the first and second VC tracks specify the same stereo output (ES-3:1/2), but Voice Controller 1 sends its Pitch to the left channel of its output group (i.e. the output to the track) while Voice Controller 2 sends its Pitch to the right channel. Same thing for the third and fourth VC tracks. And once again, since VC's first output pair is already sent to the track by default, we can just point each track's output to a stereo pair of ES-3 outputs and the individual VC pitch signals will stay in their respective lanes, like this:

  VC 1 output 1 -> track output ES-3:1/2 (left) -> ES-3:1
  VC 2 output 2 -> track output ES-3:1/2 (right) -> ES-3:2
  VC 3 output 1 -> track output ES-3:3/4 (left) -> ES-3:3
  VC 4 output 2 -> track output ES-3:3/4 (right) -> ES-3:4

You don't have to do it this way -- you could set each VC track's output to a specific mono ES-3 output. When I tested it while preparing this post I found that doing so does work, but it also changed the ES-3 outputs' response, and I had to recalibrate the four VC instances. No biggie; just something to keep in mind if you changed your track outputs and found your calibrations went wonky.

Gates are normally sent to VC output 2, but in order to keep that output clear for the even numbered pitches, I moved the gates to other VC outputs: I put voice 1's gates on VC output 3, and voice 2's gates on VC output 5 (same thing for voice 3 and voice 4). Those correspond to the left channel of output pairs Output2 and Output3, respectively.

We'll use four instances of the ES-5 Controller plugin (Audio Effect type) to manage the gates sent from the Voice Controllers. ES-5 Controller has a Thru setting that allows you to specify one pair of the plugin's stereo inputs to be forwarded to its outputs. This allows for the chaining of ES-5 Controller instances on the same track. The default input pair (inputs 1/2) will thus be reserved for the ES-5 Controller chain to forward gates sent from its upstream neighbor "thru" to its downstream neighbor. Only the first instance will have Thru turned off since it has no upstream neighbor (although leaving it on doesn't affect this patch).

We still need a way to direct the various gates to specific ES-5 Controller instances in the chain. So I've set up four tracks to capture the gates being sent from the four Voice Controllers. Each Gate Capture track then forwards its gates to one of the ES-5 Controller instances via an unused input pair (recall that ES-5 Controller has eight inputs). The gates from the Voice Controllers only need one channel each, so since inputs 1/2 are being used by the ES-5 Controller chain for Thru, we'll use input 3 per instance (which belongs to input pair Input2).

On the Gate Capture tracks' input meters you can see the gate signals on the left channels since VC outputs 3 and 5 are odd numbered. I could have used VC outputs 3 and 4 instead, and set the Gate Capture tracks' inputs to VC output pair 'Output2' across the board. Then the four gate signals would appear on the tiny input meters as left, right, left, right (which translates to input channels 1, 2, 1, 2).

In each ES-5 Controller instance, the Input to Gates section is where to tell ES-5 Controller which of the ES-5 module's outputs to use -- by setting the dial corresponding to the input whose signal you want to forward. The four Voice Controllers' gates enter their corresponding ES-5 Controller instance via its third input channel (i.e. the left channel of input pair Input2), so the third Input to Gates dial in each instance is set to Gates 1/1, 1/3, 1/5, and 1/7, respectively.

Finally, the output for the ES-5 Controllers track is set to the stereo bus discussed earlier in this post -- in my case that's the stereo output that I named 'ES3/5/8MD'. The signal on the big track meter is on the left because the ES-5 module's gate expander 1 (the ES-5 itself) uses the left channel.

Here's a summary of how the gates are routed:

  VC 1 output 3 (Output2) -> Gate Capture 1 -> ES-5 Controllers instance 1 input 3 (Input2) -> Gates 1/1 (ES-5:1)
  VC 2 output 5 (Output3) -> Gate Capture 2 -> ES-5 Controllers instance 2 input 3 (Input2) -> Gates 1/3 (ES-5:3)
  VC 3 output 3 (Output2) -> Gate Capture 3 -> ES-5 Controllers instance 3 input 3 (Input2) -> Gates 1/5 (ES-5:5)
  VC 4 output 5 (Output3) -> Gate Capture 4 -> ES-5 Controllers instance 4 input 3 (Input2) -> Gates 1/7 (ES-5:7)

That's a lot to take in. As a reminder, I've added Info View text to each track's title bar in the Live set, so mouse over each track for context-sensitive detail.

At this point a visual is probably the most helpful way to show how this works.

The diagram shows the complete signal paths for both Pitch and Gate for all Voice Controller and ES-5 Controller instances. It also illustrates the role that the Thru setting in each ES-5 Controller instance plays -- and how turning off Thru on select instances affects which instances' gates will be passed through to the ES-5 module.

The aqua colored lines represent where ES-5 Controller gates are being bussed. The places where red gate lines intersect with aqua lines indicate points where individual gate streams merge with bussed gate streams. For example, instance 1's gate stream passes into instance 2's first input and becomes a bus signal. Instance 2's own gate stream merges with the bus stream before entering instance 3's first input. Thus, turning off Thru at instance 3 results in the gates from the first two instances being stopped cold, and only the gates from instances 3 and 4 will be seen at the ES-5 module.

ES-5 Controller method 2: Single collapsed instance

The other method collapses the four ES-5 Controller instances down to a single instance.

Live set: MIDI to CV - 4-VCO - ES-3 pitches & ES-5 (collapsed) gates.als

Besides collapsing the ES-5 Controller instances, the only other difference between this Live set and the previous one is that I changed the outputs used for gates by Voice Controller instances 2 and 4. Previously the four VCs sent their gates via outputs 3, 5, 3, 5 respectively, and that corresponded to the left channel of output pairs Output2 and Output3.

This time, the four VCs send their gates via outputs 3, 4, 3, 4, respectively, which confines those gates to the left or right channel of output pair Output2. And notice that their signals on the Gate Capture tracks' meters alternate between left or right channels, depending on which side of the stereo signal they occupy (odds on left, evens on right).

And lastly, looking at ES-5 Controller itself, the four gate signals arriving on inputs 1-4 are assigned to their final ES-5 module outputs with the first four Input to Gates dials. Input Thru is turned off to prevent the gates arriving on inputs 1/2 or 3/4 from causing spurious gate signals to occur on the unused ES-3 output 8 and ES-5 output 8. But really, this would only matter if you were trying to use those outputs for something else.

The gates are now routed like this:

  VC 1 output 3 (Output2) -> Gate Capture 1 -> ES-5 Controller input 1 (Track In) -> Gates 1/1 (ES-5:1)
  VC 2 output 4 (Output2) -> Gate Capture 2 -> ES-5 Controller input 2 (Track In) -> Gates 1/3 (ES-5:3)
  VC 3 output 3 (Output2) -> Gate Capture 3 -> ES-5 Controller input 3 (Input2) -> Gates 1/5 (ES-5:5)
  VC 4 output 4 (Output2) -> Gate Capture 4 -> ES-5 Controller input 4 (Input2) -> Gates 1/7 (ES-5:7)

And that's it for now! Hopefully this gave you some concrete examples to work with and a better grasp of signal flow when adding the ES-5 to the mix.

In the next and final post in this particular series on Expert Sleepers topics, I'll go back to Voice Controller to cover polyphony and paraphony.

(Thanks to Os from Expert Sleepers for his feedback on this write-up)