Чтобы сгенерировать звуковой сигнал, взгляните на SignalGenerator
, который может генерировать синусоидальную волну.Существует способ расширения Take
для ограничения продолжительности звукового сигнала.Для тишины вы можете использовать ту же технику, кроме SilenceProvider
.
Вот простой пример двух звуковых сигналов с молчанием между ними:
var beep1 = (new SignalGenerator(){ Frequency = 1000, Gain = 0.2}).Take(TimeSpan.FromSeconds(2));
var silence = new SilenceProvider(beep1.WaveFormat).ToSampleProvider().Take(TimeSpan.FromSeconds(2));
var beep2 = (new SignalGenerator() { Frequency = 1500, Gain = 0.2 }).Take(TimeSpan.FromSeconds(2));
var concat = beep1.FollowedBy(silence).FollowedBy(beep2);
using (var wo = new WaveOutEvent())
{
wo.Init(concat);
wo.Play();
while(wo.PlaybackState == PlaybackState.Playing)
{
Thread.Sleep(500);
}
}