Stream Deck Midi plugin
Device support
The plugin supports Stream Decks of all sizes, including Stream Deck+, and supports buttons and dials.
Protocols
Midi communication can be performed using...
Control Change, NRPN
Program Change, Note On/Off, Pitch Bend, Aftertouch, SysEx, Midi Show Control,
Mackie Control and Scripting
Ports
In Windows, you need to install a third party software that act as a virtual midi cable between StreamDeck and the other party (loopMidi recommended).
In macOS, you create Midi ports in the Midi Studio.
News
Important
With Windows Update, Microsoft is rolling out a new Midi service with support for MIDI 2.0. The current build of that service may cause problems for other Midi services, like loopMidi and the Midi plugin.
This page explains how to create MIDI ports for the new Windows MIDI Service if the "solutions" below cannot fix the issues described. Please note that as of today (February 24th), it is not yet possible to create Windows MIDI Service ports that function exactly like loopMIDI ports.
Issue: Missing ports
With the new Midi service installed, a timing issue at computer startup may render the loopMidi ports invisible. If you find that the selected Midi ports in the plugin are listed as [Not present] in the plugin dropdowns even though they are defined in loopMidi, you can try restarting the new Midi service.
- Start the Services admin tool (run - services.msc)
- Locate "Windows MIDI Service"
- Right-click the service name and select "Restart".
If the above procedure works (i.e., the loopMidi ports are available in the plugin dropdowns), you probably need to repeat the procedure at every computer start.
Issue: Loading page
If you see the "loading page" in the plugin, it is also a problem caused by the new Midi driver. Try this:
- Start the Services admin tool (run - services.msc)
- Locate "Windows MIDI Service"
- Right-click the service name and select "Stop".
If the above procedure works (i.e., the loading page no longer appears), I recommend double-clicking the service name and selecting Startup type: Disabled in the Properties window. This issue is caused by a timing problem when the StreamDeck editor initializes a button or dial; this will be addressed more effectively in the next version of the plugin, which will be released soon.
Where to go from here
The long-term solution is to skip loopMidi altogether and define the ports in the new Midi service instead. Unfortunately, Microsoft has not yet released the tool that lets you do that. A beta version of the tool is available (Windows MIDI and Musician Settings), but it cannot create ports with names identical to those in loopMidi. Microsoft will soon update the beta tool to allow arbitrary port names, letting you create ports with the same name as in loopMidi. When the tool supports creating ports with the same names as loopMidi (i.e., the names you configured for all your buttons and dials), you can switch to the new MIDI service and uninstall loopMidi. I don't have information on when the tool will exit beta and be released.
Version 4.2
News:
- A new feature in the Generic MIDI button's Latch mode allows resetting the active latch button.
- Midi state restore is performed earlier to ensure the Midi state is restored before any script (init) command runs.
- An "extended variable mode" is now available, enabling variables to store floating-point numbers alongside integers and strings.
- The {image} script action supports SVG strings.
- Script events can now reference variables, include negations, and perform wildcard and Regex matching.
- New math/string functions for scripts (FP, DECIMALS, RND, COUNT, STR, VARTYPE, PART, GETITEM, SETITEM, ADDITEM, INSERTITEM, REMOVEITEM, REPLACEITEM, ITEMCOUNT, ITEMINDEX, BITGET, BITSET, LOADFILE, FILESAFE, DATETIME)
- useAuto added for list focus, and set as default.
- Added roundingMode for ROUND function.
- Added local/global settings in the variable window.
- The number of background scripts has doubled from 4 to 8.
Bug fixes:
- Changes to the properties for a background script in the editor no longer affect the following script instead of the intended one.
- Adjacent Generic Midi buttons using different Midi channels are no longer paired.
- Scripted time references have now been fixed.
- Alignment of text on Generic Midi button faders has been corrected.
- A fix was made for Program Change where the MIDI input was not visible.
- Resolved an issue where @e_pc did not have the correct value.
- Resolved an issue where the Translation file settings for multi-dial were lost.
- Resolved an issue where changing a variable type triggered events without proper condition checks.
- The order of {hidelist} in relations to other actions does not matter anymore.
Version 4.1
- New feature: Custom layouts.
- New feature: Section markers.
- New feature: Global ports.
- New feature: Script variable window.
- New feature: # character allowed in texts (by typing ##).
- New script actions: savetoclipboard and savetofile.
- The plugin now better handles illegal characters in Reaper Mackie Control track names.
- The problem on Mac with apostrophe in device names is fixed.
- The Generic Midi button has improved input filters for received Midi, and the Cycle action manages the received Midi correctly.
- The Mackie Control button VPot and Fader designs that did not work are fixed.
- The min-max action handles 1-10 (with a hyphen) correctly.
- The background script active checkbox now works more reliably (previously, scripts could respond to some events even if they were not active).