纯Python库用于MIDI转乐谱(音符)和/或音频翻译

4 投票
2 回答
5758 浏览
提问于 2025-04-17 13:45

我想要一个可以简化MIDI事件的工具,用来提取或合成音高、时长、力度和起始时间(比如在第四拍上有个响亮的D#四分音符)。

fluidsynthtimidity可以做到,但我更希望能找到一个纯Python的库。我在这里找不到其他的东西,只有一些绑定。

midiutil可以生成MIDI文件,而pygame可以播放它们,但我想要一个既能合成原始音频数据,又能将音符量化的工具(也就是说,音符应该像乐谱上那样表示,而不是以MIDI事件、脉冲或“音高”等形式)。

补充说明:这些工具并不能完全满足我的需求(要么不是Python的,要么太底层,或者需要自己动手做):
从MIDI文件获取音符数据
Python: 将MIDI转换为音频流

2 个回答

1

你试过Mingus吗?它可以和py FluidSynth一起使用。你可以在这里找到相关的教程:http://code.google.com/p/mingus/wiki/tutorialFluidsynth

3

你可能想要的过程叫做“量化”,它的作用是把 MIDI 事件匹配到最接近的音符时值上。

我在1999年用C语言写过这样一个应用:

http://www.findthatzipfile.com/search-3558240-hZIP/winrar-winzip-download-midi2tone.zip.htm

(我没有源代码了,抱歉)

这个过程本身并不复杂。我只是通过穷举不同的音符时值来找到最接近的匹配。MIDI事件的音高直接对应到音符,所以在这方面不需要转换。

MIDI格式本身也不复杂,所以我建议你找一个纯Python的MIDI读取库,然后在这个基础上应用算法。

https://github.com/vishnubob/python-midi

撰写回答