Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在midi文件中添加时间签名?_Python_Midi - Fatal编程技术网

Python 如何在midi文件中添加时间签名?

Python 如何在midi文件中添加时间签名?,python,midi,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

我试图在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]),

...

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

该页面上的文档包括一个名为
setTimeSignature(timeSignature)
的函数。其说明如下:

设置节拍器的时间签名(列表,例如,[4,4]表示4/4)

您可以使用传入所需的时间签名作为列表。

显示了如何创建元消息:

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

您知道如何将其他邮件添加到文件中吗?知道。例如,下面的工作可以添加程序更改:track.append(Message('program_change',program=0,time=0)),我只需要从MIDO导入元消息,然后它就可以工作了。谢谢