ALSA Wikiによると、「複数のインストール済みカードの特定の順序を選択する方法」というタイトルの下に、次のように記載されています。
どのカードがカード番号0、1であるかは、デフォルトではモジュールのロード順によって決まります。これは、デフォルトのカードになるカードを選択するのに特に便利です。
したがって、理論的には、インストールされている複数のカードのうち、ドライバモジュールが最初にロードされるようにすることで、デフォルトのカード0になるカードを選択できます。(注:これは、各サウンドカードに異なるドライバが必要であることを前提としています。同じタイプのサウンドカードが2つある場合は、次のセクションに進んでください。)
これを実現するには、カードドライバーモジュールの「古い」index =オプションと、sndモジュールの代替(および新しい)スロット=オプションの2つの方法があります。
これを行う2つの方法を文書化します。
- 古い「index =」メソッド
- 新しい「slots =」メソッド
前者は、Jasperのインストール手順で推奨されているものです。また、そこにあるソリューションの大部分が言っていることでもあります。ただし、これは古い方法であり、現在のRaspbian Jessieイメージでは機能しない場合があります。
両方の方法の組み合わせは、私のために働いたものです。
まず、カードがどの順序でロードされたかを確認します。
$ cat /proc/asound/modules
0 snd_bcm2835
1 snd_usb_audio
カードのカウントは最初から開始される0
ため、デフォルトbcm2835
が最初にロードされ、私のマイクを持つUSBカードが2番目にロードされます。
カードの順序を変更するには、最初にという名前のファイルを作成します/etc/modprobe.d/alsa-base.conf
。で終わる限り、任意の名前を付けることができます.conf
。その後、次を追加しました。
# 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
コメントは各行が何をするかを説明する必要があります。それをしたら、それをはたらくためにマシンをリブートする必要があるようです。
再起動すると、デフォルトのカードでいくつかのオーディオを録音できるようになります。これがマイクになります。
$ arecord temp.wav
次に、カードを1に、デバイスを0に指定して再生します。スピーカーの出力先は次のとおりです。
aplay -D plughw:1,0 temp.wav
私は最初に行を追加しただけslots
です。これは、USBカードをデフォルトのカードにするのに役立ちましたが、インデックスが間違っていました。たとえば、一度やったら、これは私の/proc/asound/modules
見た目です:
$ cat /proc/asound/modules
1 snd_usb_audio
2 snd_bcm2835
理想的には、次のようになります。
0 snd_usb_audio
1 snd_bcm2835
そして、それが私もindex
これを達成するためにメソッドを使用する理由です。