nt_helper
Table of contents
Helper for Disting NT Preset Editing
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.
- Android, Windows, Linux, macOS: GitHub Repository
- iOS: TestFlight
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.
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.
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.
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:
- Load — Specify the full path to the preset, including the
.json
file extension. - Save — Saves the preset.
- New — Creates a new preset.
- Wake — Wakes up the Disting NT if the screen saver has kicked in.
- Screenshot — Displays a floating window with a screenshot. Tapping the image enlarges it. Holding the image copies it to the clipboard. (On Android, this currently does not work.)
- Perform — Displays a page with all of your mapped parameters all on one page, see the section below.
- Switch — Switches your MIDI channels or SysEx ID to another Disting NT.
- Routing — Opens the Routing Explorer.
- About — Displays application information, version, and Disting firmware details.
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:
- Collapse/Expand all Button — A button on the top right of the editor screen gives you access to a way to collapse all of the parameter pages, or expand them all. This makes it easier to find the categories you want to expand instead of having to scroll around to find them.
- Mapping Icon — Edit mappings for CV, MIDI, and I2C via a bottom sheet. The MIDI editor allows monitoring of connected MIDI devices to detect and capture CC messages for quick mapping.
- Parameter Name — Long-pressing sets 'focus' on that parameter on the module.
- Parameter Value Slider — Double-tap to reset to default, or adjust to a new value. Measures are taken to prevent flooding the module with excessive messages.
- Parameter String, Enum, and Unit Section — If the parameter is a file name (e.g., a sample), long-pressing enables
+
and-
buttons instead of a slider for one-by-one selection. Long-press again to revert to the slider. - Enum Selectors — Many parameters feature drop-down lists of options.
Mapping
When the mapping icon is pressed, a bottom-sheet will slide up to allow you to edit mappings for CV, MIDI and i2c.
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
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.
- Show Parameter View — Displays the parameter view from the module.
- Show Algorithm UI — Displays the algorithm UI on the module.
- Show Overview — Allows scrolling up and down through the algorithms.
- Show Levels — Displays input and output levels of the selected algorithm on the module.
These functions assist in viewing the module's display remotely, particularly in screenshot mode.
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.
Routing Analysis
The Routing Analysis page shows three rows per algorithm:
- Algorithm Inputs — Displays the inputs.
- Algorithm Name — Displays the algorithm name.
- 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.
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.