Skip to content

MIDI controllers

RimuSDR maps the controls of a USB MIDI controller to radio functions, so you can tune, change mode, and key CW from hardware instead of the mouse.

Templates are supplied for the controllers below. Loading one gives you a working mapping in a few clicks, with no learning required.

  • HaliKey


    A USB adapter for Morse paddles, a straight key, or a PTT switch.

  • CTR2-MIDI


    Tuning knob, six buttons, and a paddle jack.

  • CTR2-Dial


    Touch-dial controllers: CTR2-Uno, CTR2-Duo, CTR2-Quad, and the older CTR2-Dial and CTR2-Flex.

  • CTR2-Max


    Touch screen with five physical knobs, four pushbuttons, and two jacks.

Tested hardware

RimuSDR MIDI support has been tested with these controllers:

CTR2-MIDI
From Lynovation. A purpose-built MIDI controller designed for amateur radio operators.
HaliKey
From Halibut Electronics. A USB adapter for Morse paddles, a straight key, or a PTT switch.

The MIDI Controller Mapping dialog

Check which dialog you have

This documentation describes the dialog with a Mapping menu. If your dialog shows a Profile drop-down instead, update RimuSDR before you follow these pages.

Go to Settings | MIDI Controller....

The MIDI Controller Mapping dialog with a CTR2-MIDI mapping open, showing bindings grouped under CW Key, TX and RX

The dialog shows one controller's mapping as one table. Each row connects one control on the controller to one RimuSDR function. You do not need a radio connection to set up a mapping.

Transmit is held back while the dialog is open

While the dialog is open, MOX, Tune, ATU, VOX, Breakin, PTT, the CW paddles and a straight key do not reach the radio. A press on one of those controls is discarded, not saved for later, so nothing transmits when you close the dialog. Learn and Set... still work.

Close the dialog before you test keying or PTT.

From top to bottom, the dialog has:

Mapping menu
Open..., New from template (HaliKey, CTR2-MIDI, CTR2-Dial and CTR2-Max), Save and Save As....
Device menu
MIDI Monitor... shows the messages your controller sends. Write bindings to log writes the current bindings to the RimuSDR log.
Mapping
The path of the mapping file in use, with Open..., Save and Save As... buttons. A template that has no file yet shows (not saved to a file yet), and Save is unavailable until you use Save As.... The words unsaved changes appear after the path when there are changes to save.
MIDI Device
The connected MIDI controllers. Selecting a controller loads the mapping file that belongs to it, or an empty mapping if it has none yet. If your controller is missing, click the refresh button beside the list.
Filter
Shows only the rows whose function or message contains your text, for example paddle or Note 20.
The table
The bindings, grouped under headings such as CW Key, TX and RX. Click a heading to fold or unfold its rows. See The table.
Learn, Set..., Remove
Operate on the selected row.
Add
Choose a function, then click Add & Learn to bind a control to it.

The table

Function
The RimuSDR function. The part in brackets is its group, for example [RX] Frequency Tune.
Triggered By
The MIDI message that operates the function, such as Note 20 for a button or contact, or CC 100 for a knob. A row reads not bound when no control is assigned, and Waiting... while it learns.
Type
How the function uses the control. See Types.
Condition
The modes the row acts in. Empty means all modes. See Conditions.

There is one row for each binding. A function operated from two controls has two rows.

The CW Key group always shows its three rows - Left Paddle (dit), Right Paddle (dah) and Straight Key - even when they are not bound, so they are easy to find when you set up a key.

Types

Type What the control does
Press Acts once each time the button is pressed.
Trigger Acts for as long as the contact is held, and stops on release. Used for the CW paddles, the straight key, [TX] PTT and [TX] Tune (trigger).
Slider Sends its position, from 0 to 127. The setting follows the position of the knob or fader.
Wheel Sends one click at a time. Each click moves the setting up or down a step from where it is.

Some rows, such as [RX] AF Gain and [Pan] Zoom, can work with either a slider or a wheel. On those rows the Type column is a drop-down. Set it to match how the control is set up on the controller. If the two disagree, the control seems not to work. For example, a knob set up as a wheel, on a row set to Slider, only flips the setting between two nearby values.

Working with bindings

To add a function
Select it in the Add list and click Add & Learn. The new row reads Waiting.... Operate the control on the controller.
To change a binding
Select the row, click Learn, then operate the control. The new message replaces the old one. While the row is learning, the Learn button reads Cancel. Click it to stop without a change.
To enter a binding by hand
Select the row and click Set.... In the Set MIDI Binding window, choose Note for a button or CC for a knob, enter the number (0 to 127), and click OK. This helps when a device sends several messages for one press, so Learn cannot capture the right one. A Trigger row accepts a note only.
To delete a binding
Select the row and click Remove.
To find the row for a control
Operate the control. The dialog selects the matching row.

Conditions

Each row acts only in the modes its Condition column shows. The CW Key rows act in CW modes only, and [TX] PTT acts in Voice modes only.

This is how one physical control can serve two purposes: on a HaliKey, the same contact keys CW in CW modes and keys PTT in voice modes.

Things to know

  • A front-panel button cannot drive a Trigger function. It reports its press only after you release it, so it cannot hold. Learn refuses it and says so in the row.
  • One note can drive only one Trigger function, so a single press can never key CW and PTT together. Remove the old row before you give that note to a different Trigger function.
  • A note that drives a Trigger function cannot also drive another function. Learn refuses it and asks you to press another control.
  • RimuSDR does not send MIDI back to the controller. If you change a value on screen, the next movement of a Slider control sets the value to the knob's position. A Wheel control carries on from the value on screen.
  • The dialog asks you to save unsaved changes before it closes, opens another mapping or template, or changes to another MIDI device.

Saving a mapping

A template is not saved to a file until you save it:

  1. Click Save As....
  2. Keep the suggested folder and file name.
  3. Click Save.

When you save with Save As..., or open a mapping file with Open..., RimuSDR remembers that the file belongs to the selected MIDI device. It then loads that mapping automatically the next time you connect the controller.

After that, Save writes your changes to the same file.

Mapping files from an earlier RimuSDR

RimuSDR can open a mapping file from an earlier version. If the file holds several mappings, RimuSDR asks which one to open. It also reports any rows it updated or could not use. Save is unavailable for such a file: use Save As... to keep the result in the current format.