Pygame Midi libasound_module_conf_pulse.итак, ошибка невозможно открыть ведомое устройство

#pygame #alsa #slave #libasound

#pygame #alsa #Подчинение #libasound

Вопрос:

Я получал эту ошибку, когда пытался запустить свой 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]

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() выдает ошибку подчиненного устройства.

Я использую Ubuntu 20.04 и Python 3.8 в PyCharm.

Редактировать: выполнение приведенного выше кода непосредственно на Python с терминала не приводит к появлению ошибки подчиненного pygame.init() устройства, но иногда выдает (snd_pcm_recover) underrun occurred ошибку.

Комментарии:

1. Сообщение «Неизвестный SEQ по умолчанию» означает, что ALSA и / или PulseAudio установлены неправильно или что файлы конфигурации ALSA были изменены ненадлежащим образом.

Ответ №1:

У меня была такая же проблема с использованием PyGame в Blender, «взлом» выше, копирование файлов, чтобы /usr/lib/alsa-lib избавиться от ошибки для меня и заставить sounds и PyGame работать должным образом. У меня была эта проблема только на Ubuntu, а не на моем Mac. Я никогда не получал ошибку «slave».

FTR, я использую PyGame для ввода MIDI-команд live с клавиатуры или контроллера для анимации в Blender.