Purpose

I created this library to control SteelSeries Sonar, the audio software I use with my headset. All code and instructions are available in the GitHub repository. Sonar provides five audio channels, each with its own volume, mute, EQ, and output settings. Changing those settings whenever I switched apps was cumbersome, especially since I was used to Logitech software that could automatically apply settings based on the active application. I couldn’t find an existing tool that gave me the flexibility I wanted, so I developed SteelSeries-GG-Py and AutoSonar, an application built on top of the library.

SteelSeries-GG-Py

SteelSeries-GG-Py was inspired by the steelseries-sonar-py library, but I rewrote the code to make it more robust for end-user use and to substantially expand the settings it can read and control. SteelSeries Sonar uses HTTP requests to communicate between its front end and sound engine. I used Fiddler to record requests for different settings, then built functions to read and update settings on specific channels. I brought those functions together into two dictionary-based functions: one for reading settings and one for writing them. This makes the library easy to use in standalone applications and allows settings to be imported from external JSON files.

Icon AutoSonar

AutoSonar uses the library to detect the active application and apply the matching Sonar settings. You create profiles with the settings you want, then configure each profile to activate for a particular application. AutoSonar matches profiles against part of the application name, the application’s folder path, or both. This makes profile detection flexible, even when an application changes its name or location after an update.