14-current では mixer が新しくなってます
14-current では mixer コマンドが新しいバージョンに変わっています。
mixer コマンドが新しくなった、というのは実際には表面的な話で、mixer のユーザーランドライブラリ(/usr/lib/libmixer.so)が新たに作られたのが主要な出来事です。新たなライブラリが出来たため、mixer(8) コマンド(/usr/bin/mixer)はそれを呼び出す形で完全に書き直されました。今まではmixer操作用のユーザーランドライブラリはなかったんですね。
新たな mixer ライブラリ/コマンド は FreeBSD Summer of Code 2021 の成果物
mixer の新たなライブラリ/コマンドの開発は、Google Summer of Codeの FreeBSD 部門の 5つのプロジェクトのうちの一つだったようです。 Google Summer of Code は Googleが指定した課題をクリアした学生さんに賞金を支払うというイベントですね。
FreeBSD Summer of Code の mixer プロジェクトのページは以下です。
mixerコマンドはこんな感じ
mixerコマンドを実際に実行してみるとこんな感じです。ボリューム値が0.00〜1.00になってます。
今までの mixer コマンドはこんな感じで各ボリューム値は整数ですね。
ボリュームの変更も従来と違い、例えば vol 要素のボリュームを変更する場合は
左右同じ値(50%)
mixer vol.volume=0.5
左右別指定(40%:60%)
mixer vol.volume=0.4:0.6
となります。mute指定する場合は
mixr vol.mute=1
で、1をセットするとmuteになります。
また -o オプションで、
mixer -o > mixersetting
で mixer 設定をmixersetting ファイルに保存できます(従来の -s オプションに相当)。
設定を再度 restore するには
mixer `cat mixersetting`
とします。
細かな使い方は man (man 8 mixer)を参照してください。
ユーザーランドライブラリでプログラミングで扱いやすく
新たに追加された mixer のユーザーランドライブラリのC言語での使い方は man に書かれています。
mixer.hを include して、mixer_open で得られるmixer 構造体に対して操作を行い mixer_close するという感じで操作できるようです。
実際の書き方は ExAMPLES の項目のコードが参考になります。実際のコードがなによりわかりやすいですね。
この man の全体はこちら (man 3 mixer)
FreeBSD Summer of Code 他のプロジェクト
mixer 以外の FreeBSD Summer of Code 2021 のプロジェクトの一覧はこちらです。
コンソールで CJK を入力できるようにする Input Method(開発者は中国語圏の人なので日本語は試してなさそうですが)
や、XFS を fuse でmountして読めるようにするプロジェクト
とか色々おもしろそうです。mixer と違って current にマージされてないので簡単には試せなさそうですが。