如何在 MIDI 文件中嵌入控制更改命令
Posted
技术标签:
【中文标题】如何在 MIDI 文件中嵌入控制更改命令【英文标题】:How to embed control change commands inside of a MIDI file 【发布时间】:2008-08-29 05:49:05 【问题描述】:我正在制作一个简单的游戏来学习一门新语言。我正在为游戏收集一些音乐,并想使用 MIDI 格式,以便我可以控制音轨的流动(即,我想有一个只播放一次并且在歌曲循环播放。)
我很难找到有关如何修改现有 MIDI 文件的信息,以便它们可以向合成器发送控制更改信号。有人有这方面的经验吗?
我认为我应该更清楚我原来的问题。我正在使用负责播放音乐的现有游戏引擎。我的印象是这个控制更改值必须直接嵌入到 MIDI 文件本身中,因为我无法控制合成器。来自手册:
MIDI 文件通过 DirectMusic 合成器。如果 BGM MIDI 文件包含控制更改值 111,该值被认为是 这首歌将在它之后开始重复 到达终点。
我希望我能以编程方式完成。我想我在这里追求的是某种编辑器,它可以让我修改我已经拥有的 MIDI 文件。
【问题讨论】:
【参考方案1】:听起来你真正想要的是midi editor
【讨论】:
【参考方案2】:尝试查看Midi 1.0 spec
这是control change messages 的表格,不过看起来您正在寻找一种在软件中执行此操作的方法。是吗?
您可以尝试将其作为原始 midi 数据发送(即该表上的消息)
再次查看您的问题...我的答案没有那么有用...
如果我是你,我会做的是将介绍分开到它自己的文件中,然后你有一个文件,其中包含只是你想要循环的内容。
您还可以查看 Standard Midi File format (SMF) 的规范
【讨论】:
【参考方案3】:DirectMusicProducer 可能是您使用 DirectMusic 演奏时最好的免费选择。我不相信 MIDI 录制功能会包含控制更改,但您的引擎可能支持播放更灵活的片段文件。
大约 10 年前,我使用的唯一 MIDI 音序器成本约为 300 美元(现在似乎已不存在),但我不知道有任何优质的免费 MIDI 文件音序器。 (注意“MIDI 编辑器”可能与“MIDI 文件编辑器”或“MIDI 音序器”不同)
【讨论】:
以上是关于如何在 MIDI 文件中嵌入控制更改命令的主要内容,如果未能解决你的问题,请参考以下文章