ALSA: cách thay đổi tạm thời thiết bị đầu ra


15

Tôi muốn làm một điều đơn giản nhất có thể có trong ALSA: để tai nghe USB tạo ra âm thanh thay vì loa trong của máy tính bảng của tôi. Tôi không muốn thay đổi tập tin cấu hình như asound.rchoặc alsa.confhoặc asound.confđặt vĩnh viễn tai nghe làm thiết bị đầu ra mặc định bằng cách thay đổi thứ tự thiết bị, tôi muốn có hiệu ứng tạm thời, cho đến khi tôi rút tai nghe ra. Kỳ lạ thay, tôi không thể google câu trả lời. Có alsamixerkhả năng làm điều đó (có vẻ như không)?

Trong Gnome, bạn có thể dễ dàng chọn thiết bị đầu ra hiện tại với PulseAudiogiao diện GUI hoặc CLI, nhưng PulseAudionó hoạt động trên ALSA! Vì vậy, tôi cũng tự hỏi, làm thế nào nó buộc ALSA thay đổi thiết bị đầu ra?


alsamixerkhông có tùy chọn "Chọn card âm thanh" trong giao diện, mặc dù tôi không biết nếu điều đó cũng thực sự đặt thiết bị đầu ra.
goldilocks

1
không, thật không may, nó chỉ hiển thị các thông số của card âm thanh này và cho phép tinh chỉnh chúng, nhưng không chuyển hướng đầu ra cho nó
Boris Burkov

Xin chào, bạn có thể thử thực hiện alsamixertừ một thiết bị đầu cuối và nhấn F6để chọn một card âm thanh khác. :)
slackmart

@sgmart Xin chào, sgmart, tôi đã làm chính xác điều đó, nhưng nó không truyền âm thanh đến thiết bị đó, nó chỉ chọn thiết bị đó để điều chỉnh các tham số của nó, không truyền phát ra cho nó.
Boris Burkov

4
Tiện ích alsamixer có một số điều khiển: Master, PCI, v.v. Kiểm tra xem có MMnhãn (MM = tắt tiếng) không, vì vậy hãy sử dụng Mphím từ bàn phím của bạn để bật âm thanh.
slackmart

Câu trả lời:


4

Nếu thiết bị USB được liệt kê dưới dạng card âm thanh trong hệ thống, bạn có thể muốn kiểm tra man amixervà sử dụng unmutetham số.

amixer -c 1 set Master playback 100% unmute

Kiểm tra các kênh khác (PCM, vv). Các ví dụ từ hướng dẫn là:

   amixer -c 1 sset Line,0 80%,40% unmute cap
          will set the second soundcard's left line input volume to 80% and right line
          input to 40%, unmute it, and select it as a source for capture (recording).

   amixer -c 1 -- sset Master playback -20dB
          will set the master volume of the second card to -20dB.  If the  master  has
          multiple channels, all channels are set to the same value.

   amixer -c 1 set PCM 2dB+
          will  increase  the PCM volume of the second card with 2dB.  When both play‐
          back and capture volumes exist, this is applied to both volumes.

   amixer -c 2 cset iface=MIXER,name='Line Playback Volume",index=1 40%
          will set the third soundcard's second line playback volume(s) to 40%

   amixer -c 2 cset numid=34 40%
          will set the 34th soundcard element to 40%

Cảm ơn, Jari, nó hoạt động. Tôi đã đọc hướng dẫn sử dụng trên ALSA và có một câu hỏi: các thiết bị được liệt kê bởi amixer và alsamixer thực sự không phải là thiết bị phần cứng, mà là các thiết bị ALSA, được tạo bởi các plugin alsa trong /usr/share/alsa/alsa.conf và bạn bè? Tôi hầu như hiểu cú pháp của các plugin đó, nhưng không thể tìm thấy định nghĩa của các từ khóa rất cơ bản, chẳng hạn như "pcm" hoặc "ctl" hoặc "type". Tôi không thể tìm thấy bất kỳ danh sách từ khóa nào trong tài liệu doxygen: alsa-project.org/alsa-doc/alsa-lib, alsa-project.org/alsa-doc/alsa-lib/conf.html. Bạn có biết bất kỳ nguồn thông tin về họ?
Boris Burkov

8
Điều này không thực sự giải quyết câu hỏi ban đầu. Bạn có thể đặt các tham số, nhưng nó không thay đổi thẻ thông qua âm thanh được phát ra.
chính mình

2
Nếu điều này thực sự trả lời câu hỏi ban đầu, một ví dụ đầy đủ là cần thiết. Làm thế nào điều này làm bất cứ điều gì mà alsamixer không thể làm? Rõ ràng, alsamixer không thể chuyển sang đầu ra thông qua một card âm thanh khác. Hoặc, trong trường hợp của tôi, tôi cũng muốn xuất qua cùng một card âm thanh nhưng HDMI thay vì loa / tai nghe. Pulseaudio làm những điều này, nhưng làm thế nào? Các ví dụ từ đầu đến cuối là cần thiết để làm cho câu trả lời này tốt.
Colin Keenan

1
Đáng tiếc điều này đã được chọn làm câu trả lời - câu hỏi chính xác là những gì tôi đang tìm kiếm: làm thế nào để thay đổi tạm thời thẻ được sử dụng cho đầu ra. Tuy nhiên, như @oneself đã lưu ý, câu trả lời này không thực sự giải thích làm thế nào để làm điều đó. Đặt một câu hỏi mới với tiêu đề gần như giống nhau bây giờ có khả năng bị đóng như là bản sao.
domsson

1
@domsson chỉ cần liên kết lại với câu hỏi này và giải thích rằng câu trả lời không giải quyết được vấn đề của bạn. Điều đó sẽ đảm bảo nó không bị đóng như một bản dupe.
terdon

0

IIUC bạn có thể cập nhật .asoundrchoặc /etc/asound.confnăng động. Vì vậy, có thể có hai tệp headphones.conffront.confđặt các thiết bị mặc định của bạn thành các hw:channel,devicesố thích hợp và sau đó chuyển chúng vào một sự kiện "giắc cắm ACPI / giắc cắm tai nghe HeadPHONE". Tôi sắp thử cái này, sử dụng "ln" để liên kết /etc/asound.confvới một trong/etc/sounds/{headphones,front}.conf

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.