#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.