我想解析一个已经存在的.mid文件,将其乐器从“原声三角钢琴”更改为“ fiddle ”,然后将其保存回来或另存为另一个.mid文件。
根据我在文档中看到的内容,该乐器已使用program_change
或patch_change
指令进行了更改,但是我无法在已经存在的MIDI文件中找到任何可以执行此操作的库。他们似乎都只支持从头开始创建的MIDI文件。
最佳答案
使用music21 library(插入我自己的系统,希望可以)。如果零件中定义了补丁,请执行以下操作:
from music21 import converter,instrument # or import *
s = converter.parse('/Users/cuthbert/Desktop/oldfilename.mid')
for el in s.recurse():
if 'Instrument' in el.classes: # or 'Piano'
el.activeSite.replace(el, instrument.Violin())
s.write('midi', '/Users/cuthbert/Desktop/newfilename.mid')
或当前没有定义的补丁程序更改:
from music21 import converter,instrument # or import *
s = converter.parse('/Users/cuthbert/Desktop/oldfilename.mid')
for p in s.parts:
p.insert(0, instrument.Violin())
s.write('midi', '/Users/cuthbert/Desktop/newfilename.mid')
关于python - 如何读取Midi文件,更改其乐器并写回?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14448380/