用于 MIDI 到乐谱(注释)和/或音频翻译的纯 python 库
Posted
技术标签:
【中文标题】用于 MIDI 到乐谱(注释)和/或音频翻译的纯 python 库【英文标题】:Pure python library for MIDI to Score (Notes) and/or Audio Translation 【发布时间】:2013-01-26 16:43:38 【问题描述】:我想要一些抽象出 midi 事件的东西,以提取/合成音符的音高/持续时间/动态/开始(例如,第 4 拍上响亮的 D# 四分音符)。
fluidsynth 和胆小的工作,但我更喜欢纯 python 库。除了绑定here,我找不到任何东西。
midiutil 制作 midis 和 pygame 播放它们,但我想要一些既可以合成原始音频数据又可以量化音符的东西(即它们将在乐谱中表示,而不是作为 midi 事件/脉冲/“音高”/等) .
编辑这些并不能完全做到(不是在 python 中,或者太低级,或者“自己做”):Get note data from MIDI filePython: midi to audio stream
【问题讨论】:
MIDI 没有原始音频;由合成器来生成它。 是的,我知道。 “get”是指合成音频和计算笔记。 【参考方案1】:您可能想要的是一个称为“量化”的过程,它将 midi 事件与最接近的音符长度相匹配。
我在 1999 年用 C 语言编写了这样一个应用程序:
http://www.findthatzipfile.com/search-3558240-hZIP/winrar-winzip-download-midi2tone.zip.htm
(我没有来源了,抱歉)
这个过程本身并不是很复杂。我只是蛮力强迫不同的音符长度来找到最接近的匹配。 MIDI 事件音高本身直接映射到音符,因此不需要对话。d
MIDI 格式本身并不是很复杂,所以建议你找一个纯 Python 的 MIDI 读取库,然后在上面应用算法。
https://github.com/vishnubob/python-midi
【讨论】:
【参考方案2】:你试过明格斯吗?它与 py FluidSynth http://code.google.com/p/mingus/wiki/tutorialFluidsynth
【讨论】:
以上是关于用于 MIDI 到乐谱(注释)和/或音频翻译的纯 python 库的主要内容,如果未能解决你的问题,请参考以下文章
用于输出音频程序可读的 MIDI 文件或文本的 Python 接口