StreamDeck Midi plugin
Control Change/NRPN setup
Overview
The options available in the editor depend on the selected button type. Push, Hold, and Toggle buttons have pretty simple configuration options, while Cycle, V-Pot, Scrub wheel and Fader buttons are more complex. The features for the button types are described individually not to confuse things.

- Channel
-
Select the Midi channel that should be used. When you change Midi channel for one button, the change affect that button only but the new Midi channel selected will be the default channel for all new buttons that will be created from that point on (for all kind of commands).
Please note that the Midi channels are numbered 1-16 (that is normal for humans) but the Midi protocol uses 0-15 (that is normal for computers). If your daw/device uses 0-15 numbering, please subtract 1 from the channel in the dropdown list.
- Command
-
Select the command that should be triggered. The actual result of the command change is determined by the device/daw that receives the command.
By default, the dropdown list includes "standard" commands, but if these names are not relevant to your configuration you can change to other names (please see Option files for more details).
The standard command list is divided into NRPN, Single byte commands and Dual byte commands.- NRPN commands can be any of the 16.384 available commands and have a value range of 0-16.383.
- Single byte commands can be any of the 128 available commands and have a value range of 0-127.
- Dual byte commands are combinations of two single byte commands and have a value range of 0-16,383, or if you prefer to see it that way, two values in the range 0-127. A dual byte command will be sent as two separate commands; how those two commands are interpreted depends on the receiving daw.
- Button type
-
Select how the button should interact with the device/daw:
- A Push Button will always send an "on" command when it is pressed.
- A Toggle Button alternates between "on" and "off" when it is pressed.
- A Hold Button will send an "on" command when it is pressed and an "off" command when the button is released.
- A Fader Button repeatedly sends increasing or decreasing values as it is pressed and can be used to control e.g. a volume fader. Two Fader buttons can be configured to control the same fader, one increasing and the other decreasing the value.
- A Cycle Button cycles through a distinct set of values defined in a configuration file.
- A V-pot Button repeatedly sends increasing or decreasing values as it is pressed and can be used to control, e.g., a pan control. Two V-pot buttons can be configured to control the same target control, one increasing and the other decreasing the value. You can also have a single V-pot button where you switch direction by double-pressing the button.
- A Scrub wheel Button repeatedly sends the same value as it is pressed and can be used to control endless controls. The Scrub wheel button is in most parts the same as a V-Pot button, except that it is endless and constantly sends the same value instead of sending an increasing/decreasing value.
- Value
Set the values that should be sent for "On" and "Off" for the command. The default values are 127 for "On" and 0 for "Off" but if your device/daw require some other values you can change them. If a single byte command is selected, the max value is 127; if NRPN or a dual byte command is selected, the max value is 16,383.
The checkbox determine how received values affect the button state:- If the checkbox is checked all received values on and above the defined On value will set the button in the On state; values below the defined On value will set the button in the Off state.
- If the checkbox is cleared, the button is set in the On state only when the exact defined On value is received; all other values will set the button in the Off state.
- Minimum hold time
-
(Only visible if button type is "Hold")
For Hold buttons, some devices or daws might miss the "off" command if it is sent too soon after the "on" command. The Cubase "Forward" function will e.g. ignore the "off" command if it is sent quicker than 250 milliseconds after the "on" command (...don't ask me why). If you hit a Hold button a very short time and the recipient system doesn't react on the "off" command, try to add a minimum hold time (milliseconds). If your key press is shorter than that time, the plugin will delay the sending of the "off" command until the minimum time has passed.
- Cycle file
A cycle button is totally dependent on a configuration file ("Translation file") that defines the steps that the button should cycle through. Each time the button is pressed, it moves to the next configured item in the configuration file, sends the Midi value directly or glides to the Midi value, and displays the (possibly translated) value on the button and (optionally) a button image for that specific value.
A Cycle button will show a value on the button as defined by the translation file. Each item in the list can have a unique display both in terms of text and image. Depending on the configuration in the selected configuration file, the button can either jump to the next value in the list or glide/fade to the next value. Direction indicators can be superimposed on the button image. Please see Translation files for more details.
When a new Cycle button is defined, it will always start on the first item in the configuration file, and move "up" (i.e. every press move to the next item in the list).
- End behavior
-
The End behavior dropdown defines the behavior when the button comes to the last item in the configuration file.
- Stop means that no more increments are made, it is "stuck" on the last item in the list and each time the button is pressed the same value is sent (as defined in the last item in the list).
- Loop means that it will loop around and start over from the other side of the list.
- Bounce means that it will change direction and going back through the list in the direction it came from.
- Manual direction switch
-
The Manual direction switch dropdown defines if you should be able to switch direction manually and, if so, by what method.
- Never means that you cannot switch direction manually.
- When held longer than... means that the button will switch direction if you hold the button longer than the number of milliseconds defined.
- When double pressed within... means that the button will switch direction if you press the button twice within the defined number of milliseconds.
- Glide behavior
-
If the translation file defines glidetime, glideuptime or glidedowntime, the plugin will fade/glide gradually from the current value to the next over the period defined. You can pause/stop the glide by pressing the button during the glide period. Pressing the button again will continue the glide. Please note that to continue the glide from the current value, the parameter useclosestvalueonreceive must be set to "no".
The name "V-pot" is borrowed from the Mackie Control, where it defines a knob that can rotate. The function is similar to the Fader button, but the V-pot can give a more logical visual feedback when controlling something displayed as a knob in your daw.
Field Description Rotation speed While the button is pressed, commands are sent to signal V-pot rotation. This slider affects the frequency with which these commands are sent, thereby controlling the speed with which the V-pot is turned. Fast will move the V-pot the full span (e.g. pan all left to all right) in about .5 seconds while slow do the same thing in about 10 seconds, giving you better control in small movements. Min/Max values Set the span of the Vpot. By default, the entire span is used, 0-127 for CC and 0-16383 for NRPN, but you can limit the span if required. The whole visual range is used to display the defined span; if, e.g., a span 10-100 is defined, the Vpot will be in its leftmost position when the value is 10 (or below) and in its rightmost position when the value is 100 (or above). If the current value is outside the defined range, the button will jump to the closest border when it is used. Rotation direction Select if a pressed button should turn the V-pot clockwise, counterclockwise (i.e., increase or decrease the value of the target), or if it should be possible to switch direction by double-pressing the button. When Both ways is selected, the Time field is available to define the timing for the double press. If the button is pressed twice within this time (milliseconds), the button will switch direction. Set the time so that you can comfortably change direction without getting unintentional changes of direction when presses are misinterpreted as double-presses. Show direction Select if direction indicators should be displayed on the button. Please note that indicators will be visible only if the selected design have such indicators defined (which is optional). - On knob - an indicator is displayed on the knob, and is rotated along with the knob.
- On background - a fixed indicator is displayed on the background.
Show value Select if the Midi value should be displayed on the button. V-pot design You can select the design of the V-pot from a set of built-in designs or by choosing a custom design. You choose a custom design by clicking the "Add design" button and selecting the XML file that defines the design. (Please see Custom V-pot images V2 for details.)
The chosen design will be used for the current button and is added to the dropdown for easy access when configuring other buttons.Active span indication Apart from rotating the centerpiece of the button, the V-pot state can be displayed with a ring around the centerpiece. A portion of the ring will be displayed, according to the selected option:
- If the active span indication is From min to max, the ring will be visible from the leftmost position (=midi value 0) to the current midi value.
- If the active span indication is From midpoint, the ring will be visible from the center position (=midi value 64) to the current midi value (left or right).
- If the active span indication is At current value, the ring will be visible only at the current midi value.
- If the active span indication is None, the ring will not be visible.
Scrub wheel buttons share most of the features with V-Pot buttons. While a V-Pot button has a limited rotation span and sends distinct values depending on the position, a Scrub wheel button is endless and always sends the same value. For Scrub wheel buttons, the following additional fields are available:
Field Description Send speed While the button is pressed, commands are sent to signal Scrub wheel rotation. These fields combined with the Rotation speed slider position define the frequency with which commands are sent, thereby controlling the speed with which the target control is turned. - Slow defines the number of milliseconds between each command while the button is pressed when the Rotation speed slider is in the Slow position.
- Fast defines the number of milliseconds between each command while the button is pressed when the Rotation speed slider is in the Fast position.
Contrary to the V-Pot button, the Rotation speed setting of a scrub wheel does not in any way relate to the actual rotation speed of the target control. Visually, the button will rotate slower (on Stream Deck) when the slider is in the Slow position and faster when it is in the Fast position, but this is only to give meaningful visual feedback. The actual rotating speed of the target control is solely determined by the numbers in the Send speed Slow and Fast fields.CC values The Scrub wheel button repeatedly sends the same value when pressed (contrary to the V-Pot where the value is dependent on the position) - CW: The value to send if the button rotates clockwise (CW).
- CCW: The value to send if the button rotates counterclockwise (CCW).
If the counterclockwise rotation must be sent using another CC command than the clockwise rotation, you can define this in the CCW field with the format command:value as shown in the image (where clockwise rotation will send the command selected in the Command dropdown with the value 64, while counterclockwise rotation will send CC command 123 with the value 10).- Midi Out port
-
Select the Midi port that should be used for sending commands. If available, the default port "StreamDeck2Daw" is selected when you create a button but you can select any other port if required. When you change Midi port for one button, the change affect that button only but the new Midi port selected will be the default port for all new buttons that will be created from that point on (for all kind of commands).
- Midi In port
-
Select the Midi port that should be used for receiving commands. If available, the default port "Daw2StreamDeck" is selected when you create a button but you can select any other port if required. When you change Midi port for one button, the change affect that button only but the new Midi port selected will be the default port for all new buttons that will be created from that point on.
If the button is a Push Button and you don't require feed-back of the command for the button, please set the input port to "No MIDI Input". This will tell the plugin that the other party will never send any state to the button, and since it is a Push Button the plugin will always keep it in the "off" state. - Icon
-
Initially, the same icons are set for all midi actions. You can of course chose whatever icons you like, but a set of Midi related icons are bundled with the plugin (please see the Installation section for details).
The Midi Control Change action in StreamDeck is defined to have two states and hence have two icons. The first icon is used for the off/inactive state and an icons displaying this state should be chosen. The second icon is used for on/active state and an icon indicating this should be selected.
If a translation file is used, you can have unique icons for every step defined in the translation file. If you want to use that feature, you must not define any icons for the action itself in the Stream Deck editor. Please see Translation files for more details.
If you use fader buttons with Mixer-like or your own fader images, you must not define any icons for the action itself in the Stream Deck editor. Please see Fader configuration for more details.
- Button states
-
Some actions are instant actions that really haven't any on or off states (e.g. "go to next marker"). These actions should be configured as Push buttons and need only have the first icon configured. For these actions it is important to set the Midi in port to "No MIDI Input" so the plugin knows that the state will never be changed by the other party.
For actions that receive feed-back from the other party, please select the appropriate Midi in port. The state of the button will in this case be a mix of local actions and remote actions.
Example: assume that you configure a button to activate the "Play" function in Cubase (using Generic Remote). If you press Play in Cubase, that command will be sent to the plugin and the button will show the "active" state. If you press the StreamDeck Play button, the command will be sent to Cubase but there will not be any immediate response (for the Play function); in this case the plugin itself set the button in the "active" state. If you now press "Stop" in Cubase, the state for the Play button will be changed by Cubase. Hence the state of the button will be controlled from two sides; this might sometimes cause the button to be out of sync with the actual state, but as soon as a state is sent from the other party it will be in sync again.Push buttons never set the "On" state themselves, but can show an "On" state if the exact value defined as "On" is received; all other values will set the state to "Off".
Toggle and Hold is set to the "On" state if the exact value defined as "On" is sent or received; all other values will set the state to "Off".
For Push, Toggle and Hold buttons, the "On" state is set whenever the exact value defined as "On" is sent or received; all other values will set the state to "Off". For Fader buttons, the state will be "Off" as long as the fader value is below the value defined as "On" and will be "On" when the fader value is on or above the value defined as "On".
Fader, V-pot, and cycle buttons do not have "states" (active/inactive) per se since they handle continuous/step values. The values range from 0 to 127 and as long as the value is below the defined "On" value for the button, the "inactive" state icon will be used. When the value is above the "On" value of the button, the "active" icon for the button will be used. You can use this eg. to get a visual clue if a volume exceeds a certain level. If you use a translation file, more visual states may be displayed as each step can be given a unique image.
Push, Hold and Toggle buttons
Fader buttons
The configuration of faders is quite extensive, and is described separately on Fader configuration page.