【问题标题】:Problem (maybe on ALSA Config.) running jack.Client() on jackclient-python在 jackclient-python 上运行 jack.Client() 的问题(可能在 ALSA 配置上)
【发布时间】:2019-07-07 11:46:07
【问题描述】:

我正在尝试在 Ubuntu 18.04 64 位上从 MIDI Keyboard 读取 MIDI 输入。

我决定使用JACK Audio Connection Kit (JACK) Client for Python。安装后我想运行a simple program 来打印所有收到的 MIDI 事件。

但运行后

client = jack.Client('MIDI-Monitor')

收到了

ALSA: Cannot open PCM device alsa_pcm for playback. 
      Falling back to capture-only mode
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel

起初我检查了 MIDI 键盘是否正常工作。我使用了Kmidimon,当我按下按键时我看到了事件。所以 MIDI 键盘可以工作。

然后我在网上搜索并尝试了以下方法: 使用该命令并让它在后台运行jackd -R -d alsa -d hw:0,3(以及所有可能的组合,0 表示卡号,3 表示设备号,另见命令aplay -l 的响应)

来源: https://askubuntu.com/questions/320946/jackd-does-not-work-aplay-l-shows-two-instances-of-the-same-card-ubuntu-13-04

但是当我按下 MIDI 键盘上的按钮时,python 程序没有响应我的事件。

这是命令aplay -l的部分响应

card 0: HDMI [HDA Intel HDMI], device 3: HDMI 0 [HDMI 0]
card 0: HDMI [HDA Intel HDMI], device 7: HDMI 1 [HDMI 1]
card 0: HDMI [HDA Intel HDMI], device 8: HDMI 2 [HDMI 2]
card 0: HDMI [HDA Intel HDMI], device 9: HDMI 3 [HDMI 3]
card 1: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
card 1: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]

你能帮我指出问题出在哪里吗?

【问题讨论】:

  • 你把键盘连接到显示器了吗?
  • 没有。我将 MIDI 键盘连接到电脑主板上的 USB 端口。
  • 我在谈论软件。试试 QjackCtl。

标签: jack


【解决方案1】:

重点是,我们需要给出正确的命令来启动 jack 服务器,并使用正确的驱动程序、设备 ID 以及可能的 MIDI 端口。

使用以下命令在后台运行jack server:

sudo jackd -d alsa -d hw:2,0 -X seq

“-d alsa”表示将使用ALSA驱动。

“-d hw:2,0 -X seq”是“-d alsa”的后端选项

“-d hw:2,0”表示要使用的ALSA pcm设备,以及所有可能的组合,2表示卡号,0表示设备号,信息可以在命令aplay -l的响应中找到(其中在这个答案的底部)

“-X seq”表示指定一组JACK MIDI端口,对应每个ALSA“sequencer”客户端(包括机器上的每个硬件MIDI端口)

命令的可能工作响应如下所示:

   jackdmp 1.9.12
   Copyright 2001-2005 Paul Davis and others.
   Copyright 2004-2016 Grame.
   Copyright 2016-2017 Filipe Coelho.
   ... (some lines omitted)
   JACK server starting in realtime mode with priority 10
   self-connect-mode is "Don't restrict self connect requests"
   audio_reservation_init
   Acquire audio card Audio2
   creating alsa driver ... hw:2,0|hw:2,0|1024|2|48000|0|0|nomon|swmeter|-|32bit
   configuring for 48000Hz, period = 1024 frames (21.3 ms), buffer = 2 periods
   ALSA: final selected sample format for capture: 32bit integer little-endian
   ALSA: use 2 periods for capture
   ALSA: final selected sample format for playback: 32bit integer little-endian
   ALSA: use 2 periods for playback
   port created: Midi-Through:midi/playback_1
   port created: Midi-Through:midi/capture_1
   port created: CME-M-Key:midi/playback_1
   port created: CME-M-Key:midi/capture_1
   port created: KMidimon:midi/playback_1
   port created: KMidimon:midi/capture_1

这里是命令aplay -l的部分输出,显示了关于卡2的信息

   card 2: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
   Subdevices: 1/1
   Subdevice #0: subdevice #0

来源:

jackd 的手册页:https://www.mankier.com/1/jackd

网上类似的解决方案:https://askubuntu.com/questions/320946/jackd-does-not-work-aplay-l-shows-two-instances-of-the-same-card-ubuntu-13-04

【讨论】:

    猜你喜欢
    • 2018-02-12
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多