MCPcopy Index your code
hub / github.com/Peter-L-SVK/pro_audio_config

github.com/Peter-L-SVK/pro_audio_config @v2.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.1.0 ↗ · + Follow
254 symbols 537 edges 22 files 71 documented · 28% updated 44d agov2.1.0 · 2026-05-08★ 371 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Pro Audio Config

Rust CI

License: MIT Top Language GitHub release (latest by date)

A professional audio configuration tool for Linux systems that provides a simple graphical interface to manage PipeWire and ALSA audio settings. Finally, an easy way to configure sample rates, bit depths, and buffer sizes without digging through config files.

Why This Exists

After 10 years of using Fedora and other Linux distributions, I realized we're still missing a fundamental tool: a simple, graphical way to configure professional audio settings. In 2025, manually editing configuration files shouldn't be the only option for adjusting basic audio parameters. If you wish to support me for future updates with some symbolical donation, BuyMeACoffe button.

Running the program
(Program running)

Features

All current features and running on different OSes are showcased in the Gallery

🎚️ Real-time Audio Monitoring Tab

  • Live Audio Level Meters: Visual monitoring of stereo channel output levels with real-time PipeWire integration
  • Color-coded Visual Feedback: Safe (green), warning (yellow), and clipping (red) zones with blinking indicators
  • Real System Audio Monitoring: Taps into PipeWire monitor sources for accurate system-wide audio level measurement
  • Smooth Meter Animation: 10 FPS updates with proper threading for responsive UI performance
  • DB Scale Display: Accurate decibel readings with peak and RMS calculations
  • Auto-detection Fallback: Intelligent fallback to simulation mode when PipeWire isn't available
  • Professional Metering: Studio-grade level monitoring with proper threshold matching industry standards
  • Manual Reconnection: Reconnect button for monitoring recovery with multi-attempt strategy
  • Service Health Checks: Automatic PipeWire service monitoring and restart capability
  • Connection Management: Cleanup of stale monitor ports and PID change handling

🔧 Device and Configuration Management

  • Device Detection: Automatically detects and displays current audio devices (PipeWire, ALSA, PulseAudio)
  • Sample Rate Configuration: Support for rates from 44.1 kHz to 384 kHz
  • Bit Depth Settings: 16-bit, 24-bit, and 32-bit audio formats
  • Buffer Size Control: Adjustable buffer sizes from 128 to 8192 samples
  • Professional Audio Support: Optimized for studio and high-quality audio applications
  • Graphical Interface: Clean, intuitive GTK-based user interface
  • No Terminal Required: Graphical interface that anyone can use
  • Privilege Escalation: Secure privilege escalation for system-level audio configuration

🗂️ Multi-Tab Interface

  • Separate Input/Output Configuration: Dedicated tabs for playback (output) and recording (input) devices
  • Real-time Monitoring Tab: Dedicated monitoring interface with live audio meters
  • Configuration Inspector Tab: Comprehensive view of all PipeWire/WirePlumber configuration files with active status
  • Independent Settings Management: Configure input and output devices with different sample rates, bit depths, and buffer sizes
  • Clear Visual Separation: Intuitive tabbed interface that clearly distinguishes between recording, playback, monitoring, and configuration inspection

🔍 Configuration Inspector

  • File System Scanning: Automatic discovery of all PipeWire and WirePlumber configuration files
  • Active Status Detection: Identifies which configuration files are currently in use via pw-dump analysis
  • User/System Separation: Clear distinction between user-specific and system-wide configuration files
  • File Metadata Display: Shows file size, modification time, owner, and preview of configuration content
  • Smart File Opening: Desktop environment-aware terminal detection for editing system files
  • Visual Indicators: Checkmarks show which configuration files are currently active in PipeWire
  • Refresh Capability: On-demand rescanning of configuration files and active PipeWire state

Advanced Tab Features

  • Configuration Modes: Switch between Global System Settings and Exclusive Mode
  • Professional Audio Settings: Fine-tune buffer size ranges, thread priorities, and memory locking
  • Exclusive Mode: Direct hardware access for single applications (similar to ASIO/WASAPI exclusive mode)
  • Latency Calculation: Real-time latency display based on buffer size and sample rate
  • Hardware Optimization: Memory locking, device suspend prevention, and clock source selection
  • Resampling Control: Adjust resampler quality or disable automatic resampling entirely
  • Channel Management: Option to disable automatic channel remixing for professional workflows

