Focusrite Scarlett 18i8 的 Pulseaudio 卡配置文件

luc*_*lin 10 sound pulseaudio alsa

这是我在这里的第一个问题,我不太确定该问题要包含哪些数据。请询问我是否需要我提供更多信息。

我最近得到了 Focusrite Scarlett 18i8 音频接口。到目前为止,它在我的 DAW 中工作得非常好(使用 ALSA 和手动通道分配),但还有一件烦人的事情:Pulseaudio 将设备识别为 7.1 输出,但 18i8 有 4 个立体声输出!因此,VLC(和其他应用程序)以 7.1 模式播放电影,而不是像它应该的那样立体声。

我在谷歌上搜索了一下,看到了一些关于 Pulseaudio 卡配置文件以及 pactl 和 pacmd 命令的信息。这就是我尝试的原因:

pactl set-card-profile 3 output:analog-stereo
Run Code Online (Sandbox Code Playgroud)

但它返回(由我翻译):

Failure: no such entity
Run Code Online (Sandbox Code Playgroud)

一探究竟

pacmd list-cards 
Run Code Online (Sandbox Code Playgroud)

说明原因:

4 card(s) available.

...

index: 3
name: <alsa_card.usb-Focusrite_Scarlett_18i8_USB_1000657A-00-USB>
driver: <module-alsa-card.c>
owner module: 8
properties:
    alsa.card = "3"
    alsa.card_name = "Scarlett 18i8 USB"
    alsa.long_card_name = "Focusrite Scarlett 18i8 USB at usb-0000:00:1d.0-1.2, high speed"
    alsa.driver_name = "snd_usb_audio"
    device.bus_path = "pci-0000:00:1d.0-usb-0:1.2:1.0"
    sysfs.path = "/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/sound/card3"
    udev.id = "usb-Focusrite_Scarlett_18i8_USB_1000657A-00-USB"
    device.bus = "usb"
    device.vendor.id = "1235"
    device.vendor.name = "Novation EMS"
    device.product.id = "8014"
    device.product.name = "Scarlett 18i8 USB"
    device.serial = "Focusrite_Scarlett_18i8_USB_1000657A"
    device.string = "3"
    device.description = "Scarlett 18i8 USB"
    module-udev-detect.discovered = "1"
    device.icon_name = "audio-card-usb"
profiles:
    output:analog-surround-71: Analog Surround 7.1 Ausgang (priority 700, available: unknown)
    off: Aus (priority 0, available: unknown)
active profile: <output:analog-surround-71>
sinks:
    alsa_output.usb-Focusrite_Scarlett_18i8_USB_1000657A-00-USB.analog-surround-71/#2: Scarlett 18i8 USB Analog Surround 7.1
sources:
    alsa_output.usb-Focusrite_Scarlett_18i8_USB_1000657A-00-USB.analog-surround-71.monitor/#4: Monitor of Scarlett 18i8 USB Analog Surround 7.1
ports:
    analog-output: Analoge Ausgabe (priority 9900, latency offset 0 usec, available: unknown)
        properties:
Run Code Online (Sandbox Code Playgroud)

此设备唯一可用的配置文件是模拟环绕 71,但 aplay 列出了所有类型的模式:

user@userbuntu:~$ aplay -L

...

sysdefault:CARD=USB
    Scarlett 18i8 USB, USB Audio
    Default Audio Device
front:CARD=USB,DEV=0
    Scarlett 18i8 USB, USB Audio
    Front speakers
surround40:CARD=USB,DEV=0
    Scarlett 18i8 USB, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=USB,DEV=0
    Scarlett 18i8 USB, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=USB,DEV=0
    Scarlett 18i8 USB, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=USB,DEV=0
    Scarlett 18i8 USB, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=USB,DEV=0
    Scarlett 18i8 USB, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=USB,DEV=0
    Scarlett 18i8 USB, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=USB,DEV=0
    Scarlett 18i8 USB, USB Audio
    Direct sample mixing device
dsnoop:CARD=USB,DEV=0
    Scarlett 18i8 USB, USB Audio
    Direct sample snooping device
hw:CARD=USB,DEV=0
    Scarlett 18i8 USB, USB Audio
    Direct hardware device without any conversions
plughw:CARD=USB,DEV=0
    Scarlett 18i8 USB, USB Audio
    Hardware device with all software conversions
Run Code Online (Sandbox Code Playgroud)

所以这是我的问题:

是否可以手动添加 Pulseaudio-profile 或者我是否需要在 ALSA 中进行更深入的更改?如果是这样,有人能告诉我怎么做吗?

提前致谢!

小智 4

是的,您可以创建脉冲音频配置文件以使 Focusrite 18i8 以立体声工作。

创建文件/lib/udev/rules.d/91-pulseaudio.rules

SUBSYSTEM!="sound", GOTO="pulseaudio1_end"
ACTION!="change", GOTO="pulseaudio1_end"
KERNEL!="card*", GOTO="pulseaudio1_end"

SUBSYSTEMS=="usb", ATTRS{idVendor}=="1235", ATTRS{idProduct}=="8014", ENV{PULSE_PROFILE_SET}="focusrite-18i8.conf"

LABEL="pulseaudio1_end"
Run Code Online (Sandbox Code Playgroud)

并创建文件/usr/share/pulseaudio/alsa-mixer/profile-sets/focusrite-18i8.conf

[General]
auto-profiles = no

[Mapping analog-out]
description = Analog Outputs
device-strings = hw:%f
channel-map = left,right,aux0,aux1,aux2,aux3,aux4,aux5
direction = output

[Mapping analog-in]
description = Analog Inputs
device-strings = hw:%f
channel-map = left,right,aux0,aux1,aux2,aux3,aux4,aux5,aux6,aux7,aux8,aux9,aux10,aux11,aux12,aux13,aux14,aux15
direction = input

[Profile output:analog-out+input:analog-in]
description = Analog Stereo
output-mappings = analog-out
input-mappings = analog-in
Run Code Online (Sandbox Code Playgroud)

然后重新启动计算机或运行命令:

sudo udevadm trigger -ssound

pulseaudio -k

回应@Sneetsher:Focusrite Scarlett 18i8 现在似乎可以很好地与 Linux 3.19 及更高版本配合使用。可以使用 来配置内部混频器alsamixer并使用 来保存设置sudo alsactl store。还可以使用 alsamixer 更改其他设置(例如乐器 (Hi-Z) 和线路电平之间的输入阻抗,或在 0 和 -10dB 之间切换输入垫)。