Как получить события midi с помощью python-rtmidi

Документация для python-rtmidiв основном хуже, чем когда-либо было написано. Я пытаюсь понять, как получить данные о событиях midi с помощью этой программы. Данные, которые мне нужны, выглядят примерно так

[1

Я даже не уверен, что python-rtmidiмогут получить эти данные, насколько плоха их документация, что они даже не говорят вам, что делает их приложение. Но в любом случае мне нужны эти данные, и они должны быть в программе на Python. Единственный пример, который существует наpython-rtmidiвеб-страница, кажется, только показывает, как вывести миди-событие на внешний музыкальный инструмент. Я хочу обратного. Я хочу, чтобы данные с прибора отображались на моем компьютере. По крайней мере, я могу заставить программу чувствовать мой внешний инструмент. Например, когда я использую следующий код

import logging
import sys
import time

from rtmidi.midiutil import open_midiport
from rtmidi.midiutil import open_midiinput

log = logging.getLogger('test_midiin_poll')

log = logging.getLogger('midiin_poll')
logging.basicConfig(level=logging.DEBUG)

# Prompts user for MIDI input port, unless a valid port number or name
# is given as the first argument on the command line.
# API backend defaults to ALSA on Linux.
port = sys.argv[1] if len(sys.argv) > 1 else None

try:
    midiin, port_name = open_midiport(port)
    midiin, port_name = open_midiinput(port)
except (EOFError, KeyboardInterrupt):
    sys.exit()

Он может обнаружить мою внешнюю клавиатуру Alesis, но я не вижу переменной, которая напоминала бы нажатие клавиши на клавиатуре. Я также должен указать, что мне нужно программное обеспечение Python, которое может записывать события в режиме реального времени. Моя первая цель - получить миди-события, а затем написать программу, которая вычисляет, правильно ли рассчитаны события.


Обновить

По крайней мере, этот парень делает то, что я хочу делать. Он может получить миди-события, но не говорит, как он их получил.

Mido - Как получать данные midi в реальном времени с разных портов

1 ответ

Хорошо, я решил.

import mido

instrument = mido.get_input_names()
inport = mido.open_input(instrument[0])
events = []
while 1:
    msg = inport.receive()
    events.append(msg)

Это создаст список событий. А оттуда вы можете производить расчеты по событиям.

Другие вопросы по тегам