在我的代码中,我得到
Traceback (most recent call last):
File "Midi Projects/symbolToChord_v1.py", line 160, in <module>
mo.save("songWithChords.mid")
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mido/midifiles/midifiles.py", line 432, in save
self._save(file)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mido/midifiles/midifiles.py", line 445, in _save
write_track(outfile, track)
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mido/midifiles/midifiles.py", line 251, in write_track
data.extend(encode_variable_int(msg.time))
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/mido/midifiles/meta.py", line 112, in encode_variable_int
raise ValueError('variable int must be a positive integer')
ValueError: variable int must be a positive intege我想我在MIDO上运行的是最新版本。
pip freeze | grep mido
mido==1.2.9我做错了什么?
任何帮助都将不胜感激。
发布于 2021-04-28 10:00:20
我不是专家,但我也遇到过类似的问题。
mido中的时间属性有点令人困惑,因为它既可以表示刻度,也可以表示时间增量。从文档(https://mido.readthedocs.io/en/latest/midi_files.html#about-the-time-attribute ):
时间属性有几种不同的用法:在轨道内部,它是以刻度为单位的增量时间。这必须是一个整数。在由play()产生的消息中,它是增量时间(以秒为单位)(自上次产生的消息以来经过的时间)(仅对实现者重要)在某些方法中,它用于以刻度或秒为单位的绝对时间
您还可以在参考https://github.com/mido/mido/issues/189中查看此github问题
https://stackoverflow.com/questions/63852595
复制相似问题