FAQ / Troubleshooting
Sometimes, the Stream Deck software fails to uninstall the plugin. When this happens, the plugin folder is left in an unusable (but not empty) state, causing subsequence installations to fail.
To fix the situation, you must manually delete what's left of the plugin folder.
-
Quit the Stream Deck software.
-
Delete the plugin folder.
-
Windows: "%appdata%\Elgato\StreamDeck\Plugins\se.trevligaspel.midi.sdPlugin"
-
macOS: "~/Library/Application Support/com.elgato.StreamDeck/Plugins/se.trevligaspel.midi.sdPlugin"
-
-
Restart Stream Deck.
-
Install the plugin.
The plugin is Intel code and requires Rosetta to run on newer MACs with M1 or M2 processors.
When you launch an app, macOS detects if it requires Rosetta and prompts you to install it if it isn't. The Stream Deck app, however, does not in itself require Rosetta, and macOS does not detect that a plugin loaded by Stream Deck needs Rosetta, so you aren't prompted to install it.
If you have problems getting the plugin to run and have an M1 or M2 processor on your Mac, please ensure that Rosetta is installed using the following procedure:
- Open Terminal
- Enter the command "softwareupdate --install-rosetta" (without the quotation marks)
- Enter A to acknowledge the license agreement and press Enter.
- You should get the result "Install of Rosetta 2 finished successfully".
Why is a "loading page" needed?
The Stream Deck software has a design flaw (in my opinion) when it loads a button. The problem is that the Stream Deck software displays the editor page for the button before the plugin is loaded. At that stage, the information on the page is incomplete, and if you touch any field in the editor, all fields will be sent to the plugin (once it has started). If that happened, the parameters for the button were partially destroyed since the incomplete parameters from the editor fields overwritten them. It wasn't obvious when the plugin was loaded, and it was "safe" to touch the editor without destroying the button configuration.
To minimize the risk of having the button configuration inadvertently destroyed, I implemented a "loading page" displayed while the plugin is loading, and the actual editor page isn't displayed until the plugin is alive and has updated the editor page with the correct values.
It may look like it takes longer for the plugin to load, but it doesn't. The only difference is that it now shows the "loading page" while it is loading instead of an editor page with (possibly) false information.
Another "feature" with the loading page is when there is a problem with the plugin. If the plugin, for some reason, does not start, the loading page will remain displayed and explain the situation. Previously, the editor page was displayed with faulty information when the plugin had problems, causing users to think that the button configuration was lost, which it wasn't.
The loading page is used every time a button or dial is opened in the editor, but in normal situations, you shouldn't see it other than potentially as a very brief flash before the actual editor page is displayed.
NO. I strongly recommend against doing that.
The plugin keeps a lot of settings in a separate repository (i.e., separate from profiles) called "global storage". The configuration items stored in global storage include, e.g., the Mackie ports, the background scripts and other plugin-wide parameters.
The Stream Deck software deletes this global storage when you uninstall the plugin. Upon reinstalling, the plugin tries to recreate the global storage, but this may be more or less successful, depending on the circumstances. Thus, when you uninstall the plugin, there is always a risk of losing some settings.
Every plugin version has a version number, which increases for each build. As long as the update's version number is higher than the currently installed version, the Stream Deck software enables you to perform an in-line update without uninstalling the previous version. To my knowledge, the only difference between an update and an uninstall/reinstall is that you lose the global settings if you uninstall/reinstall, so you don't gain anything by doing that.
If you must re-install the same plugin version or revert to an earlier version for some reason, you must uninstall the installed version since the Stream Deck software doesn't allow such "updates". These are the only situations where a plugin uninstall/reinstall should be performed unless you have a file system error that destroys the plugin folder or some other catastrophic failure.
First and foremost, you must have at least two midi ports: one for the connection from Stream Deck to your daw and another from your daw to Stream Deck. Using a single midi port as both input and output will create a midi feedback loop that breaks everything.
Second: If you plan to both remotely control your daw and record things on tracks (e.g., Notes or automation controllers), you need different ports for the different usages. The same commands may be used for different purposes, and if a Midi port is connected to the "wrong" endpoint, you will get all kinds of unintended effects.
Third: If you are using Mackie Control actions, these must have separate midi ports that are not used by anything else (than the target daw, of course). If you also use other Midi actions on Stream Deck, these must use other midi ports. If you have other devices using the Mackie Control protocol, they must have their own set of midi ports. Having multiple devices share the same Mackie Control midi ports will most certainly cause hard-to-diagnose erroneous behaviors.
You can name the midi ports however you like, but I recommend a naming scheme that clarifies the port's purpose. I tend to use the following names:
-
For Mackie Control actions:
-
Mackie2Daw for the connection from Stream Deck to the Mackie Control driver in your daw.
-
Daw2Mackie for the connection from the Mackie Control driver in your daw to Stream Deck.
-
-
For other actions intended for remote control:
-
StreamDeck2Daw for the connection from Stream Deck to the remote control driver in your daw.
-
Daw2StreamDeck for the connection from the remote control driver in your daw to Stream Deck.
-
-
For other actions intended for track use:
-
StreamDeck2DawTrack for the connection from Stream Deck to the track in your daw.
-
DawTrack2StreamDeck for the connection from the track in your daw to Stream Deck.
-
For remote control using the Generic Remote device, configure the port names dedicated to remote control.
For remote control using the Mackie Control protocol, configure the port names dedicated to Mackie Control. When adding a device for Mackie Control, select "Mackie Control", not anything with "HUI" in the name.
In the Midi Port setup, I recommend the following settings.
In the "All Midi Inputs" column, remove all (Stream Deck related) ports except the StreamDeck2DawTrack port; it's the only port with the purpose of reaching tracks. Other ports can be selected as input for a track, but you must explicitly select them; they will not accidentally be selected as part of "All Midi Inputs."
In the "Visible" column, remove the ports used for output from the input section and the ports used for input from the output section. Since output ports should never be used as inputs (and vice versa), you can avoid selecting the wrong port by mistake by making them invisible in the "wrong" role.
For remote control using the Mackie Control protocol, configure the port names dedicated to Mackie Control. Several different Mackie devices are available in Logic, and I don't know if there is any functional difference between them. I have selected "MCU Pro" since that is the version the plugin emulates, and it seems to work OK.
For remote control using the learn functions in Logic, do not use the Mackie Control device; instead, create another device that does not use the Mackie Control driver, e.g., the Korg nanoKONTROL2 device, and configure the port names dedicated to (non-Mackie) remote control.
VERY IMPORTANT
Remove ports used for output from the input list in Logic. If you do not, Logic will undoubtedly act exceptionally strangely.
It is probably essential to configure the MIDI Environment in Logic intelligently, but unfortunately, that is way beyond my knowledge of Logic. If some Logic Guru supplies me with guidelines, I will gladly publish them here.
For remote control using the Mackie Control protocol, add a "Mackie Control" device (not "Control Extender" or "HUI") and configure the port names dedicated to Mackie Control.
For remote control using a generic control, add a "New Control Surface" device and configure the port names dedicated to remote control.
For connection to tracks, add a "New Keyboard" device and configure the port names dedicated to track access.
I don't know. 😢
Use the guidelines from the "Which Midi ports do I need" section. Use different midi ports for different purposes. If the daw has multiple Mackie devices to choose from, select "MCU Pro" or "Mackie Control," not Mackie Extender, and definitely not anything with "HUI" in the name.
I cannot stress enough the following two statements:
Don't connect anything else to the midi ports used by the Stream Deck Mackie Control buttons and the Mackie Control driver in your daw. No other kind of Stream Deck buttons, no other external devices, no keyboards, no other devices using the Mackie Control protocol, no other daw functions, no tracks. Nothing.
Don't let the daw listen to itself; the commands sent by the Mackie driver in your daw must not be routed to the midi port it is listening to. This is especially important in Logic, where this happens automatically unless you explicitly remove the output ports from also being input ports.
The Mackie Control protocol isn't magic; it's standard Midi messages like Note On/Off, velocity, aftertouch, control change, pitch bend, and sysex. But in the Mackie Control protocol, the meaning of these messages is changed for remote control purposes. When, e.g., the Play button on a Mackie Control is pressed, the device will send an A#6 Note On message. The Mackie Control driver in your daw will, of course, presume that the connected device is a Mackie Control and will interpret the Note On message according to the Mackie protocol (i.e., as the "Play" command).
Now, imagine connecting something that is not using the Mackie protocol to those ports. Whatever that something is sending, the Mackie driver will interpret it as coming from a Mackie device and act accordingly. If that something is sending an A#6 Note On command, the daw will start to play, probably to your big surprise. Please note that this is the simplest of cases to highlight the problem. That "something" will most probably send many messages, all being interpreted and acted upon by the Mackie driver, probably with the result of seemingly random actions all over the place.
The case where the daw listens to itself is equally destructive. If messages sent to the Mackie device are also received by the Mackie driver in the daw, it will act upon them as if they came from the device. You will probably get Mackie Control protocol loops where things flash, and the daw will go nuts.
The Mackie protocol spec is pretty straightforward for multiple Mackie Control devices in the system: "Each Mackie Control unit should be installed on a separate MIDI port." Suppose you have multiple devices using the same ports. In that case, you will either get a situation where everything goes nuts or have one of the devices act as an Extender (in this regard, Stream Deck is "one device", regardless of the number of Mackie Control buttons or physical Stream decks). If Stream Deck is assigned the extender role, it will not control the eight indicated channels in the daw but the eight following channels, which may confuse.
So, to avoid potential problems, please:
Don't connect anything else to the Mackie Control ports.
Don't let the daw listen to itself.
Please check the "Which Midi ports do I need" item in the FAQ list for recommended port names that clearly state the purpose of the ports.
The Mackie Control device type can be edited using the Mackie tab in a Global Settings button.
The plugin can act as eight individual Mackie Control devices, giving access to up to 64 channels. Selected channel buttons will work across all the Mackie devices. In the maximum configuration, the Selected channel buttons can be assigned to any channel within the 64 channels covered by the eight Mackie devices.
The trick is to define multiple Mackie Control devices in your daw and the plugin. The setup in your daw is, of course, dependent on which daw you have. In the plugin, you "define a Mackie Control device" by selecting the device in any Mackie Control button and assigning midi ports to it. You don't need to have any active Stream Deck buttons for each device; once you have defined midi ports for a device, it will be active in the background, and the midi port will be monitored for messages.
Selected channel buttons can be defined for any Mackie device; regardless of which device they are defined for, they will span all channels covered by the defined Mackie devices.
Important! Two Mackie devices cannot use the same midi ports; this is a restriction in the Mackie Control protocol. When selecting midi ports for one device in the plugin, any ports used by other Mackie devices (in the plugin) are shown reddish and are disabled in the dropdown list, so it is impossible to define two Mackie devices that use the same midi ports. When configuring your daw, please ensure that no two Mackie devices use the same ports.
Tip: Active Mackie devices (i.e., with defined midi ports) will try to connect to the midi ports, monitor incoming messages and keep track of the state of all buttons, faders, pots, and LCDs for that device. This uses system resources in your computer; negligible, but still unnecessary if it isn't needed. If you have defined a Mackie device in the plugin that is no longer needed, you can disable the device by selecting "No MIDI Input/No MIDI Output" for that device.
Two Mackie devices cannot use the same midi ports; this is a restriction in the Mackie Control protocol. When selecting midi ports for one device in the plugin, any ports used by other Mackie devices (in the plugin) are shown reddish and are disabled in the dropdown list, so it is impossible to define two Mackie devices that use the same midi ports.
If you need to assign a disabled midi port to a specific Mackie Control device, please unselect it from whichever Mackie Control device (in the plugin) currently has it assigned.
When using multiple Mackie devices, the plugin expects the devices to handle the channels numerically, i.e., device 1 handles the first eight channels, device 2 handles the following eight channels, and so on. When switching from, e.g., channel 8 to channel 9 (with two Mackie devices in the plugin), the plugin makes the switch by going from the last channel on device 1 to the first channel on device 2.
If you have a configuration where the Mackie devices do not handle the channels in numerical order, you need to order the Mackie devices the same way as in the daw; otherwise, the channel switches will be wrong when going from one device to another.
To change the device order in the plugin, open the Mackie tab in a Global Settings button. The Mackie devices can be reordered by drag-drop; click-hold a section header for a Mackie device, drag and drop it where it should be.
loopMidi in Windows has a feedback detection that shuts down the port if it detects traffic that indicates a midi feedback loop. The Mackie Control protocol is exceptionally chatty, and I have, on a couple of occasions, had the port disabled due to a suspected feedback loop. On these occasions, it is a false detection since there is no loop; it's only the protocol that sends a lot of data.
When this happens, the port is muted and marked with red text in loopMidi. You can unmute the port by clicking the indicated button (with the port selected).
If this is a frequent problem, you can change the detection parameters on the Advanced tab or disable the feedback detection altogether.
Contrary to when you are using the Generic Remote in Cubase, you need to configure the Stream Deck profile first, and then create buttons in the MIDI Remote and learn the commands used by the Stream Deck buttons. The button types in the MIDI Remote map very well to the button types in the plugin (button/knob/fader)
Some notes:
-
If you have multiple Stream Deck buttons using the same command (e.g., fader buttons), you should only have one button in the MIDI Remote configuration. It is impossible to have multiple MIDI Remote buttons listening to the same command; the important thing is to map the incoming command to a Cubase command, which is done using a single MIDI Remote button.
-
You need to mark the MIDI Remote button (in Cubase) as "Toggle: Off" regardless of whether it should toggle. Set all MIDI Remote buttons to Toggle Off and configure the Stream Deck button to the required behavior.
I have created a MIDI Remote Controller Surface for Cubase 12 and an accompanying Stream Deck profile. You can use these as templates for controlling the new MIDI Remote with the Stream Deck Midi plugin.
You can download the template files from here.
Plugin folder
Windows: "%appdata%\Elgato\StreamDeck\Plugins\se.trevligaspel.midi.sdPlugin"
macOS: "~/Library/Application Support/com.elgato.StreamDeck/Plugins/se.trevligaspel.midi.sdPlugin"
Plugin log file
Windows: "%appdata%\Elgato\StreamDeck\Plugins\se.trevligaspel.midi.sdPlugin\pluginlog.txt"
macOS: "~/Library/Application Support/com.elgato.StreamDeck/Plugins/se.trevligaspel.midi.sdPlugin/pluginlog.txt"
Stream Deck log file
Windows: "%appdata%\Elgato\StreamDeck\logs\StreamDeck0.log"
macOS: "~/Library/Logs/ElgatoStreamDeck/StreamDeck0.log"
For any button using the Midi plugin in the editor, scroll down to the end and click the little arrow left of the Help and logging text. In the section that opens up, mark the Extended logging checkbox. Logging is global for all buttons using the plugin; you can turn logging on/off on any button.
If the plugin has crashed, that checkbox will not work (even though it might look like it), so you need to do it the hard way: Create an empty file EnableLogging.txt in the plugin folder.
Windows: "%appdata%\Elgato\StreamDeck\Plugins\se.trevligaspel.midi.sdPlugin\EnableLogging.txt"
macOS: "~/Library/Application Support/com.elgato.StreamDeck/Plugins/se.trevligaspel.midi.sdPlugin/EnableLogging.txt"
Check the forum to see if someone else has had the same issue and if not...
Enable extended logging (as described in the preceding section)
Quit Stream Deck. (this is important; there are many things I need to see that are only happening when the plugin starts)
In Windows: Right-click the Stream Deck icon in the notification area and select "Quit Stream Deck".
In macOS: Left-click the Stream Deck icon in the menu bar and select "Quit Stream Deck".
Start Stream Deck again.
Trigger the error situation (...but don't do much else to keep the log file focused on the case).
Disable extended logging.
Send a description of the problem, along with the log file, to me.
Either open a button in the editor, expand the "Help and logging" section and click "View log", and copy/paste the content (all of it!) into a mail.
Or locate the log file "pluginlog.txt" in the plugin folder and attach the file to a mail.