NAudio всегда воспроизводит только один mp3 на двух каналах параллельно

#c# #audio #naudio #soundcard

#c# #Аудио #naudio #звуковая карта

Вопрос:

Я хочу сделать что-то подобное:

Две стереокарты, и я хочу воспроизводить музыку полностью выборочно, это означает 1.mp3 на 1 канале на 1 звуковой карте и 1 канал на 2 звуковой карте, 2.mp3 на 2 канале на 1 звуковой карте и 3.mp3 на 2 канале на 2 звуковой карте. И изменение этого как раз вовремя.

Я читал об этом несколько вечеров, и, на мой взгляд, лучший способ — использовать NAudio, но я пытаюсь подготовить приложение hello world в этой области, и у меня огромные проблемы.

Это мой код:

         WaveOut waveOut1 = new WaveOut();
       

        
        var input2 = new Mp3FileReader(@"c:sample2.mp3");
        var input1 = new Mp3FileReader(@"c:sample3.mp3");
        
           var waveProvider = new MultiplexingWaveProvider(new IWaveProvider[] { input1, input2 }, 2);
           waveProvider.ConnectInputToOutput(0, 0);
          

        waveOut1.Init(waveProvider);
        waveOut1.Play();
        
  

И если я изменил аргументы connectinputtooutput на 0,1; 1,0; 0,0; 1,1, я все равно слышу ввод nr 2 на каждом канале (проверено на двух звуковых картах).

Если я воспроизвожу эти mp3 напрямую, оба работают хорошо.

Это было моим вдохновением: https://markheath.net/post/handling-multi-channel-audio-in-naudio

Может кто-нибудь сказать мне, почему этот скрипт не работает должным образом?

Или, может быть, у вас есть более простое решение для достижения этой цели? Может быть, для Linux?

спасибо, К.

Комментарии:

1. Ссылка использует одну карту с несколькими каналами, в то время как вы хотите использовать две карты. Итак, вам нужны два экземпляра Mp3FileReader, каждый экземпляр которых подключен к другой карте.

2. Я знаю. Но если я хочу иметь возможность управлять звуком между 4 каналами, используя 2 звуковые карты, тогда я должен сделать это на одной карте. Например, я хочу воспроизвести 1.mp3 на левом динамике и 2.mp3 на правом динамике. Мой скрипт в каждой конфигурации воспроизводит второй mp3 на каждом канале. На данном этапе это проблема.

3. У вас есть 1,0 и 1,1, поэтому вход 1 находится на выходных выходах 0 и 1.

4. «И если я изменил аргументы connectinputtooutput на 0,1; 1,0; 0,0; 1,1, я все равно слышу ввод nr 2 на каждом канале (проверено на двух звуковых картах)».

5. Это еще хуже. Теперь у вас есть 0,1 и 0,0, поэтому входной канал 0 находится на обоих выходных каналах 1 и 0, затем у вас есть 1,0 и 1,1, поэтому входной канал 1 также находится на обоих выходных каналах 0 и 1.