Midi fi中的Midi音符长度

2024-10-01 17:40:44 发布

您现在位置:Python中文网/ 问答频道 /正文

对MIDI中的音符长度有误解。我在abletonlive中创建了一个简单的2个完整的midi文件(整个文件是1个度量单位),然后导出它并用python脚本(mididump.py)对其进行分析。在

midi.Pattern(format=0, resolution=96, tracks=\
[midi.Track(\
[midi.TrackNameEvent(tick=0, text='examplemidi\x00', data=[101, 120, 97, 109, 112, 108, 101, 109, 105, 100, 105, 0]),
midi.TimeSignatureEvent(tick=0, data=[4, 2, 36, 8]),
midi.TimeSignatureEvent(tick=0, data=[4, 2, 36, 8]),
midi.NoteOnEvent(tick=0, channel=0, data=[65, 127]),
midi.NoteOnEvent(tick=192, channel=0, data=[60, 100]),
midi.NoteOffEvent(tick=0, channel=0, data=[65, 64]),
midi.NoteOffEvent(tick=192, channel=0, data=[60, 64]),
midi.EndOfTrackEvent(tick=0, data=[])])])

此分析仪的数据参数为[音高,音量]。这些都被证实是正确的。我不明白的是“嘀嗒”。看起来,如果midi文件的长度是284,那么“Note On”就有意义了。看音高=60音符是如何在半音中开始的。但“注意事项”与“注意事项”处于同一个“勾号”上,并且径赛结束时的勾号为0。我想我对midi计时的工作原理有一个基本的误解,但我看不出关于计时的信息是如何从这些数据中推断出来的。哈尔普。以下是您感兴趣的人的十六进制midi:

^{pr2}$

谢谢你,谢谢你, 明曼


Tags: 文件数据datachannelmidi音符计时tick
2条回答

正如@CL所指出的,MIDI滴答声是相对于前一个事件的。有一个很好的StackOverflow答案解释了tick/absolute time conversion in a bit more depth。在

如果同时发生多个事件,则第一个事件之后的每个事件的刻度值都为0。第一个事件的值可能大于0,除非它发生在排列的开始。在

MIDI文件使用增量时间,即滴答值相对于轨迹中的前一个事件。在

相关问题 更多 >

    热门问题