A professional, high-performance Macro Deck 3 plugin for controlling SteelSeries GG Sonar audio directly from your stream deck, tablet, or secondary monitor.
Control channel volumes, toggle mute states, adjust Chat Mix balance, and switch between Streamer Mode mixes (Streaming vs. Monitoring) with zero perceptible latency.
- 🔊 Precise Volume Control: Set exact volume levels (
0–100%) or adjust up/down incrementally with customizable step sizes. - 🔇 Mute & Toggle: Explicitly mute/unmute or use single-button toggle actions with live feedback.
- 🎚️ Chat Mix Control: Seamlessly adjust the balance slider between game and voice communication (
-100full chat to+100full game). - 🎙️ Streamer Mode Support: Full dual-slider support for Streamer Mode — independently control what your stream hears (Streaming) and what you hear in your headset (Monitoring).
- 🔄 Automatic Dynamic Discovery: Automatically detects Sonar's local dynamic web server port on startup and handles GG restarts gracefully without manual configuration.
- ⚡ Optimized Architecture: Powered by .NET 10 and
IHttpClientFactoryconnection pooling for instant response times and low resource usage.
| Channel ID | Name in Plugin | Description |
|---|---|---|
master |
Master | Master output mix for all Sonar audio |
game |
Game | Game audio channel |
chatRender |
Chat (Playback) | Voice chat audio output (Discord, Teams, in-game chat) |
chatCapture |
Microphone (Capture) | Your microphone / input audio sent to voice chat/stream |
media |
Media | Music and browser media (Spotify, YouTube, VLC) |
aux |
Aux | Auxiliary audio channel for system alerts or secondary apps |
microphone |
Mic Monitoring | Headphone monitor level for your microphone |
Sets the target channel to an absolute volume percentage.
- Channel: Select audio channel (
Master,Game,Chat,Media,Aux,Microphone). - Output Type:
Classic(default),Streaming(OBS/Stream), orMonitoring(Headphones). - Volume (%): Target volume slider from
0%to100%.
Increases or decreases the volume by a specified step percentage. Ideal for rotary encoders or standard up/down buttons.
- Channel: Target audio channel.
- Output Type:
Classic,Streaming, orMonitoring. - Direction:
Increase (+)orDecrease (-). - Step (%): Volume delta per press (e.g.,
5%).
Explicitly sets the channel's mute state to On or Off.
- Channel: Target audio channel.
- Output Type:
Classic,Streaming, orMonitoring. - State:
Mute (Off)orUnmute (On).
Flips the current mute state of the channel (if unmuted, mutes it; if muted, unmutes it).
- Channel: Target audio channel.
- Output Type:
Classic,Streaming, orMonitoring.
Adjusts the hardware/software Chat Mix balance slider.
- Chat Mix Balance: Slider from
-100(100% Chat / Voice) through0(Balanced) to+100(100% Game).
Controls SteelSeries GG Sonar's Streamer Mode layout.
- Action:
Toggle,Enable, orDisable.
- Open Macro Deck 3.
- Go to Extension Store -> Plugins.
- Search for SteelSeries GG Sonar.
- Click Install.
- Download the latest
.macroDeckPluginfile from the Releases tab. - In Macro Deck 3, navigate to Plugins and click Install from file.
- Select the downloaded
.macroDeckPluginfile. - Macro Deck will install and start the plugin automatically.
| Component | Minimum Requirement |
|---|---|
| OS | Windows 10 (64-bit) / Windows 11 |
| Macro Deck | Macro Deck 3.0 or later |
| SteelSeries GG | Any version with the Sonar feature enabled |
| Runtime | .NET 10.0 Runtime (installed by Macro Deck if needed) |
Note
SteelSeries Sonar must be active in SteelSeries GG. The plugin connects locally via SteelSeries GG's IPC REST service.
To compile and package the plugin locally:
- .NET 10.0 SDK or later
- Macro Deck Plugin CLI
Install the Macro Deck CLI tool:
dotnet tool install -g MacroDeck.Plugin.Cli --prereleasecd SteelSeriesSonarPlugin
dotnet restore
dotnet build -c Releasemacrodeck-plugin pack --source bin/Release/net10.0 --output ../dist/com.steelseries.sonar.macroDeckPlugin --forceThe installable artifact will be generated in dist/com.steelseries.sonar.macroDeckPlugin.
This repository includes a fully configured GitHub Actions workflow (.github/workflows/build-and-release.yml):
- On Push/PR: Automatically compiles, verifies, and packages the plugin artifact.
- On Version Tag (
v*): Automatically creates a new GitHub Release with release notes and attaches the compiled.macroDeckPluginpackage.
SteelSeriesSonarPlugin/
├── Actions/ ← Macro Deck action definitions & executors
│ ├── SetVolumeAction.cs
│ ├── AdjustVolumeAction.cs
│ ├── MuteAction.cs
│ ├── ToggleMuteAction.cs
│ ├── SetChatMixAction.cs
│ ├── SetStreamerModeAction.cs
│ └── SonarChoices.cs
├── SonarClient.cs ← High-performance HTTP client for Sonar REST API
├── SonarIntegration.cs ← Macro Deck IPluginIntegration lifecycle
├── Program.cs ← Plugin entrypoint, DI & IHttpClientFactory config
├── manifest.json ← Macro Deck 3 Plugin Manifest
└── nuget.config
SteelSeries GG allocates a dynamic port on each launch. The plugin reads C:\ProgramData\SteelSeries\GG\coreProps.json to query GG's local /subApps registry. The discovered base URL is cached in-memory and automatically refreshed whenever a reconnection is needed.
All HTTP interactions are managed via IHttpClientFactory with custom TLS validation for localhost certificates and connection pooling to prevent socket exhaustion.
Contributions, bug reports, and pull requests are welcome!
- Fork the repository.
- Create a feature branch (
git checkout -b feature/amazing-feature). - Commit your changes (
git commit -m 'Add amazing feature'). - Push to the branch (
git push origin feature/amazing-feature). - Open a Pull Request.
This project is licensed under the MIT License — see the LICENSE file for details.