我在 Python 中使用 Music21 从 MIDI 文件中读取,我只想处理使用某种乐器的轨道。例如,如果在我的 MIDI 文件中有两个使用钢琴的音轨,我希望能够打印音符、更换乐器等。
现在我有一个包含多个音轨(鼓、小号等)的文件,我只是在搞乱它,试图用另一种乐器替换某种乐器。但是,当我这样做时,我得到一个错误,尽管仪器已成功更改(假设它不是已删除的曲目之一),但某些曲目已完全删除。
这是我当前的代码:
from music21 import converter, instrument
s = converter.parse('smells.mid')
s = instrument.partitionByInstrument(s)
s.parts[2].insert(0, instrument.Vocalist())
s.write('midi', 'newfilename.mid')
这是我得到的错误:
midi.base.py: WARNING: Conversion error for <MidiEvent PROGRAM_CHANGE, t=0, track=1, channel=1>: Got incorrect data for <MidiEvent PROGRAM_CHANGE, t=0, track=1, channel=1> in .data: None,cannot parse Program Change; ignored.