믹서에서 이름으로 카드를 선택하는 방법

믹서에서 이름으로 카드를 선택하는 방법

저는 USB 사운드 카드(BlacShark V2)가 장착된 Razer 헤드셋을 가지고 있습니다.
어떤 시점에서 시스템을 부팅할 때(헤드폰은 일반적으로 시스템에 연결되어 있고 플러그를 뽑지 않음) 헤드폰의 스피커 게인이 무작위로 낮은 숫자로 설정됩니다. 나는 그것들을 에서 변경할 수 있다는 것을 발견 alsamixer하고 시스템을 부팅할 때마다 실행할 수 있도록 스크립트를 사용하여 설정하는 방법을 찾으려고 노력했습니다. 그런 다음 "amixer"를 발견했고 최종 명령은 다음과 같습니다.
amixer -c 1 cset numid=9,iface=MIXER,name='Speaker Playback Volume' 64
이 명령은 게인을 최대로 설정하고 이를 작성하여 bash 스크립트에 저장했을 때 내 헤드폰은 카드 번호 1에 있었습니다.
문제는 때때로 내 Razer 헤드폰이 카드 2로 인식된 다음 이 명령을 실행해도 예상한 대로 작동하지 않는다는 것입니다.

컨트롤을 설정하려는 카드를 이름으로 식별할 수 있는 방법이 있나요? 그렇지 않은 경우 적어도 명령을 안정적으로 실행할 수 있도록 헤드셋 카드에 고정 번호를 제공할 수 있습니까? 먼저, 감사합니다.

답변1

문제에 접근하는 방법에는 여러 가지가 있습니다(제목에 표시된 대로 질문에 반드시 대답할 필요는 없음). 우선, amixer 명령이 효율적이기를 원하고 alsa 드라이버가 모듈(커널이 아닌)로 구축되어 카드를 정확한 순서로 로드하도록 강제하는 것을 포함한다고 가정합니다.

에서:

acoswt@Tux ~ $ cat /proc/asound/cards
 0 [Loopback       ]: Loopback - Loopback
                      Loopback 1
 1 [VirMIDI        ]: VirMIDI - VirMIDI
                      Virtual MIDI Card 1
 2 [M2496          ]: ICE1712 - M Audio Audiophile 24/96
                      M Audio Audiophile 24/96 at 0xec00, irq 17
 3 [Exchange       ]: USB-Audio - Hercules Dualpix Exchange
                      Guillemot Corporation Hercules Dualpix Exchange at usb-0000:00:1d.7-3, high spe

M Audio Audiophile 사운드 카드는 snd-ice1712 alsa 드라이버에 의해 구동되는 인덱스 2에 있는 반면, USB 웹캠의 오디오 하위 시스템은 snd-usb-audio 드라이버에 의해 구동되는 인덱스 3에 있다는 것을 알 수 있습니다.

/etc/modprobe.d/sound(재부팅 후) 영구적으로 각각 인덱스 0과 1에 있도록 하려면 or(.conf 확장자가 있는 다른 항목) 에 다음을 추가하면 됩니다 .

options snd-ice1712 index=0
options snd-usb-audio index=1

참고: 배포판에 따라 일부 구성 파일(예: alsa.conf, alsa-base.conf...)이 이미 존재할 수 있으며 위에 제공된 지침과 유사한 매개변수가 충돌하도록 강제할 수 있습니다.
이 경우 기존 파일을 적절하게 다시 편집하는 것이 가장 좋으며, 결국 새로운 설정과 우선 순위를 가지거나 덮어쓰거나 충돌할 수 있는 다른 줄에 유의하세요.

관련 정보