2009-08-30 11 views
4

C#アプリケーションで特定のトーンを再生できる必要があります。私はそれをオンザフライで生成するかどうか、またはファイルから再生するかどうかは気にしませんが、可変音量と周波数だけでなく、可変音色を持つトーンを生成する方法が必要です。これらのトーンを生成するために使用したものが、多くのティンバー・プリセットを持っていれば、特に役に立ちます。これらのティンバーがすべてミッド・イット(midi-ish)という音を出さなかったら、さらに素晴らしいでしょう。実際の楽器の録音)。オーディオ生成ソフトウェアまたは.NETライブラリ

提案がありますか?

答えて

0

あなたの生成されたトーンが 'あなたは実生活のサンプルを使用し、それらを再生する必要があります。 http://www.sampleswap.org/filebrowser-new.php?d=INSTRUMENTS+single+samples%2F

のような、実際の楽器サンプルバンクを見つけようとします。メロディーを作成したいときは、元のサンプルの周波数と比べて再生頻度を変えてください。

この回答が役に立ちましたら、私に一言コメントしてください。

1

この記事では、似たように私を助け: http://social.msdn.microsoft.com/Forums/vstudio/en-US/18fe83f0-5658-4bcf-bafc-2e02e187eb80/beep-beep

を特に一部がビープクラスです:

public class Beep 
{ 
    public static void BeepBeep(int Amplitude, int Frequency, int Duration) 
    { 
    double A = ((Amplitude * (System.Math.Pow(2, 15)))/1000) - 1; 
    double DeltaFT = 2 * Math.PI * Frequency/44100.0; 

    int Samples = 441 * Duration/10; 
    int Bytes = Samples * 4; 
    int[] Hdr = {0X46464952, 36 + Bytes, 0X45564157, 0X20746D66, 16, 0X20001, 44100, 176400, 0X100004, 0X61746164, Bytes}; 
    using (MemoryStream MS = new MemoryStream(44 + Bytes)) 
    { 
     using (BinaryWriter BW = new BinaryWriter(MS)) 
     { 
     for (int I = 0; I < Hdr.Length; I++) 
     { 
      BW.Write(Hdr[I]); 
     } 
     for (int T = 0; T < Samples; T++) 
     { 
      short Sample = System.Convert.ToInt16(A * Math.Sin(DeltaFT * T)); 
      BW.Write(Sample); 
      BW.Write(Sample); 
     } 
     BW.Flush(); 
     MS.Seek(0, SeekOrigin.Begin); 
     using (SoundPlayer SP = new SoundPlayer(MS)) 
     { 
      SP.PlaySync(); 
     } 
     } 
    } 
    } 
} 

Beep.BeepBeep(100, 1000, 1000); /* 10% volume */ 
を次のようにそれを使用することができます
関連する問題