macOS microphone input volume control library.
This is not the output volume you adjust with keyboard volume keys. This is the input volume slider in System Settings > Sound > Input.
micvol lets you programmatically control this slider.
- VolumeGuard — maximize input volume, automatically restore on drop
- Device enumeration — list all audio input devices
- Input volume control — get/set volume (0.0–1.0)
- Mute control — get/set mute state
Rust:
[dependencies]
micvol = "0.1"Swift / ObjC (static library):
./scripts/build_release.sh
# outputs dist/libmicvol.a + dist/micvol.hCocoaPods:
pod 'Micvol', :git => 'https://github.com/Fengur/micvol.git'let device = micvol::default_input_device()?;
{
let _guard = micvol::VolumeGuard::maximize(&device.id)?;
// ... record audio — input volume is maximized ...
}
// guard dropped: input volume automatically restored#include "micvol.h"
uint32_t device_id;
char *name;
micvol_default_input_device(&device_id, &name);
MicvolGuard guard;
micvol_guard_maximize(device_id, &guard);
// ... record audio ...
micvol_guard_restore(guard);
micvol_free_string(name);// Device enumeration
micvol::input_devices() -> Result<Vec<DeviceInfo>>
micvol::default_input_device() -> Result<DeviceInfo>
// Input volume control
micvol::get_volume(&DeviceId) -> Result<Volume>
micvol::set_volume(&DeviceId, Volume) -> Result<()>
// Mute control
micvol::get_mute(&DeviceId) -> Result<MuteState>
micvol::set_mute(&DeviceId, MuteState) -> Result<()>
// VolumeGuard
micvol::VolumeGuard::maximize(&DeviceId) -> Result<VolumeGuard>
micvol::VolumeGuard::with_volume(&DeviceId, Volume) -> Result<VolumeGuard>A SwiftUI demo app is included in demo/MicvolDemo/. To build:
./scripts/build_release.sh
cd demo/MicvolDemo
xcodegen generate
open MicvolDemo.xcodeprojFor implementation principles and technical documentation, please contact the author.
MIT
