Miditoolkit
一个用于处理MIDI文件的Python包。
Miditoolkit通过以用户友好的方式使用mido加载/写入MIDI文件。它的灵感来自pretty_midi,具有类似的用法和核心功能,但使用原生的**tick时间单位而非秒来处理MIDI事件。它还进行了一些优化和速度提升,并可以将MIDI音轨解析为钢琴卷帘**以供计算或可视化使用。 如果你使用秒作为时间单位(例如音乐转录),可能更适合使用pretty_midi。否则,如果你只处理MIDI和符号音乐,miditoolkit应该能提供稍快的性能。
主要特性
- MIDI
- 全局
- 每拍tick数
- 速度变化
- 调号
- 拍号
- 歌词
- 标记
- 乐器
- 控制器变化
- 弯音
- 编辑
- 分块/裁剪
- 输入输出
- BytesIO
- 全局
- 钢琴卷帘
- 工具
- 音符转钢琴卷帘
- 钢琴卷帘转音符
- 色度图
- 可视化
- 工具
- 外部库
待办事项
- 改进文档;
- 完成钢琴卷帘方法的代码清理(可视化);
- 在整个MidiFile对象中切换为秒为单位的时间;
- 裁剪控制器变化和小节;
- 符号特征
- 新的结构分析
安装
你可以通过PYPI安装miditoolkit:
pip install miditoolkit
...或者直接从git安装,如果你想获取最新的功能或修复(仅在需要时推荐):
pip install git+https://github.com/YatingMusic/miditoolkit
使用示例
from miditoolkit import MidiFile
from miditoolkit.midi.utils import example_midi_file
path_midi = example_midi_file()
midi_obj = MidiFile(path_midi)
print(midi_obj)
输出:
每拍tick数:480
最大tick:72002
速度变化:68
拍号:2
调号:0
标记:71
歌词:False
乐器:2
A. 解析和创建MIDI文件 B. 钢琴卷帘操作
理念
- mido在较低层次处理MIDI文件,如消息和端口,是pretty_midi和miditoolkit的后端;
- pretty_midi以秒为时间单位解析MIDI文件和钢琴卷帘,并具有音频相关功能;
- pypianoroll以tick为时间单位将MIDI文件解析为钢琴卷帘。
Miditoolkit旨在使用**tick**(MIDI协议的原生时间单位)处理MIDI。我们尽可能保持MIDI解析器的简单性,并提供几个重要的功能来完善其多功能性。例如,钢琴卷帘、tick到秒的转换、色度图等。