gpt4 book ai didi

python - 提取 MusicXML 中调性变化的小节数

转载 作者:行者123 更新时间:2023-12-01 05:48:54 25 4
gpt4 key购买 nike

我经常使用 MusicXML 文件,并尝试编译一个小节列表,其中许多片段都有关键更改。我需要一些使用 python 的帮助来首先确定 <key> 在哪里标 checkout 现在XML文件中,然后从<measure number ='*'>中提取数字上面的标签。以下是我正在使用的措施的示例:

<measure number='30' implicit='yes'>
<print new-page='yes'/>
<barline location='left'>
<bar-style>heavy-light</bar-style>
<repeat direction='forward'/>
</barline>
<attributes>
<key>
<fifths>-1</fifths>
<mode>major</mode>
</key>
</attributes>
<direction>
<direction-type>
<dynamics default-y='-82'>
<p/>
</dynamics>
</direction-type>
<staff>1</staff>
</direction>
<direction>
<direction-type>
<words default-y='15' relative-x='4'>
</direction-type>
<staff>1</staff>
</direction>
<note>
<pitch>
<step>F</step>
<octave>5</octave>
</pitch>
<duration>768</duration>
<voice>1</voice>
<type>quarter</type>
<stem>down</stem>
<staff>1</staff>
<notations>
<ornaments>
<trill-mark default-y='20'/>
<wavy-line type='start' number='1'/>
<wavy-line type='stop' number='1'/>
</ornaments>
</notations>
</note>
</measure>

如何提取'30'少量?有没有一种快速、简单的方法可以用 music21 来做到这一点?

最佳答案

在music21中你可以这样做:

from music21 import *
s = converter.parse(filepath)
# assuming key changes are the same in all parts, just get the first part
p = s.parts[0]
pFlat = p.flat
keySigs = pFlat.getElementsByClass('KeySignature')
for k in keySigs:
print k.measureNumber

对于您感兴趣的简单案例,John K 的回答会很好。但是,如果您想做一些更复杂的事情(例如确定调性更改时的当前计,查看关键区域是否分析为与签名相同的调性等),那么 music21 可能会有所帮助。

(编辑:透露我是该软件包的制作者)。

关于python - 提取 MusicXML 中调性变化的小节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15101385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com