Skip to content

MiguelMachado-dev/steelseries-sonar-preset-duplicator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SteelSeries Sonar Preset Duplicator

A Node.js script to duplicate audio presets between different channels in SteelSeries Sonar.

Overview

This tool allows you to copy audio presets (like "Bass boost + vocals", "Clear voice", etc.) from one audio channel to another in SteelSeries Sonar. For example, if you have a great preset configured for your Media channel and want to use the same settings for your Aux channel, this script will duplicate it for you.

Features

  • ✅ Copy any existing preset to a different audio channel
  • ✅ Preserves all preset settings and configurations
  • ✅ Generates unique IDs for duplicated presets
  • ✅ Updates timestamps automatically
  • ✅ User-friendly channel name mapping

Prerequisites

  • Node.js installed on your system
  • SteelSeries GG/Sonar installed and configured
  • Basic knowledge of terminal/command line usage

Installation

  1. Install Node.js dependencies:

    npm install
  2. Ensure SteelSeries GG is closed before running the script to avoid database conflicts.

Usage

Step 1: Find the Source Preset ID

Before running the script, you need to find the ID of the preset you want to copy. You can do this by:

  1. Opening the database file with an SQLite browser, or
  2. Running a query to list all presets:
    SELECT id, name, vad FROM configs WHERE name IS NOT NULL;

Step 2: Configure the Script

Edit the config.json file and update the settings:

{
  "sourceId": "your-preset-id-here",
  "targetChannel": "Aux",
  "databasePath": "./database.db"
}

Configuration Options:

  • sourceId: The ID of the preset you want to copy
  • targetChannel: Target channel name (Game, Chat, Mic, Media, or Aux)
  • databasePath: Path to the database file (usually ./database.db)

Step 3: Run the Script

npm start

Channel Mapping

The script uses the following channel mappings:

Channel Name Value Description
Game 1 Game audio channel
Chat 2 Voice chat channel
Mic 3 Microphone channel
Media 4 Media/music channel
Aux 5 Auxiliary channel

Example Usage Scenarios

Copy a Media preset to Aux channel

{
  "sourceId": "abc123-def456-ghi789",
  "targetChannel": "Aux",
  "databasePath": "./database.db"
}

Copy a Game preset to Chat channel

{
  "sourceId": "xyz789-abc123-def456",
  "targetChannel": "Chat",
  "databasePath": "./database.db"
}

How It Works

  1. Connects to the SteelSeries Sonar SQLite database
  2. Fetches the source preset configuration by ID
  3. Generates a new unique ID for the duplicated preset
  4. Updates the VAD (Voice Activity Detection) value to the target channel
  5. Inserts the new preset with updated timestamps
  6. Closes the database connection

Important Notes

⚠️ Always backup your database before running the script!

⚠️ Close SteelSeries GG completely before running the script to avoid database lock issues.

⚠️ Test with non-critical presets first to ensure everything works as expected.

Troubleshooting

"Database is locked" error

  • Make sure SteelSeries GG is completely closed
  • Check that no other applications are accessing the database

"Item not found" error

  • Verify the sourceId in config.json is correct
  • Check that the preset exists in the database

"Invalid target channel" error

  • Ensure targetChannel in config.json is one of: Game, Chat, Mic, Media, Aux
  • Check spelling and capitalization

"Error loading config.json" error

  • Verify config.json exists in the same directory as query.js
  • Check that config.json contains valid JSON syntax

Connection errors

  • Ensure you're running the script from the correct directory
  • Verify the database file exists at the path specified in config.json

Database Location

The script expects the database file to be in the same directory. The typical SteelSeries GG database location is:

C:\ProgramData\SteelSeries\GG\apps\sonar\db\database.db

File Structure

sonar/db/
├── query.js        # Main script file
├── config.json     # Configuration file (YOU EDIT THIS)
├── README.md       # This documentation
└── database.db     # SteelSeries Sonar database

Dependencies

  • sqlite3: For database operations
  • uuid: For generating unique preset IDs

License

This tool is provided as-is for educational and personal use. Use at your own risk.

Contributing

Feel free to submit issues or improvements to make this tool better!


Disclaimer: This tool is not officially affiliated with SteelSeries. Always backup your configurations before making changes.

About

Duplicate a preset from one channel to another

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published