当我尝试发送控制变更信息时,无效的MIDI信息数据

时间:2013-08-23 17:43:13

标签: python python-2.7 midi pyportmidi

我正在使用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

我做错了什么?

1 个答案:

答案 0 :(得分: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的控制更改消息。

相关问题