Coder Social home page Coder Social logo

shells-dw / streamdeck-totalmix Goto Github PK

View Code? Open in Web Editor NEW
51.0 6.0 5.0 12.41 MB

Unofficial StreamDeck RME TotalMix FX Plugin - supporting MIDI and OSC

License: MIT License

C# 60.17% HTML 0.39% JavaScript 39.45%
fireface midi osc rme streamdeck streamdeck-plugin totalmix totalmixfx

streamdeck-totalmix's Introduction

GitHub GitHub last commit Tip / ko-fi

Unofficial StreamDeck RME TotalMix FX Plugin - supporting MIDI and OSC

Overview

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. Note: a RME audio interface/card is needed or TotalMix FX to work.

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.

Updating from older versions

Starting with v3.0.0 the plugin requires two OSC endpoints being activated in TotalMix FX to make mirroring of settings more robust and quicker. Refer to the next chapter to learn how to set it up correctly.

With both OSC listeneners active, most buttons/actions should continue to function after an update. As there are many versions out there now, broken button actions are possible however. If you encounter issues with an action, delete and replace the button on your StreamDeck. This will reset its individual settings.

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. Note that there are 4 OSC Remote Controllers available. If you already use one, set up two for the plugin specifically. This plugin uses 2 of them, 1 and 2. 1 is used for the main actions, 2 is used for the background thread that mirrors TotalMix changes to the StreamDeck.

Note: if you don't want/need the mirroring-function, you can just not use listener #2. The plugin will detect it not being present and act accordingly.

  • Open "Options" -> "Settings..." in TotalMix, then open the tab "OSC".
  • Make sure Remote Controller 1 has a checkmark next to "In Use". By default TotalMix will use the ports 7001 and 9001.
  • In the bottom, set the "Number of faders per bank" setting to reflect the amount of channels your interface offers (the plugin will offer channels based on that value).
  • Then, do the same for Remote Controller 2. It will default to 7002 and 9002.

If you (have to) change these ports, make sure updating them in the plugin config as well!

Then, make sure to enable "Enable OSC control". Also link both Remote Controllers to the submix.

Setup TotalMix OSC Enable OSC

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.

de.shells.totalmix.exe.config

%appdata%\Elgato\StreamDeck\Plugins\de.shells.totalmix.sdPlugin contains the file de.shells.totalmix.exe.config (which is created with default values during the first start of the plugin and read during every start)

  <appSettings>
    <add key="interfaceIp" value="127.0.0.1" />
    <add key="interfacePort" value="7001" />    <!-- OSC remote controller #1 "Port incoming" -->
    <add key="interfaceSendPort" value="9001" />    <!-- OSC remote controller #2 "Port incoming" -->
    <add key="interfaceBackgroundPort" value="7002" />    <!-- OSC remote controller #1 "Port outgoing" -->
    <add key="interfaceBackgroundSendPort" value="9002" />    <!-- OSC remote controller #2 "Port outgoing" -->
    <add key="mirroringRequested" value="true" />    <!-- set to "false" to disable mirroring (not recommended) -->
    <add key="channelCount" value="16" />    <!--Only relevant if disableMirroring is true = mirroring disabled, otherwise this is read from TotalMix; change to required channelCount if you decide to not use mirroring -->
    <add key="killAndRestartOnStuck" value="false" />    <!-- set to "true" to kill and restart TotalMix in case it doesn't respond anymore (not recommended / use only if that's actually an issue for you!) -->
  </appSettings>

where you can configure non-default values or the TotalMix connection. Note: This had to be set on every button individually in older versions of this plugin. I decided to have a central location for these settings to unclutter the UI a bit.

Detailed information about the config settings

  • <add key="interfaceIp" value="127.0.0.1" />
    • the IP of the PC TotalMix runs on, if it's the machine the StreamDeck is connected to, the default value will work fine.
  • <add key="interfacePort" value="7001" />
    • the port labeled "Port incoming" in the TotalMix Settings windows for OSC Remote Controller #1
  • <add key="interfaceSendPort" value="9001" />
    • the port labeled "Port outgoing" in the TotalMix Settings windows for OSC Remote Controller #1
  • <add key="interfaceBackgroundPort" value="7002" />
    • the port labeled "Port incoming" in the TotalMix Settings windows for OSC Remote Controller #2
    • Needed for mirroring to work. If you do not intent to use mirroring, set mirroringRequested to false (see further below)
  • <add key="interfaceBackgroundSendPort" value="9002" />
    • the port labeled "Port outgoing" in the TotalMix Settings windows for OSC Remote Controller #2
    • Needed for mirroring to work. If you do not intent to use mirroring, set mirroringRequested to false (see below)
  • <add key="mirroringRequested" value="true" />
    • this flag tells the plugin it should communicate to TotalMix with the second listener and try to mirror settings that can be mirrored.
    • for this to work, the OSC Remote Controller #2 must be set and activated by ticking the "in Use" checkbox
    • as TotalMix appears to use OSC as it uses MIDI, the implementaion of this was/is a bit tricky. I spare you the details, but enabling mirroring causes a bit of CPU load and isn't instant (but still quite quick 😉). I tried to find a good middle ground between performance and load, but if your PC can't handle the load the plugin causes, you can disable mirroring. The plugin will still function, just with the lack of the comfort-features of having actual track names and button status shown.
  • <add key="channelCount" value="16" />
    • as mirroring also reads out the channel count set for the OSC Remote Controller to reflect the actual amount of channels your interface has (and improve performance of the plugin/mirroing if you don't need all of the channels and set it lower) - without mirroring you can use this config setting to tell the plugin how many channels your interface supports (and you intend to use)
  • <add key="killAndRestartOnStuck" value="false" />
    • Config flag which does exactly that (or tries to at least) and should resolve the issue with TotalMix not responding to OSC requests after the PC went to sleep (which is not an issue of this plugin, but TotalMix) or for other reasons. Note that there's a snag to it (as with everything concerning TotalMix 🙄) - TotalMix appears to store everything you set, do, toggle, or otherwise interact with the UI in a config file, however it does this only when it exits gracefully. When it's killed, nothing is saved. Brilliant, isn't it. That means that if the plugin kills TotalMix and restarts it, to reenable the OSC Remote Controllers, changes you made during the runtime of the TotalMix UI will most likely not have been saved. Keep that in mind when enabling this setting.

Connecting to a TotalMix instance on another host

To be able to use the plugin with another PC, three settings are mandatory:

  1. Set the IP of the machine the StreamDeck is connected to in the Setup for OSC part inside TotalMix as described above. Configure as described, but make sure to put the IP address (or FQDN) of the machine the StreamDeck is connected to in the "Remote Controller Address" field. This is needed so TotalMix sends its OSC responses to the computer that runs the plugin.
  2. Set the IP of the machine that runs TotalMix in the config file of this plugin (see above) in the value of interfaceIp, so the plugin knows where to send the commands.
  3. Make sure both machines have their firewall configured in a way that allows UDP communication on the ports that are set in the configuration (by default 7001 and 9001 UDP inbound to the TotalMix PC/outbound of the StreamDeck-PC, 9002 UDP inbound of the StreamDeck PC and outbound the TotalMix PC).

Restart StreamDeck after changing the config file.

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

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

OSC: Control Channel

StreamDeckPlugin_OSC_3

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

  • There is no MacOS support at this time. I started looking into it, but no promises, this is all free-time hobby coding...
  • MIDI: I developed this 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.
  • 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)
  • MIDI: I basically stopped supporting MIDI, still leave it in for anyone who wants to go through the pain using it.

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, the file is 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.

Support

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

Changelog

[3.3.5] - 2023-03-28

Fixed

  • Remote OSC instances (on another host) are working now. Please refer to the corresponding documentation, thanks for @roguedarkjedi for pointing that out and making a PR (I did not merge in the end, sorry), I totally forgot about that.

Improved/Changed

  • Various minor changes I came across over time, all under the hood, nothing UI facing.
  • Added documentation for remote host config.
Change History

[3.3.4] - 2023-01-15

