Live toolkit: TouchOSC & MIDI control of Disting EX

[Updated Mar 26, 2023]

Expert Sleepers' Disting EX is an incredible Swiss Army knife of MIDI, I2C and CV utilities (called algorithms) that can be used to control modular synths and MIDI/I2C devices in a variety of ways. New algorithms are still being added, and some Disting Mk4 algorithms (most of which are included on the Disting EX) have been improved as well.

hexler's TouchOSC is a MIDI and OSC software control surface and toolkit that can be used to control devices like the Disting EX from any computer or device that can run TouchOSC (which is to say: just about anything). Anyone can create their own control surfaces using the TouchOSC Editor and share them as templates that others can use and modify for their own purposes. If you don't have the time or the know-how to create a template for your device, someone else has probably done so and may have already posted it somewhere.

Ableton Live is a ubiquitous recording and performance software that can also sit in the middle of things and send different kinds of signals between devices. You can effectively use Live as a powerful MIDI router whether you're actively recording or not. And of course Live being Live, you can record Disting EX knob twiddles and TouchOSC fader moves for later use as automation.

Using all of the above, you can (for example) control your Disting EX over WiFi via a TouchOSC control surface running on your phone or tablet, and see those changes reflected in real-time on another TouchOSC instance running on your studio computer. You might grab for a knob on your MIDI controller because you like its tactile feeling for a particular parameter, and you can see those changes reflected on the Disting EX and in the TouchOSC instances as well. Meanwhile, Live can be recording all of the parameter changes, regardless of their origin.

Between Live, MIDI, Disting EX and TouchOSC, that's a lot to cover concisely in a guide, but I'm going to try!


I'll start off with a conceptual diagram showing how these various components relate to each other:

In the scenario described in the introduction, Live relays MIDI messages between the Disting EX, the MIDI controller and TouchOSC Bridge (red lines). The latter relays MIDI specifically between TouchOSC instances (blue lines) and Live. 

You can get TouchOSC from Be sure to grab their TouchOSC Bridge and Protokol apps while you're at it. The Bridge app provides a MIDI interface that can be selected in Live's track I/O, and Protokol is a helpful diagnostic tool:

Once these are installed and TouchOSC Bridge is running, open TouchOSC and click on the menu bar button that looks like a pair of interlocked chain links. This opens a Connections dialog where you can configure the following:

- Bridge:
    Connection 1: 
      Host: [Browse to local host or IP running TouchOSC Bridge]

- MIDI: 
    Connection 1:
      Send Port: <Bridge 1>
      Receive ports: <Bridge 1>

It should look like the screenshots below (your host IP will be different). I have an instance of TouchOSC running on my studio laptop and another instance on my iPad. It's worth noting that these settings are the same on both:

If you need more help, has a good guide:

With these settings in place, TouchOSC (i.e. the Disting EX Editor running in it) can connect over the network to TouchOSC Bridge, which forwards MIDI to the Disting EX via tracks in Live (in our case). Further below is a link to a Live set I created to handle this MIDI routing, and I'll talk about that in detail shortly.


Disting EX Editor

In the Expert Sleepers forum at Modwiggler, user has developed a Disting EX Editor template, which user Studio67 started. The latest version can be found here:

Here's an overview of how it works:

Support and discussion can be found here:

Once everything is configured in TouchOSC as described above, open the Disting EX Editor template in TouchOSC and then press the Play button in TouchOSC's menu bar. That takes the template out of Editor mode and puts it into Control Surface mode:

To get back to Editor mode (e.g. to access the menu bar or open a different template), click on the little grey dot in the upper right corner:


The Live Set

The next thing will be to grab this Live set:

This set is a bit of a beast since it's configured to allow MIDI communication from the Editor to the Disting EX (and vice versa); from a MIDI controller to the Disting EX and to the Editor (and vice versa); and then there's accounting for the ways that Live can initiate communication for changing algorithms, automating parameter changes, and for selecting presets. What's more, there's managing these things for either Single mode or Dual mode.

