3

我想要一些可以抽象出 midi 事件的东西,以提取/合成音符的音高/持续时间/动态/开始(例如,第 4 拍上响亮的 D# 四分音符)。

fluidsynth 和 timidity 工作,但我更喜欢纯 python 库。我在这里找不到除了绑定之外的任何东西。

midiutil 制作 midis 和 pygame 播放它们,但我想要一些既可以合成原始音频数据又可以量化音符的东西(即它们将在乐谱中表示,而不是作为 midi 事件/脉冲/“音高”/等)。

编辑这些并不完全这样做(不是在 python 中,或者太低级,或者“自己做”):
从 MIDI 文件获取音符数据
Python:midi 到音频流

4

2 回答 2

3

您可能想要的是一个称为“量化”的过程,它将 midi 事件与最接近的音符长度相匹配。

我在 C 1999 中编写了这样一个应用程序:

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

(我没有资源了,抱歉)

这个过程本身并不是很复杂。我只是蛮力强迫不同的音符长度来找到最接近的匹配。MIDI 事件音高本身直接映射到音符,因此不需要对话。

MIDI 格式本身并不是很复杂,所以我建议你找一个纯 Python 的 MIDI 阅读库,然后在上面应用算法。

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

于 2013-01-26T21:20:13.747 回答
1

你试过明格斯吗?它与 py FluidSynth http://code.google.com/p/mingus/wiki/tutorialFluidsynth

于 2013-02-07T01:40:03.497 回答