Skip to content

Kunal-CodeLab/SonicBoard

Repository files navigation

🎵 SonicBoard

SonicBoard Logo

SonicBoard

A premium, high-performance, and feature-rich global Soundboard application built with C# and WPF (.NET 8).

Target Framework UI Framework Audio Library Platform Support


🌟 Key Features

SonicBoard is designed for gamers, streamers, and content creators who want seamless control over their audio assets during live streams, gameplays, or voice calls.

  • 🎹 Global System-Wide Hotkeys: Bind sounds to key combinations using Win32 Low-Level Keyboard Hooks (SetWindowsHookEx). Play sounds instantly even when the app is minimized or you are in a full-screen game.
  • 🚫 Block/Suppress Hotkey Keypress: Choose to block keypresses from propagating to other open applications when triggering a sound, preventing accidental typing in in-game chats.
  • 🔀 Multi-Device Audio Routing: Play sounds through multiple output devices simultaneously (e.g., hear it in your local headphones and route it to a Virtual Audio Cable to play in Discord/in-game chat).
  • 🎙️ Smart Auto-Mute Microphone: Automatically mutes your physical microphone when a soundboard sound is playing, preventing audio feedback loop/leak, and unmutes it immediately when the sound finishes.
  • 📁 Profile Management: Organise your sounds into different profiles (e.g., "Gaming", "Streaming", "Memes") and switch between them on the fly.
  • Admin Privilege Escalation: One-click option to relaunch as Administrator so global hotkeys function smoothly in elevated games like Valorant, CS2, or PUBG/BGMI.
  • 🎨 Adaptive UI Layouts: Toggle between a detailed List View with comprehensive settings and a clean Button Grid View featuring customizable colors for rapid clicking.
  • 🔁 Per-Sound Controls: Individual volume adjustments and loop toggles for every audio file.
  • 🎲 Play Random Sound: Add surprise to your streams with the "Play Random" button or hotkey trigger.
  • 🛞 System Tray Integration: Minimize the application to the system tray to keep your taskbar clean.
  • 🤝 Drag & Drop Audio Files: Quickly add sounds to your active profile by dropping them directly into the application.

🛠️ Technology Stack

  • Framework: .NET 8.0 (Windows Presentation Foundation - WPF)
  • Audio Engine: NAudio (v2.2.1) — handles device enumeration, WASAPI shared outputs, and real-time mixing.
  • Decoder Support: NAudio.Vorbis (v1.5.0) for native Ogg Vorbis files.
  • Serialization: Newtonsoft.Json (v13.0.4) for profile saving/loading and persistent user configurations.

📋 System Requirements


🚀 Getting Started

Installation & Execution

  1. Clone the repository:
    git clone https://github.com/Kunal-CodeLab/SonicBoard.git
  2. Navigate to the project directory:
    cd SonicBoard
  3. Build and run using the .NET SDK:
    dotnet build
    dotnet run

Alternatively, open SonicBoard.csproj or the root folder in Visual Studio 2022 and hit F5 to run.


📖 How to Use

1. Adding Sounds

  • You can drag and drop supported audio files (.mp3, .wav, .ogg, .flac, .m4a, .aac, etc.) directly onto the main window.
  • Or, click the ➕ Add Sound button in the toolbar to browse files manually.

2. Setting up Global Hotkeys

  1. Select a sound from the list.
  2. Click inside the Hotkey text box in the bottom action bar.
  3. Press your desired key combination (e.g., Ctrl+Shift+Num5).
  4. Click the Set button to apply.
  5. If you want keys to not register in games when pressed, enable the Block Hotkey Keypress checkbox on the options panel.

3. Routing Audio to Discord / Games

  1. Install a virtual audio device like VB-Cable.
  2. Set your game or Discord input device (Microphone) to Cable Output.
  3. In SonicBoard, check/enable both:
    • Your main headphones/speakers (so you can hear the sounds locally).
    • Cable Input (VB-Audio Virtual Cable) (so the sound goes into the virtual microphone).
  4. Enjoy playing high-quality sounds to your friends!

Tip

Enable the Auto-Mute Mic option under settings. This mutes your real voice microphone while soundboard audio plays, preventing background noise/feedback from leaking through your virtual mic.

Warning

Windows disables Drag & Drop functionality for apps running in Admin Mode due to security policies. If you launch SonicBoard as Administrator, please use the Add Sound button instead of drag & drop.


📂 Project Structure

SonicBoard/
│
├── Assets/                 # Image assets, logo, and application icon
├── Models/                 # Data contracts & profiles
│   ├── AppSettings.cs      # User settings configurations
│   ├── SoundItem.cs        # Sound model (name, path, hotkey bindings, volume)
│   └── SoundProfile.cs     # Profile model (collection of SoundItems)
│
├── Services/               # Core application logic
│   ├── AudioEngine.cs      # NAudio WASAPI & mixing layer
│   ├── HotkeyManager.cs    # Global low-level hook keyboard manager
│   └── ProfileManager.cs   # JSON profiles load/save manager
│
├── Helpers/                # WPF Converters and RelayCommand implementation
├── Resources/              # WPF Application resources and dark theme dictionaries
│
├── MainWindow.xaml         # UI layout and styling
├── MainWindow.xaml.cs      # UI logic and event handlers
├── App.xaml / App.xaml.cs  # App entry point and global resource merging
└── SonicBoard.csproj       # MSBuild project file

📄 File Formats Supported

Thanks to NAudio and Media Foundation integrations, SonicBoard supports a wide range of audio files:

  • MPEG Layer 3 (.mp3)
  • Waveform Audio (.wav)
  • Ogg Vorbis (.ogg)
  • Free Lossless Audio Codec (.flac)
  • Advanced Audio Coding (.aac, .m4a)
  • Windows Media Audio (.wma)
  • Audio Interchange File Format (.aiff, .aif)

👤 Author

  • Kunal Choudhary - Main Developer & Designer

📄 License

This project is licensed under the MIT License.

About

SonicBoard is a premium C#/.NET 8 WPF soundboard featuring global hotkeys, multi-device audio routing, smart mic auto-muting, customizable profiles, and support for MP3, WAV, OGG, and FLAC.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages