AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1158652
Accepted
Prototype700
Prototype700
Asked: 2019-07-17 04:07:28 +0800 CST2019-07-17 04:07:28 +0800 CST 2019-07-17 04:07:28 +0800 CST

有没有办法通过终端控制 JACK 输出音量或获得 PulseAudio 输入?

  • 772

我有一个具体的问题:

作为一名音乐家,我使用 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 仅用于麦克风,不会播放输入。)

在此处输入图像描述

sound pulseaudio jack alsa volume-control
  • 3 3 个回答
  • 9263 Views

3 个回答

  • Voted
  1. WinEunuuchs2Unix
    2019-07-21T10:18:25+08:002019-07-21T10:18:25+08:00

    2019 年 7 月 21 日更新

    来自 Linux 的专业音乐网站:

    • 杰克大师音量?

    很抱歉发布非热情的问题,但我需要你的指导。当 Jack 控制音频时,包括 flashplayer 在内的许多应用程序的声音都很大,例如在 VLC 中我将音量设置为 5%。我想像在 alsamixer 中一样控制主音量,而不是单独为每个应用程序设置级别。我怎样才能做到这一点?

    发布了两个答案,这个答案最有帮助:

    没有这样的概念。JACK 专为专业音频和音乐创作工作流程而设计。它不是桌面声音服务器,尽管有些人以这种方式使用它。如果你需要这样的东西,你需要通过一个混音客户端来路由你的所有 JACK 客户端,它可以像 JackMix 一样简单,也可以像 Ardour 一样复杂。JACK 本身不提供此功能,并且完全超出了其设计范围。

    最简单的解决方案是安装JackMix:

    “是否曾经在桌面上使用许多插孔应用程序而苦苦挣扎,每个人都使用自己的主音量推子,但没有一个可以直接访问所有音量的通用位置?”

    “您的问题的解决方案是 JackMix,这是一款用于插孔的混音器应用程序,看起来与您必须连接模拟设备时使用的混音器完全一样。”

    您可以在此处找到其他适用于Jack的应用程序。


    原始答案

    我必须承认在音乐上受到挑战,但我认为这个剧本是你要去的地方:

    您可以使用 pacmd set-sink-volume` 获取所有接收pacmd list-sinks, and set the volume with器的列表,因此您需要执行类似的操作

    VOLUME='+5%'
    for SINK in `pacmd list-sinks | grep 'index:' | cut -b12-`
    do
      pacmd set-sink-volume $SINK $VOLUME
    done
    

    其中$VOLUME可以是绝对 (150%) 或相对 (+5%, -5%),也可能是其他格式。

    大多数窗口管理器可以配置为在您按键时启动脚本或程序,并带有参数。这是最好的方法,但如果您的 WM 没有,则可以使用xbindkeys. 因此,您可以以任何您想要的方式进行自定义。

    请注意,如果接收器音量超过 100%,Pulseaudio 将开始使用硬件混音器,这可能会使声音失真。

    另请注意,Pulseaudio 允许使用 pamcd set-sink-input-volume 为每个应用程序(“音频流”)设置音量。您可以使用 pacmd list-sink-inputs 列出它们并以类似的方式设置它们。

    这允许您将接收器的音量保持在一个固定的水平,因此它们大致相等,而无需使用硬件混音器,并且当您切换接收器时,它将自动具有“正确”的音量。这是我喜欢的设置。

    • 2
  2. NetIceGear
    2019-07-22T15:27:45+08:002019-07-22T15:27:45+08:00

    更新 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

    然后(只是为了仔细检查,看看你是否看到通过pavucontrolie pulseaudio 音量控制 GUI 可见的新输出)

    您可以直接控制 PCM sink 输出音量

    pactl set-sink-volume [pcm-sink-name likely something along the lines of alsa.default] 50%

    • 1
  3. Best Answer
    mook765
    2019-07-24T06:03:35+08:002019-07-24T06:03:35+08:00

    基于这个例子,我们可以解决这个问题。

    如果你的声卡不能在硬件端控制音量或者驱动不支持你声卡的这个特性,一个可能的解决方法是在~/.asoundrc文件中定义一个新的虚拟 pcm 设备,它在软件上控制音量边。

    首先我们需要知道声卡的名称,因此

     aplay -L
    

    是这里有用的命令。后面会显示实际卡名,后面会显示CARD=设备名称(编号)DEV=。

    我们可以用

    speaker-test -D <card name> -c <channel count> -twav
    

    现在我们通过添加来创建一个新softvol设备

    pcm.softvol {
        type            softvol
        slave {
        pcm         "<card name>,<device name>"
        }
        control {
            name        "<control name>"
            card        "<card name>"
        }
    }
    

    到~/.asoundrc. (如果文件不存在,我们必须创建文件)

    在这种情况下应该是Master,请在上面的链接中查看有关控件名称的其他信息。

    现在我们用

    speaker-test -D softvol -c <channel count> -twav
    

    打开 alsamixer,您现在应该会看到新控件Master,并且应该能够使用 alsamixer 更改音量。

    可能需要另外将设备设置为默认设备/etc/asound.conf:

    pcm.!default {
        type   hw
        card   <card name>
    }
    ctl.!default {
        type   hw
        card   <card name>
    }
    

    请注意,这与上面链接中的建议不同,但这就是 OP 报告的工作。

    现在我们需要将 Jack 接口设备设置为softvol并可以使用例如

    amixer -q sset Master 5%+
    amixer -q sset Master 5%-
    amixer -q sset Master 50%
    

    将输出音量分别增加或减少 5% 或设置为 50%,固定。

    Amixer 需要第一次“打开”设备,然后才能访问主音量命令。speaker-test -D softvol -c <channel count> -twav在未运行时jackd启动声音测试,然后用于sudo alsactl store保存主音量状态。softvol否则,每次重新启动后必须播放声音才能使音量控制正常工作。

    • 1

相关问题

  • 播放声音时延迟

  • 5.1环绕声[关闭]

  • 声音,在多个程序之间停止

  • 即使插入耳机,我的扬声器也会发出声音[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve