我想解析一个已经存在的.mid文件,将其乐器从“原声三角钢琴”更改为“ fiddle ”,然后将其保存回来或另存为另一个.mid文件。

根据我在文档中看到的内容,该乐器已使用program_changepatch_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/

10-13 08:54