2016-09-30 2 views
0

Je suis très nouveau à NAudio Bibliothèque et ainsi que de développer le type de fichier audio J'ai une question que comment nous obtenons une entrée audio de chaque canal de Mixer utiliser l'interface audio USB connecter au PC (ASIO de soutien), donc ce mélangeur prend en charge 8 canaux d'entrée audio.Obtenir le canal d'entrée audio du mélangeur NAudio C#

L'idée d'application est comme ce

  • lorsque l'utilisateur appuie sur le bouton canal 1, il obtiendra le canal 1 entrée pour capturer la voix de haut-parleur sur ce canal particulier

  • lorsque l'utilisateur appuyer sur la touche 2 du canal pour obtenir la voix du canal 2 (en tant que canal séparé)

Je demandais quelle classe de bibliothèque que je devrais utiliser et est-il un exemple de code source ou les meilleures pratiques pour ce genre de scénario (j'utilise C# pour développer)

Merci

Répondre

0

Essayez d'utiliser ce code :

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); 
     } 
    } 


} 

}

le résultat est le suivant:

enter image description here