Według Wiki ALSA pod tytułem „ Jak wybrać konkretne zamówienie dla wielu zainstalowanych kart ”, stwierdza:
Która karta ma numer 0, 1, a więc domyślnie zależy od kolejności ładowania modułów. Jest to szczególnie przydatne do wyboru karty, która stanie się domyślną.
Teoretycznie można więc wybrać, która z kilku zainstalowanych kart stanie się kartą 0, domyślną, upewniając się, że moduł sterownika jest ładowany jako pierwszy. (Uwaga: zakłada się, że każda karta dźwiękowa wymaga innego sterownika. Jeśli masz dwie karty dźwiękowe tego samego typu, przejdź do następnej sekcji).
Można to osiągnąć na dwa sposoby: „stary” indeks = moduł modułu karty i alternatywne (i nowe) sloty = opcja modułu snd.
Dokumentuje dwie metody:
- Starsza metoda „index =”
- Nowsza metoda „slots =”
To pierwsze zalecają instrukcje instalacji Jaspera. O tym też mówi większość rozwiązań. Jest to jednak starsza metoda i może nie działać na bardziej aktualnych obrazach Raspbian Jessie.
Połączenie obu metod sprawdziło się dla mnie.
Przede wszystkim sprawdź, w jakiej kolejności zostały załadowane twoje karty:
$ cat /proc/asound/modules
0 snd_bcm2835
1 snd_usb_audio
Liczenie kart zaczyna się od, 0
więc domyślnie bcm2835
jest ładowane jako pierwsze, a moja karta USB z moim mikrofonem jest ładowana jako druga.
Aby zmienić kolejność kart, najpierw tworzę plik o nazwie /etc/modprobe.d/alsa-base.conf
. Można go nazwać dowolną nazwą, o ile kończy się .conf
. Następnie dodałem:
# This sets the index value of the cards but doesn't reorder.
options snd_usb_audio index=0
options snd_bcm2835 index=1
# Does the reordering.
options snd slots=snd_usb_audio,snd_bcm2835
Komentarze powinny wyjaśniać, co robi każda linia. Gdy to zrobisz, wydaje się, że musisz ponownie uruchomić komputer, aby działał.
Po ponownym uruchomieniu powinieneś być w stanie nagrać trochę dźwięku z domyślną kartą, która powinna być teraz Twoim mikrofonem:
$ arecord temp.wav
a następnie zagraj w nią, określając kartę jako 1, a urządzenie jako 0, czyli tam, gdzie powinno być wyjście głośnika:
aplay -D plughw:1,0 temp.wav
Początkowo dodałem tylko linię z slots
nim. To działało, czyniąc moją kartę USB domyślną kartą, ale została źle zindeksowana. Na przykład, kiedy to zrobiłem, /proc/asound/modules
wyglądałem tak:
$ cat /proc/asound/modules
1 snd_usb_audio
2 snd_bcm2835
Idealnie powinno wyglądać tak:
0 snd_usb_audio
1 snd_bcm2835
I dlatego też używam tej index
metody, aby to osiągnąć.