-
-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Constant CPU Usage #36
Comments
Sorry for responding so late, I was kind of preoccupied with work and my Fireface PSU died, took me a while to get a replacement so without the interface I couldn't really look into the issue. Yes, that is to be expected, sadly. The way this works is that RME's OSC implementation works basically as MIDI. It's not a event based or some kind of API endpoint you could query for individual values, so the only way to get the Stream Deck plugin updated with changes made to the device itself (or with TotalMix) is to send a query to the device to dump all its settings, then capture the response and parse all the lines individually and get the data into the plugin. To make it as responsive as possible while maintaining a somewhat manageable CPU load (depending on your CPU I guess - but based on my experience when working with DAWs and audio generally on Windows, more cores are alwasy better anyway) I do that multiple times per second (to roughly a second, the device needs some time to respond too) Anyhow with things being as they are, I can't really do aynthing about it. If you wouldn't need anything to be mirrored to the Stream Deck and are CPU limited, you can go in the plugin config and disable mirroring all together. Open %appdata%\Elgato\StreamDeck\Plugins\de.shells.totalmix.sdPlugin\de.shells.totalmix.exe.config with a text editor and set "mirroringRequested" to false, then restart Stream Deck) which will basically eliminate the CPU usage, but at the cost that nothing is mirrored anymore. Sadly that's all I can do here. Hope that helps :) |
No worries. I appreciate your thorough explanation and suggestions. Thank you for the plugin, @shells-dw |
I'm sorry.
Thanks for getting back to me.
I am Japanese, so I don't understand English very well.
Besides, I don't know much about PCs.
So, it is difficult for me to understand what you wrote.
So I would like to ask you a question.
1、Did the same phenomenon occur there?
2、Is the problem caused by the MIDI in TotalMix?
3、Is the problem due to the specs of my PC?
4,If this problem is caused by TotalMix or my PC, why do other sidesshowfx applications (Cubase MC XL Win) work fine?
5,Can't this be improved?
6,I don't understand what you mean by "mirroring", do you mean sending command information back to Stream Deck?
7,If I disable mirroring, will it affect other products?
8,Is this a problem that does not occur with other MIDI built-in audio interfaces?
9,Is there any chance that this problem will be corrected in the future?
10,Can I return the product?
I would be glad if you could answer the above questions.
Thank you in advance.
It is a specification of my device.
Processor AMD Ryzen 9 3900X 12-Core Processor 3.80 GHz
RAM 128 GB
System type 64-bit operating system, x64-based processor
Edition Windows 10 Home
Version 22H2
Tatsuo Nishiura
From: Dominik Werland ***@***.***>
Sent: Wednesday, August 2, 2023 4:46 PM
To: shells-dw/streamdeck-totalmix ***@***.***>
Cc: Subscribed ***@***.***>
Subject: Re: [shells-dw/streamdeck-totalmix] Constant CPU Usage (Issue #36)
Sorry for responding so late, I was kind of preoccupied with work and my Fireface PSU died, took me a while to get a replacement so without the interface I couldn't really look into the issue.
However I'm back on track now.
Yes, that is to be expected, sadly.
The way this works is that RME's OSC implementation works basically as MIDI. It's not a event based or some kind of API endpoint you could query for individual values, so the only way to get the Stream Deck plugin updated with changes made to the device itself (or with TotalMix) is to send a query to the device to dump all its settings, then capture the response and parse all the lines individually and get the data into the plugin. To make it as responsive as possible while maintaining a somewhat manageable CPU load (depending on your CPU I guess - but based on my experience when working with DAWs and audio generally on Windows, more cores are alwasy better anyway) I do that multiple times per second (to roughly a second, the device needs some time to respond too)
I tried balancing it for CPU usage and responsivity, but there is always a bullet to bite. Either it's taking the plugin multiple seconds to display (and know of) changes made to TotalMix and have a bit lower CPU usage or have a bit higher CPU usage and display it more or less in real time.
What does help is to limit the channels in TotalMix (Options - Settings - OSC "Number of faders per bank") to the number of channels you actually use. With less channels there is a significantly less amount of data the plugin has to go through and parse. If I recall correctly, it's roughly 90 lines to parse every request for 8 channels and around 800 for 24 - meaning if you're only using (or rather are in need of controlling with Stream Deck) 8 or less channels, set the value to 8 and it will be more responsive and consume less CPU.
Anyhow with things being as they are, I can't really do aynthing about it.
If you wouldn't need anything to be mirrored to the Stream Deck and are CPU limited, you can go in the plugin config and disable mirroring all together. Open %appdata%\Elgato\StreamDeck\Plugins\de.shells.totalmix.sdPlugin\de.shells.totalmix.exe.config with a text editor and set "mirroringRequested" to false, then restart Stream Deck) which will basically eliminate the CPU usage, but at the cost that nothing is mirrored anymore.
Sadly that's all I can do here. Hope that helps :)
—
Reply to this email directly, view it on GitHub <#36 (comment)> , or unsubscribe <https://github.com/notifications/unsubscribe-auth/A44JBNJ7KMNDEH7C6DK6R5LXTIAT7ANCNFSM6AAAAAAZS244DU> .
You are receiving this because you are subscribed to this thread. <https://github.com/notifications/beacon/A44JBNPSEKXDZ3KHP4KSJUTXTIAT7A5CNFSM6AAAAAAZS244DWWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTTDBNBGA.gif> Message ID: ***@***.*** ***@***.***> >
|
For my system (Ryzen 5950X), at the current mirroring frequency, the CPU load caused by streamdeck-totalmix is constantly around 5% to 6%. This is huge. In short, the mirroring feature of this plugin is currently unusable. I don't know if this is helpful, but the software totalmix-volume-control (https://github.com/fgimian/totalmix-volume-control), which I also use, does a similar thing and never shows CPU usage above 0.1%. When the volume buttons are pressed, it displays an overlay showing the current fader volume of total mix. As long as this window is displayed, it mirrors the fader value in real time as it is moved in the Total Mix interface (update rate 10 Hz +). By pressing a volume key every ~3s and moving the faders in Total Mix rapidly, this overlay can be kept on screen and updating. Even doing this for a full minute did not increase the CPU load by more than 0.1%. This suggests that there may be a more efficient way to read back the Total Mix status. |
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).
The text was updated successfully, but these errors were encountered: