用于 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 库的主要内容,如果未能解决你的问题,请参考以下文章

用 Lua 控制 MIDI 合成器来播放自定义格式乐谱

在 python 中从 MIDI 文件预览乐谱

用于输出音频程序可读的 MIDI 文件或文本的 Python 接口

如何用FL studio和已有的midi文件做音乐

music21:从平面乐谱中获取 midi 声音的声音/程序/乐器?

MIDI.js 音符持续时间不会改变