Hopefully all you'll need to do is update each track's input and output to match your particular hardware configuration. Once that's done and you've saved your changes, you'll be able to open this Live set in the future, and everything will just work!

Now let's dig into how this Live set is laid out.

In order for the Disting EX Editor to work correctly, there are a handful of settings that need to be set correctly on the Disting EX itself. There are only a few settings that deviate from the defaults, and they can all be found at the end of this post under the Disting EX Settings heading.

Tracks in the set are grouped into various routing functions, and included in each track group are configurations for reaching the Disting EX's Single Mode and Dual Mode (Left) algorithms on MIDI channel 1, and for Dual Mode (Right) algorithms on MIDI channel 2. These match the Disting EX's default MIDI channels.

Note: As of Disting EX Editor version 1.18.1, you can set the MIDI channels used in Dual Mode, which opens up the ability to control Dual Mode on multiple Disting EXs (and Disting Mk4s). This requires updating the MIDI channels on the Dual Mode tracks accordingly in Live. If you intend to control multiple Disting* modules, you can duplicate and modify the tracks as needed to accommodate additional MIDI channels.

The routing function groups include:

Track Group: MIDI capture

This group is really just a single track set up to receive MIDI from anywhere (e.g. a MIDI controller, the Disting EX itself, the Editor), and can be used to record knob turns and fader moves to clips. After recording MIDI to a clip, the clip can be dragged to a track in the "Live to... Parameters" routing group and used as automation.

Track Group: Controller to...

This routing group is for sending MIDI parameter changes from a controller to the Disting EX or to the Editor. Note that in the latter case, the track's destination is TouchOSC Bridge, which means that all Editors attached to the Bridge will receive and reflect CCs initiated by the controller.

If the CC sent from the controller knob you want to use doesn't match the CC that the algorithm is expecting, the CC number will have to be translated. To accomplish this, I recommend a free and simple to use Max for Live device called CC Converter. If you know the CC numbers you need, just type them into their respective boxes. If you're not sure about the incoming CC number, press Learn and move the controller knob. There's a counter at the bottom that confirms messages are being relayed.

There's an instance of the device on each of the Disting EX tracks in this routing group, but you'll need to install the device for it to work.

I found CC Converter via the Device Library, but here's a more direct link to where you can download it:

For sending the controller's MIDI messages to the Editor, there are a trio of tracks (for Single, Dual (L) and Dual (R) modes) that receive MIDI from the adjacent Disting EX tracks and forward the translated CCs to TouchOSC Bridge.

Track Group: Disting EX to...

This group routes MIDI messages initiated from the Disting EX. Much like the previous routing group, there are tracks to forward those messages to an attached MIDI controller and to the Disting EX Editor, only this time for the other direction. And like before, CC Converter is used to translate controller CCs as they pass through Live.

Track Group: Editor to...

Similar to the previous two groups, this routing group rounds things out to handle parameter changes initiated from the Disting EX Editor. These CCs can be sent to the Disting EX, to a MIDI controller, and to other Editor instances.

A word of warning though when TouchOSC Bridge and Live are running on the same host: operating multiple instances of the Editor requires enabling a few tracks that specify TouchOSC Bridge for both the track source and destination. This is generally not advised since it opens the door for MIDI feedback loops, but this configuration works great as long as you know what not to do. I'll expand on this further in the "Live to... Parameters" section below, where I'll refer to these TouchOSC Bridge<-->TouchOSC Bridge tracks.

