Tobe2d / streamdeck-totalmix-classic

Archive of latest v2 version of the plugin for anyone having a usecase where >v3 doesn't work anymore

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GitHub GitHub last commit Tip / ko-fi

Unofficial StreamDeck RME TotalMix FX Plugin - supporting MIDI and OSC

Overview


Note!

This is an archive of the latest v2 version of the Plugin for anyone having a usecase that the current version >v3.0.0 can not fulfill anymore. It will install alongside any more recent version as a seperated plugin so it will not be replaced by updates pushed through the StreamDeck Store - and will no longer be supported.


What Is This (and what does it do?)

It's a plugin for the Elgato Stream Deck that triggers actions as well as individual channel actions on the RME TotalMix FX application.

It supports OSC protocol support which offers more functionality than MIDI commands (at least I implemented more in my plugin), is more solid than MIDI and doesn't interfere with your already existing MIDI setup. The plugin however also supports MIDI wiht a limited feature set in case you don't want to use OSC.

What Is It Not (and what can't it do?)

It's not a MIDI controller or axis emulator. The Elgato StreamDeck offers simple digital buttons. They are pressed and then a predefined action will trigger. You can thus not do anything that requires analog axis. It also doesn't run on MacOS. Bummer, I know.

Release / Installation

Inside the Release-folder you can find the precompiled plugin. Download and open it, your computer should already recognize this as a StreamDeck file and offer to open it with StreamDeck - which will have the plugin available in the list then.

Setup for OSC

Enable OSC in RME TotalMix FX' settings (let's call it TotalMix from here on for ease of typing) and have it listen to OSC commands. Please also set the "Number of faders per bank" to 16, or it will not fully work.

Setup TotalMix OSC Enable OSC Setup TotalMix OSC 2

No additional software is needed. In theory this should also be able to control a TotalMix instance running on a different computer than the StreamDeck is attached to - as long as you can reach this machine on the given port with UDP packets.

Note: if you're using a (software) firewall on your PC and/or any firewall between the StreamDeck and the target PC - make sure to allow the plugin to communicate with the TotalMix port as well as allow TotalMix to listen to it.

Setup for MIDI

Only necessary if you do not use OSC or want to use MIDI alongside OSC. You will need a MIDI driver on your device for TotalMix FX to monitor. If you already control TotalMix FX from a MIDI controller, this is probably not the thing for you anyways. On Windows I used virtualMidi but other packages like loopBe should work just as well.

Once the virtual MIDI port is setup, select it in TotalMix, enable Mackie Control Support and make TotalMix listen to MIDI controls.

Setup TotalMix MIDI Enable MIDI

Triggering functions like loading snapshots/mixes, global mute, etc. will work without Mackie Support, but changing gains won't. So if you don't want to use that, you could theoretically leave Mackie Support off (for whatever reason you might have to do so).

Now, after installing the plugin to StreamDeck, you will see all MIDI devices your system knows about. Select the virtual MIDI port you set up (the one TotalMix listens to) as target. You will need to do that for every action you put on the StreamDeck console.

Usage

General

There are currently 5 options:

StreamDeckPlugin_Category

MIDI

  • Trigger Function: including loading snapshots, CUE, control room functions, master solo/mute/trim gains, mute hardware outputs.

  • Control Fader and Gains: set fader values on all faders (on 16 hardware inputs, 16 software inputs, 16 hardware outputs which should be plenty for most RME devices) and set gain on 16 hardware input channels. Again, as the StreamDeck only offers digital buttons, you can only set a value that will then be triggered, for example 0db and max attenuation.

You can however include multiple instances of the actions in a multi-action (available by default with the StreamDeck software) to create setups with multiple changes, for example change multiple faders at once to quickly switch between multiple output paths. For example: One multi-action changes output 1 and 2 to max attenuation and puts 3/4 on 0dB, another action does the same reversed.