🔍 Configuration Scope

  • User-Specific Configuration: Apply settings only for the current user (default)
  • System-Wide Configuration: Apply settings for all users on the system (requires admin privileges)
  • Flexible Deployment: Choose between user-specific or system-wide configuration based on your needs

🛠️ Advanced Configuration

  • Dedicated WirePlumber Configs: Separate configuration generators for input vs output devices
  • Independent Signal Handlers: Each tab manages its own settings and apply operations
  • Comprehensive Testing: Extensive test suite covering new input/output separation features
  • Advanced configuration options ready for professional studio workflows
  • Exclusive mode support for applications requiring ASIO-like direct hardware access
  • Real-time performance tuning with thread priority and memory management

Supported Audio Systems

  • PipeWire (primary)
  • ALSA (fallback)
  • PulseAudio (legacy support)

Future Proof Design

This tool is designed to grow with PipeWire and Linux audio:

  • Extended buffer support ready for future PipeWire versions
  • Modular architecture for easy addition of new audio backends
  • Hardware-agnostic - works with any ALSA-compatible device
  • Standards-based using industry-standard audio formats
  • Extensible UI that can accommodate new settings and features

As audio companies improve their Linux driver support and PipeWire continues to evolve, this tool will be ready to leverage those advancements immediately.

Roadmap

  • [x] Real-time Audio Monitoring - Live level meters with PipeWire integration
  • [x] Manual Monitoring Reconnection - Recovery tools for audio monitoring
  • [x] Configuration Inspector - Comprehensive view of all audio configuration files
  • [x] Setting all available devices in one session
  • [x] Separate input/output configuration tabs
  • [x] User vs system-wide configuration scope
  • [ ] Package manager support (RPM/DEB/Flatpak)
  • [ ] Additional audio backends (JACK)
  • [ ] Preset configurations
  • [x] Advanced audio routing

Installation

Setup

  1. Install rust and cargo:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # select 1

# sh/bash/zsh/dash/ash/pdksh etc
. "$HOME/.cargo/env" # for fish and nushell see output of rust install
  1. Install dependencies for app building:
# Fedora/CentOS Stream/RHEL/Rocky
sudo dnf install  pipewire-devel clang llvm-dev gtk3-devel

# Arch/EndeavourOS/Manjaro/arch-based
sudo pacman -S pipewire clang llvm gtk3 # pkg-config add in Manjaro

# Ubuntu/Debian/Mint/PopOS/ZorinOS
sudo apt install libpipewire-0.3-dev clang llvm-dev libgtk-3-dev

Quick Install

git clone https://github.com/Peter-L-SVK/pro_audio_config # or download as zip manually and unzip
cd pro_audio_config
./install.sh

From Source

  1. Clone the repository:
git clone https://github.com/Peter-L-SVK/pro_audio_config
cd pro_audio_config
  1. Build and install:
cargo build --release --features pipewire-monitoring
sudo cp target/release/pro_audio_config /usr/local/bin/

Uninstall

./uninstall.sh

Usage

Graphical Interface

Run the application from your application menu or terminal:

pro-audio-config

Input/Output Tabs

  • Output Tab: Configure playback devices (speakers, headphones, HDMI outputs)
  • Input Tab: Configure recording devices (microphones, audio interfaces, line inputs)

Configuration Inspector Tab

The Configuration Inspector Tab provides comprehensive management of all audio configuration files:

  • File Scanning: Automatically scans for all PipeWire and WirePlumber configuration files
  • Active Status: Shows which configuration files are currently active with ✓ indicators
  • User vs System: Clearly distinguishes between user and system configuration files
  • File Operations: Double-click any file to open it with your default system editor
  • Visual Preview: Shows first lines of configuration content for quick identification
  • Refresh Functionality: Rescan configuration files and update active status

Real-time Monitoring Tab

The Monitoring Tab provides live audio level monitoring with professional-grade features:

  • Live Level Meters: Real-time stereo channel monitoring with accurate dB readings
  • Color-coded Zones: Visual feedback with safe (green), warning (yellow), and clipping (red) indicators
  • Manual Reconnection: Recovery button for re-establishing monitoring when PipeWire services restart
  • Service Health: Automatic detection and recovery from PipeWire service interruptions
  • Connection Verification: Ensures monitor ports are properly connected to the application

Advanced Tab

The Advanced Tab provides professional-grade audio configuration options:

Configuration Modes

  • Global System Settings: Configure audio settings that apply to ALL applications system-wide
  • Exclusive Mode: Provide direct hardware access to a SINGLE application, bypassing mixing and processing

