gpt4 book ai didi

c# - 如何获得 MIDI 事件的准确时间

转载 作者:太空狗 更新时间:2023-10-30 00:10:29 24 4
gpt4 key购买 nike

我正在尝试读取一个 MIDI 文件,并且我想在 C# 中从中确定 NoteOn 事件的确切时间。
我尝试使用绝对时间,但输出类似于 256632。
这个号码是多少?这是我返回时间的代码行:

(note as NoteOnEvent).AbsoluteTime

最佳答案

MIDI 文件只包含增量时间。在每个 MIDI 事件之前作为可变长度值包含在 1 到 4 个字节之间。您正在使用的库有助于为您提供 AbsoluteTime 属性。简单地通过对每个事件的增量时间求和来计算。

单位是“delta ticks”。增量节拍的长度不是固定值,它在 MIDI 文件头中指定。 NAudio 将其公开为 MidiFile.DeltaTicksPerQuarterNote 属性。因此,您需要用从 AbsoluteTime 获得的值除以该值,以获得歌曲开头的音符位置。

这当然还是一个相对值,要看歌曲的节奏。您演奏四分音符的速率。推荐的速度也包含在文件中,它是 NAudio 中的 TempoEvent。它的 MicrosecondsPerQuarterNote 属性告诉您后续事件的四分音符应该有多长。请注意,一首歌曲中可能有多个速度事件。

关于c# - 如何获得 MIDI 事件的准确时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23070510/

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