Как воссоздать звуковой белый шум? - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Пишу прогу для генерации белого шума. Имеется диапазон от 50 до 5 000 Гц. Программа выдаёт изначально частоту в половину (2475 Гц) а затем просто добавляет и отнимает от этой частоты числа в диапазоне от -2475 до 2475. Сам код выглядит вот так:
Листинг программы
  1. public class SineWaveProvider32 : WaveProvider32
  2. {
  3. int sample;
  4. public SineWaveProvider32()
  5. {
  6. Frequency = 1000;
  7. Amplitude = 0.25f; // let's not hurt our ears
  8. }
  9. public float Frequency { get; set; }
  10. public float Amplitude { get; set; }
  11. public override int Read(float[] buffer, int offset, int sampleCount)
  12. {
  13. int sampleRate = WaveFormat.SampleRate;
  14. for (int n = 0; n < sampleCount; n++)
  15. {
  16. buffer[n + offset] = (float)(Amplitude * Math.Sin((2 * Math.PI * sample * Frequency) / sampleRate));
  17. sample++;
  18. if (sample >= sampleRate) sample = 0;
  19. }
  20. return sampleCount;
  21. }
  22. }
  23. // Тут начинается нужный код
  24. SineWaveProvider32 sineWaveProvider = new SineWaveProvider32();
  25. WaveOut waveOut = new WaveOut();
  26. private void button1_Click(object sender, EventArgs e)
  27. {
  28. sineWaveProvider.SetWaveFormat(16000, 1); // mono
  29. sineWaveProvider.Frequency = 2475;
  30. sineWaveProvider.Amplitude = 0.25f;
  31. waveOut.Init(sineWaveProvider);
  32. waveOut.Play();
  33. timer1.Enable = true;
  34. }
  35. private void timer1_Tick(object sender, EventArgs e)
  36. {
  37. Random rn = new Random();
  38. sineWaveProvider.Frequency = 2475 + rn.Next(-2475,2475);
  39. }
Для работы нужна библиотека NAudio.

Главная проблема вот в чём.

При запуске таймера с задержкой в 1 секунду (1000) - всё работает как и должно - частоты добавляются и отнимаются как по маслу. При уменьшении задержки до 0.001 (как примерно и должно быть), звук сильно "тормозит". То есть я слышу задержку примерно в 0.1-0.3 секунд от силы. Как сделать так, что бы задержка была меньше? Если вы знаете другой способ реализации - буду рад услышать!

Решение задачи: «Как воссоздать звуковой белый шум?»

textual
Листинг программы
  1. timer1.Start();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы