Dalam PulseAudio, setiap kartu suara memiliki set profil yang dikaitkan dengannya. Kumpulan profil berisi beberapa profil, dan itu adalah profil yang Anda lihat saat mendaftar kartu (atau ketika melihat berbagai GUI PulseAudio).
Ada default
profil, yang terutama berisi hal-hal yang berguna untuk keluaran suara analog. Ada juga extra-hdmi
profil yang secara otomatis diterapkan ke beberapa output HDMI, dan akan memberikan opsi hingga 5.1. Sayangnya kedua profil ini ada di /usr/share/pulseaudio/alsa-mixer/profile-sets
dalamnya, dan karenanya Anda tidak dapat benar-benar mengeditnya (saya telah mengajukan bug Debug 736708 tentang ini.) Menurut dokumentasi, Anda dapat menonaktifkan autodiscovery berbasis udev, dan secara manual mengkonfigurasi semuanya — yang memungkinkan Anda menentukan path lengkap ke profil. Tapi ternyata, meski tidak didokumentasikan, udev juga bisa menentukan path lengkap.
Tetapkan aturan udev untuk menetapkan satu set profil
Anda menetapkan profil yang diatur dalam aturan udev dengan mengatur PULSE_PROFILE_SET
variabel lingkungan udev. Ini didokumentasikan untuk hanya mengambil file di /usr
subdirektori yang disebutkan di atas , tetapi path lengkap juga berfungsi. Dalam kasus saya, saya membuat aturan ini:
# cat /etc/udev/rules.d/95-local-pulseaudio.rules
ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1c20", ENV{PULSE_PROFILE_SET}="/etc/pulse/my-hdmi.conf"
Anda harus menggunakan vendor PCI dan nomor perangkat yang sesuai, yang dapat Anda peroleh dengan mudah lspci -nn
.
Setelah membuat aturan udev, Anda dapat langsung menerapkannya udevadm trigger -ssound
. Anda mungkin ingin membangun kembali initramf Anda juga ( update-initramfs -u
)
Konfirmasikan bahwa aturan udev mulai berlaku udevadm info --query=all --path /sys/class/sound/card0
(tentu saja, gunakan nomor kartu yang sesuai). Anda akan melihat E: PULSE_PROFILE_SET=/etc/pulse/my-hdmi.conf
di output. Jika tidak, jangan lanjutkan. Itu tidak akan berhasil. Ada yang salah dengan aturan udev Anda (atau mungkin Anda tidak memicunya — Anda selalu bisa mencoba me-reboot).
Buat file /etc/pulse/my-hdmi.conf
Catatan: Peta saluran tampaknya khusus untuk sistem. Anda perlu bereksperimen untuk melakukannya dengan benar untuk sistem Anda. Saya beruntung, tata letak 7.1 saya hanya melibatkan menjatuhkan item terakhir untuk membangun 5.1, 4.0, dll. Instruksi di bawah ini.
Ini banyak salin & tempel, kebanyakan. Setiap bagian berbeda dalam (a) nama, (b) deskripsi, (c) peta saluran, (d) prioritas [opsional].
[General]
auto-profiles = yes
[Mapping hdmi-stereo]
device-strings = hdmi:%f
channel-map = front-left,front-right
description = Digital Stereo (HDMI)
priority = 4
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-40]
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right
description = Digital Quadrophonic (HDMI)
priority = 1
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-51]
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe
description = Digital Surround 5.1 (HDMI)
priority = 2
direction = output
paths-output = hdmi-output-0
[Mapping hdmi-surround-71]
description = Digital Surround 7.1 (HDMI)
device-strings = hdmi:%f
channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe,side-left,side-right
priority = 3
direction = output
paths-output = hdmi-output-0
Sekarang, untuk menguji ini:
- Mulai ulang PulseAudio:,
pulseaudio -k
sebagai pengguna normal Anda, dengan asumsi Anda menggunakan daemon per pengguna (default). Mulai lagi, bahkan yang sederhana aplay -l
akan berhasil.
- Beralih ke profil 7.1. Secara pribadi, saya dulu
pactl set-card-profile 0 "output:hdmi-surround-71"
melakukan ini, tetapi GUI juga akan bekerja dengan sangat baik.
- Lari
speaker-test -c 8 -t w
. Seharusnya mulai mengumumkan nama pembicara, semoga nama yang benar dari masing-masing pembicara. Jika namanya tidak berasal dari pengeras suara yang benar, Anda harus mengubah peta saluran untuk memperbaikinya. Setelah setiap perubahan peta saluran, Anda harus memulai kembali PulseAudio lagi.
Bonus! Pengaturan lebih bermanfaat
Di /etc/pulse/daemon.conf
, ada beberapa pengaturan yang mungkin ingin Anda ubah:
enable-remixing
- Jika ini aktif, sinyal stereo akan memainkan saluran kiri dari ketiga speaker kiri Anda, dan saluran kanannya keluar dari speaker kanan Anda. Jika mati, itu hanya akan keluar dua depan. Perhatikan bahwa Anda juga dapat mengubah profil menjadi stereo (hanya mengirim suara stereo keluar dari port HDMI, dan membiarkan penerima Anda memutuskan bagaimana memetakannya ke speaker).
enable-lfe-remixing
- Mirip, tetapi untuk remixing ke saluran LFE (subwoofer).
default-sample-format
- Jika pengaturan HDMI Anda mendukung lebih dari 16-bit audio, Anda mungkin ingin meningkatkan ini ke s32le
(dari default s16le
).
default-sample-rate
, alternate-sample-rate
- Anda mungkin ingin menukar ini (dan mungkin bahkan menonaktifkan sepenuhnya 44.1KHz) jika Anda sebagian besar menggunakan materi sumber DVD yang biasanya 48KHz. Atau, jika penerima HDMI Anda mendukungnya, Anda dapat mencapai 192 KHz. Perhatikan bahwa 176KHz memiliki properti bagus menjadi kelipatan genap 44.1 dan 48KHz. Lihat di bawah untuk mengetahui cara yang didukung oleh penerima Anda
default-sample-channels
- Sepertinya tidak terlalu penting. Profil mungkin menimpanya ...
Secara alami, Anda harus memulai ulang PulseAudio setelah mengubah file ini.
Bonus Lagi! Melihat Apa yang Didukung Penerima Anda
Ada beberapa eld.*
file /proc/asound
yang memberi tahu Anda apa tujuan dukungan HDMI link. Sebagai contoh:
# cat /proc/asound/card0/eld#3.0
monitor_present 1
eld_valid 1
monitor_name TX-SR606
connection_type HDMI
eld_version [0x2] CEA-861D or below
edid_version [0x3] CEA-861-B, C or D
manufacture_id 0xcb3d
product_id 0x863
port_id 0x0
support_hdcp 0
support_ai 1
audio_sync_delay 0
speakers [0x4f] FL/FR LFE FC RL/RR RLC/RRC
sad_count 8
sad0_coding_type [0x1] LPCM
sad0_channels 2
sad0_rates [0x1ee0] 32000 44100 48000 88200 96000 176400 192000
sad0_bits [0xe0000] 16 20 24
sad1_coding_type [0x1] LPCM
sad1_channels 8
sad1_rates [0x1ee0] 32000 44100 48000 88200 96000 176400 192000
sad1_bits [0xe0000] 16 20 24
sad2_coding_type [0x2] AC-3
sad2_channels 8
sad2_rates [0xe0] 32000 44100 48000
sad2_max_bitrate 640000
sad3_coding_type [0x7] DTS
sad3_channels 8
sad3_rates [0xc0] 44100 48000
sad3_max_bitrate 1536000
sad4_coding_type [0x9] DSD (One Bit Audio)
sad4_channels 6
sad4_rates [0x40] 44100
sad5_coding_type [0xa] E-AC-3/DD+ (Dolby Digital Plus)
sad5_channels 8
sad5_rates [0xc0] 44100 48000
sad6_coding_type [0xb] DTS-HD
sad6_channels 8
sad6_rates [0x1ec0] 44100 48000 88200 96000 176400 192000
sad7_coding_type [0xc] MLP (Dolby TrueHD)
sad7_channels 8
sad7_rates [0x1480] 48000 96000 192000
Jadi Anda dapat melihat receiver saya mendukung LPCM (Linear PCM, yaitu, audio yang tidak terkompresi) hingga 8 saluran, 192KHz, suara 24-bit. Ini juga mendukung AC3, DTS, DSD, DD +, DTS-HD, dan Dolby TrueHD. Jadi jika saya memiliki file yang disandikan, saya dapat melewati format-format tersebut (jika media player saya mendukungnya, tentu saja. mpv
Mungkin saja).