OSC

  • Trigger Global Function: It supports loading snapshots/mixes and toggle master solo/mute, toggle FX reverb/echo, control room/main functions as well as activating fader groups, mute groups and solo groups.

  • Toggle Channel Function: Currently it's possible to set mute and solo for up to each 16 input, playback and output channels. It can also mirror the current status of the channel mute/solo and show respective button images (reportedly not working with Windows 11).

  • Control Channels: Here you can set up individual channel actions for all 48 channels, including: setting the volume, pan, phase, phantom power, autoset, loopback, stereo, cue, gain, width, autolevel, eq and comp. Obviously not everything is available for every channel, for example: gain is only supported on input channels with preamps obviously.

Actions

General

It's important to understand that whenever you can select a channel in the dropdown selection in this plugin, this affects TotalMix channel strips as you see them in the software. TotalMix combines a stereo channel to one channel strip. You will not have control over each individual mono channel that's part of a stereo channel. What that means is that if you have, for example, a stereo output channel AN1/2, this will be output channel 1. AN3 will be output channel 2 then. However if you have AN1 and AN2 set to mono, AN3 is output channel 3 then. Bear that in mind when you configure actions that are targeted to individual channels across multiple snapshots/mixes or when you change your channel layouts in regards to mono/stereo channels in TotalMix as this will likely break those actions on the StreamDeck and trigger actions on the wrong channels.

Sadly I can't do anything about that, it's just how TotalMix works currently.

MIDI: Trigger TotalMix Function

Select the MIDI device to use and the action you want to send. Simple as that!

StreamDeckPlugin_Trigger

MIDI: Control Fader and Gains

Select the MIDI device to use and the channel you want to control the fader on, then set the desired value.

StreamDeckPlugin_ControlChange

This works as follows: the acceptable range is between a value of 0 - which is max attenuation (infinity) - and 127 which is max level. 0dB is a value of 104. I thought a while on how to make that kind of easier for the user, but didn't come up with anything that would work flexible, logical and still very detailed, so I kept it that way for now. If you got a good idea, tell me :-)

If you select Input Gain as target, the acceptable values are 0 to 65, just as in TotalMix FX.

OSC: Trigger Global Function

StreamDeckPlugin_OSC

Enter the IP of the TotalMix instance to control (127.0.0.1 is fine when it runs on the same PC as StreamDeck), the port you set in TotalMix (labelled as "port incoming" in TotalMix) and select the function you want to use. Enabling the "Hold Mode" will only trigger the function as long as the button is pressed. Note: when selecting Snapshots, the Hold Mode will automaically engange.

OSC: Toggle Channel Function

StreamDeckPlugin_OSC_2

