Console.Beep() を低いミリ秒レートで使用してみましたが、2 つの周波数が「同時に」再生されますが、ビープ音の間の一時停止がそれを台無しにします。私はそれを調査しようとしましたが、私が探しているDirectSoundを除いて、何も見つけられず、どこから始めればよいかわかりません. 必要なのは、1 つのスピーカーから 2 つ以上の周波数を同時に再生するプログラムを C# で作成することだけです。
ありがとう。
優れた.NETバインディングを備えたDirectSoundをご覧になることをお勧めします。2つ(またはそれ以上)Buffer
のオブジェクトを使用し、それらのメソッドを呼び出してPlay
それらを同時に再生できます。
このチュートリアルでは、サウンドをその場で合成することにより、C#で単純なドラムマシンを実装する方法を示します。それが役に立てば幸い。
Console.Beep()は同期しており、サウンドが終了するまで戻りません。
Simple DirectMedia Layer(SDL.net)をお試しください。
周波数が事前にわかっている場合は、それらを合成して wave ファイル (audacity または別の同様のプログラム) にし、SoundPlayerクラスを使用してその wave ファイルを再生できます。
string path = /*path goes here*/;
player = new SoundPlayer(path);
player.Play();
実行時にそれらを合成する必要がある場合は、手動でファイルを作成する必要があります。これは、ウェーブ ファイルを作成するために参照できる SOの質問です。
MIDIを使って調べてみてください。この例から始める必要があります。複数の人が強く推奨する MIDI ライブラリを使用しています。
以下は、WAV または MIDI ファイルを再生できる非常に単純なサンプル コードです。このようにして、一度コードを記述してから、効果音を変更したい場合は wav または mid ファイルを維持するだけで済みます。
任意のサウンド ファイルを再生する - C# (マネージド コードに DirectX 9.0 を使用)