首页 > 解决方案 > 如何在 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]),

...

标签: pythonmidi

解决方案


查看这个名为节拍器的库,它可能会对您有所帮助。

该页面上的文档包含一个名为setTimeSignature(timeSignature). 它的描述是:

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

您可以使用传递所需的拍号作为列表。


推荐阅读