Enter the IP of the TotalMix instance to control (127.0.0.1 is fine when it runs on the same PC as StreamDeck), the port you set in TotalMix (labelled as "port incoming" in TotalMix) and select the function you want to use. You have 16 Input, 16 Playback and 16 Output channels available (remember when I said you should set TotalMix to have 16 Faders per bank? That's partly why) for which you can each Mute or Solo. Select the checkbox "Mirror TotalMix" to update the button's icon when it comes into focus in StreamDeck (e.g. when you open a folder containing the button, load a profile or start StreamDeck when it's on the top screen). Note: due to the nature of how OSC works and I have implemented the solution this is not a permanent monitoring, it's only initialized on load of a button, if you then switch the status in TotalMix or by other means, it will not be reflected on the deck.

OSC: Control Channel

StreamDeckPlugin_OSC_3

Enter the IP of the TotalMix instance to control (127.0.0.1 is fine when it runs on the same PC as StreamDeck), the port you set in TotalMix (labelled as "port incoming" in TotalMix) and select the function you want to use. You have 16 Input, 16 Playback and 16 Output channels available (remember when I said you should set TotalMix to have 12 Faders per bank? That's partly why) plus Master, for which you can trigger functions. Select the functions to use in the drop-down field below. If the function requires a value to send, for example Volume, enter the "Value" field with the value. Not all functions work on all channels. You can't, for example, set Gain on a channel that has no preamp. The acceptable values are:

  • Volume: 0-100. 0 is ∞, 82 is 0dB, 100 is +6dB. Available in all channels.
  • Pan: L100 to R100. Enter 0 for center. Available in all channels.
  • Gain/Gain Right: 0-65. Available in all input channels with preamp, Gain Right is only available on stereo channels.
  • Width: -1.00 to 1.00. Available in all input channels without preamp and all playback channels.
  • Phantom Power, Autoset: no value. Available in all input channels with preamp.
  • Loopback, Cue: no value. Available in all output channels.
  • Phase, Phase Right, Stereo, Cue, EQ, Comp, AutoLevel Enable: no value. Available in all channels, Phase Right only on stereo channels.

Limitations

  • Windows 10 with .NET Framework is required to run this plugin.
  • As per user reports, the mirror functionality might not work with Windows 11.
  • MIDI: I developed this on Windows, using virtualMidi with a RME Fireface UC (which was the only device I currently have access to). It should theoretically work with most other RME interfaces too, as long as they support TotalMix FX.
  • There is no MacOS support. It would mean a total rewrite of the plugin in Xcode to have it work on MacOS natively, for which I don't have the time.
  • MIDI: It needs a virtual MIDI port, writing my own drivers and have them signed is definitely above my skillset, so you'll have to install a driver for that additionally. (e.g. virtualMidi, loopBe)

I have an issue or miss a feature?

You can submit an issue or request a feature with GitHub issues. Please describe as good as possible what went wrong and also include any log files as they are incredibly helpful for me to figure out what went wrong. Logs can be found in %APPDATA%\Elgato\StreamDeck\Plugins\de.shells.totalmix.sdPlugin, and will be named pluginlog.log. As described above I developed this with a Fireface UC which is the only device I have at home and with that constant access to so debugging/developing for any other RME device might not be the the easiest task, but I'll see what I can do.

Contribute

If you're interested in using this plugin but something you really need is missing, let me know. I naturally don't have access to all RME devices, so I can't really try things on the boxes themselves, but eventually we might find a way to work something out.

If you happen to have a working and proper MIDI implementation sheet for RME devices, I'd be happy to implement them in the plugin. Currently the OSC documentation looks way better than what's there for MIDI. One could think they don't want people to develop these kind of things...

Support

If you'd like to drop me a coffee for the hours I've spent on this: Tip or use Ko-Fi ko-fi

Changelog

[2.2.1] - 2022-05-14

Updated

  • updated readme.md to reflect potential issues with Windows 11 and mirror channel
  • moved files locally from a dying drive, git recognizes them all as modified now and I can't be bothered to mess with that, so I'm pushing it, but nothing should have changed except for a bit of debugging I added for testing this Windows 11 thing in osconoff.cs.

[2.2.0] - 2022-04-29

Improvement

  • Updated default graphics
  • Updated README.md to reflect graphics changes

[2.1.0] - 2022-04-28

Improvement

  • Show/Hide UI should work now even when/after moving back to Stream Deck top level

Various

  • removed unused namespaces from all modules, cleaned up a bit, updated readme.md

[2.0.0] - 2022-04-20

Feature

  • hold-mode (no latch mode) for OSC Global Functions
  • enable toggle icons for all modules

Fixed

  • various minor fixes

[1.2.1] - 2021-07-04

Fixed

  • calulations updated for 16 channels in OSC Channel handling

[1.2.0] - 2021-07-04

Fixed

  • Mirrored buttons initilization delay

Added

  • Real time updates for channel mute/solo. StreamDeck should now (with a slight delay at times for technical reasons) update the button state if a channel is muted or solo-ed inside TotalMix or by other means (if you enable the mirror-checkbox on that button)
  • Option to hide/restore the TotalMix window (using Windows techniques, haven't found out how RME does that with ARC, probably not exposed for third parties)
  • Support for up to 48 channels (3x 16) pending testing, I don't have access to a 16 channel RME interface myself at the moment

Disclaimer

I'm in no way affiliated with RME or Elgato. I wrote this plugin out of personal interest.

About

Archive of latest v2 version of the plugin for anyone having a usecase where >v3 doesn't work anymore

License:MIT License


Languages

Language:JavaScript 59.7%Language:C# 39.8%Language:HTML 0.5%