Degath's Ducker

Free Degath's Ducker 3.1.0.20

NisseNisse

New Member
Hi, for me the marriage of these 2 functions in the Golden Key :)

To be able to play for example youtube videos (which are in different volume levels) and to be able to play another source and Duck the videos volume and maintaining a constant volume is the key.

it's so annoying with the volume constantly changing.

If you don't have time and are willing to share the source I could try to combine the both functions maybe?
 

Degath

Member
Any thoughts on this?

I sent you a personal message regarding this ages ago but never got a reply. No wonder if you didn't notice it. See if you can find it and let me know.

I actually made some improvements to that as well but my pc broke so I can't upload the newer version now.
 

TonyLemur

New Member
For some reason DD keeps reducing the mouse sensitivity of games when ducking is active. I think I've narrowed down the issue a lot though. I believe that the mouse sensitivity reduction is proportional to the number of processes DD is attempting to duck. Enabling the "Duck all except triggers" setting without any triggers added causes the largest reduction, which makes sense as that causes DD to duck the largest number of processes. If you keep the setting enabled and add more and more processes to the trigger list, the sensitivity issue gets less and less intense. Note that it doesn't matter if the triggers are actually enabled or not.

My guess is that it's a CPU usage issue or something, where DD uses more and more cycles to find all processes with audio and interferes with mouse input, but task manager doesn't show any appreciable change in CPU usage.
 

Degath

Member
For some reason DD keeps reducing the mouse sensitivity of games when ducking is active. I think I've narrowed down the issue a lot though. I believe that the mouse sensitivity reduction is proportional to the number of processes DD is attempting to duck. Enabling the "Duck all except triggers" setting without any triggers added causes the largest reduction, which makes sense as that causes DD to duck the largest number of processes. If you keep the setting enabled and add more and more processes to the trigger list, the sensitivity issue gets less and less intense. Note that it doesn't matter if the triggers are actually enabled or not.

My guess is that it's a CPU usage issue or something, where DD uses more and more cycles to find all processes with audio and interferes with mouse input, but task manager doesn't show any appreciable change in CPU usage.

Thank you for contacting me! I hope we can find a solution.

I also saw your feedback from the website. First time I'm hearing about this kind of an issue. The closest one was this one guy had lag in CS from the Ducker reading the game window title, but that was fixed and this doesn't even seem to be the same problem. I think you are on the right track about the problem though with regards to the number of targets, but I'm still not sure how or why it would use that much CPU resources. How many audio sessions can you see in the list when selecting a trigger/target? Could you also send screenshots of your Trigger Defaults (Peak Gain, Peak Smoothing and Ducking tabs)? Use DegathsDucker@gmail.com for the images.

The Ducker doesn't actually scan for processes with audio on each loop. Windows has an API that the Ducker utilizes to get all audio sessions at startup and then gets notified if audio sessions are added or removed. So, in your case (with the duck all thing selected) it simply loops through the list of audio sessions we already know, checks that it isn't a trigger (a simple boolean in the class), calculates the appropriate audio level according to settings and sets the audio session volume. The number of sessions requiring the calculation is of course reduced by the number of triggers there are, so this goes in line with your findings. In any case, the only thing that could require any amount of computation is the audio level calculation, but even that should be utterly insignificant (depends on your settings of course hence the screenshots). But there could be something completely different behind this.
 

TonyLemur

New Member
Thank you for contacting me! I hope we can find a solution.

I also saw your feedback from the website. First time I'm hearing about this kind of an issue. The closest one was this one guy had lag in CS from the Ducker reading the game window title, but that was fixed and this doesn't even seem to be the same problem. I think you are on the right track about the problem though with regards to the number of targets, but I'm still not sure how or why it would use that much CPU resources. How many audio sessions can you see in the list when selecting a trigger/target? Could you also send screenshots of your Trigger Defaults (Peak Gain, Peak Smoothing and Ducking tabs)? Use DegathsDucker@gmail.com for the images.

The Ducker doesn't actually scan for processes with audio on each loop. Windows has an API that the Ducker utilizes to get all audio sessions at startup and then gets notified if audio sessions are added or removed. So, in your case (with the duck all thing selected) it simply loops through the list of audio sessions we already know, checks that it isn't a trigger (a simple boolean in the class), calculates the appropriate audio level according to settings and sets the audio session volume. The number of sessions requiring the calculation is of course reduced by the number of triggers there are, so this goes in line with your findings. In any case, the only thing that could require any amount of computation is the audio level calculation, but even that should be utterly insignificant (depends on your settings of course hence the screenshots). But there could be something completely different behind this.

Here's the screenshots.
 

Attachments

  • degath.png
    degath.png
    53 KB · Views: 39

Degath

Member
Here's the screenshots.

Nothing wrong with the settings and not that many audio sessions either.

I wonder if there is some application that doesn't like to have its volume adjusted (nvcontainer or svchost)? Maybe try putting those in the triggers and if it still causes issues I need to figure something else out.
 

TonyLemur

New Member
Nothing wrong with the settings and not that many audio sessions either.

I wonder if there is some application that doesn't like to have its volume adjusted (nvcontainer or svchost)? Maybe try putting those in the triggers and if it still causes issues I need to figure something else out.

Nope, it seems to purely depend on the proportion of processes automatically ducked by the "Duck all except triggers" setting. If the setting is enabled and no triggers are manually defined, the mouse speed is worst, and gradually disappears as you add more and more triggers.
 

Degath

Member
Nope, it seems to purely depend on the proportion of processes automatically ducked by the "Duck all except triggers" setting. If the setting is enabled and no triggers are manually defined, the mouse speed is worst, and gradually disappears as you add more and more triggers.

It seems I'll have to make some test versions for you to see whats wrong, since there is no way for me to reproduce this issue. Would you be willing to test them?
 

YorVeX

Member
Hey Degath, I am still using the Ducker for every stream (5 days a week), much appreciated that you keep working on it!

Speaking of that: could you please add an option to have Auto-Ducking disabled on startup? ;-)

And a few harder ones (in order of my personal priority :-P) in case you're bored or search for some challenges :-D
  • include a portable mode, e.g. activated by starting the program with a -portable argument - this would make the program use a config file (Settings.ddt) from the same directory where Degath's Ducker.exe is instead of %APPDATA%\Degath's Ducker v3.X.X
  • make it possible to change the audio device that is configured for existing triggers and targets
    • e.g. when I plug my bluetooth USB receiver into a different USB port the old configuration doesn't work anymore - I either have to recreate all triggers and targets or use search and replace in the config file for the device ID
  • make it so that it doesn't crash in 50% of cases when the configured audio device disappears (let the program be inactive until it reappears) - sometimes I have to restart my bluetooth USB receiver and often it will make the Ducker crash, because for a few seconds the device is gone from the system
It's only suggestions, if you don't want to do any of these things it's fine with me. The program is already invaluable as it is, thanks for your work!
 
Last edited:

Degath

Member
Hey Degath, I am still using the Ducker for every stream (5 days a week), much appreciated that you keep working on it!

Speaking of that: could you please add an option to have Auto-Ducking disabled on startup? ;-)

And a few harder ones (in order of my personal priority :-P) in case you're bored or search for some challenges :-D
  • include a portable mode, e.g. activated by starting the program with a -portable argument - this would make the program use a config file (Settings.ddt) from the same directory where Degath's Ducker.exe is instead of %APPDATA%\Degath's Ducker v3.X.X
  • make it possible to change the audio device that is configured for existing triggers and targets
    • e.g. when I plug my bluetooth USB receiver into a different USB port the old configuration doesn't work anymore - I either have to recreate all triggers and targets or use search and replace in the config file for the device ID
  • make it so that it doesn't crash in 50% of cases when the configured audio device disappears (let the program be inactive until it reappears) - sometimes I have to restart my bluetooth USB receiver and often it will make the Ducker crash, because for a few seconds the device is gone from the system
It's only suggestions, if you don't want to do any of these things it's fine with me. The program is already invaluable as it is, thanks for your work!

Hello again YorVeX,

  • How would you like the auto-ducking disabled on startup to work? Or maybe more precisely, how would you suggest you then activate auto-ducking again? Separate UI element or a hotkey?
  • How about I allow an argument to define the settings file you want to load? I would guess that is more generally useful?
  • Changing the audio device of a source is difficult. The problem is reliably identifying the audio sessions. There will be a new ID for the session on the different device so I would have to do the identification only based on other information available, which would inevitably lead to wrong conclusions.
  • The audio device crash resistance should be quite easy...maybe? The question is reacting to them being available again. I can't say right off the bat how easy that will be. At least I can make it not crash :D

Thanks for the feedback again! No promises on the schedule though; things are rather hectic right now.
 

YorVeX

Member
  • How would you like the auto-ducking disabled on startup to work? Or maybe more precisely, how would you suggest you then activate auto-ducking again? Separate UI element or a hotkey?
The UI element is already there. Currently after I started the tool I always have to click on the "On" main menu item to set it to "Off", because I don't want it to be activate already.
Now I just want to have an option that the initial status after program startup is "Off" instead of "On". And then at some point after the start when I actually want it to be activated I click it and set it back to "On".
  • How about I allow an argument to define the settings file you want to load? I would guess that is more generally useful?
Sure, even better!
  • Changing the audio device of a source is difficult. The problem is reliably identifying the audio sessions. There will be a new ID for the session on the different device so I would have to do the identification only based on other information available, which would inevitably lead to wrong conclusions.
I understand. What about this:
When the ducker starts and detects that a configured audio device doesn't exist, it comes up with a dialog box. In that dialog it notifies the user that a new audio device needs to be selected. It provides a drop-down list where the new device can be chosen from. After a selection was made this is then applied to all audio sources in the current profile that match the ID of the audio device that no longer exists. If there is more than one audio device missing (e.g. both the microphone and the output device) then repeat this for every missing audio device until no more missing devices are in the config.
  • The audio device crash resistance should be quite easy...maybe? The question is reacting to them being available again. I can't say right off the bat how easy that will be. At least I can make it not crash :D
It would look a lot cleaner already if the tool wouldn't crash but show a message box to the user instead that the audio device cannot be accessed anymore and that the tool needs to be restarted. After restart the audio device is either back or the mechanics mentioned above will come into effect and the user will be asked to select a new device.
Thanks for the feedback again! No promises on the schedule though; things are rather hectic right now.
Sure thing, as I said, it's your call! I can only ask and hope ;-)
 
Top