FreeBSD QandA 655
Q. IBM-PC/AT 互換機のベル(ビープ音)の音量は変化させることができるの
でしょうか。
A. 原理的には不可能ではありませんが、現在の FreeBSD ではできません。工
作の得意な人はケースのスピーカに直列に可変抵抗を入れるなどして対応して
ください。
ソフトウエア的にできることはビープ音の周波数と音の鳴る持続時間を変更す
ることです。これはコンソールの場合と X上では設定の仕方が異なります。
(1)コンソール上での設定
kbdcontrol コマンド、または「\033[=<pitch>;<duration>B」のエスケープ
シーケンスをコンソールに出力することで変更します。
kbdcontrol -b <duration>.<pitch>
または、シェルから例えば、
echo "\033[=<pitch>;<duration>B"
ここで <pitch> と <duration> は整数値で次のような意味となります。
音の周波数 = 1193182 / <pitch> (Hz)
持続時間 = <duration> * 0.1 (秒)
初期値はそれぞれ 1491Hz(pitch=800), 0.05秒(duration=1/2)となっています。
このため持続時間は初期値より短くできません。なお、
kbdcontrol -b normal
とすると、duration=1 pitch=800 をセットしたことになります。
(2) X 上での設定
xset コマンドを使います。詳しくは man xset で調べて下さい。現在の
XFree86(3.3.2) では
xset b <Xvol> <Xpitch> <Xduration>
で、<Xvol> は音量(%)となっていますが、実際は 50%の時に 1になるよう
に <Xduration> をスケールします。また、コンソールの時とは違って
<Xpitch> は周波数そのもので、<Xduration> はミリ秒単位の持続時間です。
従って、例えばコンソールの初期値と同じベル音を出すには、
xset b 50 1491 50
とします。なお、XFree86(3.3.2)での初期値は
xset b 50 400 100
で、これはコンソールでの設定では
kbdcontrol -b 1.2983 または echo "\033[=2983;1B"
としたことに対応します。
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。