Naudio淘选不起作用

时间:2016-12-29 14:21:17

标签: naudio panning

我无法在Naudio中进行平移 这是我的代码:

void Play(double Amp, double Left, double Right)
{
    BBeats = new binaural_beats();
    BBeats.Amplitude = Amp;
    BBeats.Amplitude2 = Amp;
    BBeats.Frequency = Left;
    BBeats.Frequency2 = Right;

    BBeats.Bufferlength = 44100 * 2 * 3; // will play for 3 sec

    waveout = new WaveOut();
    WaveChannel32 temp = new WaveChannel32(BBeats);

    temp.PadWithZeroes = false;
    temp.Pan = 0.0f;

    waveout.Init(temp);
    waveout.Play();
}

我尝试了 0.0F 1.0F 100F ,但它无效。

我希望它完全可以从一个扬声器播放而不是从另一个扬声器播放。 或者从一个频道而不是另一个频道。

3 个答案:

答案 0 :(得分:1)

我整晚都遇到同样的问题。

并且解决方案与预期的完全不同。我尝试使用pan和PanningSampleProvider和MultiplexingWaveProvider来获得对声像的控制,但是我只能听到声音的微小变化,而不是真正的声像。在输出仪表上,我可能看到10%的变化。

现在我必须从丹麦语翻译,因此可能不是100%准确。但是在Windows的声音设备下,选择要使用的播放设备,按属性,按扩展,然后勾选“停用所有声音效果”。 BAM,可以100%控制平移。

猜测窗口在默认选择的立体声通道之间具有某种自动级别算法-不知道为什么以及应该做什么。

答案 1 :(得分:0)

Pan上的WaveChannel32设置从-1(仅左侧)变为1(仅右侧)

要想更好地控制平移策略,请查看PanningSampleProvider类。

答案 2 :(得分:0)

我有同样的问题。我尝试使用PanningSampleProvider(NAudio),但是没有用。我发现原因是窗口系统设置。只需从“音频设置”中关闭单声道音频即可。 Turn off mono audio

这是我的源代码:

var _audioFile = new AudioFileReader("E://CShap/Test/speaker.wav");
var monofile = new StereoToMonoSampleProvider(_audioFile);
var panner = new PanningSampleProvider(monofile);
panner.PanStrategy = new SquareRootPanStrategy();
panner.Pan = -1.0f; // pan fully left
WaveFileWriter.CreateWaveFile16("E://CShap/Test/speaker_resampler_L.wav", panner);