ビープ音っていいよね

皆さんビープ音、もとい、Beep関数をご存じでしょうか。
最近のWindowsではエラー時にもサウンドボードから音が鳴るので聞きませんが、起動時のエラーとか、Linuxとか、無機質なピッとかピーッって音。なんか古くさくて嫌いになれないんです、あれ。やかましいけど。
長さが変えられるのは今の擬音の通りですが、音の高さも変えることができます。聞いたことがある方は、鳴る場面によって音の高さが違うことを知っているかもしれませんね。
さて、Windowsには古くからBeepというAPIが用意されています。

スピーカから単純な音を鳴らします。この関数は同期で実行されます。音が鳴り終わるまでは、呼び出し側へ制御を返しません。

http://msdn.microsoft.com/ja-jp/library/cc428923.aspx

これを使うことで先の音を鳴らすことができます。もちろん周波数も長さも自由に変えられます。使い方はこんな感じ。

#include <windows.h>

void main()
{
    Beep(440, 1000); // 440Hz,1000ms
}

ね、簡単でしょ?
C言語とかで自由な音程で音を鳴らす方法を考えてみると、MIDIAPIたくさんいるしメッセージとか知らないとダメだし、波形を自分で作ったところで再生面倒だし、ここまで簡単な方法はないと思うのです。他の言語でDeclareとかDLLImport書くのも充分耐えられる。
これを見つけてからしばらくこのAPIに熱中して、BeepのソフトキーボードとかMIDIBeepで再生とかいろいろ遊びました。
そんな大好きなBeep関数ですが、Windows7でひさしぶりに鳴らそうとしたら例のチープな音が聞こえない。ググってみるとこんな記事が。

Windows 7では、この問題を完全に解決した。Beep.sysにあった機能もぜんぶ、ユーザー・モード・システム・サウンド・エージェントに移したんだ。これで、Beep() APIを呼んでも、8254チップを操作するかわりに、実際の音を再生するユーザー・モード・エージェントに丸投げできるって寸法さ。

本の虫: Windows 7のBeep ドライバってどうなったのさ?

おおう・・・
たしかにスピーカーつないだら音がなりました。ええ。無機質な音がポピッなんてかわいらしい音になってましたが。
かましくないし、ステミキ通せるし、なにより残ってたのはうれしいんだけど・・・なんだか寂しいねえ。