收听来自设备的消息时,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 的单位是啥?的主要内容,如果未能解决你的问题,请参考以下文章

想要在连接的蓝牙设备离开范围时收听通知

android中的广播是啥意思

收听原始蓝牙键盘数据

收听来自其他应用程序的下载

我们可以收听 Kafka Consumer 的特定键控消息吗

如何收听仅包含来自 Twitter 流的地理信息的推文