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.
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.
- 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
- Separate Input/Output Configuration: Dedicated tabs for playback (output) and recording (input) devices
- 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 and playback settings
- 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
- PipeWire (primary)
- ALSA (fallback)
- PulseAudio (legacy support)
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.
- PipeWire (recommended) or PulseAudio
- WirePlumber
- ALSA utilities
- pkexec (for privilege escalation)
- Rust 1.85.0 or newer
- Cargo
- gtk3-devel (or equivalent for your distribution)
git clone https://github.com/Peter-L-SVK/pro-audio-config
cd pro-audio-config
./install.sh- Clone the repository:
git clone https://github.com/Peter-L-SVK/pro-audio-config
cd pro_audio_config- Build and install:
cargo build --release
sudo cp target/release/pro-audio-config /usr/local/bin/./uninstall.shRun the application from your application menu or terminal:
pro-audio-config- Output Tab: Configure playback devices (speakers, headphones, HDMI outputs)
- Input Tab: Configure recording devices (microphones, audio interfaces, line inputs)
Each tab maintains independent settings, allowing you to optimize input and output devices separately for your specific use case.
- 44.1 kHz - CD Quality
- 48 kHz - Standard Audio
- 96 kHz - High Resolution
- 192 kHz - Studio Quality
- 384 kHz - Ultra High Resolution
- 16 bit - CD Quality
- 24 bit - High Resolution
- 32 bit - Studio Quality
- 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)
git clone https://github.com/Peter-L-SVK/pro-audio-config
cd pro_audio_config
cargo buildcargo build --releasecargo testpro_audio_config/
├── src/
│ ├── main.rs # Application entry point
│ ├── lib.rs # Library definitions
│ ├── audio.rs # Audio configuration logic
│ └── ui.rs # GTK user interface
├── icons/ # Application icons
├── install.sh # Installation script
├── uninstall.sh # Uninstallation script
└── Cargo.toml # Project dependencies
- Frontend: GTK3 with Rust bindings
- Audio Backend: PipeWire with ALSA fallback
- Configuration: WirePlumber for session management
- Privilege Escalation: pkexec for secure root access
- 16-bit: S16LE
- 24-bit: S24LE
- 32-bit: S32LE
Contributions are welcome! Please feel free to submit pull requests, report bugs, or suggest new features.
See CONTRIBUTING file for details.
For contact please see my email in profile info or use GitHub’s built-in communication tools.
Please open an issue or pull request for any:
-
Bug fixes
-
Feature suggestions
-
Documentation improvements
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
cargo test - Submit a pull request
Ensure all tests pass before submitting changes:
cargo test --lib
cargo test --testsThis project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Open an issue on GitHub
- Check the documentation
- Review existing issues for similar problems
- Package manager support
- Setting all available devices in one session
- Separate input/output configuration tabs
- Additional audio backends (JACK)
- Preset configurations
- Advanced audio routing
- Real-time audio monitoring
- PipeWire developers for the modern audio system
- GTK team for the GUI toolkit
- Rust community for excellent libraries and tools
Stop fighting config files. Start making great audio.
