Pygame Midi libasound_module_conf_pulse.so 错误 + 无法打开从站
Posted
技术标签:
【中文标题】Pygame Midi libasound_module_conf_pulse.so 错误 + 无法打开从站【英文标题】:Pygame Midi libasound_module_conf_pulse.so error + unable to open slave 【发布时间】:2021-02-14 16:18:33 【问题描述】:当我尝试运行 pygame.midi 代码时遇到此错误:
ALSA lib conf.c:3558:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so (/usr/lib/alsa-lib/libasound_module_conf_pulse.so: libasound_module_conf_pulse.so: cannot open shared object file: No such file or directory)
ALSA lib seq.c:935:(snd_seq_open_noupdate) Unknown SEQ default
我发现 Python 正在搜索的路径不存在。由于某种原因,libasound_module_conf_pulse.so
位于/usr/lib/x86_64-linux-gnu/alsa-lib
,所以我在/usr/lib/
中创建了alsa-lib
目录并将usr/lib/x86_64-linux-gnu/alsa-lib
的内容复制到其中。
修复了第一个错误。现在,我遇到了另一个错误,我认为这与我上面应用的真正阴暗的修复有关(为什么我将它们都包含在同一个问题中)。运行 pygame.init()
时出现此错误:
ALSA lib pcm_dmix.c:1089:(snd_pcm_dmix_open) unable to open slave
我在网上搜索过,只找到一个相关的问题,但遗憾的是没有得到答案。我的理解是使用 pygame.midi 中的方法有效,但使用 pygame 中的方法(如 init)会引发错误。
所以,这段代码可以正常工作:
import pygame.midi
import pygame
def print_devices():
for n in range(pygame.midi.get_count()):
print (n,pygame.midi.get_device_info(n))
def number_to_note(number):
notes = ['c', 'c#', 'd', 'd#', 'e', 'f', 'f#', 'g', 'g#', 'a', 'a#', 'b']
return notes[number%12]
def readInput(input_device):
clock = pygame.time.Clock()
while True:
if input_device.poll():
event = input_device.read(1)[0]
data = event[0]
timestamp = event[1]
note_number = data[1]
velocity = data[2]
if (velocity!=0):
print (number_to_note(note_number), velocity)
if __name__ == '__main__':
pygame.midi.init()
my_input = pygame.midi.Input(3)
readInput(my_input)
my_output = pygame.midi.Output(2)
my_output.note_on(90,120)
my_output.note_off(90, 120)
但添加pygame.init()
会引发从属错误。
我在 PyCharm 中使用 Ubuntu 20.04 和 Python 3.8。
编辑:从终端直接在 Python 中运行上述代码不会在 pygame.init()
上出现从属错误,但有时会出现 (snd_pcm_recover) underrun occurred
错误。
【问题讨论】:
“Unknown SEQ default”消息表示 ALSA 和/或 PulseAudio 未正确安装,或者 ALSA 配置文件已以不适当的方式修改。 【参考方案1】:我在 Blender 中使用 PyGame 时遇到了同样的问题,上面的“hack”,将文件复制到 /usr/lib/alsa-lib
为我消除了错误并让声音和 PyGame 正常工作。我只在 Ubuntu 上遇到过这个问题,在我的 Mac 上没有。我从来没有遇到过“奴隶”错误。
FTR,我正在使用 PyGame 从键盘或控制器输入实时 MIDI 命令以在 Blender 中制作动画。
【讨论】:
以上是关于Pygame Midi libasound_module_conf_pulse.so 错误 + 无法打开从站的主要内容,如果未能解决你的问题,请参考以下文章