Added

  • Config flag "killAndRestartOnStuck" (default off) which does exactly that (or tries to at least) and should resolve the issue with TotalMix not responding to OSC requests after the PC went to sleep (which is not an issue of this plugin, but TotalMix) or for other reasons. Note that there's a snag to it (as with everything concerning TotalMix 🙄) - TotalMix stores everything you set, do, toggle, or otherwise interact with the UI in a config file, however it does this only when it exits gracefully. When it's killed, nothing is saved. Brilliant, isn't it. That means that if the plugin kills TotalMix and restarts it, to reenable the OSC servers, changes you made during the runtime of the TotalMix UI will not have been saved. Keep that in mind.

Improved

  • Readme now has a more detailed explanation about the config parameters hidden behind a dropdown in the respective section.

[3.3.3] - 2023-01-14

Added/Improved

  • Added a check for the background mirroring task if the OSC listener is still active or not after the plugin has successfully started, preventing an infinite loop that would occur otherwise. Now, the mirroring task will stop until the background OSC listener is available again, then resume (and the icons will flash briefly to let the user know something's up).

[3.3.2] - 2023-01-14

Fixed

  • Toggle Channel Function would display the wrong icon when mirroring is willingly disabled in the config

[3.3.1] - 2023-01-12

Fixed

  • PI bug that could lead to channel selection reverting back to Input channel 1 without reflecting that on the UI if function was selected shortly after channel, hence rendering button functions ending up acting on the wrong channel

[3.3.0] - 2023-01-11

Added

  • Control Channel now has the option to incrementally lower or raise volume levels (including the option to set a multiplier for the step size)
  • Trigger Global Function now has the option to incrementally lower or raise Main volume levels

[3.2.3] - 2022-12-30

Fixed

  • Some icons could flicker between normal and "no connection" icons when TotalMix was not available.

[3.2.2] - 2022-12-29

Added

  • Added images for EQ, Comp, Autolevel instead of default mixer.

[3.2.1] - 2022-12-27

Changed

  • Mirroring is globally on for the plugin by default now. Removed option to mirror single buttons from the UI to unclutter the menu. Instead there is now a global setting to disable mirroring completely. Once mirroring is set up and working, there should not be a need to mirror or not mirror single buttons.

Fixed

  • Channel Toggle functions wouldn't work with mirroring disabled
  • Channel selection list would be empty with mirroring disabled
  • Updating from Marketplace version (or any other old version for that matter) would break existing buttons. While it is not impossible for existing buttons to break, this should be happening only occassionally, not for sure.
  • Clarified in README.MD that updating requires to enable the second OSC endpoint.

Added

  • Global settings to disable mirroring and - if set - configure channel amount.

[3.2.0] - 2022-12-21

Fixed

  • Channel names >9 are now displayed correctly
  • Actions now update the current channel count automatically in the drop down list (before, the channel count was only checked when adding a button, then saved in the corresponding action settings and never reevaluated again)

Fix attempt

  • Crash caused by waiting for a callback on async reading a socket that was already disposed. I call it fix attempt as I did not yet find the reason why this happens in the first place, it has been a b[...] to track down as it could happen after several hours of plugin runtime on my machine, so for now the exception is caught and the plugin shouldn't crash from it anymore. Depending the actual root cause this may or may not lead to the mirroring getting stuck. Please report issues if it does. As said, I had a hard time to actually get that crash on my machine with my interface.

[3.1.4] - 2022-12-12

Added

  • Snapshot names will be read from local TotalMix config file as they are not transmitted via OSC

[3.1.3] - 2022-12-12

Fixed

  • Global Functions Display Channel Name checkbox was not functional
  • Global Functions skipped over default "Global Mute" making it flicker the wrong icon/name

Added

  • a *load of try/catch logging on the receiving/sending parts

Notes

  • listener thread ocassionally throws an exception (safe handle closed in UDP receiver somewhere), investigating if that's caused by the lib or .NET. It's been an elusive one... StreamDeck detects the plugin going down and restarts it, so impact is... meh. It's not great, but for now it'll be that way.

[3.1.2] - 2022-12-07

Fixed

  • Background task updating the device wasn't as sync as it should be

Improved

  • Added checks for TotalMix being unreachable or just having the command OSC listener running and act accrordingly

Misc

  • misc cleanup

[3.1.1] - 2022-12-05

Improved

  • Made track/channel name display optional but default for all actions

[3.1.0] - 2022-12-05

Improved

  • Support for more/less than 16 channels!
    • During button load the plugin now tries to determine how many channels your interface offers (which is rather what the user set in "faders per bank" setting in TotalMix OSC setup) and offers these channels now in the plugin -> which allows interfaces with more (or less) channels to be fully supported as well now :)

