如何在midi文件中添加时间戳?

时间:2019-03-25 09:04:47

标签: python midi

我正在尝试在Python中的MIDI文件中添加时间签名。

我尝试使用MIDO和MIDI库进行此操作,但不知道是否可能或需要什么确切代码。

Python代码应如何添加时间戳?

当前,MIDI文件看起来像:

...
midi.Pattern(format=0, resolution=96, tracks=\
[midi.Track(\
  [midi.ProgramChangeEvent(tick=0, channel=0, data=[0]),
   midi.NoteOnEvent(tick=0, channel=0, data=[41, 90]),
   midi.NoteOnEvent(tick=440, channel=0, data=[41, 0]),
   midi.NoteOffEvent(tick=0, channel=0, data=[41, 90]),
....

我需要将其更改为:

....
midi.Pattern(format=0, resolution=96, tracks=\
[midi.Track(\
  [midi.TimeSignatureEvent(tick=0, data=[4, 2, 36, 8]),
   midi.TimeSignatureEvent(tick=0, data=[4, 2, 36, 8]),
   midi.ProgramChangeEvent(tick=0, channel=0, data=[0]),
   midi.NoteOnEvent(tick=0, channel=0, data=[41, 90]),
   midi.NoteOnEvent(tick=440, channel=0, data=[41, 0]),
   midi.NoteOffEvent(tick=0, channel=0, data=[41, 90]),

...

2 个答案:

答案 0 :(得分:0)

请查看这个名为metronome的库,它可能会对您有帮助。

该页面上的文档包括一个名为setTimeSignature(timeSignature)的函数。它的描述是:

  

设置节拍器的拍号(列表,例如[4,4]表示4/4)。

您可以将所需的时间签名中的pass用作列表。

答案 1 :(得分:0)

MIDO documentation显示了如何创建元消息:

MetaMessage('time_signature', numerator=4, denominator=4)