2017-01-22 6 views
1

Проблема:

В рамках школьного проекта, я пытаюсь создать приложение, которое обеспечивает гитару AMP с помощью NAudio библиотеки.NAudio окна формы приложения, имеет задержку loopingback (вход в DirectSoundOut)

Когда я подключаю гитару, он ее распознает, и все работает нормально, но между входом и выходом динамиков существует огромная задержка.

Вот мой исходный код:

private void button2_Click(object sender, EventArgs e) 
     { 
      if (sourceList.SelectedItems.Count == 0) return; 

      int deviceNumber = sourceList.SelectedItems[0].Index; 
      sourceStream = new WaveIn(); 
      sourceStream.DeviceNumber = deviceNumber; 
      sourceStream.WaveFormat = new WaveFormat(44100, WaveIn.GetCapabilities(deviceNumber).Channels); 
      sourceStream.StartRecording(); 

      WaveInProvider waveIn = new WaveInProvider(sourceStream); 

      waveOut = new DirectSoundOut(); 
      waveOut.Init(waveIn); 
      waveOut.Play(); 
     } 

в этом коде я отловить событие нажатием кнопки, которая использует выбранный вход (микрофон/гитара) и преобразует звук его recieves к выходу. Задержка между входом и выходом составляет около ~ 1 сек, и это прерыватель транзакции.

Как улучшить задержку, чтобы приложение стало более отзывчивым?

ответ

0

и WaveIn не являются особенно низкоуровневыми аудио API. Для чего-то подобного ASIO предпочтительнее. AsioOut, к сожалению, немного сложнее в работе, но это должно позволить вам получить гораздо более низкие задержки.

+0

Большое вам спасибо! – EldarGoren