Visual Studio 2010 の既存のモノラル (非ステレオ) NAudio の例を次から取得しました。
http://mark-dot-net.blogspot.com/2009/10/playback-of-sine-wave-in-naudio.html
以下に示すように、2チャンネルステレオオーディオに変更しました。
public abstract class WaveProvider32 : IWaveProvider
{
public WaveProvider32() : this(44100, 2) // Was 44100, 1
{
}
.
.
.
}
バッファの最初のフロートに正しいサンプル値を配置し、バッファの 2 番目のフロートにゼロを配置しようとすると、右チャンネルに正弦波が発生し、左チャンネルにはオーディオがないと予想されていました。
左チャンネルと右チャンネルで、位相正弦波から同じ周波数の 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 プロジェクトは次の場所にあります。