Synthesia 可以很好地播放 MIDI 文件而没有任何音符关闭事件吗?

2024-02-17

我有一个.mid file - this https://pastebin.com/amkth128具体一个。除了标题块之外,这里是 MIDI 的相关部分。第一个轨道块仅包含元事件,并被描述为

4D 54 72 6B 00 00 00 52 // Track chunk #1 info

00 FF 58 04 04 02 18 08 // Meta event

00 FF 59 02 00 00 // Meta event

00 FF 51 03 15 CC 5B // Meta event

81 88 70 FF 51 03 16 E3 60 // Meta event

81 70 FF 51 03 1A 28 6E // Meta event

81 70 FF 51 03 1C 9C 38 // Meta event

81 70 FF 51 03 1E 84 80 // Meta event

81 70 FF 51 03 20 B2 89 // Meta event

81 70 FF 51 03 23 36 6C // Meta event

81 70 FF 51 03 2B 98 B7 // Meta event

00 FF 2F 00 // Meta event. End of track #1

这是第二个轨道块,其中仅包含Note on events:

4D 54 72 6B 00 00 04 02 // Track chunk #2 info

00 FF 21 01 00 // Meta event

00 FF 03 1F 53 69 6E 66 6F 6E 69 
61 20 66 72 6F 6D 20 4B 61 6E 74 61 74 61 20 23 
31 30 36 20 2D 4A 53 20 // Meta event

00 C0 4A // Midi event

00 B0 07 7C // Midi event

00 B0 0A 52 // Midi event

00 B0 5B 4B // Midi event

96 40 90 4B 50 // Midi "Note on" event

81 63 4B 00 // Midi "Note on" event because of running status 

... // No note offs event in this track chunk.

FF 2F 00 // Meta event. End of track #2

这是曲目#3:

4D 54 72 6B 00 00 03 27 // Track chunk #3 info

... // Some meta and non-note-on, non-note-off midi events

96 40 91 4B 50 // "Note on" event

81 63 4B 00 // Another "Note on" event

... // No note offs

FF 2F 00 // End of track #3

轨道块#4、#5和#6与#3具有相同的结构; #7 仅包含两个元事件。

请注意,每个不只包含元事件的轨道块都以两个开头Note on事件,并且其中没有一个包含单个Note off event.

但这是synthesia(MIDI播放器)在加载文件时看到的,就在歌曲的开头:

这个 midi 的结构是Note on事件之后是Note off同一轨道块中的事件,但这不会发生。

这里发生了什么事?


96 40
      90 4B 50 // Midi "Note on" event
81 63
         4B 00 // Midi "Note on" event because of running status
            ^^

The MIDI规范 https://www.midi.org/specifications/item/the-midi-1-0-specification says:

MIDI 提供了两种大致相同的关闭音符(声音)的方法。可以通过为相同的音符编号和通道发送音符关闭消息,或者通过为该音符和通道发送速度值为零的音符打开消息来关闭音符。使用“零速度注释”的优点是,它可以避免在使用“运行状态”时发送额外的状态字节。

