nt_helper

Table of contents

Helper for Disting NT Preset Editing

nt_helper UI image

Introduction

I got a Disting NT, read through the manual, and decided one day to see whether I could write a program to implement the SysEx protocol. Nearly immediately, I was able to get messages flying between a Flutter application and the Disting NT, and this project began. Using Flutter, I thought I'd be able to support a wide range of platforms quite easily, and that has been true so far.

This project supports Windows desktop, Linux, and macOS, as well as iOS and Android.

Installation

For Windows, Linux, Android, and macOS, download the appropriate file from the releases on GitHub and install it. For macOS, you will need to accept the fact that I have not code-signed (yet) the executable, so you'll have to install it, go into Security settings, and allow the app to open anyway. I may make that easier later.

Troubleshooting

If you find the app is not starting on Windows, please download the C++ libraries from Microsoft from this URL: Latest Microsoft Visual C Redistributable Version

Features

The features of nt_helper follow those of the Expert Sleepers preset editor since they are built on the same protocol. nt_helper differs in a few ways, mainly in its tab layout (instead of indexed slots, you see all of the algorithms in a preset).

nt_helper has a light theme, and a dark theme, depending on what the system is configured to it will adapt.

Connecting to Disting NT

You will need to directly wire, via USB-C, the Disting NT and the device you are running nt_helper on. Some iOS devices require a Lightning to USB-C adapter to do this, but most modern devices can use a USB-C cable directly.

The initial screen you will see is the connection screen. You need to select the input and output MIDI devices to make the connection bidirectional. You can select the same device if it appears in both lists.

connection screen

If you have no devices, check your cable and hit the Refresh button.

Once the Connect button is enabled, press it to establish the connection.

Synchronizing

You will see a screen that shows the initial synchronization spinner. This should only take a short period of time. If it spins indefinitely, you likely have an issue with MIDI, such as cable length or another problem. Try a shorter cable. Try a different cable. Then contact me for help. Synchronization should not take long, but sometimes timeouts and retries occur if the devices are slow or the cable connection is poor. If necessary, Cancel and try connecting again.

synchronizing

Editor Screen

The editor screen consists of several sections, each described below.

Top App Bar

This app bar shows the app title, actions, overflow menu, and preset name.

top app bar

Actions

You can refresh, delete an algorithm and move algorithms up and down (back and forth in the tab bar). Algorithms that are further left are higher in the algorithm list on the module. The order sometimes matters for signal processing.

Overflow Menu

Options in the overflow menu include:

menu

Preset Name

Displays the preset name. Tapping it opens a dialog to edit or change the name.

Tab Bar

Tabs display each algorithm in the preset and can be scrolled horizontally. Long-press a tab to rename the algorithm, which will also update the name on the module.

Algorithm Window

The Algorithm window displays a custom widget (e.g., Notes algorithm) or a list of parameter pages. Each parameter row includes:

editor

Mapping

When the mapping icon is pressed, a bottom-sheet will slide up to allow you to edit mappings for CV, MIDI and i2c.

mapping icon

There is a somewhat hidden feature in the MIDI mapping editor, where if you scroll it to the bottom, you will see a MIDI Detector box. You can connect to any of the MIDI connections attached to your device, and it will monitor the MIDI CC messages, and automatically fill in the Channel and CC fields for you when it detects a sufficient number of incoming messages that are the same. This makes it quite a bit easier to perform MIDI mapping with nt_helper

mapping icon

Once you are done editing a mapping, hit the save button to send that mapping to the Disting NT.

Bottom App Bar

The bottom app bar contains four icons, the Disting NT firmware version, and a floating action button for adding algorithms.

These functions assist in viewing the module's display remotely, particularly in screenshot mode.

bottom app bar

Adding Algorithms

Pressing the Add Algorithm button navigates to the specification screen. Here, you can select an algorithm and configure it before adding it. Synchronization occurs automatically, and the new algorithm appears at the end of the tab bar.

If the algorithm does not appear, use the Refresh menu option to trigger another update.

add algorithm screen

Routing Analysis

The Routing Analysis page shows three rows per algorithm:

  1. Algorithm Inputs — Displays the inputs.
  2. Algorithm Name — Displays the algorithm name.
  3. Algorithm Outputs — Displays the outputs.

Coloured blocks indicate signal flow in the Disting NT. Small numbers represent mappings or indicate which algorithm processes the signals as inputs. The visualization closely follows the browser-based preset editor, making it easier to interpret both.

routing screen

As a simple example, you can see the Sample Player algorithm takes four inputs, 1-4, and sends signals 1 and 2 to outputs 1 and 2, in add mode. The Auto Calibrator algorithm takes inputs 9 and 10, and replaces output 3.

Perform

Displays a page with all of your mapped parameters all on one page, this can help you keep track of performable parameters, and give you a place to experiment.

You will see each algorithm has a section with its mapped parameters.

There is a small play button on the app bar that turns on watching for changes in the parameters. MIDI, I2C and playing NT's interface will change the parameters and you'll see those change in near real time. Currently if a parameter doesn't change, it is polled every second. If it does change, it'll get polled every tenth of a second, until it's been the same for a few polls. This way, you get updates, and it doesn't overload the module.

CV doesn't actually change the parameters in the module, just provides offsets, so you won't see changes in the Perform sliders due to CV. This may be added in the future.

Exiting the Perform page will stop the polling if it was started.

You can update mappings from the Perform page as well, just hit the mapping button beside the parameter you'd like to change.

perform screen

/Disting NT/ /Projects/