ตามALSA Wikiภายใต้ชื่อที่อ่านว่า " วิธีเลือกคำสั่งซื้อเฉพาะสำหรับการ์ดที่ติดตั้งหลายการ์ด " จะระบุสิ่งต่อไปนี้:
การ์ดใบใดเป็นหมายเลขบัตร 0, 1 และอื่น ๆ จะถูกกำหนดโดยค่าเริ่มต้นตามลำดับการโหลดโมดูล สิ่งนี้มีประโยชน์อย่างยิ่งในการเลือกบัตรที่จะเป็นบัตรเริ่มต้น
ในทางทฤษฎีแล้วมันเป็นไปได้ที่จะเลือกการ์ดที่ติดตั้งหลายการ์ดกลายเป็นการ์ด 0 ซึ่งเป็นการ์ดมาตรฐานโดยตรวจสอบให้แน่ใจว่าได้โหลดโมดูลไดรเวอร์ก่อน (หมายเหตุ: นี่ถือว่าสมมติว่าการ์ดเสียงแต่ละตัวต้องใช้ไดรเวอร์ที่แตกต่างกันหากคุณมีการ์ดเสียงสองประเภทที่เหมือนกันโปรดข้ามไปยังส่วนถัดไป)
มีสองวิธีในการบรรลุเป้าหมายนี้ตัวเลือก "old" index = ของโมดูลไดรเวอร์การ์ดและตัวเลือก (และใหม่) slot = ตัวเลือกของโมดูล snd
เป็นเอกสารสองวิธีในการทำสิ่งนี้:
- เมธอด "index =" ที่เก่ากว่า
- เมธอด "slots =" ที่ใหม่กว่า
สิ่งแรกคือสิ่งที่คำแนะนำในการติดตั้ง Jasper แนะนำ นอกจากนี้ยังเป็นสิ่งที่โซลูชันส่วนใหญ่พูดถึงด้วย อย่างไรก็ตามนี่เป็นวิธีที่เก่ากว่าและอาจไม่ทำงานกับรูปภาพ Raspbian Jessie ในปัจจุบัน
การรวมกันของทั้งสองวิธีเป็นสิ่งที่ได้ผลสำหรับฉัน
ก่อนอื่นให้ตรวจสอบดูว่าลำดับการโหลดไพ่ของคุณคืออะไร:
$ cat /proc/asound/modules
0 snd_bcm2835
1 snd_usb_audio
การนับไพ่เริ่มต้นจาก0
ค่าเริ่มต้นbcm2835
จะถูกโหลดก่อนและการ์ด USB ของฉันที่มีไมโครโฟนของฉันถูกโหลดที่สอง
/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
วิธีการเพื่อให้บรรลุนี้