FreeBSD QandA 655

FreeBSD QandA

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 まで お知らせください。