以下网页http://www-etud.iro.umontreal.ca/~boulanni/icml2012提到可以在 python 中将 MIDI 文件转换为钢琴卷轴:
以下是论文中评估的 4 个数据集的源文件 (MIDI)(分为训练集、验证集和测试集)。您可以根据 MIDI 文件中的节拍信息,通过移调 C 大调或 C 小调中的每个序列以及每八分音符(JSB 合唱的四分音符)采样帧,从源文件生成钢琴卷轴。或者,还提供了用于 Python 语言的腌制钢琴卷。
他们已经做了几个例子。我想知道怎么做,但我在他们的代码库中找不到任何地方。有没有一种简单的方法可以做到这一点?
所以我知道如何将midi文件转换为按键(在Python中)?我能做到的
import midi
midi.read_midifile('example.mid')
这会给我一个类似的模式
midi.Pattern(format=1, resolution=220, tracks=\
[midi.Track(\
[midi.NoteOnEvent(tick=0, channel=0, data=[43, 20]),
midi.NoteOffEvent(tick=100, channel=0, data=[43, 0]),
midi.EndOfTrackEvent(tick=1, data=[])])])
但是,我如何转调 C 大调或小调的序列,以及如何每八分音符采样帧?
所以它接缝在上面引用的代码中,他们这样做:
from midi.utils import midiread, midiwrite
midiread(midi_file, (21, 109), 0.3).piano_roll
那么我的问题就变成了,我在哪里可以找到这些midi.utils
,我如何确保序列以正确的键移调并以正确的速率采样?