5

我有一把 Yamaha MIDI 吉他,当我播放使用 XG MIDI 标准编码的 MIDI 文件时,它会导致吉他上的某些灯打开和关闭。我正在尝试确定导致此问题的 MIDI 事件,以便我可以在不使用 MIDI 文件的情况下以编程方式发送相同的事件(就像我可以发送 Note On (144) 或 Note Off (128) 命令一样)。

但是,虽然我能够找到 MIDI 协议的副本,但我无法找到 XG MIDI 协议。除了尝试将所有可能的命令发送到设备直到找到适当的命令之外,有没有办法确定导致灯改变状态的 MIDI 事件是什么?或者在某个地方我可以获得 XG MIDI 协议的副本?

4

6 回答 6

4

雅马哈产品手册详细说明了您正在寻找的信息。XG 命令是特定于设备的。一些 XG 命令可以直接访问设备内存,而我的 MU2000 音频发生器手册警告说“发送不正确的数据可能会损坏设备”

于 2009-09-01T14:16:09.557 回答
4

两件事情:

  1. XG 是 MIDI 协议的语义扩展。它不会改变 MIDI 文件的结构。唯一的问题是,如果您使用兼容 XG 的仪器来记录,例如,滤波器共振的变化,它将在任何其他 XG 仪器上产生相同的效果。但是在 MIDI 协议级别上,您仍然会收到 CC(控制更改)消息 #71 (IIRC)。

  2. MIDI 协议的扩展性很强,给厂商留下了很大的空间。您不仅可以使用 CC 消息,还可以使用注册参数编号 (RPN) 和 NRPN(未注册的)。最重要的是,您有 System Exclusive (SysEx) 消息,我敢打赌,精心制作的 SysEx 消息可以改变吉他上的灯光。尝试为您的乐器获取所谓的“数据列表”,它应该包含有关您的吉他发送/接收的 MIDI 消息的所有信息。

于 2011-10-18T19:43:47.283 回答
3

维基百科:“1999 年,官方 GM [通用 MIDI]标准进行了更新,以包括更多控制器、补丁、RPN 和 SysEx 消息,以试图协调冲突和专有的 Roland GS 和 Yamaha XG 添加。” 这被称为通用 MIDI 2

我建议查看 Java ( javax.sound.midi ) 必须提供的内容(C# 似乎缺乏可靠的 MIDI 库)。阅读MetaMessageShortMessageSysexMessagePatch。据我了解,特殊系统消息是通过 SysexMessage 发送的(照明数据可能在这里)。

如果您需要一些示例代码,请查看Java Sound Resources

我发现的其他链接:

于 2009-07-26T17:11:03.290 回答
1

对于托管的 .NET Midi 库,请在 codeproject.com 上查找 C# Midi Toolkit。

于 2010-02-18T08:08:23.787 回答
1

我正在使用 Leslie Sanford 的 codeproject midi 工具包与吉他进行交流。 http://www.codeproject.com/KB/audio-video/MIDIToolkit.aspx

您需要了解的有关吉他通信的所有信息都在手册背面附近的单页上。

这是我构建的编辑器的视频 - 它具有与吉他的完整通信。

吉他课程的 YouTube 视频

于 2010-02-18T18:12:41.813 回答
0

最终,您需要从制造商那里找到该信息。它可能是一条 sysex 消息,尽管它也可能是一个控制器。

在软件中遍历所有控制器非常简单,因此您可以根据需要尝试。但是偶然或详尽搜索偶然发现正确的 sysex 消息的机会接近天文数字。

翻阅手册的背面。它可能在里面。如果没有,请谷歌搜索您设备的 sysex。否则你需要向雅马哈询问信息。

于 2016-08-23T00:36:07.953 回答