gpt4 book ai didi

midi - Midi TEMPO消息如何应用于其他轨道?

转载 作者:行者123 更新时间:2023-12-04 03:55:25 26 4
gpt4 key购买 nike

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

背景:我有一个多轨道midi文件,其中第一条轨道带有TEMPO控件。我需要将其他轨道中的ABSOLUTE_TICK计数转换为“秒”(与midi文件开头的分数秒偏移)。

我有一个公式,可以根据文件的PulsePerQuarterNote(PPQN)将ABSOLUTE_TICK与Seconds关联到速度(每四分音符MS)。

问题是:第一个音轨(音轨0)中的TEMPO更改是否适用于所有其他音轨?

如果是这样,那么当我解析其他音轨(例如音轨4,其中包含我感兴趣的NOTE_ON和NOTE_OFF消息)时,我需要保持手指平行指向音轨0中的TEMPO变化。是对的吗?

谢谢,

标记

最佳答案

简而言之,是的。第一个音轨包含将应用于整个安排的定时信息,因此您将这些消息应用于具有相同绝对时间的每个音轨。由于所有事件的刻度都使用偏移量,因此您需要首先提取速度变化消息,将其转换为绝对时间,然后在阅读其他音轨时,将根据该时间轴应用这些消息。

MIDI fanatic's technical brainwashing center:

In a format 0 file, the tempo changes are scattered throughout the one MTrk. In format 1, the very first MTrk should consist of only the tempo (and time signature) events so that it could be read by some device capable of generating a "tempo map". It is best not to place MIDI events in this MTrk. In format 2, each MTrk should begin with at least one initial tempo (and time signature) event.



就是说,某些音序器确实违反了该规则,并将实际的MIDI事件与时序信息一起放在了第一首音轨中,因为标准在这方面不是很具体。您的程序应同时处理这两种情况,因为它很可能会遇到以这种方式格式化的MIDI文件。

关于midi - Midi TEMPO消息如何应用于其他轨道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1080297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com