gpt4 book ai didi

python - MIDI 文件中的 MIDI 音符长度

转载 作者:行者123 更新时间:2023-11-28 16:26:47 27 4
gpt4 key购买 nike

对 MIDI 中的音符长度有误解。我在 Ableton Live 中制作了一个简单的 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=[])])])

此分析器的数据参数是 [pitch,volume]。这些被确认是正确的。我不明白的部分是“勾选”。看起来如果 midi 文件的长度是 284,那么“Note On”就有意义了。看看 pitch=60 音符是如何从中途开始的。但是“Note Off”和它们的“Note On”在同一个“tick”上,而且轨道结束事件也在 tick 0 上。我想我对 midi 计时的工作原理有一个根本性的误解,但我不能查看如何从这些数据中推断出有关时间的信息。哈尔普。对于那些感兴趣的人,这是十六进制的 midi:

4d54 6864 0000 0006 0000 0001 0060 4d54
726b 0000 0039 00ff 0301 0000 ff58 0404
0224 0800 ff58 0404 0224 0800 9040 6460
903c 6400 8040 4060 803c 4000 9040 6460
8040 4000 9043 6460 8043 4000 ff2f 00

谢谢,明曼

最佳答案

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

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

关于python - MIDI 文件中的 MIDI 音符长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36000906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com