1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ビープ音を鳴らしたい

Posted at

正式な定義は知りませんでしたが、パソコン本体から「ビッ」っていう音がなるのが、なんかダサかっこいいなという思い出があったので、久しぶりに聞いてみたくなりました。

ビープ音とは

エラーや状態異常を知らせる音です。
OSやアプリケーション、BIOSなど発信元は様々です。
また、ベンダーによりその音や長さ、回数が異なりそれぞれに意味があるとのことです。

C言語で鳴らしてみる

簡単に

そもそもビープ音の存在を認知したのはprintfのリファレンスでした。
\n\tなど様々ある中で\aでビープ音が鳴りますという説明は当時衝撃でした。
XP時代だっと思いますが、なんとなくエラー音っぽいのが出てたのは覚えています。

具体的には以下

beep.c
#include <stdio.h>

int main()
{
    printf("\a");
    return 0;
}

Windows10 VisualStudio2022で実装して、鳴る音は以下
Windows 10 Error Sound

これじゃない

こんなおしゃれな通知音を効きたかったわけではないのです。
もっとエラーっぽい、聞いたら焦るような音を出したかったのです。

PowerShellで鳴らしてみる

手っ取り早く聞きたかったため、検索トップに出てきたPowerShellを使ってみます。

beep.ps1
[console]::beep()

「ピ」という聴力検査のような音が鳴りました。かなり求めていた音でしたが、まだエラー感は薄いです。

ちなみにlinuxでは以下で音が鳴ります

beep.sh
echo -e "\a"

ubuntuで動かしたところ「ポン」という音が出ました。

カスタマイズする

音の長さと音程が気に入らないのでカスタマイズ方法を探しました。
[System.Console]::Beepを使用することで、周波数(Hz)と持続時間(ミリ秒)を指定できるようです。
スピーカーからですが、一応求めていたエラー音を出すことができました。
鳴らしっぱなしにするとより深刻さを味わえます。

また、周波数だとピンとこないかもしれませんが、一般的な音階と紐づけることで、演奏が可能です。
1節くらい遊びで作ってみてください。

beep2.ps1
[System.Console]::Beep(1000, 500)  # 周波数 1000Hz、持続時間 500ms

音階の参考は以下
ドレミの振動数!ピアノ88鍵全音域の周波数一覧表

TODO

  • ネイティブアプリから簡単に出す方法
  • BIOSからより深刻さを出す方法

以上です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?