A native binding to ALSA to control the default audio device on Linux. Supports set/get the volume and get the muted state and set the muted state.
const { volume } = require('node-volume-linux');
// the functions the volume controller exposes
const { getVolume, setVolume, isMuted, setMute } = volume;
// to get the system volume
const currentVolume = getVolume();
// to set the volume to 43.
setVolume(0.43);
// to know if the system is muted
isMuted();
// to mute
setMute(true);
// to unmute
setMute(false);
// to toggle mute
setMute(!isMuted());
Alsa takes as it's volume input a value between the mixer's min and max values which are not in the 0-1.0
scale. For this two volume sets with the value in the range of 0 < x < 0.02
might yield the same volume level. Setting a value grater x >= 0.02
does change the volume up. This might be an issue when implementing a for example volume sliders.
The native module build depends on the package libasound2-dev. The build also uses pkg-config. To get the needed dependencies.
$ sudo apt-get install libasound2-dev pkg-config
After this you can build
$ node-gyp configure
$ node-gyp build
The repository contains a demo of the usage
$ node demo.js
- Expose the microphone API
Copyright (c) 2018 Jarno Lonardi
The package node-audio-linux
is licensed under MIT license.