代码之家  ›  专栏  ›  技术社区  ›  Ed Swangren

如何在MIDI文件中嵌入控制更改命令

  •  1
  • Ed Swangren  · 技术社区  · 18 年前

    我正在做一个简单的游戏来学习一门新语言。我正在为游戏收集一些音乐,我想使用MIDI格式,这样我就可以控制曲目的流动(即,我想有一个只播放一次的介绍,当歌曲循环时不会再播放。)

    我很难找到如何修改现有MIDI文件的信息,以便它们可以向合成器发送控制更改信号。有人有过这样的经验吗?


    我认为我应该更清楚地回答我最初的问题。我正在使用一个现有的游戏引擎来播放音乐。我的印象是,这个控制更改值必须直接嵌入MIDI文件本身,因为我无法控制合成器。从手册中:

    MIDI文件通过 DirectMusic合成器。如果是BGM MIDI 文件包含控件更改值 111,该值被识别为 歌曲将在之后开始重复 到达终点。

    我希望我能以编程的方式做到这一点。我想我在这里想要的是某种编辑器,它允许我修改我已经拥有的MIDI文件。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Zooba Necrolis    18 年前

    听起来你真正想要的是 midi editor

        2
  •  4
  •   Jiaaro    18 年前

    试着看看 Midi 1.0 spec

    这是一张桌子 control change messages 尽管看起来你正在寻找一种在软件中实现这一点的方法。对?

    您可以尝试将其作为原始midi数据发送(即该表上的消息)

    再看一遍你的问题。我的答案没那么有用。..

    如果我是你,我会做的是将介绍单独放入自己的文件中,然后你就有了一个包含 只是 你想循环的东西。

    你也可以看看规格 Standard Midi File format (SMF)

        3
  •  3
  •   Jiaaro    18 年前

    DirectMusicProducer 如果您使用DirectMusic播放,这可能是您最好的免费选择。我不相信MIDI录制功能会包括控制更改,但你的引擎可能支持播放更灵活的片段文件。

    大约10年前,我使用的唯一一个MIDI音序器的价格约为300美元(现在似乎已经不存在了),但我不知道有任何高质量的免费MIDI文件音序器。(请注意,“MIDI编辑器”可能与“MIDI文件编辑器”或“MIDI定序器”不同)

    推荐文章