如何在music21中获取音符的时长数值
如何在music21中获取音符的时长数值
嗨,我之前也碰到过这个困惑!其实music21里的Duration对象本身就自带了几个能直接拿到纯数值的属性,完全不用自己写额外逻辑,给你整理几个常用的:
quarterLength:这是最常用的,返回以四分音符为基准的时长数值。比如全音符会返回4.0,八分音符是0.5,附点四分音符是1.5,刚好就是你看到的Duration对象里显示的那个{number}数值。举个简单例子:
from music21 import note my_note = note.Note("D5") # 默认是四分音符,所以输出1.0 print(my_note.duration.quarterLength)
seconds:如果你需要的是实际播放的秒数,这个属性会根据当前的乐曲速度(tempo)自动计算。默认情况下速度是每分钟60拍,也就是四分音符对应1秒,要是你设置了不同的速度,它会跟着调整:
# 假设我们设置速度为每分钟120拍 from music21 import tempo, stream my_stream = stream.Stream() my_stream.append(tempo.MetronomeMark(number=120)) my_stream.append(my_note) # 此时四分音符时长变成0.5秒 print(my_note.duration.seconds)
要是你还想探索更多属性,直接用dir(my_note.duration)就能列出Duration对象的所有可用属性和方法,找起来超方便~
备注:内容来源于stack exchange,提问作者Apostolos
相关产品推荐
相关产品推荐

