mido - 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 中的时间属性有点令人困惑,因为它既可以表示刻度,也可以表示时间增量。从文档(https://mido.readthedocs.io/en/latest/midi_files.html#about-the-time-attribute ):
time 属性有几种不同的使用方式:
在轨道内,它是以刻度为单位的增量时间。这必须是一个整数。在从 play() 产生的消息中,它是以秒为单位的增量时间(自上次产生的消息以来经过的时间)(仅对实现者很重要)在某些方法中它用于以滴答声或秒为单位的绝对时间
您还可以查看此 github 问题以供参考https://github.com/mido/mido/issues/189
推荐阅读
- javascript - 将 JSON 对象格式化为对象数组
- ios - SwiftUI 中的 ForEach 在 Section 之间交换视图(并因此重新使用它们)而不是更新数据并尊重视图修饰符
- java - 忽略休眠本机查询中的空列表
- python - 如何根据一组行在 Pandas DataFrame 中创建新列
- c# - 我有链接我想计算每个链接被点击的次数,并使用 asp.net mvc5 将此计数保存在数据库中
- reactjs - 如何在 KendoReacct UI 中自定义上传组件
- javascript - 正则表达式仅允许在 2009 年至 2019 年之间
- php - 使 Woocommerce (3.8.0) 管理员电子邮件包含结帐页面中的自定义字段数据
- c++ - 我们如何从 C++ 中的 boost websocket 服务器读取标头
- ios - 标题更改后重复上一个 UITableViewCell