ALSA: отправка звука на два аудиоустройства

if [ $( $2 or 0 ) xor $( $4 or 0 ) ]; then echo true; else echo false; fi

Объяснение:

На основе логической таблицы, которая является операцией XOR, поэтому используются $ 2 и $ 4 (второй и четвертый аргументы содержат данные, необходимые для выполнения этой операции) , конечно, это не учитывает, когда кто-то переключает -a и -b .

4
02.07.2016, 14:15
2 ответа

Вот один из способов сделать это из ~ /.asoundrc ; Пример показывает встроенную карту и карту Soundblaster Live, объединенную в PCM по умолчанию.

# duplicate audio to both devices
pcm.!default plug:both

ctl.!default {
  type hw
  card SB
}

pcm.both {
  type route;
  slave.pcm {
      type multi;
      slaves.a.pcm "sblive";
      slaves.b.pcm "onboard";
      slaves.a.channels 2;
      slaves.b.channels 4;
      bindings.0.slave a;
      bindings.0.channel 0;
      bindings.1.slave a;
      bindings.1.channel 1;

      bindings.2.slave b;
      bindings.2.channel 0;
      bindings.3.slave b;
      bindings.3.channel 1;
      bindings.4.slave b;
      bindings.4.channel 2;
      bindings.5.slave b;
      bindings.5.channel 3;
  }

  ttable.0.0 1;
  ttable.1.1 1;

  ttable.0.2 1; # front left
  ttable.1.3 1; # front right
  ttable.0.4 1; # copy front left to rear left
  ttable.1.5 1; # copy front right to rear right
}

ctl.both {
  type hw;
  card Live;
}

pcm.onboard {
   type dmix
   ipc_key 1024
   slave {
       pcm "hw:0,1"
       period_time 0
       period_size 2048
       buffer_size 65536
       buffer_time 0
       periods 128
       rate 48000
       channels 4
    }
    bindings {
       0 0
       1 1
       2 2
       3 3
    }
}

pcm.sblive {
   type dmix
   ipc_key 2048
   slave {
       pcm "hw:1,0"
       period_time 0
       period_size 2048
       buffer_size 65536
       buffer_time 0
       periods 128
       rate 48000
       channels 2
    }
    bindings {
       0 0
       1 1
    }
}

ctl.onboard {
   type hw
   card "SB"
}

ctl.sblive {
   type hw
   card "Live"
}

( Источник )

4
27.01.2020, 20:55

Вы хотите использовать мульти-плагин.

Существует несколько хорошо задокументированных примеров его использования:

От людей, использующих alsa: https://alsa.opensrc.org/TwoCardsAsOne

От кого-то с похожим вопросом здесь: https: //unix.stackexchange.com/a/194631/127903

3
27.01.2020, 20:55

Теги

Похожие вопросы