2011-09-21 3 views
3

에 하나 개의 오디오 채널에 사인파를 보내 어떻게에서 비주얼 스튜디오 2010 (비 스테레오) NAudio 예를 들어 기존의 모노했다 :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 배 진폭이 다른 위상 사인파 이 표시됩니다.

어떤 종류의 신호에서 유출되었거나 코드가 어떻게 작동하는지 이해하지 못합니까? 내가 잘못 뭘하는지에

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

어떤 조언 : 여기

내가 WaveProvider32 변경 방법의 샘플입니까?

감사

참고 : NAudio 프로젝트에 있습니다 :

http://naudio.codeplex.com/

답변

3

귀하의 루프가 있어야 + = 2가 아닌 + = 1

for (int n = 0; n < sampleCount; n += 2) 
관련 문제