簡體   English   中英

NAudio - 如何僅將正弦波發送到插孔上的一個音頻通道

[英]NAudio - How to send sine wave only to one audio channel on jack

我從Visual Studio 2010中獲取了現有的單聲道(非立體聲)NAudio示例:

http://mark-dot-net.blogspot.com/2009/10/playback-of-sine-wave-in-naudio.html

並將其更改為具有雙聲道立體聲音頻,如下所示:

public abstract class WaveProvider32 : IWaveProvider 
{ 
  public WaveProvider32() : this(44100, 2) // Was 44100, 1
  {
  }
.
.
. 
}

當我嘗試將正確的樣本值放在緩沖區中的第一個浮點數和緩沖區中第二個浮點數中的零值時,我期望在右側通道上獲得正弦波,而左側沒有音頻。

我在左聲道和右聲道上看到相同頻率相差10倍的相位正弦波。

這是從某種信號流失,還是我不明白代碼應該如何工作?

以下是我如何更改WaveProvider32的示例:

public class SineWaveProvider32 : WaveProvider32 
{
.
.
.
public override int Read(float[] buffer, int offset, int sampleCount) 
{ 
  int sampleRate = WaveFormat.SampleRate; 
  for (int n = 0; n < sampleCount; n += 1) 
  { 
    buffer[n+offset] = (float)(Amplitude * Math.Sin((2 * Math.PI * sample * Frequency) /    sampleRate)); 

    buffer[n+offset+1] = (float)(0); 
    sample++; 

    if (sample >= sampleRate) 
    {
      sample = 0; 
    }
  } 
  return sampleCount; 
}
}

關於我做錯的任何建議?

問候

注意:NAudio項目位於:

http://naudio.codeplex.com/

你的for循環應該有+ = 2,而不是+ = 1。

for (int n = 0; n < sampleCount; n += 2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM