Code Monkey home page Code Monkey logo

loupedeck-totalmix's Introduction

GitHub last commit Tip / ko-fi

Unofficial Loupedeck RME TotalMix FX Plugin

Overview

What Is This (and what does it do?)

It's a plugin for the Loupedeck Live Consoles that triggers actions as well as individual channel actions on the RME TotalMix FX application. Note: a RME audio interface/card is needed for TotalMix FX to work.

It utilizes the OSC protocol support which offers more functionality than MIDI commands, is more solid than MIDI and doesn't interfere with your already existing MIDI setup.

Release / Installation

You can find the precompiled plugin lplug4 file in the Releases. Download and open it, your computer should already recognize this as a Loupedeck plugin file and offer to open it with Loupedeck Configuration Console - 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. 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 Loupedeck.

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

Note: on MacOS, you'll have to enter "127.0.0.1" in the Remote Controller Address textbox, otherwise it will not work.

  • 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 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 Loupedeck 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 Loupedeck 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.

settings.json

Windows: %localappdata%\Loupedeck\PluginData\TotalMix MacOS: /Users/USERNAME/.local/share/Loupedeck/PluginData/TotalMix contains the file settings.json (which is created with default values during the first start of the plugin and read during every start)

{
  "host": "127.0.0.1",
  "port": "7001",
  "sendPort": "9001",
  "backgroundPort": "7002",
  "backgroundSendPort": "9002",
  "mirroringEnabled": "true",
  "skipChecks": "false"
}

where you can configure non-default values or the TotalMix connection.

Note: mirroring of TotalMix is on by default (when you change some values in TotalMix itself or by other means outside the Loupedeck it will be reflected on the Loupedeck plugin), but it has a slight delay as the plugin queries TotalMix. It can have a bit of a performance impact constantly querying the data, which shouldn't be noticeable on most machines, but just in case mirroring isn't needed or wanted, it can be turned off here. Also note, mirroring only works for all the main functions, mute, solo, phantom power, volume, gain and pan.

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

Usage

General

You have the following options:

Available Actions

  • Input/Output/Playback Channel Dials: Dial controls to change Volume, Pan and Gain

  • Input/Output/Playback Channel Buttons: Trigger actions - mute, solo, phantom power, phase/phase right, hi-z, pad, M/S processing

  • Snapshots: Load snapshot/mixes.

  • Master Channel: Main Channel settings: global mute/solo, dim, speaker B, recall, mute FX, mono, ext. in, show TotalMix UI (Windows only currently)

Actions

General considerations about channels

It's important to understand that whenever you can select a channel in the dropdown selection in this plugin, this affects TotalMix channels as you see them in TotalMix mixer view. 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, both combined channels 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.

Keep 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 Loupedeck and trigger actions on the wrong channels.

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

Limitations

  • MIDI: I decided against MIDI support, MIDI functionality is already included in the Loupedeck and requires additional software (virtual MIDI loopback interface) to run, also I'm not sure anyone would actually benefit from supporting MIDI, so I consider it a lot of code for not so much value. Let me know if you desperately need it though.
  • Actions are currently limited to somewhat basic functions I can test. I have a Fireface UC available which doesn't support DSP FX, so I can't really develop and test setting individual FX settings.

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 or doesn't act like you'd expect it to. 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

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

Improved/Changed

  • Added documentation for remote host config.

[1.8.2] - 2022-12-29

Added

  • added images for EQ, Comp, Autolevel #beautify
Changelog History

[1.8.1] - 2022-12-29

Updated

  • changed image name to Loupedeck's preferred naming scheme

[1.8.0] - 2022-12-29

Updated

  • Reworked/finalized logging

[1.7.1] - 2022-12-27

Fixed

  • Beautified/clearified error message displayed when no connection to TotalMix is possible

Updated

  • Clarifications in README.MD

[1.7.0] - 2022-12-22

Addded

  • Logging, new config switch to enable/disable logging (note: Logging is for debugging only. It will significantly slow down Loupedeck overall as traces are gathered and written all over the place. DO NOT ENABLE logging unless you are asked to provide logs and disable it afterwards.)

Fixed

  • Custom config file values were overwritten with every plugin start (oops.)
  • Channels >9 were not mirrored (but still functioned as actions)

Fix attempt

  • Rare 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 or not at all for days 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.

[1.6.1] - 2022-12-18

Fixed

  • Master Volume value not updating correctly. Note: removing and replacing the Master Volume dial on the Loupedeck is required to apply the change.

