java - XG MIDI 信息
问题描述
我正在开发一个使用 javax.sound.midi 读取 MIDI 文件的 Java 程序。
我遇到了一个用 XG 编码的 MIDI 文件。
当我在雅马哈键盘上弹奏时,鼓的声音很好。但是在Java中,如果MIDI是XG,我不知道如何检测音轨是鼓,或者为此如何找出MIDI是XG。
通过在 Note ON 消息中检测通道是否等于 9 来执行此操作的方法似乎并未检测到所有 XG 鼓音符。
任何人都知道检测 XG 鼓音符的(希望是简单的)方法吗?
解决方案
一般的答案是没有“简单”的方法来检测 MIDI 文件使用 XG 鼓音符。
如果您假设鼓在通道 10 [1-16] 上,这对于 XG 合成器不是强制性的,那么 GM 鼓映射 [音高 35-81] 之外的鼓音符的存在可能会给您一个提示。但它也可能是 GM2 文件!有些鼓风格可能不会使用这些非 GM 音符,即使它真的是 XG 文件。
更好的方法可能是搜索 XG 特定的 SysEx 消息,例如 XG SYSTEM ON ( F0,43,10,4C,00,00,7E,00,F7
),这是启用 XG 合成器的“XG 模式”所必需的。
此外,如果您的 XG 文件始终来自同一来源,您可以检查 Midi 文件是否包含一些 Meta 消息,例如文本、版权声明、乐器名称、轨道名称,这可能表明它是 XG 文件。
推荐阅读
- function - 返回卷 usinf Security() 函数中的问题
- c - 为什么不写入使用可变参数的文件?
- python - 这个 str 日期时间是什么格式?'2021-03-16 04:00:00'
- javascript - Oracle Apex 折叠交互式网格行
- r - 在 R 中编织文档时面临的问题
- python - 使用 Django 在学习管理系统的不同模块中显示不同的课程
- windows - 为什么在为 ListBox 控件调用 SetCapture 时无法收到任何 WM_MOUSEMOVE 消息?
- c++ - 关于单精度浮点数加整数的混淆导致 C/C++ 中的差异
- javascript - How to keep watching mouse move outside iframe?
- node.js - 使用 multer 中间件的 req.files 快速路由返回未定义