微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MIDO:ValueError:变量int必须为正整数

如何解决MIDO:ValueError:变量int必须为正整数

在我的代码中我得到

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

怎么了?

任何帮助将不胜感激。

解决方法

我不是专家,但我遇到了类似的问题。

mido 中的 time 属性有点令人困惑,因为它可以表示刻度或时间增量。从文档(https://mido.readthedocs.io/en/latest/midi_files.html#about-the-time-attribute ):

时间属性有几种不同的使用方式:

在轨道内,它是以滴答为单位的增量时间。这必须是一个整数。 在 play() 产生的消息中,它是以秒为单位的增量时间(自上次产生的消息以来经过的时间) (仅对实现者很重要)在某些方法中,它用于以滴答或秒为单位的绝对时间

您也可以查看此 github 问题以供参考 https://github.com/mido/mido/issues/189

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。