由于这种效率,发送速度值为零的 Note-On 消息是最常用的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Synthesia 可以很好地播放 MIDI 文件而没有任何音符关闭事件吗? 的相关文章

  • Python:midi 到音频流

    我需要将 MIDI 数据转换 合成为音频流 PCM 数据 有什么简单的方法可以做到这一点 随你挑选关于你想要做什么 页面上有一个 MIDI 部分
  • 错误:子进程退出并出现错误。 - Python

    错误 子进程退出 错误 python setup py Egg info 未成功运行 我知道还有一些类似的问题 但尝试这些解决方案后 错误仍然存 在 我想安装一个名为MIDI DDSP它显示一个错误 Requirement already
  • Athena 的 .csv.metadata 文件的数据格式是什么?

    的数据格式是什么 csv metadata由 Amazon Athena 编写的文件 除了每个查询的输出文件之外 还有一个元数据文件 看起来它描述了结果的架构 我认为这就是雅典娜用来创建ResultSet ResultSetMetadata
  • 使用 FileWriter (Java) 以 UTF-8 写入文件?

    但是 我有以下代码 我希望将其编写为 UTF 8 文件来处理外来字符 有没有办法做到这一点 是否需要有一个参数 我非常感谢您对此的帮助 谢谢 try BufferedReader reader new BufferedReader new
  • 将包含逗号/引号的平面文件导入 SAP BODS

    您好 我在 csv 文件中有一行如下所示 12346 abcded ssadsadc 2013 04 04 08 42 31 8 我想使用 现有项目作为另一个报告的新项目的模板 Suite 但它只是覆盖现有项目而不是创建 即使我使用 另存为
  • 帮助逆向工程二进制文件格式的工具

    有哪些工具可以帮助解码未知的二进制数据格式 我知道 Hex Workshop 和 010 Editor 都支持结构 对于已知的固定格式来说 这些在有限的范围内是可以的 但对于更复杂的东西来说很难使用 特别是对于未知的格式 我想我正在寻找脚本
  • 无法将大量 .csv 行数传输到 Excel 2007

    我一直在使用下面的 VBScript 代码片段将每小时的 csv 拖放到 Excel 文件中 它的工作原理就像发条一样 只是最近 csv 突破了 65536 行限制 机器上充斥着兼容性检查器的弹出窗口 然后我意识到它正在使用 Excel 2
  • 使用钢琴键盘作为电脑键盘[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 I
  • webgl 本身支持哪些文件格式? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 3D 文件格式有很多替代方案 但我至少需要最小的文件大小 纹理 我已经尝试过一些 但我需要一些建议 我在这里完全有偏见 我是我所建议的项目成员 但你可
  • 如何使用 GCC 生成 ELF 文件?

    我正在 Linux 操作系统上编写 C 和 C 代码 并且使用 GCC 完成我的代码后 我想生成一个 ELF 文件 我只能生成 a out 文件 但我不需要它 如何获取 ELF 文件 ELF 文件出现的原因是什么 或者是否可以用这个程序生成
  • MidiSystem.getSequencer() 返回音频设备不可用

    我不断地抛出异常 当我尝试创建新的 Sequencer 对象时 我不断收到 javax sound midi MidiUnavailableException Audio Device Unavailable 异常 所以 这是代码 impo
  • CHM 格式替代品?

    Microsoft CHM 格式非常有用 因为它提供了以下功能 带有树视图的目录 指数 索引搜索 基于 HTML 源 但这种格式已经过时并且有很多缺点 存在安全问题 允许执行 JavaScript 代码 不知道新的 HTML 格式 没有记录
  • PHP $_SESSION 变量键中的保留字符

    我正在查看 PHP 会话文件的内部表示 我注意到会话密钥由管道字符分隔 在讨论我遇到的问题之前 让我先快速介绍一下会话文件的格式 至少 这是它在我的 Mac 上的格式化方式 10 9 4 PHP 5 4 24 会话文件格式 假设我有以下代码
  • 如何从 MIDI 文件中提取单个和弦、休止符和音符?

    我正在制作一个程序 应该能够从某个 midi 文件中提取音符 休止符和和弦 并将音符和和弦的相应音高 以 midi 音调数字表示 它们从 0 127 开始 写入 csv 文件供以后使用 对于这个项目 我使用 Python 库 Music21
  • MIDI 入门

    我想编写一个应用程序 从我的 MIDI 钢琴中读取 USB MIDI 数据 并且很可能从我能找到的任何其他 MIDI 数据中读取数据 正在寻找一个与 NET 一起使用的库 并且即使另一个应用程序正在使用 MIDI 也允许我 拦截 此数据 T
  • 如何从我的 iOS 应用程序向 Mac 应用程序发送 MIDI 或 OSC 信号?

    我正在考虑编写一个 iPhone iPad 应用程序来模拟 MIDI 控制器 我知道已经有很多可用的 但我仍然想自己做 我对此有几个问题 我对 MIDI 了解一点 但最近听说了 OSC 显然 几乎所有 DJ 软件应用程序都支持 MIDI 但
  • 什么是 0x43 MIDI 事件?

    我正在尝试编写一个 MIDI 解析器 但我遇到了官方文档中未记录的 MIDI 事件 即http www midi org techspecs midimessages php http www midi org techspecs midi
  • C# 导入 Adob​​e Illustrator (.AI) 文件渲染为位图?

    任何人都知道如何加载 AI 文件 Adobe Illustrator 然后将矢量光栅化 渲染为位图 以便我可以生成例如 是 JPG 还是 PNG 如果可能的话 我想生成缩略图 渲染带有PNG透明背景的大版本 当然 如果您知道 AI 的规格
  • 确定文件是否是 zip 存档内的目录

    我根据规范读取 zip 文件 并从中央目录获取每个文件的信息 从标题中我读到 define VERSION NEEDED OFSSET 6 UINT16 versionNeeded UINT16 zipFile VERSION NEEDED
  • 存储大 DNA 序列最有效的方法是什么?

    我想用 iOS 应用程序打包一个巨大的 DNA 序列 大约 3 000 000 000 个碱基对 每个碱基对都可以有一个值A C T or G 将每个碱基对存储在一个字节中会产生 3 GB 的文件 这太大了 现在我想将每个碱基对存储在两位中

随机推荐