2016-09-30 1 views
0

Я очень новичок в NAudio Библиотеке, а также разработке аудиофайла файла У меня вопрос, как мы получаем аудиовход от каждого канала Mixer, используя USB Audio Interface, подключаемый к ПК (Поддержка ASIO), поэтому этот микшер поддерживает 8-канальный аудиовход.Получить аудио входной канал от микшера NAudio C#

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

  • если пользователь

    • нажмите кнопку канала 2, она получит голос от канала 2 (как отдельный канал)

  • Так что я просто интересно, какой класс библиотеки я должен использовать, и есть ли пример исходного кода или наилучшая практика для такого рода сценария (я использую C# для Develop)

    Спасибо

    ответ

    0

    Попробуйте использовать этот код :

    using System; 
    using System.Windows.Forms; 
    using NAudio.Wave; 
    
    namespace NaudioAsioTest 
    { 
        public partial class Form1 : Form 
        { 
         public Form1() 
         { 
          InitializeComponent(); 
          InitialiseAsioControls(); 
         } 
    
        private void InitialiseAsioControls() 
        { 
         // Just fill the comboBox AsioDriver with available driver names 
         var asioDriverNames = AsioOut.GetDriverNames(); 
         foreach (string driverName in asioDriverNames) 
         { 
          comboBoxAsioDriver.Items.Add(driverName); 
         } 
         //comboBoxAsioDriver.SelectedIndex = 0; 
        } 
        public string SelectedDeviceName { get { return (string)comboBoxAsioDriver.SelectedItem; } } 
    
        private void OnButtonControlPanelClick(object sender, EventArgs args) 
        { 
         try 
         { 
          using (var asio = new AsioOut(SelectedDeviceName)) 
          { 
           asio.ShowControlPanel(); 
          } 
         } 
         catch (Exception e) 
         { 
          MessageBox.Show(e.Message); 
         } 
        } 
    
        private void comboBoxAsioDriver_SelectedIndexChanged(object sender, EventArgs e) 
        { 
         try 
         { 
          using (var asio = new AsioOut(SelectedDeviceName)) 
          { 
           //asio.ShowControlPanel(); 
           int nrOfChannelOUTDevices = asio.DriverOutputChannelCount; 
           int nrOfChannelINDevices = asio.DriverInputChannelCount; 
           listBoxInputs.Items.Clear(); 
           listBoxOutputs.Items.Clear(); 
           for (int i = 0; i < nrOfChannelOUTDevices; i++) 
           { 
            string name = asio.AsioInputChannelName(i); 
            listBoxInputs.Items.Add(name); 
           } 
    
           for (int i = 0; i < nrOfChannelINDevices; i++) 
           { 
            string name = asio.AsioOutputChannelName(i); 
            listBoxOutputs.Items.Add(name); 
           } 
          } 
         } 
         catch (Exception ex) 
         { 
          MessageBox.Show(ex.Message); 
         } 
        } 
    
    
    } 
    

    }

    результат заключается в следующем:

    enter image description here

    Смежные вопросы