alsa переключение звуковых карт.

много читал,но так и не понял как в alsa правильно переключиться между звуковыми картами.
сделал так,создал 2 файла ~/.asoundrc1
pcm.!default {
        type hw
        card 0
}

ctl.!default {
        type hw
        card 0
}
и ~/.asoundrc2
pcm.!default {
        type hw
        card 1
}

ctl.!default {
        type hw
        card 1
}
ну и 2 значка запуска на рабочем столе,(можна на панель)
1-
[Desktop Entry]
Version=1.0
Type=Application
Name=usb
Comment=
Exec=cp -f /home/Vadim/.asoundrc1 /home/Vadim/.asoundrc
Icon=
Path=
Terminal=false
StartupNotify=false
и
2-
[Desktop Entry]
Version=1.0
Type=Application
Name=hda
Comment=
Exec=cp -f /home/Vadim/.asoundrc2 /home/Vadim/.asoundrc
Icon=
Path=
Terminal=false
StartupNotify=false
то есть перезаписываю при переключении ~/.asoundrc

переключает безотказно,правда надо перезапустить приложение,через которое идет звук.
может есть способ получше,поэлегантнее?посоветуйте если кто знает.
p.s
сейчас пришла идея,можно наверно без лишних файлов,через echo,приду подумаю.
Linux Forever!
В другой теме давал примеры
vs220
В другой теме давал примеры
если это,
https://www.linux.org.ru/forum/desktop/9523426?cid=9525832
http://linuxoid.in/Конфиг:asoundrc,_параллельный_вывод_звука_на_несколько_выходов_или_карт
то у меня не работает,или я не так что-то понял.и как там переключать?
Linux Forever!
Vadim
как там переключать?
Там не переключается а поток идет на две карты сразу и просто ненужный выход мьютится
vs220
две карты сразу и просто ненужный выход мьютится
кем или чем мьютится?вручную в alsamixer?если не мьютить две одновременно должны работать?одновременно не работают.
Linux Forever!
Vadim
через echo
Так вопрос по башу или по конфигу алсы? )
Если по первому, то toggle можно сделать по принципу:
grep -q "card 0" ~/.asoundrc && sed -i 's/card 0/card 1/' ~/.asoundrc || sed -i 's/card 1/card 0/' ~/.asoundrc

Vadim
правда надо перезапустить приложение,через которое идет звук.
Так и должно быть, налету - это к пульсе.

Vadim
одновременно должны работать
Можно в конфиге создать два устройства вывода, а в софте указывать куда выводить звук. Это если по-простому, т.к. может стать вопрос микширования если карточка не имеет аппаратного микшера.
Вообще, alsa - такая штука, к которой с более-менее сложными вопросами с наскоку не подойдешь. Сам давно этим не занимался, раз сделал и забыл...
Aivar
Если по первому, то toggle можно сделать по принципу:

grep -q "card 0" ~/.asoundrc && sed -i 's/card 0/card 1/' ~/.asoundrc || sed -i 's/card 1/card 0/' ~/.asoundrc
что-то не получается,пробовал еще
echo -e "pcm.!\default { \type hw \card 0 \} \ctl.!\default { \type hw \card 0 \}" > ~/.asoundrc
пишет
bash: !\default: event not found
,восклицательный знак мешает.
интересно нужны воклицательные тут
pcm.!default {
        type hw
        card 1
}

ctl.!default {
        type hw
        card 1
}
мне кажется необязательно,где-то видел без них.
Linux Forever!
Vadim
что-то не получается
Все там получается. Меняет card 0 > card 1 и наоборот. В терминале работает. Может (в зависимости откуда запускается) поменять тильду на абсолютный путь...
---
А по хорошему, лучше запускать в скрипте. Поведение из всяких там лаунчеров предсказывать не берусь.
запускаю в терминале
grep -q "card 0" ~/.asoundrc && sed -i 's/card 0/card 1/' ~/.asoundrc || sed -i 's/card 1/card 0/' ~/.asoundrc
ошибок нет,но ~/.asoundrc остается пустой.
может где опечатка?

в голове уменя опечатка,надо чтобы asoundrc был сразу записан,тогда правильно все меняет.
Спасибо.
Linux Forever!
 
Зарегистрироваться или войдите чтобы оставить сообщение.