如何通过 Pygame 从 MIDI 设备获取输入?

Posted

技术标签:

【中文标题】如何通过 Pygame 从 MIDI 设备获取输入?【英文标题】:How do I get inputs from a MIDI device through Pygame? 【发布时间】:2020-06-02 00:54:43 【问题描述】:

我对 Python 和 Pygame 都比较陌生,并且试图简单地从 Windows 计算机上实时读取 MIDI 控件。我查看了 Pygame 并设置了我认为最正确的语法,但 shell 似乎每次都崩溃或至少在 pygame.midi.Input(input_id) 行重置。

import pygame.midi
import time

pygame.init()
pygame.midi.init()
print("The default input device number is "  + str(pygame.midi.get_default_input_id()))
input_id = int(pygame.midi.get_default_input_id())

clock = pygame.time.Clock()
crashed = False

while (crashed == False):
    print("input:")
    pygame.midi.Input(input_id)
    print(str(pygame.midi.Input.read(10)))
    clock.tick(2)

【问题讨论】:

【参考方案1】:

我也是 Python 和 Pygame 的新手。

我也尝试了很长一段时间来让 midi 输入读取工作。在另一个论坛中,有人指出我在库中包含一个示例文件。你可以看到答案here。

旁注:

在我的电脑上,有几台 Midi 设备处于活动状态。因此,不依赖默认输入 ID 可能是个好主意。您可以像这样获取您的 Midi 设备列表:

import pygame
from pygame.locals import *
from pygame import midi

def printMIDIDeviceList():
        for i in range(pygame.midi.get_count()):
            print(pygame.midi.get_device_info(i), i)

【讨论】:

以上是关于如何通过 Pygame 从 MIDI 设备获取输入?的主要内容,如果未能解决你的问题,请参考以下文章

Java 从 MIDI 键盘获取输入

Java 从 MIDI 键盘获取输入

从 MIDI 设备实时获取输入(Python)

如何访问和更改 Pygame.midi?

Pygame 读取 MIDI 输入

如何使用 pyPortMidi 或 pygame 发送 midi 控制更改消息 (CC)?