Наудио панорамирование не работает

Я не могу заставить панорамирование работать в Наудио.
вот мой код:

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, но это не работает.

Я хочу, чтобы он воспроизводился полностью с одного динамика, а не с другого. или с одного канала, а не с другого канала.

1 ответ

Я просто провел всю ночь с той же проблемой.

И решение было совершенно другим, чем ожидалось. Я попытался использовать панорамирование и PanningSampleProvider и MultiplexingWaveProvider, чтобы получить контроль над панорамированием, но я мог слышать только незначительное изменение звука, на самом деле панорамирование. На моих измерителях мощности я мог видеть, возможно, 10% отклонение.

Теперь мне нужно перевести с датского, так что это может быть не на 100% точным. Но под звуковым устройством в Windows выберите устройство воспроизведения, которое вы используете, нажмите "Свойства", нажмите "Расширения" и отметьте "Деактивировать все звуковые эффекты". БАМ, 100% контроль панорамирования.

В окнах предположений есть какой-то алгоритм автоматического уровня между стереоканалами, выбранными по умолчанию - не знаю, почему и что он должен делать.

У меня такая же проблема. Я пытался использовать PanningSampleProvider (NAudio), но это не сработало. Я выяснил, что причина в настройках оконной системы. Просто отключите монофонический звук в настройках звука. https:https://stackru.com/images/f4d147166604771018e5885cc45d0969e3b4ea5e.png

Вот мой исходный код:

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

Pan установка на WaveChannel32 идет от -1 (только слева) до 1 (только справа)

Или для большего контроля над стратегиями панорамирования, посмотрите на PanningSampleProvider учебный класс.

Другие вопросы по тегам