收听来自设备的消息时,AbosoluteTime 的单位是啥?
Posted
技术标签:
【中文标题】收听来自设备的消息时,AbosoluteTime 的单位是啥?【英文标题】:When listening for messages from a device, what is the unit of AbosoluteTime?收听来自设备的消息时,AbosoluteTime 的单位是什么? 【发布时间】:2011-09-19 04:34:04 【问题描述】:当从 MidiDevice 监听 NAudio 中的 MidiEvents 时,我们会在每个事件上获得长的“AbsoluteTime”属性。但是这次的时间是什么单位,是从什么起点开始测量的呢?
【问题讨论】:
根据这里的讨论 (naudio.codeplex.com/discussions/237575),我怀疑它正在偏离标准 MIDI 时钟,这意味着每个四分音符将有 96 个。不过我不确定,我不使用 NAudio 库。 【参考方案1】:在 MIDI 文件中,每个事件都有一个自上次事件以来的“滴答声”增量。为了使 MIDI 文件更易于使用,NAudio 会保留一个运行总计,将值存储在 AbsoluteTime 中。其含义取决于每个四分音符的增量记号(这是 MidiFile 类的一个属性)和速度(MIDI 文件应该至少包含一个 TempoEvent)。
从设备侦听 MIDI 事件时,创建的 MIDI 事件的 AbsoluteTime 将为 0。但是,您可以使用 MidiInMessageEventArgs 的 TimeStamp 属性,我相信它是自调用 MidiInStart 以来的毫秒数。
【讨论】:
以上是关于收听来自设备的消息时,AbosoluteTime 的单位是啥?的主要内容,如果未能解决你的问题,请参考以下文章