【发布时间】:2014-12-31 11:42:39
【问题描述】:
我正在尝试使用 Python 向合成器发送基本的 MIDI 消息。
我知道 PC-Synthesizer 链接可以正常工作,因为当 MIDI 输出设置为“DigitalKBD 20:0”端口时,可以将 Rosegarden 应用程序配置为在设备上播放 MIDI 文件。
我发现了这个 Python 库 (MIDO) 并安装了它。好消息是外部 MIDI 设备已被识别并在端口列表中可用。不幸的是,简单的音符测试不会在设备上触发任何声音。这是我尝试过的代码:
使用 PortMidi(这是 MIDO 的默认设置):
>>> import mido
>>> output = mido.open_output('DigitalKBD MIDI 1')
>>> output.send(mido.Message('note_on', note=60, velocity=64))
使用 RtMidi:
>>> import mido
>>> rtmidi = mido.Backend('mido.backends.rtmidi')
>>> output = rtmidi.open_output('DigitalKBD 20:0')
>>> output.send(mido.Message('note_on', note=60, velocity=64))
在这两种情况下,合成器都没有声音。
请问,我能否获得有关如何修复代码(或设置)以使仪器正确接收和解释消息的建议?
【问题讨论】:
-
运行
aseqdump,玩到那个端口,检查是否有任何东西到达。 -
mido 可能在不同的 MIDI 通道上发送。验证合成器正在监听哪个 MIDI 通道并尝试在
mido.Messagechannel字段上相应地进行显式设置。 -
这可能不是您的问题的论坛,因为它不是特定于 python 语言的问题。这是 API、安装、库兼容性或环境问题。您是否查看过该库的文档?
-
音量和时长如何?
-
mido.get_output_names()是否将您的设备名称列为可用输出?尝试使用该函数返回的确切字符串。