监听设备消息时,AbosoluteTime 的单位是什么?
当从 MidiDevice 监听 NAudio 中的 MidiEvents 时,我们会得到每个事件的长“AbsoluteTime”属性。但是这个时间是用什么单位以及从什么起点开始测量的呢?
When listening for MidiEvents in NAudio from a MidiDevice, we get the long "AbsoluteTime" property on each event. But what unit is this time in and from what starting point is it measured?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 MIDI 文件中,每个事件自上次事件以来都有一个“刻度”增量。为了使 MIDI 文件更易于使用,NAudio 会保留运行总计,并将该值存储在 AbsoluteTime 中。其含义取决于每四分音符的增量刻度(这是 MidiFile 类的属性)和速度(MIDI 文件应至少包含一个 TempoEvent)。
当从设备监听 MIDI 事件时,创建的 MIDI 事件的 AbsoluteTime 将为 0。但是,您可以使用 MidiInMessageEventArgs 的 TimeStamp 属性,我相信该属性以调用 MidiInStart 后的毫秒为单位。
In a MIDI file, each event has a delta in "ticks" since the last event. To make MIDI files easier to work with, NAudio keeps a running total, storing the value in AbsoluteTime. The meaning of this depends on delta ticks per quarter note (which is a property on the MidiFile class), and the tempo (MIDI files ought to include at least one TempoEvent).
When listening for MIDI events from a device, the AbsoluteTime of the MIDI Event created will be 0. However, you can use the TimeStamp property of the MidiInMessageEventArgs which I believe is in milliseconds since MidiInStart was called.