クロスプラットフォームで音量を変えられる @neos21/loudness を作った
昨日、画面の明るさを変えられる npm パッケージ @neos21/brightness
を紹介したが、今度はボリュームを操作できる @neos21/loudness
というモノ。
# インストールする
$ npm install -g @neos21/loudness
# 音量を確認する
$ loudness get
# 音量を変更する (0〜100)
$ loudness set 50
# ミュート状態かどうかを確認する
$ loudness is-muted
# ミュートにする
$ loudness mute
# ミュートを解除する
$ loudness unmute
操作方法はこんな感じ。
コレもまた、OS 別に child_process#execFile()
を実行しているだけって感じ。
- MacOS :
osascript
で設定の参照・設定変更 - Linux :
amixer
で設定の参照・設定変更 - Windows :
adjust_get_current_system_volume_vista_plus.exe
というバイナリを同梱して設定の参照・設定変更
Linux の挙動は、ThinkPad X250 にインストールした Ubuntu にて確認した。
$ cat /proc/asound/cards
でサウンドカードの設定を確認したところ、どうも amixer
コマンドでのデフォルトの操作対象がイマイチだったので、上のサイトを参考に、/etc/asound.conf
という設定ファイルを作って、以下のように記述した。
pcm.!default {
type hw
card 0
}
ctl.!default {
type hw
card 0
}
OS を再起動すると設定が反映され、amixer
コマンドで音量調整ができるようになった。
alsamixer
コマンドを実行後、TUI で F6 キーを押すことでもこうした設定ができるようだ。よく分からないままなんとなく動くようにした。w
その他参考にしたのは以下あたり。
- LinusU/node-loudness: 🔊 A node.js library to control the systems output volume
- jlonardi/node-audio-windows: A Node.js tool to control system volume on Windows
- fcannizzaro/win-audio: Get, Set and Watch Speaker/Microphone Volume on Windows
- Change Windows sound volume via the command line - Super User
コレも、作ったはいいけどどうするかなー。w