gpt4 book ai didi

flash - 如何将midi时间线转换为应该播放的实际时间线

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

我已经研究了一段时间了,但仍然没有弄清楚。
我使用 midas3 库 (Midi-actionscript3) 将 midi 导入到 flash。我在时间线上得到每个笔记项目。我得到了除法值 (192) 并且所有“GET-TEMPO”元素都等于 81。

我尝试了很多组合来获得 MIDI 的实际时间,但仍然不好(例如时间线 * 192/60)。

我知道它与实际时间不同步的原因是,当我将音符可视化为 flash 中的简单矩形时 - 我检查它们是否与 mp3 文件播放的内容完全一致(我已使用简单转换将 midi 文件转换为这个 mp3程序)

我已经阅读了很多关于如何计算所有内容的信息,但仍然没有弄清楚我需要使用的数字才能正确计算(时间轴 * MysteriusConstant = ReaTIME,MysteriusConstant 的值是多少?它真的是常数吗?如果不是,如何计算我如何计算它是如何改变的?)

谢谢
阿隆

最佳答案

如果我正确理解您的问题,您基本上希望将每个 MIDI 音符的刻度转换为毫秒值,以便您可以沿着时间线直观地显示音符。

因此,首先,您需要使用除法和速度来确定单个刻度的值。该转换基本上如下所示:

 [  1 min    60 sec   1 beat     Z clocks ]
| ------- * ------ * -------- * -------- | = seconds
[ X beats 1 min Y clocks 1 ]

所以,在上面的转换中, X是节奏, Y是除法, Z是来自传入事件的时钟数。您可以看到所有单位如何抵消,以秒为单位为您提供一个值。因此,该转换的精简版本是:
(60 * clocks) / (tempo * division) = seconds

请记住,这里给出的值 seconds是自上一个 MIDI 事件以来的秒数,而不是从序列开始的秒数。您将需要保持此值的运行总计以构建一个连贯的序列。

关于flash - 如何将midi时间线转换为应该播放的实际时间线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5288593/

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