Python Music21乐器对象未按预期工作

Python Music21乐器对象未按预期工作,python,artificial-intelligence,music21,music-notation,Python,Artificial Intelligence,Music21,Music Notation,我试图使用RNN神经网络预测python中的下一个乐器音符对。但是,我在解释我目前正在使用的部分的music21文档时遇到困难 在下面的代码中,我试图提取乐器 为什么我有多个仪器?乐器、钢琴、钢琴 我目前的理论是,每个流部分都返回不同的内存地址,或者music21具有这些不同乐器的多种变体。如果第二种说法成立,是否有办法获得每个仪器变体的唯一性 为什么有些仪器没有任何名称 我有一些关于为什么会这样的想法,但我想和社区确认一下,以确保我仍然清醒 我的文件输出: 与MIDI相比,music

我试图使用RNN神经网络预测python中的下一个乐器音符对。但是,我在解释我目前正在使用的部分的music21文档时遇到困难

在下面的代码中,我试图提取乐器

  • 为什么我有多个仪器?乐器、钢琴、钢琴

    • 我目前的理论是,每个流部分都返回不同的内存地址,或者music21具有这些不同乐器的多种变体。如果第二种说法成立,是否有办法获得每个仪器变体的唯一性
  • 为什么有些仪器没有任何名称

    • 我有一些关于为什么会这样的想法,但我想和社区确认一下,以确保我仍然清醒

  • 我的文件输出:


    与MIDI相比,music21 instruments collection更接近MusicXML中的instrument collection。有一些MIDI补丁并不涉及一般意义上的乐器(“直升机”、“小妖精”),这些补丁通常不会被翻译。还有一些乐器(低音单簧管)比MIDI的外罩更具体。乐器的music21 repr有乐器类别,然后是乐谱中乐器的名称。乐器。钢琴可能看起来多余,但乐器。A中的单簧管Klarinette 2解释了区别。谢谢,真的帮了大忙的家伙们!抱歉,这个问题有点傻,我只是想问一下,以了解更多的情况!但我想这提出了一个很好的观点。如果我想使用那些没有名称的对象,我应该如何在instrument.fromString中调用它们,还是应该以不同的方式生成我的乐器?
    # Attempt to parse midi file
    try:
        midi = converter.parse(file)
    except:
        # Midi file couldn't be opened
        return {"song_notes": [],
                "note_count": [],
                "small_file_check": False,
                "corrupted": True}
    
    # Stores all found instruments
    instruments_in_song = set()
    
    # Iterate through stream parts
    for stream_part in midi.parts:
        stream_instrument = instrument.partitionByInstrument(stream_part)
        if stream_instrument:
            for instr in stream_instrument.recurse().parts:
                print("Instrument: {0}".format(instr.getInstrument()))
                instruments_in_song.add(instr.getInstrument())
    
    print(instruments_in_song)