我正在编写一个程序,该程序将从只能发送cc的设备读取传入的cc消息,并将其作为nrpn消息发送到另一个设备。我知道如何从pygame发送cc消息,但我无法理解如何发送nrpn' s。我查看了Vriareon代码,我甚至没有看到它甚至可以访问midi。谁能举例说明这是怎么做的?
谢谢!
答案 0 :(得分:1)
NRPN消息是 CC消息。
但是,NRPN编号与CC编号不同。 MIDI specification说:
控制器编号6(数据输入),与控制器编号96(数据增量),97(数据递减),98(非注册参数编号LSB),99(非注册参数编号MSB),100(注册参数编号LSB)和101(注册参数编号MSB),扩展了通过MIDI可用的控制器数量。通过首先使用控制器98和99或100和101选择要编辑的参数编号,然后使用控制器编号6,96或97调整该参数的数据值来传输参数数据。
要更改像音量(7)这样的控制器,您将发送一条消息:
B0 07 xx
要更改NRPN,您可以先选择NRPN:
B0 63 mm
B0 62 ll
然后使用数据输入控制器更改当前选择的NRPN:
B0 06 mm
B0 26 ll (optional, for 14-bit values)
因此,将NRPN 0:1设置为值42可以通过以下方式完成:
self.midi_out.write_short(0xb0, 0x63, 0)
self.midi_out.write_short(0xb0, 0x62, 1)
self.midi_out.write_short(0xb0, 0x06, 42)