Tôi không chắc liệu điều này có xứng đáng với câu trả lời riêng hay không. Tôi đã sử dụng câu trả lời của HSC và các ví dụ tại "ALSA Wiki - The Dmix Howto". Các tài liệu Dmix thực sự là một chút bực bội.
Dưới đây là ví dụ ~/.asoundrc
phù hợp với tôi. Phần "ràng buộc" là không cần thiết, nhưng HOWTO nói nó giúp "chip đa kênh hoạt động nhanh hơn" (không chắc chắn nếu tôi quan tâm?). Nếu tôi liên kết "0 1 1 0" thì nó sẽ chuyển kênh phải/trái. Nếu tôi liên kết "0 1 1 1" thì tôi lấy rác ở tai phải ... Rõ ràng ipc_key
là một tham số bắt buộc; Tôi chỉ chọn một số nguyên ngẫu nhiên.
# example 1
pcm.hw3mix {
type dmix
ipc_key 1939 # must be unique
slave {
pcm "hw:3"
period_time 0
period_size 1024 # must be power of 2
buffer_size 4096
rate 44100
}
bindings {
0 0
1 1
}
}
pcm.!default hw3mix
Dòng cuối cùng làm cho thiết bị mặc định mới của tôi.
tôi đơn giản hóa ở trên để:
# example 2
pcm.hw3mix {
type dmix
ipc_key 1939 # must be unique
slave { pcm "hw:3" }
}
pcm.!default hw3mix
và nó dường như chỉ làm việc tốt.
Như đã đề cập vào liên kết ALSA Wiki ở trên, tôi có thể tiếp tục đơn giản hóa nó để:
# example 3
pcm.dsp0 {
type plug
slave.pcm "dmix"
}
pcm.!default dsp0
và điều này có thể được tiếp tục đơn giản hóa để:
# example 4
pcm.!default {
type plug
slave.pcm "dmix"
}
hoặc thậm chí:
# example 5
pcm.!default plug:dmix
Tuy nhiên, ba ví dụ cuối cùng không cho phép tôi chỉ định tham số cho plugin Dmix. Tôi muốn tạo một thiết bị kết hợp nhiều luồng tới "hw: 3". Tôi nghĩ rằng điều này đã được xác định như là một tham số để Dmix vì nó không phải là thiết bị mặc định, vì vậy tôi đã đi với ví dụ thứ hai của tôi ở trên.Trong thực tế ~/.asoundrc
của tôi, cũng có một khối cho "hw: 0,0" được gọi là "hw0mix", vì vậy bằng cách thay đổi nhận xét trên các dòng sau, tôi có thể chuyển đổi đầu ra của luồng (vừa được tạo) giữa tai nghe và loa:
#pcm.!default hw0mix
pcm.!default hw3mix
NB: Ở trên đề cập đến các thiết bị như "hw: 0,0" và "hw: 3" ... khó tìm ra cách đảm bảo số thiết bị ổn định cho âm thanh USB khác nhau của tôi thiết bị, tôi đã tìm thấy hướng dẫn here trong "Đặt hàng nhiều thẻ cùng loại". Cấu hình bao gồm một dòng trong một tệp trong /etc/modprobe.d/
. Đó là cách tôi nhận được các con số như 0 và 3 để chỉ các thiết bị tương tự trên các lần khởi động lại.
Câu trả lời này rất hữu ích nhưng tôi hơi bối rối và sẽ đánh giá cao giải thích thêm. Tại sao lệnh 'aplay' thứ hai lại có' -D default', nhưng lệnh đầu tiên thì không? Ý nghĩa của phần 'bindings' là gì và' ctl.dmixer' là gì? Có thể kết hợp nhiều hơn hai luồng không, ví dụ: nếu tôi chạy ba lệnh 'aplay' cùng một lúc? Tại sao thiết bị "mặc định" của kiểu 'plug' trỏ tới' dmixer', chúng ta có thể đổi tên 'pcm.dmixer' thành' pcm.! Default' và tránh thụt lùi không? – Metamorphic