1

我正在使用 pygame.midi 库来发送 MIDI 消息(控制更改消息,而不是注释)。这个想法是从输出(来自这个python程序)发送到另一个程序的输入。

>>> import time
>>> import pygame.midi as midi
>>> midiout = midi.Output(3)
>>> midi.init()
>>> midiout = midi.Output(3)
>>> midiout.write_short(0x74,124,0)
PortMidi call failed...
  PortMidi: `Invalid MIDI message Data'
type ENTER...

如您所见,我正在发送 0x74,124,0。我从 rakarrack(我想控制的应用程序)实现图表中获取这些数字:http ://rakarrack.sourceforge.net/midiic.html

我究竟做错了什么?

4

1 回答 1

1

MIDI 状态字节(消息的第一个字节)必须设置高 (0x80) 位。链接的图表有点混乱,但我猜 0x74 是一个数据字节,必须在正确的状态字节之前。

>>> import pygame.midi as midi
>>> midi.init()
>>> midiout = midi.Output(0)
>>> midiout.write_short(0xb0, 0x74, 124)

一些基本的 MIDI 文档: http: //www.midi.org/techspecs/midimessages.php

控制变化是 0xbn,其中 n 是通道号,所以 0xb0 是通道 0 的控制变化消息。

于 2013-08-23T17:54:14.750 回答