[1.6.0] - 2022-12-18

Added

  • Option to enable/disable Reverb and Echo

Improved / fixed

  • If TotalMix isn't sending heartbeats, don't try to listen for it.

Note

  • Global Mute and Global Solo have been moved to new "Global Functions" folder. Existing buttons need to be replaced.

Misc

  • New plugin icon ;)

[1.5.0] - 2022-12-14

Added

  • Custom Snapshot/Mix names are now read from local TotalMix config file (as they are not available via OSC) and shown during selection as well as on the action

Improved

  • Removed option to show/hide TotalMix UI on MacOS to avoid confusion for MacOS users (currently Win only function, MacOS TODO)
  • Call sender improved (avoid unnecessary function call)
  • Extended idle period between listenthread runs (should be a bit easier on the system without making things lots slower)

[1.4.0] - 2022-12-05

Improved

  • switch to track optimised (less calls)

[1.3.0] - 2022-12-03

Added

  • auto channel count recognition

[1.2.0] - 2022-12-02

Added

  • multiple action images

[1.1.0] - 2022-11-29

Improved

  • settings file checking made more robust (in case settings go missing)
  • setting.json is now sourced from embedded ressources instead of created

Added

  • option to skip TotalMix availability check

[1.0.0] - 2022-11-18

Added

Initial release

loupedeck-totalmix's People

Contributors

shells-dw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

loupedeck-totalmix's Issues

RME TotalMix crashes when OSD Control Enabled

Hello,

RME TotalMix crashes every 5 minutes when OSD Control is Enabled and connected to Loupedeck with TotalMix FX. Does anyone have the same issue? Do you have any suggestions on how to fix it?

Volume feedback on Loupedeck and screen stopped working

Hi I don't know if this is driver related, but on M1/MacOs 13.3 I had to update the RME drivers to the beta ones v4.07 with TotalMix 1.80

After that, the refresh of the volume display settings stopped working, all other knobs (on Loupedeck device and on-screen) seem to work as expected just fine. When I turn the volume knob RME display shows the new settings but TotalMix doesn't seem to "send out" the updated values to OSC devices.

Any Idea what could cause this ?

volume dials are not mirrored with TotalMix and don't properly update

  Maybe my amateur description helps: 

when I change the status, e.g. "Dim Main" on the Loupedeck, the status in TotalMix and on the device itself changes instantly.

If I change via Totalmix the change on the RME device (and TM of course) is instant, but it takes 2-3 sec. for the status on the Loupedeck to change. Solid Dim button gfx comes up. This behaviour is true for button status.

But for all numeric dial status on the Loupedeck: the display only updates when I do changes on the Loupedeck device itself again, e.g. turn another dial, or switch App-Profile back and forth. After that "manual" update, all is in sync or value correct

Originally posted by @LQdbMusic in #2 (reply in thread)

8 channels limitation

Hello Dominik, I hope you're having a very good Xmas time.
I've just found your plugin that looks to be very promising, but I understand that because you own a Fireface UC, you haven't pushed the possibilities to their maximum.

For example: I can list only 8 channels for each action (whether a button or a dial), but as I own a FF UFX, I need to manage 30 IOs : 12 analog+1 AES+2x8 Adat, and the dsp functions such as EQ, Dynamics, and FXs. But new devices are including way more IOs like Madi, Dante and so on.
Of course, TMFx offers the possibility to arrange all IOs in various configs, so I'm aware that any OSC remote controller would comply with that visualization for channel identifications.

I don't know anything about programming plugins like you did as specified by Loupedeck, but I thought I may find in the code if there's a fixed limit for channel counting. But apparently, it should be gathered from the unit, if I'm well understanding this :
// create channels as per how many channels were detecte
for (var i = 1; i < Globals.channelCount+1; i++)

So I should see as many channels as displayed in my RMFx arrangement right ?
=> as it happens, I can only see 8 channels, but I cant' figure out which one they address in my panel
Capture d’écran 2023-12-29 à 23 57 56

For your information in the picture, I have opened all possible parameters' tabs in various channels :

I'm now quite trained to the Loupedeck workspace & profiles settings, as I've got the full monty with a CT. I'm very happy to use it into Reaper and have set some profiles to control advanded plugins with Midi strings.
Capture d’écran 2023-12-30 à 00 13 56

So I'd be very happy to help in your developments, although I know you've not been working on it for a while...
All the best - Chris

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.