Professional Settings

  • Buffer Size Range: Set minimum and maximum buffer sizes for dynamic adjustment
  • Real-time Thread Priority: Control CPU scheduling priority for audio threads
  • Memory Locking: Lock audio buffers in RAM to prevent swapping and reduce latency
  • Device Suspend Prevention: Keep audio devices active even when idle
  • Resampler Quality: Adjust the quality/performance tradeoff for sample rate conversion
  • Clock Source Selection: Choose between system clock, monotonic, or real-time clock sources

Exclusive Mode Features

  • Application Targeting: Specify which application should receive exclusive audio access
  • Direct Hardware Access: Bypass audio mixing for lowest possible latency
  • Real-time Latency Display: See calculated latency based on your buffer size and sample rate
  • Device Capability Checking: Automatic validation of device compatibility with exclusive mode

Using Exclusive Mode

  1. Select "Exclusive Mode" from the Configuration Mode dropdown
  2. Enter the application name and process name (e.g., "Reaper" and "reaper")
  3. Select your audio device and desired buffer size/sample rate
  4. Click "Apply Exclusive Mode Settings"
  5. To return to standard shared mode, click "Disable Exclusive Mode"

Each tab maintains independent settings, allowing you to optimize input and output devices separately for your specific use case.

Configuration Scope

  • User-Specific (Default): Settings apply only to your user account, stored in ~/.config/pipewire/
  • System-Wide: Settings apply to all users, stored in /etc/pipewire/ (requires authentication)
  • Toggle Option: Use the "Apply system-wide" checkbox to switch between user and system configuration

Configuration

Sample Rates

  • 44.1 kHz - CD Quality
  • 48 kHz - Standard Audio
  • 96 kHz - High Resolution
  • 192 kHz - Studio Quality
  • 384 kHz - Ultra High Resolution

Bit Depths

  • 16 bit - CD Quality
  • 24 bit - High Resolution
  • 32 bit - Studio Quality

Buffer Sizes

  • 128 samples (2.7ms @48kHz)
  • 256 samples (5.3ms @48kHz)
  • 512 samples (10.7ms @48kHz)
  • 1024 samples (21.3ms @48kHz)
  • 2048 samples (42.7ms @48kHz)
  • 4096 samples (85.3ms @48kHz)
  • 8192 samples (170.7ms @48kHz)

Technical Details

Architecture

  • Frontend: GTK3 with Rust bindings
  • Audio Backend: PipeWire with ALSA fallback
  • Configuration: WirePlumber for session management
  • Privilege Escalation: pkexec for secure root access
  • Multi-threaded UI: Non-blocking device detection and configuration

Configuration Inspector Implementation

  • Active Status Detection: Uses pw-dump JSON parsing to identify active configuration files
  • File System Crawling: Recursive scanning of standard PipeWire/WirePlumber directories
  • Thread-safe Scanning: Background scanning with main-thread UI updates
  • Desktop Integration: Smart terminal detection for editing system files across different desktop environments

Monitoring Reconnection System

  • Service Health Monitoring: Periodic checks of PipeWire service status
  • Connection Recovery: Automatic reconnection logic with exponential backoff
  • PID Change Handling: Detection and recovery from audio daemon PID changes
  • Thread Lifecycle Management: Proper cleanup and restart of monitoring thre

Core symbols most depended-on inside this repo

create_constrained_combo
called by 18
src/ui/components.rs
cleanup_audio_configs
called by 11
src/config.rs
populate_combo_box
called by 11
src/ui/components.rs
detect_output_audio_device
called by 9
src/audio.rs
create_section_box
called by 9
src/ui/components.rs
show_error_dialog
called by 8
src/ui/dialogs.rs
write_config_with_privileges
called by 7
src/config.rs
restart_audio_services
called by 7
src/config.rs

Shape

Function 165
Method 70
Class 16
Enum 3

Languages

Rust100%

Modules by API surface

src/config.rs49 symbols
src/audio.rs46 symbols
tests/audio_integration.rs23 symbols
src/config_inspector.rs22 symbols
src/monitoring.rs19 symbols
src/audio_capture.rs17 symbols
tests/ui_integration.rs14 symbols
src/ui/tab_types.rs11 symbols
src/ui/advanced_tab.rs9 symbols
src/ui/audio_tab.rs8 symbols
tests/integration.rs6 symbols
tests/common.rs6 symbols

For agents

$ claude mcp add pro_audio_config \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page