system_audio_meter 0.3.1
system_audio_meter: ^0.3.1 copied to clipboard
Real-time desktop audio level meter for Flutter with input/output device monitoring.
system_audio_meter #
A Flutter desktop plugin for real-time system audio metering on Windows and macOS.
system_audio_meter captures live peak levels from the operating system audio pipeline and exposes them to Flutter through streams that are easy to bind to VU meters, peak bars, diagnostics overlays, and device-monitoring UIs.
Official documentation #
The full documentation website for this repository is available at:
Use the documentation site for:
- installation and platform setup
- macOS requirements and permissions
- API reference
- architecture diagrams
- performance and memory behavior
- troubleshooting and FAQ
Key capabilities #
- Real-time output metering for desktop audio
- Real-time input metering for microphones and other capture devices
- Output and input device enumeration
- Device selection and default-device fallback
- Device connection and disconnection events
- Automatic reconnection handling when supported by the platform
Important scope #
This plugin is intentionally designed for visualization, not for audio production workflows.
- It does not record audio
- It does not persist raw audio buffers
- It does not generate FFT data
- It does not generate waveforms
- It processes audio in memory only
- It releases native buffers immediately after peak extraction
Platform support #
| Platform | Status | Notes |
|---|---|---|
| Windows | Supported | Uses WASAPI loopback for output and shared capture for input |
| macOS | Supported | Uses Core Audio taps for output and CoreAudio input capture; requires macOS 14.2+ for output metering |
| Linux | Pending | Planned for a future release |
Installation #
Add the dependency:
dependencies:
system_audio_meter: ^0.3.1
Or use:
flutter pub add system_audio_meter
Quick start #
final meter = SystemAudioMeter.instance;
final outputSubscription = meter.levels.listen((AudioLevels levels) {
print('Output L: ${levels.leftPeak}, R: ${levels.rightPeak}');
});
final inputSubscription = meter.inputLevels.listen((AudioLevels levels) {
print('Input L: ${levels.leftPeak}, R: ${levels.rightPeak}');
});
await meter.start();
await meter.startInput();
Stop the streams when they are no longer needed:
await SystemAudioMeter.instance.stop();
await SystemAudioMeter.instance.stopInput();
await outputSubscription.cancel();
await inputSubscription.cancel();
Screenshots #
Windows #

macOS #

macOS host app requirements #
If your Flutter app uses this plugin on macOS, review the full setup guide in the official docs. At minimum, host applications must declare the appropriate privacy keys, and sandboxed apps also need the correct audio-input entitlement for microphone metering.
Documentation:
