问题描述
当我尝试运行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
中,因此我在alsa-lib
中创建了/usr/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
错误。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)