@touchifyapp/volumecontrol
v0.1.4
Published
Cross-platform system volume control for Node.js — powered by Rust and napi-rs
Readme
@touchifyapp/volumecontrol
Node.js bindings for the
volumecontrolcrate family via napi-rs.
This package exposes the cross-platform audio volume control API to Node.js as a native addon built with napi-rs. The correct system backend (PulseAudio on Linux, WASAPI on Windows, CoreAudio on macOS) is selected automatically at compile time.
Installation
npm install @touchifyapp/volumecontrolPlatform requirements
- Node.js >= 18
- Linux:
libpulse-dev(PulseAudio development headers)- Windows / macOS: no extra system libraries required
Usage
const { AudioDevice } = require('@touchifyapp/volumecontrol');
// Open the default audio output device
const device = AudioDevice.fromDefault();
console.log(`${device.name} (${device.id})`);
console.log(`Volume: ${device.getVol()}%`);
// Change volume (0–100)
device.setVol(50);
// Check mute state
console.log(`Muted: ${device.isMute()}`);
// Mute / unmute the device
device.setMute(true); // mute
device.setMute(false); // unmute
// List all available audio devices
const devices = AudioDevice.list();
devices.forEach(d => console.log(`${d.name} (${d.id})`));
// Get a device from name/id
const firstDevice = devices[0];
const deviceFromId = AudioDevice.fromId(firstDevice.id);
const deviceFromName = AudioDevice.fromName(firstDevice.name);Rust snake_case method names are automatically mapped to JavaScript camelCase by napi-rs:
| Rust | JavaScript |
|-------------------|---------------------|
| from_default() | fromDefault() |
| from_id(id) | fromId(id) |
| from_name(name) | fromName(name) |
| get_vol() | getVol() |
| set_vol(vol) | setVol(vol) |
| is_mute() | isMute() |
| set_mute(muted) | setMute(muted) |
| list() | list() |
Building from source
Prerequisites: Rust toolchain and the platform system libraries listed above.
cd volumecontrol-napi
npm install
npm run build # release build
npm run build:debug # debug buildThe build produces a .node native addon file and an auto-generated index.d.ts TypeScript declaration file.
Built with AI
This crate is part of the volumecontrol workspace, which was built 100% with GitHub Copilot (Claude Opus & Claude Sonnet) as an experiment in AI-driven development of a production-ready Rust crate.
License
MIT — see the LICENSE file in the repository for details.
