これで、設定した長さのビープ音を で再生できることがわかりましたConsole.Beep
が、探しているのは、開始と停止機能のように、特定の周波数の音を無期限に再生する方法です。何か案は?
3 に答える
コンソール名前空間で提供されるもの以外のビープ音を鳴らしたい場合は、スピーカーと直接話さなければなりません。Kernel32.dll を使用して、次のようにします。
最初に相互運用性を含めるようにしてください。
using System.Runtime.InteropServices;
次に、Beep の extern メソッドを追加し、他のメソッドからそれを使用します。これは、指定した周波数で必要なだけスピーカーにビープ音を鳴らします。
[DllImport("Kernel32.dll")]
public static extern bool Beep(Int32 frequency, Int32 duration);
public static void BeepFor(int mSec, int freq)
{
int Frequency = freq;
int DurationInMS = mSec;
Beep(Frequency, DurationInMS);
}
これらの質問でいつものように、最初の回答は次のようになります。
あなたが本当に達成しようとしていることは何ですか。本当に無期限のビープ音を鳴らしたいですか、それともより長い時間音を鳴らしたいですか?
MIDIを使用できる場合があります。
SND_LOOP と SND_ASYNC を指定したPlaySound API呼び出しを使用して、WAV ファイルをループすることもできます。
最新の PC で同じサウンドを無期限に再生するという概念は、無限ループを作成および制御できるハードウェア レベルでない限り、または特定の周波数でスピーカーを単に「オンにする」ことができない限り、やや気まぐれです。より高いレベルの API とプログラミング言語では、これは許可されません。そのレベルでは、OS が他のアプリケーションと仲良くすることを強制するからです。
編集
Beep 呼び出しの持続時間はミリ秒単位であり、Int32 値を取ることにも注意してください。Int32.MaxValue ミリ秒は長い時間です。おそらく誰よりもビープ音を聞いて立つことができなかったでしょう。