我正在尝试从64位Ubuntu 18.04上的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
的响应)
但是当我按下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]
您能帮我指出问题出在哪里吗?
答案 0 :(得分:0)
要点是,我们需要给出正确的命令以使用正确的驱动程序,设备ID以及可能的MIDI端口启动 jack服务器。
使用以下命令在后台运行杰克服务器:
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”意味着指定一组对应于每个ALSA“定序器”客户端的JACK MIDI端口(包括机器上的每个硬件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
来源: