Skip to content

JavanPoirier/AudioMixer

Repository files navigation

Stream Deck Audio Mixer

A dynamic volume mixer with process icons that reflects the windows volume mixer. Control each independent process' volume as applications open and close. No need to statically assign a button to a single application, the application placeholder actions will update accordingly.

IMPORTANT: To have the plugin work best and provide as many process icons as possible, please ensure you are running your Stream Deck app as an administrator. See "Troubleshooting" for more details.

Tutorial Video: Click to watch Click to watch


Features

Inline Controls

Have a small stream deck? Instead of dedicating buttons to volume controls, only show controls when you select an application you want to control.

Static Applications

Want an application to stay on the same key regardless if it's open or not? Make it static.

Application Blacklisting

Have an application you know you will never want to control? Add it to your blacklist to prevent it from ever being displayed on your Stream Deck.


Controls

Blacklist An App

No need to head into Stream Deck and manually blacklist it. Hold down the key for 1.5 seconds and it will be auto-magically added to your blacklist.


Known Limitations

Only supports a single page

At the moment for V1, processes do not move on to consequative pages once a page is full. This behaviour is something I would like to add, however it would be a user setting as this can also be seen as unintended behaviour.

You can only have one of the same applications as static

You can have multiple static applications, just not the same application. This is a limitation of how the code was written. This shouldn't be an issue for most, let me know if it is.

A single process with multiple audio steams are conglomerated.

This is due to the fact there is no way to discriminate between them during the applications lifecycle.


Known Issues

Icons flicker and jump around.

This occurs due to each action needing to check the state of others, along with the lack of tracking which would be resolved by forcing left to right. This should not occur frequently and lasts for only a second.

Application's not showing/disapearing when launched/closed.

While testing I noticed this occuring with some apps, notably Spotify. Some apps will only notify the OS of their audio intentions once they actually start playing, not on open. So keep this in mind. You can see this for yourself, if you open up the Windows Volume Mixer. A possible solution to this would require quite the re-write, of watching applications rather than just audio sessions.


Troubleshooting

Some applications show as default app icons

Either the audio session actually does not have an associated icon, or more likely, you are not running your Stream Deck as an administrator. StreamDeckRunAsAdmin


TODO

  • Changing default output device.
  • Add Application Whitelist (Application priority)
  • Alighn applications left to right. (Note to Self: Currently not occuring as the application actions array index is not reflective of the key position)

Getting Started

To use:

  1. Right click the project and choose "Manage Nuget Packages"
  2. Choose the restore option in the Nuget screen (or just install the latest StreamDeck-Tools from Nuget)
  3. Ensure the DistributionTool.exe exists where specified in the install.bat
  4. Update the manifest.json file with the correct details about your plugin
  5. Modify PluginAction.cs as needed (it holds the logic for your plugin)
  6. Modify the PropertyInspector\PluginActionPI.html and PropertyInspector\PluginActionPI.js as needed to show field in the Property Inspector
  7. Before releasing, change the Assembly Information (Right click the project -> Properties -> Application -> Assembly Information...)

For help with StreamDeck-Tools: Discord Server: http://discord.barraider.com

Resources:

Installing locally

  1. Open an admin terminal.
  2. Navigate to repo directory.
  3. Ensure a build is created for your target (DEBUG|RELEASE)
  4. Run "./install.bat DEBUG com.javanpoirier.audiomixer"

Development

Logs

There are a few ways to log... 1. StreamDeck Logger - Connection.LogSDMessage() will log to a file to AppData\Roaming\Elgato\StreamDeck\logs\com.javanpoirier.audiomixer0 with 0 being 0-9. 1. BarRaider Logger - Logger.Instance.LogMessage() will log to a file within the plugin install directory AppData\Roaming\Elgato\StreamDeck\Plugins\com.javanpoirier.audiomixer.sdPlugin\pluginLog.log 1. Sentry - Refer to Sentry documentation.

Sumission

  1. Change AssemblyVersion in ./AssemblyInfo.cs
  2. Change manafest.json verison
  3. Change Sentry verison

Headset icons created by HideMaru - Flaticon