Как получить события midi с помощью python-rtmidi
Документация для python-rtmidi
в основном хуже, чем когда-либо было написано. Я пытаюсь понять, как получить данные о событиях midi с помощью этой программы. Данные, которые мне нужны, выглядят примерно так
[
Я даже не уверен, что 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)
Это создаст список событий. А оттуда вы можете производить расчеты по событиям.