我有一首Yamaha MIDI吉他,当我播放使用XG MIDI标准编码的MIDI文件时,会导致吉他上的某些灯打开和关闭。我正在尝试确定导致这种情况的MIDI事件,以便我可以在不使用MIDI文件的情况下以编程方式发送相同的事件(我可以发送Note On(144)或Note Off(128)命令)。
然而,虽然我能够找到MIDI协议的副本,但我找不到XG MIDI协议。有没有办法,除了尝试将所有可能的命令发送到设备,直到我找到适当的命令,以确定导致灯改变状态的MIDI事件是什么?或者有什么地方可以获得XG MIDI协议的副本吗?
答案 0 :(得分:4)
雅马哈产品手册详细介绍了您要查找的信息。 XG命令是特定于设备的。一些XG命令可以直接访问设备内存,我的MU2000音频发生器手册警告“你可以通过发送不正确的数据来损坏设备”
答案 1 :(得分:4)
两件事:
XG是MIDI协议的语义扩展。它不会改变MIDI文件结构中的任何内容。唯一的问题是,如果您使用兼容XG的仪器来记录滤波器的共振变化,它将对任何其他XG仪器产生相同的效果。但是在MIDI procotol级别上,您仍然会收到CC(控制变更)消息#71(IIRC)。
MIDI协议非常易于扩展,为制造商留下了很多空间。您不仅可以使用CC消息,还可以使用注册参数号(RPN)和NRPN(非注册号)。在它之上你有系统独家(SysEx)消息,我敢打赌,一个适当制作的SysEx消息可以改变吉他上的灯。尝试为您的乐器获得所谓的“数据列表”,它应该包括吉他发送/接收的MIDI信息的所有信息。
答案 2 :(得分:3)
维基百科:“1999年,官方通用汽车[General MIDI]标准更新为包含更多控制器,补丁,RPN和SysEx消息,以试图协调冲突和专有的Roland GS和Yamaha XG的新增功能。“这被称为General MIDI 2。
我建议查看Java(javax.sound.midi)提供的内容(C#似乎缺少可靠的MIDI库)。阅读MetaMessage,ShortMessage,SysexMessage和Patch。根据我的理解,特殊的系统消息通过SysexMessage发送(照明数据可能在这里)。
如果您需要一些示例代码,请查看Java Sound Resources。
我找到的其他链接:
答案 3 :(得分:1)
对于托管的.NET Midi Library,请在codeproject.com上查找C#Midi Toolkit。
答案 4 :(得分:1)
我正在使用Leslie Sanford的codeproject midi工具包与吉他交流。 http://www.codeproject.com/KB/audio-video/MIDIToolkit.aspx
关于吉他通信需要知道的一切都在手册背面的单页上。
这是我制作的编辑器的视频 - 它与吉他完全通信。
答案 5 :(得分:0)
最终,您需要从制造商处找到该信息。它可能是一个sysex消息,虽然它也可能是一个控制器。
在软件中遍历所有控制器非常简单,因此如果您愿意,可以尝试使用它。但偶然发现或通过详尽搜索绊倒正确的sysex信息的可能性接近于天文数字。
深入了解手册背面。它可能在那里。如果没有,请谷歌搜索您设备的sysex。否则你需要向雅马哈询问信息。