On the other hand, if you're only using one Disting EX Editor instance, or if it's not important to you for multiple Editor instances to share their state, you can leave the following TouchOSC Bridge<-->TouchOSC Bridge tracks disabled (I've left them disabled by default):

     Track group: Editor to...
  • Track name: Edtr Single -> Edtr
  • Track name: Edtr Mk4 (L) -> Edtr
  • Track name: Edtr Mk4 (R) -> Edtr

Track Group: Live to...

This group of tracks governs messages initiated from Live, and is organized with subgroups of tracks for choosing algorithms, changing parameters, and selecting presets.

Track subgroup: Algorithms
  • Track name: DEX Single Algorithm
The first track in this group, called DEX Single Algorithm, is comprised of one-shot clips that cover all of the available Single Mode algorithms (as of this writing). They send a CC#127 message with a value corresponding to the algorithm number. Simply play the clip for the algorithm you want, and the Disting EX will change to it.

As indicated in Disting EX Settings at the end of this post, 'Algorithm Select CC' must be set to the non-default value of 127, which is the CC number configured in the Disting EX Editor template. However, that CC is reserved in Live and is not available to choose when setting up a clip to send CCs. So once again, the Max for Live device CC Converter is used on the track to convert a choosable CC number to 127. 

I (somewhat arbitrarily) chose CC#103 for these clips since it's a reasonably high number that isn't likely to conflict with any algorithm parameters. Of course, you can change this to another number if needed -- just update the clips to use a different CC number (located in each clip's Envelopes panel), and then update the 'CC In' value in the track's CC Converter device.

Alternatively, the CC Converter device can be omitted altogether as long as the CC you decide to use is selectable (the highest number Live currently allows is CC#119).

The Disting EX itself must be in Single Mode to use these clips -- it won't switch from Dual Mode to Single Mode when changing algorithms.

  • Track name: DEX Mk4 (L) Algorithm
  • Track name: DEX Mk4 (R) Algorithm
These two tracks contain clips for choosing Dual Mode algorithms via their respective MIDI channels. Dual Mode recognizes CC#18 and a value for the algorithm. These algorithms are numbered starting with 0, so the value sent is offset by one (e.g. send a value of 1 for algorithm 0).

Given the large number of Dual Mode algorithms available, only one example clip is provided per track.

The Disting EX itself must be in Dual Mode to use these clips -- it won't switch from Single Mode to Dual Mode when changing algorithms.

  • Track name: Edtr Single Algorithm
  • Track name: Edtr Mk4 (L) Algorithm
  • Track name: Edtr Mk4 (R) Algorithm
As of this writing, the Disting EX Editor doesn't recognize CCs to change algorithms, so those need to be selected via the TouchOSC interface. These tracks are included in case a future version of the Editor supports it, but the tracks are disabled by default.


Track subgroup: Parameters
  • Track name: DEX Single Parameter
  • Track name: DEX Mk4 (L) Parameter
  • Track name: DEX Mk4 (R) Parameter
Each of the example clips in these tracks sends parameter changes with a given algorithm in mind, but if sent while a different algorithm is active, the changes will be for parameters particular to that algorithm.

  • Track name: Edtr Single Parameter
  • Track name: Edtr Mk4 (L) Parameter
  • Track name: Edtr Mk4 (R) Parameter
These tracks relay MIDI CCs sent from their respective neighboring DEX * Parameters tracks to TouchOSC Bridge so that parameter changes sent from Live are reflected in the Editor.

Important note! I mentioned MIDI feedback loops earlier, and changing certain types of Single Mode parameters is where it can happen. This is only relevant if the TouchOSC Bridge<-->TouchOSC Bridge tracks on MIDI channel 1 (where Single Mode operates) are enabled for Editor to Editor communication (see the Editor to... section above).

Here's why: Due to how the Disting EX and the Editor exchange MIDI messages for radio controls (used for parameters that must be one of multiple choices), the Editor reports the parameter value when a radio control changes position. TouchOSC Bridge forwards the message to Live, and Live echoes it right back to TouchOSC Bridge.

Technically, that describes a feedback loop. It isn't a problem as long as the messages are specific and don't occur too fast. But if the changes are continuous and fast, the echoed messages will spiral out of control.

Or to put it more succinctly:


This clip sends three discrete parameter value changes over the course of one bar, resulting in 3 messages:


This clip's values reach the same high point halfway through the bar and end up at zero by the end of the bar, but the continuous changes result in 192 messages in the same span of time:

So when dealing with parameters that expect specific values, it's best to use specific values!

As far as the Editor goes, this warning only pertains to radio controls in Single Mode algorithms (the Editor only uses fader-type controls for Dual Mode parameters, so it's not an issue in that mode). If you inadvertently start a feedback loop, it's easy to quash it by disabling the TouchOSC Bridge<-->TouchOSC Bridge tracks involving MIDI channel 1 until the storm dies down.

Note: As of Editor version 1.18.1, an additional safeguard has been implemented to prevent MIDI communication conflicts, but it requires deselecting an algorithm before selecting another. It's strongly recommended to do this, since selecting an algorithm in the Editor while another algorithm is selected may result in unintended or conflicting parameter changes occurring in the selected algorithm(s). 

For example, if you send a continuously variable CC to one algorithm and then simultaneously activate another algorithm that expects the same CC to be one of a few specific values, a MIDI feedback loop will occur. In this case, simply deselecting the second algorithm in the Editor may stop the flood. If not, the advice above will definitely do it.

Annoyingly, there is one other way that MIDI feedback loops may occur with this configuration, and it's entirely Live's doing: When certain changes are made to tracks (namely adding, deleting, moving, renaming, changing inputs & outputs) Live sends a short burst of Pitch Bend messages on MIDI channel 1. Why? I have no idea. But with the aforementioned TouchOSC<-->TouchOSC (MIDI Ch 1) track enabled, those messages will be continuously echoed between Live and TouchOSC Bridge. It doesn't seem to hurt anything, but if you make changes to the tracks (even just rearranging them), you may notice Live's MIDI In/Out indicators at the upper right go berzerk. Simply disable and enable this track to stop the Pitch Bend storm. It's mainly for this reason that I left the Editor to Editor tracks disabled by default.


Track subgroup: Presets
  • Track name: DEX Single/Dual (both) Preset
  • Track name: DEX Mk4 (L) Preset
  • Track name: DEX Mk4 (R) Preset
Single Mode and 'Dual Mode (both)' presets are saved in Single Mode's preset slots. On the Disting EX, these are numbered 1-256. In Live they're numbered 1-128 in Bank 1, and 1-128 in Bank 2.

Dual Mode (L) and Dual Mode (R) presets are stored in Dual Mode preset slots numbered 0-255 and are shared by both sides. In Live these are numbered 1-128 in Bank 1, and 1-128 in Bank 2.

This can be confusing, so a handful of clips covering these various preset types and locations can be found in the DEX * Preset tracks listed above.

Note that a clip sends one single Bank/Program Change message to one MIDI port and channel only when it's launched (and only if the Bank/Program specified is different than the last one sent) -- so these are one-shot clips.

Expand the clip's Launch panel to set the Program number (if using Program Change option 0) or the Bank & Program number (if using Program Change option 3). See the Disting EX Settings section at the end of this post for more on that.

There are also some things to know about how the Disting EX responds when sending these different types of Program Change clips for choosing presets:
  • Sending a 'Dual (both)' preset while in Single Mode switches to Dual Mode
  • Sending a Single Mode preset while in Dual Mode does not (currently) switch to Single Mode
  • Sending a Dual (L) preset while in Single Mode will instead select a Single Mode preset if one exists in the location specified in the Program Change
  • Sending a Dual (R) preset while in Single Mode will be ignored, unless the Dual (R) side has been configured to be on MIDI channel 1, in which case see the previous bullet
  • Sending a Single Mode or 'Dual (both)' preset while in Dual Mode will instead select a Dual Mode (L) preset if one exists in the location specified in the Program Change



This is rather a lot of information. My recommendation would be to grab the Live set, adjust the track I/O to match your hardware, and then start moving faders and knobs. 

If something doesn't work as it should, locate the track group in Live that corresponds to the action, and then find where I talked about that section in this write-up. Much of the information in this post is also included in context-sensitive Info Text in the Live set (go to View / Info to enable).

Good luck, and I hope this ultimately saves you a heap of time!

(Thanks to Giovanni Minniti [] for carrying the Editor torch and for keeping up with os!)


Disting EX Settings

The Live set assumes certain settings on the Disting EX are configured as follows -- non-default settings are indicated in this color:

Settings / MIDI/I2C page 1:
- Soft thru = 0 (default)
- RX/TX channel (Single) = 1 (default)
- RX/TX channel (Dual L) = 1 (default)
- RX/TX channel (Dual R) = 2 (default)
- Default first CC = 7 (default)
- Algorithm Select CC = 127
- Program Change Opt = 3
- Send CCs = 3
- Show MIDI parameters = 1 (but see *** note below)

Settings / MIDI/I2C page 2:
- SysEx Device ID = 0 (default)

Mappings / MIDI Mappings:
- Attenuverter 1-6 = CC#1-6 (default)

*** Re: the 'Show MIDI parameters' setting: Set this to '1' to have the Disting EX's display switch to the parameter being modified. However, be aware that doing so may be undesirable for a couple reasons when using automation:

1) When you want to view one parameter while another parameter is being changed, since the display will remain locked to the parameter being changed

2) When sending multiple simultaneous parameter changes, since the display will constantly switch between those parameters

What follows is a brief overview of MIDI-specific aspects of the Disting EX:

EX Single Mode

With the settings above, Disting EX's Single Mode algorithms can be selected via CC#127.

Single Mode algorithm parameters are numbered with the MIDI CC that they respond to (or send from).

EX Dual Mode

Disting EX's Dual Mode algorithms can be selected via CC#18.

Dual Mode algorithm parameters are numbered starting with 0, which means the MIDI CC# they respond to (or send from) is 1 greater than their parameter number.


Single Mode:
CC#1-6 are assigned in each algorithm to the six attenuverter jacks. Other parameters (the quantity of which are specific to the algorithm) start at CC#7. Some algorithms also respond to MIDI notes.

Dual Mode:
CC#1-8 are assigned to parameters 0-7, though most algorithms have fewer than eight parameters. Some algorithms also respond to MIDI notes. CC#17 overrides Z, and CC#19 (value >64) cancels the override.

Mk4 CC Values

Parameter types and their CC values:

- On/Off (e.g. value 0 or 1):
  Off = 126;  On = 127

- Bipolar Min/Max range (e.g. -31 to 31):
  Min (-31) = 0
  Midpoint (0) = 64
  Max (31) = 127

- Unipolar Min/Max range (e.g. 1 to 10)
  1 = 1-14
  2 = 15-28
  3 = 29-42
  4 = 43-56
  5 = 57-70
  6 = 71-84
  7 = 85-98
  8 = 99-112
  9 = 113-126
  10 = 127

- Three options (e.g. 0, 1, 2)
  0 = 0; 1 = 64; 2 = 127


Disting EX has slots for 256 Single Mode presets and 256 Dual Mode presets. The first 128 presets can be referenced via MIDI Program Changes. MIDI Bank Select messages can reference presets beyond 128.

Disting EX default MIDI Program Change option is 0 (Choose preset). Accessing presets beyond 128 requires option 3 (Preset + Bank). When using option 3, Bank 1 or 2 must be specified when sending a Program Change.

Disting EX Program Change options:
Settings / MIDI/I2C Page 1 / Program Change Opt

MIDI Routing

The Disting EX sends MIDI messages in certain circumstances, but by default it doesn't forward MIDI sent to it (by design, to prevent MIDI loops). Injecting Live into the path thus requires manipulating MIDI routing to accomplish different tasks.

MIDI control of the Disting EX can be handled in a variety of ways, and with careful MIDI track routing in Live, real-time parameter syncing between devices is possible. A component of that syncing requires Disting EX to send CCs (disabled by default).