识别不同流中的同时注释

时间:2018-04-11 19:15:57

标签: python music21

我想确定何时应该同时播放来自两个不同部分/乐器的音符。

https://cdn.shopify.com/s/files/1/1280/7719/products/Air_on_the_G_String_Preview.jpg?v=1464908099

拍摄上面的乐谱。在第三个测量中,高音谱号的重音A和低音谱号的B应该齐声播放。如何解析music21流并找到所有这些实例?

我知道一件作品的每个“部分”都可以按照其注释的顺序进行解析:

numParts = len(piece.parts)
for i in range(numParts):
    part = piece.parts[i].flat.notesAndFlats
    for note in part:
        #will access each note or chord in the part sequentially

但这不允许我确定第一部分中的音符何时与第2部分中的音符同时开始。

1 个答案:

答案 0 :(得分:0)

遍历每个部分的偏移量。但是考虑到有很多笔记不匹配,而且每个笔记通常都有不同的长度。

oiter = stream.iterator.OffsetIterator(parts[0])
for groupedElements in oiter:
    print(groupedElements, groupedElements[0].quarterLength, groupedElements[0].offset)

稍后检查这些部件是否具有相同的偏移量。如果有,那么这些音符会同时播放。