ALSA: cara sementara mengubah perangkat output

15

Saya ingin melakukan hal yang paling sederhana di ALSA: membuat USB-headphone menghasilkan suara alih-alih speaker internal tablet saya. Saya tidak ingin mengubah file konfigurasi seperti asound.rcatau alsa.confatau asound.confdan secara permanen mengatur headphone sebagai perangkat output default dengan mengubah urutan perangkat, saya ingin efek sementara, hanya sampai saya mencabut headphone. Anehnya, saya tidak bisa mencari jawabannya di google. Apakah alsamixermampu melakukan itu (sepertinya tidak)?

Di Gnome Anda dapat dengan mudah memilih perangkat keluaran saat ini PulseAudio, baik di antarmuka GUI atau CLI, tetapi PulseAudioitu sendiri berfungsi di atas ALSA! Jadi saya juga bertanya-tanya, bagaimana ini memaksa ALSA untuk mengubah perangkat output?

Boris Burkov
sumber
alsamixermemang memiliki opsi "Pilih kartu suara" di antarmuka, meskipun saya tidak tahu apakah itu juga benar-benar mengatur perangkat output.
goldilocks
1
tidak, sayangnya itu hanya menampilkan parameter kartu suara ini dan memungkinkan untuk men-tweak mereka, tetapi tidak mengarahkan output ke sana
Boris Burkov
Halo, Anda dapat mencoba exec alsamixerdari terminal dan tekan F6untuk memilih kartu suara lain. :)
slackmart
@sgmart Hai, sgmart, saya melakukan hal itu, tetapi tidak mentransfer suara ke perangkat itu, hanya memilih perangkat itu untuk menyetel parameternya, bukan mengalirkan output ke sana.
Boris Burkov
4
Utilitas alsamixer memiliki beberapa kontrol: Master, PCI, dan sebagainya. Periksa apakah ada MMlabel (MM = bisu), jadi gunakan Mtombol dari keyboard Anda untuk mengaktifkan suara.
slackmart

Jawaban:

4

Jika perangkat USB terdaftar sebagai kartu suara di sistem, Anda mungkin ingin memeriksanya man amixer dan menggunakan unmuteparameter.

amixer -c 1 set Master playback 100% unmute

Periksa juga saluran lain (PCM dll.). Contoh-contoh dari manual ini adalah:

   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%
Jari Laamanen
sumber
Terima kasih, Jari, berhasil. Saya telah membaca manual tentang ALSA dan memiliki pertanyaan: apakah perangkat yang terdaftar oleh amixer dan alsamixer sebenarnya bukan perangkat perangkat keras, tetapi perangkat ALSA, dibuat oleh plugin alsa di /usr/share/alsa/alsa.conf dan teman-teman? Saya kebanyakan mengerti sintaksis dari plugin tersebut, tetapi tidak dapat menemukan definisi kata kunci yang sangat mendasar, seperti "pcm" atau "ctl" atau "type". Saya gagal menemukan daftar kata kunci dalam dokumentasi doxygen: alsa-project.org/alsa-doc/alsa-lib, alsa-project.org/alsa-doc/alsa-lib/conf.html. Apakah Anda tahu ada sumber info tentang mereka?
Boris Burkov
8
Ini tidak benar-benar menyelesaikan pertanyaan awal. Anda dapat mengatur parameter, tetapi itu tidak mengubah kartu di mana audio dihasilkan.
diri sendiri
2
Jika ini benar-benar menjawab pertanyaan awal, diperlukan contoh lengkap. Bagaimana ini bisa melakukan sesuatu yang tidak bisa dilakukan oleh alsamixer? Jelas, alsamixer tidak dapat beralih ke output melalui kartu suara yang berbeda. Atau, dalam kasus saya, saya juga ingin keluaran melalui kartu suara yang sama tetapi HDMI bukan speaker / headphone. Pulseaudio melakukan hal-hal ini, tetapi bagaimana caranya? Diperlukan contoh dari awal hingga akhir untuk menjadikan ini jawaban yang baik.
Colin Keenan
1
Pitty ini telah dipilih sebagai jawaban - pertanyaannya persis seperti apa yang saya cari: bagaimana cara mengganti sementara kartu yang digunakan untuk output. Namun, seperti yang sudah dicatat oleh @diri sendiri, jawaban ini sebenarnya tidak menjelaskan bagaimana cara melakukannya. Mengajukan pertanyaan baru dengan judul yang hampir sama sekarang cenderung ditutup sebagai duplikat.
domsson
1
@domsson cukup tautkan kembali ke yang ini dan jelaskan bahwa jawabannya tidak menyelesaikan masalah Anda. Itu harus memastikan itu tidak ditutup sebagai penipu.
terdon
0

IIUC Anda dapat memperbarui .asoundrcatau /etc/asound.confsecara dinamis. Jadi, dimungkinkan untuk memiliki dua file headphones.confdan front.confyang mengatur perangkat default Anda ke hw:channel,deviceangka yang sesuai dan kemudian mengaktifkannya pada acara "colokan ACPI jack / headphone HEADPHONE". Saya akan mencoba ini, menggunakan "ln" untuk menautkan /etc/asound.confke salah satunya/etc/sounds/{headphones,front}.conf

AntisocialNetworker
sumber