Как воссоздать звуковой белый шум? - C#
Формулировка задачи:
Здравствуйте!
Пишу прогу для генерации белого шума.
Имеется диапазон от 50 до 5 000 Гц. Программа выдаёт изначально частоту в половину (2475 Гц) а затем просто добавляет и отнимает от этой частоты числа в диапазоне от -2475 до 2475. Сам код выглядит вот так:
Для работы нужна библиотека NAudio.
public class SineWaveProvider32 : WaveProvider32 { int sample; public SineWaveProvider32() { Frequency = 1000; Amplitude = 0.25f; // let's not hurt our ears } public float Frequency { get; set; } public float Amplitude { get; set; } public override int Read(float[] buffer, int offset, int sampleCount) { int sampleRate = WaveFormat.SampleRate; for (int n = 0; n < sampleCount; n++) { buffer[n + offset] = (float)(Amplitude * Math.Sin((2 * Math.PI * sample * Frequency) / sampleRate)); sample++; if (sample >= sampleRate) sample = 0; } return sampleCount; } } // Тут начинается нужный код SineWaveProvider32 sineWaveProvider = new SineWaveProvider32(); WaveOut waveOut = new WaveOut(); private void button1_Click(object sender, EventArgs e) { sineWaveProvider.SetWaveFormat(16000, 1); // mono sineWaveProvider.Frequency = 2475; sineWaveProvider.Amplitude = 0.25f; waveOut.Init(sineWaveProvider); waveOut.Play(); timer1.Enable = true; } private void timer1_Tick(object sender, EventArgs e) { Random rn = new Random(); sineWaveProvider.Frequency = 2475 + rn.Next(-2475,2475); }
Главная проблема вот в чём.
При запуске таймера с задержкой в 1 секунду (1000) - всё работает как и должно - частоты добавляются и отнимаются как по маслу. При уменьшении задержки до 0.001 (как примерно и должно быть), звук сильно "тормозит". То есть я слышу задержку примерно в 0.1-0.3 секунд от силы. Как сделать так, что бы задержка была меньше? Если вы знаете другой способ реализации - буду рад услышать!Решение задачи: «Как воссоздать звуковой белый шум?»
textual
Листинг программы
timer1.Start();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д