Windows audio recorder that captures system audio and microphone simultaneously using WASAPI
Features • Why WaveGrab • Installation • Usage • Build
- WASAPI Loopback - Records system audio from any output device (speakers, USB headsets, Bluetooth)
- Microphone Mixing - Combines mic input with system audio in real-time
- Universal Compatibility - Works with USB, Bluetooth, and built-in audio devices (unlike Stereo Mix)
- Independent Volume Controls - Separate sliders for system and microphone levels
- Real-time Visualization - Waveform display and level meters during recording
- MP3 Export - Automatic conversion to MP3 after recording
- Mini Mode - Compact always-on-top window while recording
- Pause/Resume - Pause recording without creating multiple files
- Persistent Settings - Remembers your device selection and preferences
Windows doesn't natively support recording microphone and system audio together. Existing solutions have drawbacks:
| Solution | Problem |
|---|---|
| Stereo Mix | Doesn't work with USB/Bluetooth devices |
| VoiceMeeter | Complex virtual driver setup |
| OBS Studio | Overkill for audio-only recording |
| Paid software | Unnecessary cost for a simple task |
WaveGrab solves this with a lightweight, single-purpose app using Windows WASAPI loopback - no virtual drivers, no complex setup.
Download the latest WaveGrab.exe from Releases.
# Clone the repository
git clone https://github.com/yourusername/wavegrab.git
cd wavegrab
# Create virtual environment
python -m venv venv
.\venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run
python src/main_gui.pyFor MP3 conversion, download FFmpeg and place both ffmpeg.exe and ffprobe.exe in the bin/ folder, or add them to your system PATH.
- Select Loopback Device - Choose which output device to record (what you hear)
- Select Microphone - Choose your mic input (optional)
- Adjust Volumes - Set levels for system and mic independently
- Click REC - Start recording
- Click STOP - Stop and save as MP3
- Use Test button to check audio levels before recording
- Mini Mode keeps a small window on top while you work
- Recordings are saved with timestamp:
recording_2025-01-25_143022.mp3 - Config is saved automatically - your settings persist between sessions
- Python 3.12+
- Windows 10/11 (64-bit)
# Activate virtual environment
.\venv\Scripts\activate
# Install PyInstaller
pip install pyinstaller
# Build
.\build.batThe executable will be created in dist/WaveGrab.exe.
- Python 3.12
- PyAudioWPatch - WASAPI loopback support
- NumPy - Audio processing and mixing
- soundfile - WAV file I/O
- pydub - MP3 conversion
- Tkinter - GUI
wavegrab/
├── src/
│ ├── main_gui.py # Entry point
│ ├── devices.py # WASAPI device enumeration
│ ├── recorder.py # Audio capture
│ ├── mixer.py # Stream mixing
│ ├── config.py # Settings persistence
│ ├── mp3_converter.py # FLAC to MP3 conversion
│ └── gui/
│ ├── app.py # Main window
│ ├── controller.py# Recording logic
│ └── widgets.py # Custom UI components
├── assets/ # Icons
├── requirements.txt # Python dependencies
├── build.spec # PyInstaller config
└── build.bat # Build script
MIT License - feel free to use, modify, and distribute.
Contributions are welcome! Feel free to:
- Report bugs
- Suggest features
- Submit pull requests
Made with Python and WASAPI