public static void Sound() { try { var generator = new SignalGenerator(); generator.Type = SignalGeneratorType.SawTooth; generator.Frequency = 2500; var gameHorn = new WaveOut(); gameHorn.Init(generator.ToWaveProvider()); Task.Run(() => { EventMediator.GetEventMediator().OnGameClockSounding(); gameHorn.Play(); Thread.Sleep(2000); gameHorn.Stop(); EventMediator.GetEventMediator().OnGameClockSounded(); }); } catch (System.Exception) { SoundPlayer player = new SoundPlayer { SoundLocation = @"C:\Windows\media\Windows Ringout.wav" }; Task.Run(() => { player.PlayLooping(); Thread.Sleep(2000); player.Stop(); }); } }
private void buttonProcessSample_Click(object sender, EventArgs e) { logger.Debug("buttonProcessSample_Click(...)"); try { Task.Run(() => { logger.Debug("signal generator start..."); var waveSignalGen = signalGenerator.ToWaveProvider(); var signalFormat = waveSignalGen.WaveFormat; var bytesPerSecond = signalFormat.AverageBytesPerSecond; var buffer = new byte[bytesPerSecond / 100]; int count = 10000000; while (count-- > 0) { var sample = MediaFactory.CreateSample(); var mb = MediaFactory.CreateMemoryBuffer(buffer.Length); { sample.AddBuffer(mb); } sample.SampleDuration = 0; sample.SampleTime = 0; var pBuffer = mb.Lock(out int cbMaxLen, out int cbCurLen); var bytesRead = waveSignalGen.Read(buffer, 0, buffer.Length); if (bytesRead > 0) { Marshal.Copy(buffer, 0, pBuffer, bytesRead); } mb.CurrentLength = bytesRead; mb.Unlock(); audioRenderer?.ProcessSample(sample); mb?.Dispose(); sample?.Dispose(); Thread.Sleep(9); logger.Debug("Next sample..."); } logger.Debug("Signal generator stop..."); }); //index++; } catch (Exception ex) { logger.Error(ex); } }
public SineWaveProvider(int frequency) { SigGen = new SignalGenerator() { Gain = 0.2, Frequency = frequency, Type = SignalGeneratorType.Sin }; SigGen.ToWaveProvider(); }