The Musical Instrument Digital Interface (MIDI) is a protocol and set of commands for storing and transmitting information about music. MIDI output devices interpret this information and use it to synthesize music. [link]
A MIDI Controller or MIDI Control Surface is a digital device that transmits MIDI data to other devices capable of receiving it. The most common use of a MIDI Controller is to control software instruments used on a computer. [link]
There are various types of MIDI controller, the most common used with SDR software is a DJ controller. DJ Controllers have one or two large rotary dials, idea for tuning the receiver frequency. Other controls are used for mode, volume etc.
In the above picture you see the Behringer CMD PL-1 DJ Controller, typically available for approximately $99.
SDR software implements MIDI support with the MIDI functions, part of the Windows multimedia API.
This solidly built controller is a good option for SDR software, offering:
It also has four sets of values, selected by the Deck button.
When you touch the platter it sends value 127, when released it sends 0. These values are ignored in the tuning support.
The Behringer CMD PL-1 DJ Controller typically retails for approximately $99.
The console has a simple interface where you assign controls (buttons, sliders etc.) on the controller to options in the console:
When you configure an option of type Single the value used is that generated when the button is selected (pressed down).
When you configure an option of type Range (Audio level, Tuning) there are two value: minimum and maximum. As you slide or rotate the control the range is displayed.
You typically assign the large rotary controller (aka platter) to the frequency tuning. Some controllers send value 65 when rotated clockwise and 63 when rotated counter-clockwise. Others such as the Behringer CMD PL-1 DJ Controller send a value which indicates the direction and speed of rotation.
You can manually enter the recommended range of values:
It is possible to write to some controllers, for example to set LED colour an intensity. At present this is not supported.