2016-09-30 169 views
0

我很新的NAudio圖書館和音頻輸入通道,並制定音頻文件的類型我有疑問,我們如何從調音臺使用USB音頻接口的每個通道獲取音頻輸入連接到PC(支持ASIO),所以這個混頻器支持音頻輸入8通道。獲取從攪拌機n音訊C#

申請的構思是這樣

  • 當在信道1按鈕用戶按下它會得到的信道1級的輸入捕獲說話人的聲音在那個特定的信道

  • 當用戶按通道2按鈕它將從通道2獲得語音(作爲單獨通道)

所以我只是想知道這庫班我應該使用,有沒有源代碼示例或爲這種情況的最佳實踐(我使用C#開發)

謝謝

回答

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