使用Music 21和Python输出多个乐器

使用Music 21和Python输出多个乐器,python,music21,Python,Music21,我正在使用Python和Music21编写一个算法,该算法从小提琴和钢琴曲的输入音乐文件中合成旋律。我的问题是,当我输入一个包含两种乐器的midi文件时,输出仅在一种乐器中。目前,我可以将输出乐器更改为吉他、小号等,即使这些乐器不存在于我的原始输入文件中。我想知道我是否可以编写一些代码来识别输入文件中的仪器并输出这些特定仪器。或者,是否有任何方法可以为两个输出工具而不是一个输出工具编写代码?我已尝试使用其他仪器复制现有代码,但算法仅输出代码中检测到的最后一个仪器。以下是我当前运行的代码: def

我正在使用Python和Music21编写一个算法,该算法从小提琴和钢琴曲的输入音乐文件中合成旋律。我的问题是,当我输入一个包含两种乐器的midi文件时,输出仅在一种乐器中。目前,我可以将输出乐器更改为吉他、小号等,即使这些乐器不存在于我的原始输入文件中。我想知道我是否可以编写一些代码来识别输入文件中的仪器并输出这些特定仪器。或者,是否有任何方法可以为两个输出工具而不是一个输出工具编写代码?我已尝试使用其他仪器复制现有代码,但算法仅输出代码中检测到的最后一个仪器。以下是我当前运行的代码:

def convert_to_midi(prediction_output):

    offset=0
    output_notes=[]

     #Create note and chord objects based on the values generated by the model
    for pattern in prediction_output:

         #Pattern is a chord
         if ('.' in pattern) or pattern.isdigit():
             notes_in_chord=pattern.split('.')
             notes=[]
             for current_note in notes_in_chord:
                 output_notes.append(instrument.Guitar())

                 cn=int(current_note) 
                 new_note=note.Note(cn)
                 notes.append(new_note)

             new_chord=chord.Chord(notes)
             new_chord.offset=offset
             output_notes.append(new_note)

         #Pattern is a note
         else:
             output_notes.append(instrument.Guitar())

             new_note=note.Note(pattern)
             new_note.offset=offset
             output_notes.append(new_note)


仪表对象直接进入流对象,而不是记录在注释上,每个零件一次只能有一个仪表对象处于活动状态