首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Midi TEMPO消息如何应用于其他曲目?

Midi TEMPO消息如何应用于其他曲目?
EN

Stack Overflow用户
提问于 2009-07-03 17:42:39
回答 1查看 4.2K关注 0票数 10

这是一个相当简单的问题,我有一个猜测,但我在任何地方都找不到一个明确的答案。

背景:我有一个多音轨的midi文件,在第一个音轨中有节奏控制。我需要将其他曲目中的ABSOLUTE_TICK计数转换为“秒”(相对于midi文件开头的小数秒偏移量)。

我有一个公式来联系ABSOLUTE_TICK到秒的基础上的PulsePerQuarterNote (PPQN)为文件的节奏(毫秒每季度音符)。

问题是:第一首曲目(曲目0)中的节奏变化是否适用于所有其他曲目?

如果是这样,那么当我解析其他曲目(例如曲目4,其中有我感兴趣的NOTE_ON和NOTE_OFF消息)时,我将需要并行地将手指指向曲目0中的节奏变化。是那么回事吗?

谢谢,

标记

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-07-05 08:57:54

简而言之,是的。第一个磁道包含将应用于整个排列的计时信息,因此您可以将这些消息应用于具有相同绝对时间的每个磁道。由于所有事件都使用以刻度为单位的偏移量,因此您需要首先提取节奏更改消息,将其转换为绝对时间,然后在读取其他曲目时,您将根据该时间轴应用这些消息。

MIDI fanatic's technical brainwashing center

在格式为0的文件中,节拍变化分散在一个MTrk中。在格式1中,第一个MTrk应该只包含节拍(和时间签名)事件,以便它可以被某些能够生成“节拍映射”的设备读取。最好不要在此MTrk中放置MIDI事件。在格式2中,每个MTrk应至少以一个初始速度(和时间签名)事件开始。

也就是说,一些音序器确实打破了这一规则,将实际的MIDI事件与定时信息一起放在第一轨道上,因为标准在这方面并不是那么具体。你的程序应该处理这两种情况,因为它可能会在野外遇到以这种方式格式化的MIDI文件。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1080297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档