Live toolkit: TouchOSC & MIDI control of Disting EX


[Updated Feb 10, 2024]

Expert Sleepers' Disting EX is an incredible Swiss Army knife of audio processing apps and MIDI, I2C and CV utilities (collectively called algorithms) that can be used to control (or be controlled by) 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!


TouchOSC

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 hexler.net. 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, hexler.net 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 hal9000.mg has developed a Disting EX Editor template, which user Studio67 started. The latest version can be found here:

Some overview videos 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:


In order for the Disting EX Editor to work correctly, there are a number of settings that need to be set correctly on the Disting EX itself. There are only a few that deviate from the defaults, and they can all be found in the Disting EX Settings footnote below.

~

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.

Tracks in the set are color-coded and grouped into various routing functions. 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 color coding is as follows: The track group color represents the source of MIDI communication, and the track and clip color represents the MIDI destination.
  • Maroon = MIDI capture in Live
  • Dark grey = Controllers
  • Aqua = Disting EX
  • Purple = Disting EX Editor
  • White = Live
  • Yellow = Audio outputs
  • Orange = README (mouse-over)
For example, an aqua colored track within the white track group represents MIDI from Live (white) sent to the Disting EX (aqua). 

The routing function groups include:

Track Group: MIDI capture

Color code: Maroon


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...

Color code: Dark grey


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. The number at the very bottom is the CC's value. So in the example on the left, original CC#119 value 64 comes in, and new CC#32 value 64 goes out.

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 maxforlive.com 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...

Color code: Aqua


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...

Color code: Purple


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

Operating multiple instances of the Editor requires tracks that use TouchOSC Bridge for both the track source and destination. This is not a usual practice since it opens the door for MIDI feedback loops -- and was a problem with earlier versions of the Editor -- but this configuration works fine as of Editor version 1.24. 

There is a caveat worth knowing, described in the final paragraph of the Avoiding Feedback Loops footnote at the end of this post. Regardless, 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 these tracks disabled (I've left them disabled by default):

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

Track Group: Live to...

Color code: White


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 sample 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).

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
The example clips in these tracks send parameter changes for the algorithm indicated in the clips' names. If they're sent while a different algorithm is active, the CCs will modify some parameter in the active 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 those tracks are reflected in the Editor.

[Update: Only a few example clips for changing parameters are provided in this set, but check out this post!]

---

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

~

Wrap-up!

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 [hal9000.mg] 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)
- Show MIDI parameters = 1 (but see * below)
- Algorithm Select CC = 127
- Program Change Opt = 3
- Send CCs = 3

Settings / MIDI/I2C page 2:
- SysEx Device ID = 1  (see ** below)

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

** As of Editor 1.24, the Disting EX's 'SysEx Device ID' must be the same as its Single Mode MIDI Channel in order for SYSEX messages to be successfully exchanged between the Editor and the Disting EX -- such as for changing algorithms, making file or folder selections in algorithms that have those parameters, and for the Editor's "display" refresh to work. It's also an integral aspect of controlling multiple Disting EXs.

Controlling Multiple Disting EXs

Editor 1.24 implemented a new capability that allows it to control multiple Disting EXs. An Editor instance can only ever manage one Disting EX at a time, but by matching the Disting EX's SysEx Device ID with its MIDI Channel, switching between Disting EXs is as simple as changing the MIDI Channel in the Editor.

To control two Disting EXs, for example, configure the following:

On Disting EX #1:
- Set "RX channel (single)" to 1
- Set "TX channel (single)" to 1
- Set the Sysex Device ID to 1

On Disting EX #2:
- Set "RX channel (single)" to 3
- Set "TX channel (single)" to 3
- Set the Sysex Device ID to 3

Any numbers from 1-16 can be used, as long as they're consistent per device. Aligning the MIDI Channels and Device IDs in this way allows your actions in the Editor to be targeted to one Disting EX or the other, and prevents them from responding to messages intended for the other.

~

General MIDI implementation information

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.

Parameters

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

Presets

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).

~

Avoiding MIDI feedback loops

[Update: The main issue described below has been resolved as of Editor 1.24, but I decided to retain the info for reference. The scenario described in the final paragraph still occurs though, so it's worth keeping in mind.]

Important note! I mentioned MIDI feedback loops earlier, and changing certain types of Single Mode parameters is where it can happen. Note that this is only relevant if the TouchOSC Bridge<-->TouchOSC Bridge track called "Edtr Single -> Edtr" is enabled (used for Editor to Editor communication for Single Mode parameter changes -- 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:

GOOD:

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



BAD:

This clip's values reach the same high point halfway through the bar and return to 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 Single Mode parameters that expect specific values, it's best to use specific values!

Again, 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 "Edtr Single -> Edtr" track until the storm dies down. Pro tip: You can map a key on your keyboard to the track activator button for that track, so you can quickly mute it if you need to. Key mappings are saved in the Live set.

Annoyingly, there is one other way that MIDI feedback loops may occur, and it's entirely Live's doing: When certain changes are made to tracks (namely adding, deleting, moving, renaming, changing inputs & outputs) Live sometimes sends a short burst of Pitch Bend messages on MIDI channel 1. Why? I have no idea. But with the aforementioned "Edtr Single -> Edtr" track enabled (if configured for MIDI channel 1), 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 the MIDI In/Out indicators in Live and on the Disting EX go berzerk. Simply disable and enable the "Edtr Single -> Edtr" track to stop the Pitch Bend storm. It's mainly for this reason that I left the Editor to Editor tracks disabled by default.

Comments