Functions to get/set volume for ALSA devices on Linux
npm install alsa-volume apt install build-essential git libasound2-dev
npm i alsa-volume
Example:
``js
const alsaVolume = require('alsa-volume');
console.log('before', alsaVolume.getVolume('default', 'Line')); // Some value
alsaVolume.setVolume('default', 'Line', 42);
console.log('after', alsaVolume.getVolume('default', 'Line')); // 42
// Get min/max values for setVolume
const range = alsaVolume.getVolumeRange('default', 'Line');
console.log(range.min);
console.log(range.max);
// Mute
alsaVolume.setMute('default', 'Line', false);
alsaVolume.toggleMute('default', 'Line');
console.log(alsaVolume.getMute('default', 'Line')); // true
`
Use alsamixer to identify mixer names. Usually Master, PCM, etc.
Combine with alsa-monitor to listen for volume changes:
`js
const alsaMonitor = require('alsa-monitor');
const alsaVolume = require('alsa-volume');
alsaMonitor.volume.on('change', () => {
console.log(alsaVolume.getVolume('default', 'Line')); // 42
});
`
apt install build-essential git libasound2-dev
git clone
cd
npm i
npm run-script build
In a seperate window, run alsamixer, then:
node test
- Implement snd_mixer_selem_get_playback_volume_range` instead of trial, error and hardcoding. See 1, 2, 3.
- alsa-monitor-node
- alsa-volume
- node-native-boilerplate
- NodeJS Advanced — How to create a native add-on using C++, GitHub Project
- elamperti for implementing mute & volumeRange functions