soundcheck-1.0.0 is not a library.
Soundcheck
A terminal-based audio monitoring application that displays real-time audio levels from selected input channels and exits when sound exceeds a specified threshold.
Installation 🚀
From Crates.io
From Homebrew
From Chocolatey (Windows)
From Source
# Binary will be at target/release/soundcheck
Contributing & Development 🤝
Release Process
For detailed information about creating and publishing releases, see RELEASE.md.
Usage 📖
Basic Usage
# List available audio devices (interactive selection)
# Pipe device selection to detect
|
# Monitor max levels for 5 seconds
# Monitor until Enter is pressed
# Calculate average levels over 5 seconds
# Calculate average until Enter is pressed
# Get quiet output for scripting
Commands
detect: Monitor audio levels and exit when threshold is exceededlist: List available audio input devicesmax: Monitor audio and report maximum levels detectedaverage: Monitor audio and report average levels detected
Detect Command Options
| Option | Description | Default | Example |
|---|---|---|---|
--threshold |
Audio threshold in dB (-60 to 0) | 0 | --threshold -30 |
--min-db |
Minimum dB level for display (-100 to 0) | -60 | --min-db -80 |
--channels |
Audio channels to monitor (comma-separated) | [0] | --channels 0,1 |
--device |
Audio input device name | Default device | --device "USB Microphone" |
Max Command Options
| Option | Description | Default | Example |
|---|---|---|---|
--seconds |
Monitoring duration in seconds | Until Enter | --seconds 10 |
--min-db |
Minimum dB level for display (-100 to 0) | -60 | --min-db -80 |
--channels |
Audio channels to monitor (comma-separated) | [0] | --channels 0,1 |
--device |
Audio input device name | Default device | --device "USB Microphone" |
--quiet |
Output only integer values without labels | false | --quiet |
Average Command Options
| Option | Description | Default | Example |
|---|---|---|---|
--seconds |
Monitoring duration in seconds | Until Enter | --seconds 10 |
--min-db |
Minimum dB level for display (-100 to 0) | -60 | --min-db -80 |
--channels |
Audio channels to monitor (comma-separated) | [0] | --channels 0,1 |
--device |
Audio input device name | Default device | --device "USB Microphone" |
--quiet |
Output only integer values without labels | false | --quiet |
List Command
Multi-Channel Monitoring
When monitoring multiple channels, the application displays separate gauges for each channel:
- Single Channel: Shows one gradient bar with dB labels
- Multiple Channels: Displays stacked gauges, one per channel
- Threshold Detection: Exits when ANY monitored channel exceeds the threshold
Command Chaining Examples
# Continue to next command only if threshold reached on any channel
&&
# Run fallback command if user exits
||
# Error handling
||
Requirements 📋
System Requirements
- macOS: 10.15 or later
- Linux: Kernel 3.16+ with ALSA
- Windows: Windows 10+ with WASAPI
Dependencies
- Rust: 1.70+ (for edition 2021)
- Audio Libraries: System audio frameworks
- macOS: CoreAudio
- Linux: ALSA
- Windows: WASAPI
Development 🛠️
Building
# Debug build
# Release build
# Run tests
# Check code quality
Troubleshooting 🔍
Common Issues
"No default input device"
- Ensure your microphone/audio input is connected and enabled
- Check system audio settings
"Device not found"
- Use
soundcheck listto see available devices - Use
soundcheck detect --helpto see available options - Verify the device name spelling
Blank screen on startup
- Ensure terminal supports Unicode characters
- Try a different terminal emulator
Audio levels not updating
- Check that the correct audio device is selected
- Verify audio input permissions
- Ensure selected channels are valid for the device
- Test with different threshold values
Debug Mode
# Run with verbose output
RUST_LOG=debug
License 📄
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments 🙏
- CPAL - Cross-platform audio library
- Ratatui - Terminal UI framework
- Tokio - Async runtime
- Clap - Command line parsing