我有一个具体的问题:
作为一名音乐家,我使用 Ubuntu 进行软件监控,我想用鼠标滚轮控制我的输出主音量。
为此,我目前使用带有命令amixer -D pulse sset Master 5%+
(鼠标滚轮向上)和amixer -D pulse sset Master 5%-
(鼠标滚轮向下)的 EasyStroke,效果很好。
问题是我使用了一些具有直接 JACK 输出的程序,例如 Reaper、我的 DAW 以及一些媒体播放器。
只要软件使用 PulseAudio JACK Sink 输出,我可以通过鼠标滚轮控制输出音量,但是当软件不使用 PulseAudio 时,它是直接连接到 JACK 并且始终处于最大音量。
如果您参考屏幕截图:我能够操纵红色标记输出(PulseAudio JACK Sink)的主音量,但实际上我需要访问标记为绿色的那个来控制所有声音(系统输出)。
不幸的是,我无法通过 控制我的 ALSA 主音量amixer -q sset Master X
,因为 ALSA 不为我唯一的 USB 声卡提供任何控制。
有什么方法可以通过终端控制 JACK 输出音量,我可以用它来替换鼠标按钮命令?
或者,有没有办法在 JACK 连接的右侧添加一个 PulseAudio 输入模块,以连接 Reaper 和所有其他 JACK 软件并通过 PulseAudio JACK Sink 路由它们?(PulseAudio JACK Source 仅用于麦克风,不会播放输入。)
2019 年 7 月 21 日更新
来自 Linux 的专业音乐网站:
发布了两个答案,这个答案最有帮助:
最简单的解决方案是安装JackMix:
“是否曾经在桌面上使用许多插孔应用程序而苦苦挣扎,每个人都使用自己的主音量推子,但没有一个可以直接访问所有音量的通用位置?”
“您的问题的解决方案是 JackMix,这是一款用于插孔的混音器应用程序,看起来与您必须连接模拟设备时使用的混音器完全一样。”
您可以在此处找到其他适用于Jack的应用程序。
原始答案
我必须承认在音乐上受到挑战,但我认为这个剧本是你要去的地方:
更新 1
只是这样我可以在更长的文章之前给出一个快速的解释。
即使 PCM 不可用(不仅仅是在 amixer 中不可见),我们仍然可以使用 PulseAudio 来管理 JACK,因为 dbus 会发现它。
在其他任何事情之前,请确保您已为您的 USB 声卡加载了内核模块:
sudo modprobe snd-usb-audio
因为这可能是您的声卡控件没有出现在 amixer 中的原因。只是为了确认请执行
aplay -l
并aplay -L
发布这两个命令的输出。接下来,我们从安装相应的pulseaudio包开始:
sudo apt-get update && sudo apt-get install pulseaudio-module-jack
然后加载其对应的模块:
pactl load-module module-jack-sink channels=2
最后将默认接收器设置为 JACK
pacmd set-default-sink jack_out
就 而言
sudo pactl load-module module-alsa-sink control=PCM
,这条线使 pulseaudio 能够创建一个新的 sink-source 来处理 ALSA API 声卡级别的脉冲编码调制音量级别。OP 的声卡必须能够通过脉冲调制将数字音频流转换为模拟音频流,因为有音频来自系统并通过扬声器。您应该首先添加一个控制 pcm 设备的接收器作为输出:
sudo pactl load-module module-alsa-sink control=PCM
然后(只是为了仔细检查,看看你是否看到通过
pavucontrol
ie pulseaudio 音量控制 GUI 可见的新输出)您可以直接控制 PCM sink 输出音量
pactl set-sink-volume [pcm-sink-name likely something along the lines of alsa.default] 50%
基于这个例子,我们可以解决这个问题。
如果你的声卡不能在硬件端控制音量或者驱动不支持你声卡的这个特性,一个可能的解决方法是在
~/.asoundrc
文件中定义一个新的虚拟 pcm 设备,它在软件上控制音量边。首先我们需要知道声卡的名称,因此
是这里有用的命令。后面会显示实际卡名,后面会显示
CARD=
设备名称(编号)DEV=
。我们可以用
现在我们通过添加来创建一个新
softvol
设备到
~/.asoundrc
. (如果文件不存在,我们必须创建文件)在这种情况下应该是
Master
,请在上面的链接中查看有关控件名称的其他信息。现在我们用
打开 alsamixer,您现在应该会看到新控件
Master
,并且应该能够使用 alsamixer 更改音量。可能需要另外将设备设置为默认设备
/etc/asound.conf
:请注意,这与上面链接中的建议不同,但这就是 OP 报告的工作。
现在我们需要将 Jack 接口设备设置为
softvol
并可以使用例如将输出音量分别增加或减少 5% 或设置为 50%,固定。
Amixer 需要第一次“打开”设备,然后才能访问主音量命令。
speaker-test -D softvol -c <channel count> -twav
在未运行时jackd
启动声音测试,然后用于sudo alsactl store
保存主音量状态。softvol
否则,每次重新启动后必须播放声音才能使音量控制正常工作。