A universal, high-performance, cross-platform soundboard for gamers, streamers, and casual users.
audiopad.mp4
Most traditional soundboards are either locked to a single operating system, bloated with ads, or utilize rigid, outdated layouts. Audiopad was built to solve these problems by providing:
- True System Integration: Audio feeds directly into your voice transmission streams (using native API linking on Windows and PipeWire/PulseAudio on Linux) without needing complex virtual cable routing.
- Modern, Premium Aesthetics: Features a dark obsidian theme with clean emerald green accenting that is highly readable and easy on the eyes.
- Layout Versatility: Supports three interchangeable song list layouts designed to fit different setups:
- List View (Default): A detailed view for managing audio properties, assignment triggers, and hotkeys.
- Grid View: A card-based visual layout ideal for touchscreens or second monitors.
- Soundpad View: A highly dense button layout designed for rapid mouse triggering and real-time gaming sound boards.
Audiopad is split into two major component layers to maximize performance while delivering a rich user experience:
- C++ Core Backend:
- Responsible for high-performance audio processing, stream injection, process hooks, and registering system-level global hotkeys.
- Leverages native OS integrations (Windows API on Windows, PipeWire/PulseAudio on Linux).
- Webview Frontend (UI):
- Built with standard HTML5, CSS3, and JavaScript, rendering inside a native WebView2 control shell (Windows) or WebKitGTK (Linux).
- Decoupled rendering ensures that visual layout calculations never block or delay audio playback processing.
- Build & Package Management:
- Powered by CMake for cross-platform compilation.
- Installer package built using Inno Setup on Windows.
- Instant Stream Injection: Link playback directly to virtual input devices or physical micro channels.
- Separate Volume Sliders: Adjust audio volume independently for what you hear locally versus what other users hear in the chat room.
- Global Hotkey Assignment: Map standard or complex key combinations to sound triggers so you can play clips in-game without alt-tabbing.
- Song Downloader: Includes an integrated downloader tool to fetch audio tracks directly from YouTube or other streaming sites. Just copy the URL, select a download folder, and Audiopad downloads and registers the clip automatically.
- Responsive Control Dock: Keep track of currently playing audio clips, pause, adjust master speed, or trigger an emergency "Stop All" using the bottom-docked dashboard.
We welcome issues, feedback, and pull requests! Here is how to configure your local development environment and contribute:
Before building, ensure you have installed:
- CMake (version 3.1 or higher)
- Compiler:
- Windows: Visual Studio 2019/2022 (MSVC compiler with C++ desktop workload)
- Linux: GCC or Clang (supporting C++17)
- WebView2 Runtime (installed by default on Windows 10/11)
-
Clone the repository: To clone the project with all its necessary third-party submodules, run:
git clone --recursive https://github.com/audiopadapp/audiopad.git cd audiopad -
Initialize Submodules (If cloned without
--recursive): If you cloned the repository normally, you must fetch the dependency libraries in thelib/directory by running:git submodule update --init --recursive
-
Generate build configurations: Requires CMake 3.1 or higher. Create a build directory and configure the project:
cmake -B build -DCMAKE_BUILD_TYPE=Debug
-
Compile the binary:
- For Windows (MSVC):
cmake --build build --config Debug
- For Linux:
cmake --build build
- For Windows (MSVC):
-
Run the application:
- The compiled executable and its dependent
dist/web content will be located inside the build directory:# Windows .\build\Debug\audiopad.exe # Linux ./build/audiopad
- The compiled executable and its dependent
Audiopad uses several lightweight open-source helper libraries located in the lib/ folder. These are integrated as Git submodules and configured in the .gitmodules file. Git reads this file to install and download the correct dependency versions automatically.
Here is what each submodule does:
- nlohmann/json (
lib/json): A highly intuitive, modern JSON parsing library for C++. - miniaudio (
lib/miniaudio): A single-header audio playback and capture library used for hardware stream operations. - fancypp (
lib/fancypp): A console formatting and styled messaging log decorator library. - nativefiledialog-extended (
lib/nativefiledialog-extended): A library that opens native file pickers and folder select dialogues across Windows and Linux. - webviewpp (
src/ui/impl/webview/lib/webviewpp): A C++ wrapper that maps WebView2 (Windows) and WebKitGTK (Linux) APIs to bind C++ events directly to JavaScript. - tiny-process-library (
lib/tiny-process-library): Cross-process execution wrapper used to run download subprocesses (like FFmpeg and Youtube-dl). - cpp-httplib (
lib/cpp-httplib): A simple C++ HTTP/HTTPS client library used to fetch metadata and downloads. - traypp (
lib/traypp): Provides cross-platform system tray control menus. - semver (
lib/semver): A semantic versioning parsing library for comparing version tags during updates check operations. - lockpp (
lib/lockpp): Multithreaded lock helper utilities. - backward-cpp (
lib/backward-cpp): A stack-trace printer helper used to report crash dumps during debugging. - guardpp (
lib/guardpp): A simple process mutex library used to restrict running only one concurrent instance of the app.
- Fork this repository.
- Create a feature branch:
git checkout -b feature/cool-new-layout. - Format code matching our rules (use
clang-formator check.clang-format). - Commit your changes:
git commit -m "Add cool new layout view". - Push to the branch:
git push origin feature/cool-new-layout. - Open a Pull Request!
- License: This project is licensed under the terms of the GNU GPLv3 license.
- Copyright Notice: Attribution details for Audiopad contributors are available in the NOTICE file.
- Community Standards: We pledge to foster an inclusive and harassment-free community. Please review our Code of Conduct for guidelines on participation.
