XG MIDI 文件格式
我有一把 Yamaha MIDI 吉他,当我弹奏使用 XG MIDI 标准编码的 MIDI 文件时,会导致吉他上的某些灯打开和关闭。 我正在尝试确定导致此问题的 MIDI 事件,以便我可以以编程方式发送相同的事件,而无需使用 MIDI 文件(就像我可以发送“音符打开”(144) 或“音符关闭”(128) 命令一样)。
然而,虽然我能够找到 MIDI 协议的副本,但我无法找到 XG MIDI 协议。 除了尝试将所有可能的命令发送到设备直到找到适当的命令之外,还有其他方法可以确定导致灯光改变状态的 MIDI 事件吗? 或者我可以在哪里获得 XG MIDI 协议的副本吗?
I have a Yamaha MIDI guitar, that, when I play a MIDI file encoded using the XG MIDI standard, causes certain lights on the guitar to turn on and off. I am trying to determine the MIDI event that causes this so that I can programmatically send the same event without the use of a MIDI file (the same way I can send a Note On (144) or Note Off (128) command).
However, while I have been able to locate a copy of the MIDI protocol, I have not been able to locate the XG MIDI protocol. Is there a way, beyond trying to send all possible commands to the device until I locate the appropriate command, to determine what the MIDI event is that is causing the lights to change state? Or is there somewhere that I can get a copy of the XG MIDI protocol?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
雅马哈产品手册详细介绍了您正在寻找的信息。 XG 命令是特定于设备的。 一些 XG 命令可以直接访问设备内存,我的 MU2000 音频发生器手册警告说“发送不正确的数据可能会损坏设备”
The Yamaha manuals for their products detail the information you are looking for. The XG commands are device specific. Some XG commands give direct access to the device memory and my manual for the MU2000 tone generator warns that "you can damage the unit by sending incorrect data"
有两件事:
XG 是 MIDI 协议的语义扩展。 它不会改变 MIDI 文件结构中的任何内容。 唯一的问题是,如果您使用 XG 兼容的仪器来记录滤波器谐振的变化,它将对任何其他 XG 仪器造成相同的效果。 但在 MIDI 协议级别,您仍然会拥有 CC(控制更改)消息 #71 (IIRC)。
MIDI协议的可扩展性非常好,为制造商留下了很大的空间。 您不仅可以使用 CC 消息,还可以使用注册参数号 (RPN) 和 NRPN(非注册参数号)。 最重要的是,你有系统独占(SysEx)消息,我敢打赌,精心制作的 SysEx 消息可以改变吉他上的灯光。 尝试为您的乐器获取所谓的“数据列表”,它应该包括有关您的吉他发送/接收的 MIDI 消息的所有信息。
Two things:
XG is the semantic extension of MIDI protocol. It doesn't change anything in the structure of the MIDI file. The only thing is, that if you use an XG-compatible instrument to record, say, changes of the resonance of the filter, it will cause the same effect on any other XG instrument. But on the MIDI procotol level, you will still have the CC (Control Change) message #71 (IIRC).
MIDI protocol is very extensible and leaves a lot of space for manufacturers. Not only you can use CC messages, but also Registered Parameter Numbers (RPNs) and NRPNs (Non-Registered ones). On top of it you have System Exclusive (SysEx) messages and I would bet that an appropriately crafted SysEx message could change the lights on the guitar. Try to get so-called "Data List" for your instrument, it should include all the information about the MIDI messages that are being sent/received by your guitar.
维基百科:“1999 年,官方 GM [General MIDI]标准已更新,包括更多控制器、补丁、RPN 和 SysEx 消息,试图协调冲突且专有的 Roland GS 和 Yamaha XG 添加内容。” 这被称为通用 MIDI 2。
我建议研究一下 Java (javax.sound.midi)必须提供(C#似乎缺乏可靠的MIDI库)。 阅读 MetaMessage , 短消息, < a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/midi/SysexMessage.html" rel="nofollow noreferrer">SysexMessage 和 补丁。 据我了解,特殊的系统消息是通过SysexMessage发送的(照明数据可能在这里)。
如果您需要一些示例代码,请查看 Java 声音资源。
我发现的其他链接:
Wikipedia: "In 1999, the official GM [General MIDI] standard was updated to include more controllers, patches, RPNs and SysEx messages, in an attempt to reconcile the conflicting and proprietary Roland GS and Yamaha XG additions." This was called General MIDI 2.
I recommend looking into what Java (javax.sound.midi) has to offer (C# seems to be lacking a solid MIDI library). Read up on MetaMessage, ShortMessage, SysexMessage, and Patch. From what I understand, special system messages are sent through SysexMessage (the lighting data might be here).
If you need some sample code look at Java Sound Resources.
Other links I found:
对于托管 .NET Midi 库,请在 codeproject.com 上查找 C# Midi 工具包。
For a managed .NET Midi Library look for the C# Midi Toolkit on codeproject.com.
我正在使用 Leslie Sanford 的 codeproject midi 工具包与吉他进行通信。
http://www.codeproject.com/KB/audio-video/MIDIToolkit。 aspx
您需要了解的有关吉他通信的所有信息都在靠近背面的单个页面上的手册中。
这是我构建的编辑器的视频 - 它具有与吉他的完整通信。
吉他项目的 YouTube 视频
I'm using the codeproject midi toolkit by Leslie Sanford to communicate with the guitar.
http://www.codeproject.com/KB/audio-video/MIDIToolkit.aspx
Everything you need to know about the guitars communications is in the manual on a single page near the back.
Here is a video of an editor I built - it features full communications with the guitar.
YouTube Video of Guitar Program
最终,您需要从制造商处找到该信息。 它可能是一条 sysex 消息,尽管它也可能是一个控制器。
在软件中遍历所有控制器非常简单,因此如果您愿意,可以尝试一下。 但是,通过偶然或详尽的搜索偶然发现正确的 sysex 消息的机会几乎是天文数字。
仔细阅读手册的背面。 它可能就在那里。 如果没有,请在 google 上搜索适合您设备的 sysex。 否则,您需要向雅马哈询问信息。
Ultimately, you'll need to find that information from the manufacturer. It's likely a sysex message, although it could also be a controller.
Walking through all the controllers is pretty simple in software so you could try that if you wanted. But the chances of stumbling upon the right sysex message by accident or exhaustive search is close to astronomical.
Dig through the back of your manuals. It might be in there. If not, google for the sysex for your device. Otherwise you'll need to ask Yamaha for the info.