Sound card changing script (for ALSA)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
minoru-kun
Сообщения: 620
ОС: Debian GNU/Linux

Sound card changing script (for ALSA)

Сообщение minoru-kun »

Имея две звуковые карточки под ALSA, столкнулся с необходимостью иметь возможность легко переключаться между ними в процессе работы.
После некоторых манипуляций с google, составил нехитрый bash-скрипт, решающий данную проблему. Изменения вступают в силу при следующем же запуске программы, использующей вывод звука через ALSA. Искренне надеюсь, что он сможет пригодиться кому-нибудь еще.

Код:

#!/bin/bash CMDLINEPARAM=1 ASOUNDRC=~/.asoundrc if [ $# -ge $CMDLINEPARAM ] then DEVICE=$1 else cat << Memo Usage:: changesound.sh <card_id> No command line parameters specified. You can always get a list of the available soundcards by typing: 'aplay -l', if ALSA is properly installed. Memo exit 0 #Exiting at this point fi cat >$ASOUNDRC <<Config #/---------/ #Warning: this file was autogenerated by changesound.sh #/--------/ pcm.!default { type hw card $DEVICE } ctl.!default { type hw card $DEVICE } Config exit 0


Прилагаю скрипт с Makefile, содержащим правило install, к своему сообщению.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4764
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Sound card changing script (for ALSA)

Сообщение SLEDopit »

а можно такой вопросик:
у меня две звуковые (одна отдельной платой, другая встроена в мать). так вот дрова грузятся только для одной. переключал обычно запуском alsaconf, что жутко неудобно. и при запуске он всегда выгружает все загруженные модули и загружает после выбора карты нужные только для нее модули.
вот отсюда видно, что в данный момент доступна только одна карточка:

Код: Выделить всё

[16:54]deb:~/changesound $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: CA0106 [CA0106], device 0: ca0106 [CA0106]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 1: ca0106 [CA0106]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 2: ca0106 [CA0106]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: CA0106 [CA0106], device 3: ca0106 [CA0106]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
а чтобы было возможно переключение, я так понимаю нужно чтобы дрова одновременно грузились для обеих карточек, или как?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали: