我正在尝试读取一个MIDI文件,我想在C#中确定它的NoteOn事件的确切时间.
我试图使用绝对时间,但输出类似于256632.
这是多少?这是我的代码行返回时间:
(note as NoteOnEvent).AbsoluteTime
Run Code Online (Sandbox Code Playgroud)
Han*_*ant 11
MIDI文件仅包含增量时间.在每个MIDI事件之前包含1到4个字节之间的可变长度值.您正在使用的库有助于为您提供AbsoluteTime属性.简单地计算每个事件的增量时间.
该单位是"delta ticks".增量刻度的长度不是固定值,它在MIDI文件头中指定.NAudio将其公开为MidiFile.DeltaTicksPerQuarterNote属性.因此,您需要将从AbsoluteTime获得的值除以此值,以获得歌曲开头的音符位置.
这当然仍然是一个相对值,它取决于歌曲的节奏.您打四分音符的比率.推荐的速度也包含在文件中,它是NAudio中的TempoEvent.它的MicrosecondsPerQuarterNote属性告诉您后续事件的四分音符应该有多长.请注意,歌曲中可能有多个速度事件.
| 归档时间: |
|
| 查看次数: |
2497 次 |
| 最近记录: |