XG MIDI 文件格式
Posted
技术标签:
【中文标题】XG MIDI 文件格式【英文标题】:XG MIDI File Format 【发布时间】:2009-04-21 18:52:46 【问题描述】:我有一把 Yamaha MIDI 吉他,当我播放使用 XG MIDI 标准编码的 MIDI 文件时,它会导致吉他上的某些灯打开和关闭。我正在尝试确定导致此问题的 MIDI 事件,以便我可以在不使用 MIDI 文件的情况下以编程方式发送相同的事件(就像我可以发送 Note On (144) 或 Note Off (128) 命令一样)。
但是,虽然我能够找到 MIDI 协议的副本,但我无法找到 XG MIDI 协议。除了尝试将所有可能的命令发送到设备直到找到适当的命令之外,有没有办法确定导致灯改变状态的 MIDI 事件是什么?或者有什么地方可以得到 XG MIDI 协议的副本?
【问题讨论】:
这个问题与编程无关,不属于 SO。我建议您阅读仪器手册。 这是不正确的。我说的是自动发送此类信息,这将是一个编程问题。 【参考方案1】:Yamaha 产品手册详细说明了您正在寻找的信息。 XG 命令是特定于设备的。一些 XG 命令可以直接访问设备内存,而我的 MU2000 音频发生器手册警告说“发送不正确的数据可能会损坏设备”
【讨论】:
【参考方案2】:两件事:
XG 是 MIDI 协议的语义扩展。它不会改变 MIDI 文件的结构。唯一的问题是,如果您使用兼容 XG 的仪器来记录,例如,滤波器共振的变化,它将在任何其他 XG 仪器上产生相同的效果。但是在 MIDI 协议级别上,您仍然会收到 CC(控制更改)消息 #71 (IIRC)。
MIDI 协议的可扩展性很强,为制造商留下了很大的空间。您不仅可以使用 CC 消息,还可以使用注册参数编号 (RPN) 和 NRPN(未注册的)。最重要的是,您有 System Exclusive (SysEx) 消息,我敢打赌,精心制作的 SysEx 消息可以改变吉他上的灯光。尝试为您的乐器获取所谓的“数据列表”,它应该包含有关您的吉他发送/接收的 MIDI 消息的所有信息。
【讨论】:
【参考方案3】:Wikipedia:“1999 年,官方 GM [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。
我找到的其他链接:
Working with XG SYSEX on the Yamaha QY70 Win32API::MIDI::SysEX::Yamaha【讨论】:
【参考方案4】:对于托管的 .NET Midi 库,请在 codeproject.com 上查找 C# Midi Toolkit。
【讨论】:
【参考方案5】:我正在使用 Leslie Sanford 的 codeproject midi 工具包与吉他进行交流。 http://www.codeproject.com/KB/audio-video/MIDIToolkit.aspx
您需要了解的有关吉他通信的所有信息都在手册背面附近的单页上。
这是我制作的编辑器的视频 - 它包含与吉他的完整通信。
YouTube Video of Guitar Program
【讨论】:
【参考方案6】:最终,您需要从制造商那里找到该信息。它可能是一条 sysex 消息,尽管它也可能是一个控制器。
在软件中浏览所有控制器非常简单,因此您可以根据需要尝试。但是偶然或详尽搜索偶然发现正确的 sysex 消息的机会几乎是天文数字。
仔细阅读手册的背面。它可能在里面。如果没有,请谷歌搜索您设备的 sysex。否则,您需要向 Yamaha 询问相关信息。
【讨论】:
以上是关于XG MIDI 文件格式的主要内容,如果未能解决你的问题,请参考以下文章
BLE MIDIMIDI 文件格式分析 ( MIDI 文件头解析 | MIDI 文件头标识 | MIDI 文件头长度 | MIDI 文件格式 | MIDI 轨道个数 | 基本时间 )(代码
BLE MIDIMIDI 文件格式分析 ( MIDI 轨道分析 | MIDI 轨道头 | MIDI 轨道长度 | delta-time 间隔 )
BLE MIDIMIDI 文件格式分析 ( MIDI 轨道分析 | MIDI 轨道头 | MIDI 轨道长度 | delta-time 间隔 )