[3.0.0] - 2022-12-02

General

  • Partial rewrite of the plugin with lots of improvements, not necessarily every little change will be represented here
  • This update might not be completely compatible with existing actions/buttons made with earlier versions. You might have to redo your buttons. It's annoying, I know, but I can't keep multiple code-bases to cover all eventualities active in the same plugin to keep full compatibility.

Updated

  • Mirror function reworked. Switched the library and how it's implemented to make it more robust, quicker, less ressource intensive and compatible with Windows 11
  • added multiple additional icons to make actions more clear (less using default "Mixer"-style logo which made different actions look the same)
  • Track names (channel names) as set in TotalMix are reflected on the StreamDeck to make it easier to distinguish buttons.
  • Phantom Power is now able to be mirrored too and moved to Trigger Channel Functions
  • overall more beautification ;)

Fixed

  • Windows 11 issues should be fixed now.
  • Plugin (or at least mirroring) stopping working after it ran a while should be fixed now.
  • Some less common actions have been sending a wrong value and never worked - fixed now.

[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.

streamdeck-totalmix's People

Contributors

shells-dw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

streamdeck-totalmix's Issues

de.shells.totalmix.exe uses 100% of 1 CPU core all the time

First: TNX for that awesome plugin!

You just need to install the plugin, throw any action on a key, after booting - you don't even need to use it.

1 CPU core goes to 100%. Current Windows 11 22H2 with fixes, latest version of Elgato 6.x.

Please ping me for further information, ... - really want to have that awesome plugin running..

1 thing that's probably different to most systems: I do not always have my RME device turned on (especially not during boot time).

Support for Streamdeck+

Hi,

i appreaciate the osc add-on for streamdeck to control Totalmix FX. It is working great,
Owning a streamdeck+ it would be cool having the opportunity to use streamdecks rotary-encoder to manipulate for ex. the fader in TMFX...or even the FX Parameter like REverb etc.

Greetings

Volume Up / Volume Down Function in Plugin

Dear Dominik,

thank you for your work, you've programmed a great feature which I personally love to use with my Babyface Pro. :-)

One question: Is there a feature inside the plugin, that allows me to simply reduce or increase the volume of my speakers/headphones as the physical turning wheel on the Babyface Pro does?
The only feature I can find in the several button functions is, that you can choose one specific volume value.
So when you press the button it jumps on that fix defined volume.

What I would like to have are two buttons on my stream deck for volume control. One button, that increases the volume by let's say 5 db, every time you press it, and a second button, that simply decreases the volume by the same amount, when it's pressed.
Is this feature already available and I'm just to stupid to find it or is it indeed missing?
If so, would you kindly show me how to set it, otherwise could you implement this feature in the next version?

Thank you very much and keep up your great work!

Best regards from Bavaria Germany,

Thomas

High CPU usage on Windows

Hello,

I'm running the plugin (v3.3.4) on Windows 10 and the process "streamdeck-totalmix" shows a constant "very high" CPU usage.
The plugin logs (also attached below) show some strange error:
2023-01-18 15:19:50.5747|INFO|de.shells.totalmix|3|Listener: catch main try: Object reference not set to an instance of an object.

After checking the source code (I am not a C# expert), it seems the Listener objects are not initialized inside the UpdateDeviceSettingDict function - but that would only be my wild guess :-)

Thanks!

pluginlog.log
image

I desperately need the ability to insert two images into one button of the stream deck.

Here is the image file link : https://imgdb.in/jLJh

"TotalMix FX Control : OSC : Trigger Channel Function"
If you look at this menu, you can insert two images, so when you press the button of the Streamdeck, the current state of Output Channel 1 is displayed as Mute or not, so it is easy to distinguish.

However..
"TotalMix FX Control : OSC : Trigger Global Function"
When I use the Mute Group 1 function in this menu, I can insert only one image, so Streamdeck does not show whether the current state is muted or not.
Therefore, it is very inconvenient to run Totalmix and check it.

in conclusion
"TotalMix FX Control : OSC : Trigger Global Function"
Please update this menu so that it is possible to insert two images that can display the current status.
I really need it

SD 6.4.1 errors / broken operation except for 1 thing.

Running latest version of Stream Deck (6.4.1.19697) and this plugin (3.2.2). Using an RME UCX.
I've double and triple checked the OSC setup settings, 1 & 2 are both config'd and the submix is checked for both

Issues I've run into:

  • OSC Toggle Channel Button, when setting up new button the "Select Function" drop down opens, displays "Inputs, Software, Outputs" but am not able to select anything, regardless of clicks or arrow up/down

  • the same issue also arises in the "OSC Control Channel" button, where "Select Channel" exhibits the same behavior.

  • OSC Trigger Global Function: Drop down is functional and selections can be made, but pretty much every selection does not function and I get a triangle error.
    (BUT "Show/Hide Totalmix UI" works, and as far as I can tell, its the only thing that does work)

  • All buttons that were setup and working in previous versions of StreamDeck are now broken mainly via the "Inputs, Software, Outputs" un-selectable issue.

Steps I've taken to troubleshoot:

  • Absolutely confirmed proper OSC config
  • Updated my UCX drivers & firmware to the latest
  • Confirmed latest SteamDeck version (6.4.1.19697)
  • Confirmed latest plugin version (3.2.2)
  • Uninstalled, Reset, Reinstalled x2
    (during reinstall I get an error that it failed, I quit out of SteamDeck and restart the program and the Plugin is now there and "open in Steam Deck" from the Elgato store prompts a notification in Steam Deck app that the plugin is "already installed")

Thanks

Request: "Push-to-Talk" für Talkback (RME TotalMix)

Hey shells-dw,

first of all - thank you so much for this great plug-in!
We're considering replacing our ARC with a StreamDeck now, thanks to your work!
Therefore, one - for our workflow significant - question came up:

Would it be possible to integrate a "Push-to-Talk" function for the Talkback?
Idealy with a two-state visual feedback?
Of course one could argue, if you have to push the button, you won't see a visual feedback anyway - but since it is possible to cascade two StreamDecks or add the elgato footswitch/ pedal, the visual aspect would come in really handy.

Would be great if that 'd be possible at all - and if you 'd find the time for this, course!

Thanks again for all your effort here
und beste Grüße aus Hamburg :)

Configuration in Streamdeck not working correctly

Hi, I'm setting this up with UE5.1 and I'm having any issue getting anything other than the first int value in UE to trigger. Even with a second button configured completely different it still just triggers switch on Int 0.

BP_New
box
sphere

Mirror Function not working correctly for different channel types

Doing some more testing on v3.1.1, and the mirror function is a bit sporadic. From my testing, it seems like from the channel types (Input, Software, and Output), it only functions correctly with one of them at a time (i.e it only works for all Software channels or all Input Channels). For example if I refresh the Stream Deck and Mute/Unmute an Input channel, the Software channels will no longer update when changes are made in Totalmix. That and initiating a mute from the Stream Deck will send the Mute command, but won't be updated back with the channel status (i.e. muted as the current status) - so the button reverts back to an 'unmuted' state, meaning I can no longer send a mute command:

NVIDIA_Share_PZ9gXy0big

For Output channels, I haven't been able to get the mirror to function at all. Let me know if I can help in any way!

Mirror Function not working

Ever since the most recent update the plugin doesn't seem to be able to read the current state of an Output channel. I'm using a few OSC Toggle channel functions as mutes, and I've tried muting all channels, exiting the Stream Deck app and having it reload, but it always shows the defaulted non-muted state on the Stream Deck button regardless of which state it's in.

Plugin update for SD+

Hello.
No issue here, just a request.
Will this plugin be updated for stream deck plus, using dial and rotary buttons ?
Tks.

OSC Mute/Solo Button Feedback

Thank you for your work on this. It helps a lot to use the streamdeck to control Totalmix.

We are using your implementation in our studio for streaming and have run into an issue.
In our setup an Engineer controls the audio using a control surface (Icon QConPro X) while the streamer is using a streamdeck.
With your plugin the streamer can now mute and unmute channels in the RME interface and it works well.
The problem we have run into is when the Engineer has muted or unmuted a channel and caused the streamdeck to be 'out of sync' where it reflects the incorrect mute state of the channel.

You appear to acknowledge this in the read.me - "if you then switch the status in TotalMix or by other means, it will not be reflected on the deck."

Is it possible that in a future update that the Streamdeck can reflect the state changes of the Mute button when someone is toggling it in Totalmix or using a Control Surface?

Functions only work after restarting the StreamDeck software

Hiya. I'm using the plugin on my Windows 11 machine with a Fireface 400. I have a few mute functions mapped. They work fine right after the Streamdeck software has launched, but they go unresponsive after about 15 minutes. I can kick start them into working again by quitting the Streamdeck app and reopening.

plugin not showing up after the install

The plugin was working fine for a while, but recently I started getting yellow triangle error. I've updated it to the latest stream deck app and wondering if it has something to do with it. Or if anyone else is experiencing the same issue.

Feature request (Volume change)

Hello, first let me say thanks for writing the excellent plugin! I've been limping along with my own home-cooked scripts for a while, and it's worked alright, but I've noticed that your plugin responds a whole lot quicker than my scripts, and there is much more functionality with yours than I got around to writing.

One thing I miss is the ability to change (not explicitly set) the volume. I had a json settings file where I was storing current volumes, and a script that would take a change in volume and add or subtract a given change from the "current" value stored in the settings file. Is this something that you might be able to add? I know it could get tricky, as you might end up out of sync. I'm not sure if you have a listener for the return OSC messages that can listen for changes made in TotalMix to keep everything in sync if that makes sense. But even if it does get out of sync, it'd still be useful I think.

At the end of the day I guess I am trying to get around the fact that the StreamDeck only has buttons. I'd kill for a slider or encoder on the thing. And I'm trying to take up only two buttons (plus and minus volume) instead of a button for each volume level that I might want.

With that in mind, do you have any suggestions for other small/medium control surfaces I could dedicate to controlling the RME interface?

need more channel

My RME device supports 16(32) channels.
But, this app supports 12(24) channels.
Do you have any plans to support more channels?

Control Channel Assignment

Cool project, cheers!

I'm using it for a Fireface (latest drivers) and the Control Channel Functions don't relate to the selected channels.
For example, AutoLevel Enable for Input Channel 46 switches auto level for Input Channel 1.

Many thanks!

talkback hold feature

Hi, would be really cool to have a feature that let's you hold the button to hold the talkback function (or any other feature).
Thanks,
Mauro.

Constant CPU Usage

CPU usage for this plugin is constantly 1-3%, regardless of how long the Streamdeck has been unused and inactive. Any reason? All other Streamdeck plugins are at 0% usage.

Windows 10 64-bit. Running Streamdeck software 6.2.1.18825 (latest version).

image

Unable to send OSC commands to different computer on local network

We've been using your plugin for a while and have really liked it, but just the other night it seemed to stop working in our streaming setup, where we have a Stream Deck on one computer sending OSC commands to another computer on the network.

Nothing else has changed in our setup, and we've confirmed that everything else is functioning as expected, so we're suspecting now that there may have been an update to the plugin which removed some functionality that we were relying on.

It seems like we were able to specify an IP address from within each Stream Deck command before, and that that functionality has disappeared recently. Is this the case? And is there any way for us to continue using the plugin as we were before?

Thanks so much for your work on the plugin!

Cannot recognize channel or change ports anymore

Hello! I have been using the plugin for a long time now and its always been working well and reliable.
Today, I had this happen to me. It seems that default settings work (RME control is ok), but I can no longer adjust port/channels on specific buttons and the plugin has started behaving somewhat glitchy. Any idea whats going on here?
Running Windows 11 and tried a couple of different builds including the newest one.
image

Cannot assign channels on RME Fireface 802

Hi, thank you so much for this amazing plugin!! I would love to have possibility to solo/mute/enable phantom on particular channels. I try to do it with "OSC: Toggle Channel Function", but as soon as I choose mute/solo/phantom box and next I try to select the function, I can only see only the inactive list of commands: "Inputs/Software/Outputs", but when I click I cannot select any of them. The list appears to be inactive. Any ideas what could I do? Thank you, Krzysztof A.

ps. OSC: Tigger Global Function works like a charm!

No connection

I have updated to v3.3.1 and still showing no connection and I cant select channel too, as you see in the screenshot below.

image

Talkback Toggle - Status Feedback

Thank You so much for this software!
It would be really nice, to see on the streamdeck whether the talkback is switched on or off. Especially when your are working in your DAW and you don't have the totalmix console window open this kind of status feedback would be very helpful.
Thanks you!
Marc

Using multiple RME Devices.

Could you return the option to change the port numbers. I understand the newest update defaults all the ports to 7001, 9001, 7002 and 9002. This makes it easy to use for most people, however I previously was able to use this plugin with multiple RME devices by selecting different port numbers.

Toggle Totalmix FX in Windows

Hello there!
I didn't see this option in the universal OSC toggles, so I'm wondering if it's possible for you to include a button on the plugin that toggles the visibility of totalmix, just like you can choose that option for one of the hardware buttons on the interface or ARC-USB. I'd appreciate that feature a lot! Thanks for making this plugin, it's super useful!

Feedback of RME toggle button state?

Hi

It's great to control Totalmix from StreamDeck via OSC! I switch the 48V phantom power on and of. But even better would it be, if there could be a toggle switch, which reflects the state of the switch in TotalMix. Would that be possible to display the state of the 48V switch (or others) on StreamDeck?

OSC toggle channel function issue

Hello. I am Japanese.
Thank you for making such a useful plugin.
The problem here is that I can't select Select Function for OSC: Toggle Channel Function.
streamdeck
The channel I want to select is not displayed.
Please help if you have any solution.

Plugin can't communicate with TotalMix when Mullvad VPN is active

First of all .. I love this plugin so much, it's genius. I want to make extensive use of it but so far it only works when I disable my Mullvad VPN, which I don't want to do as a general principle.

I've put both streamdeck.exe and de.shells.totalmix.exe in Mullvad's "split tunnel" list so theoretically they shouldn't be affected by the VPN. TotalMixFX.exe is also in the split tunnel list.

I've put all aforementioned executables in my windows firewall whitelist as well as the default OSC ports just for good measure.

I've tried using every combination of IP addresses in ds.shells.totalmix.exe.config as well as in TotalMix's "remote controller address" within it's OSC settings.

The odd thing about this issue is that I am also using a plugin within REAPER that triggers TotalMix functions via OSC, and that is working fine, both with and without the Mullvad VPN.

My RME interface is the HDSPe MADI FX.

I've attached my log file here. My ds.shells.totalmix.exe.config is all default values. I'm very happy to do any testing or under the hood work you'd like. I really appreciate your time.

pluginlog.log

Toggling Snapshot buttons

Hi, first off, thank you so much for this plugin.
It is not only really helpful but also really simple to use.

i wanted to know if there is a way to toggle the state/icon of buttons with another button.

Essentially Totalmix can only have a single Snapshot loaded at any time.
I have 5 different Snapshots, and they are each mapped to an individual Streamdeck button using OSC.

What I would love to get working is that, when I select a Snapshot using its dedicated Streamdeck button, the other Snapshots’ buttons change icon, hence making it clear on the Streamdeck which snapshot is currently loaded.

Reading through your documentation, the plugin uses 2 OSC ports, one so total mix can communicate its status to the Streamdeck. Is there a way to leverage that communicator to change the other snapshot buttons status?

I am hoping this makes some sense, and apologies if there is a really easy way to do this already.

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.