Generic Midi button setup

Overview

The Generic Midi button is a second-generation button that replaces some of the other button types. It can mix any midi command with any type of display and is thus powerful...and pretty complex.

Explaining every detail of the button would probably create unusefully complex documentation, so I'll focus on the important parts.

For users of the gen-1 buttons, the main differences are:

  • The Control Change/NRPN buttons can be replaced, but the fader designs are different (matching those used by the dial faders), and option files cannot be used.

  • The Program Change buttons can be replaced.

  • The Note On/Off buttons can be replaced unless chords or Expression/Articulation files are used.

The Generic Midi button can handle Control Change, NRPN, Note On/Off, Program Change, Pitch Bend and Channel Pressure (Aftertouch) messages and can be controlled by a script. It can work as a Push, Toggle, Hold, Latch or Cycle button or as a fader, a Vpot or a ScrubWheel control.

Button type

Select how the button should behave: 

  • A Push button will always send an "on" command when pressed.

  • A Toggle button alternates between "on" and "off" when pressed.

  • A Hold button will send an "on" command when pressed and an "off" command when the button is released.

  • A Fader button repeatedly sends increasing or decreasing values while being pressed and can be used to control, e.g., a volume fader. Two Fader buttons can be configured to control the same fader, increasing and decreasing the value.

  • A Cycle button cycles through a distinct set of values defined in a configuration file.

  • A Latch Button acts like a Push button but will also send a an Off command for any previously used Latch button (see "Latch group" below for more details).

  • A V-pot button repeatedly sends increasing or decreasing values while 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 while being pressed and can be used to control endless controls. The Scrub wheel button is the same as a V-Pot button in most parts, except that it is endless and constantly sends the same value instead of an increasing/decreasing value.

Fader buttons have a fader button design, V-pot and Scrubwheel buttons have a V-pot (knob) button design, and the remaining button types are two-state buttons that can show two states with different icons.

Fader, V-pot and Scrub wheel buttons can be configured in a dual-button configuration. For faders, the fader display will stretch to span both buttons. V-pot and Scrub wheel buttons will have individual knob displays but will move the control in different directions.

Scripted buttons, faders and v-pots have the assigned display type, but the script controls everything else.

Select a section below to learn more about the selected button type.

Command / Channel

Select the Midi command and the Midi channel the button should use. These options are unavailable when using a scripted button since the script controls everything.

Control and value settings

The control and values settings differ slightly depending on the midi command and display type.

For midi command types that only send a value (Pitch Bend, Program Change and Channel Pressure), the "Control" property is not available. If you, e.g., configure a Hold button to send Pitch Bend with On=16383 and Off=0, it will send a Pitch Bend 16383 message when you press the button and a Pitch Bend 0 message when you release the button.

For midi command types that send a control and a value (Control Change, NRPN, Note On/Off), the "Control/Note" property is available. If you, e.g., configure a Hold button to send Control Change for control=10 with On=127 and Off=0, it will send a CC10 value 127 message when you press the button and a CC10 value 0 message when you release the button.

For control+value buttons, there is an option to split the controls so that different controls are used for the On and Off values. With split controls, you can, e.g., configure a Hold button to send a CC10 value 127 message when you press the button and a CC12 value 64 message when you release the button.

Controls and note values are presented with a searchable dropdown where you can either select the value in the dropdown or type a value to narrow down the list and select an option.

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 dropdown determine how received values affect the button state. The options are:

  • The On value and all values above will set the button in the On state. Values below the On value will set the button in the Off state.

  • The On value will set the button in the On state. All other values will set the button in the Off state.

  • The On value will set the button in the On state. The Off value will set the button in the Off state. All other values are ignored.

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.

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 the Midi port for one button, the change affects that button only, but the new Midi port selected will be the default port for all new buttons created from that point on (for all kinds 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 the Midi port for one button, the change affects that button only, but the new Midi port selected will be the default port for all new buttons created from that point on.
If the button is a Push Button and you don't require feedback on 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.

Button states and Icons

When the button is configured as a cycle button, fader, v-pot, scrub wheel or is scripted, it has no distinct on/off states, and icons should NOT be assigned in the Stream Deck editor (doing so will block the plugin from displaying the intended images).

For push, toggle, hold, and latch buttons, the button has two states and two icons. The first icon is used for the off/inactive state, and an icon indicating this should be chosen. The second icon is used for the on/active state, and an icon indicating this should be selected.