Наудио панорамирование не работает
Я не могу заставить панорамирование работать в Наудио.
вот мой код:
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
учебный класс.