即使分数中的偏移量没有相应的元素,我怎样才能定期播放歌词?
我需要这样做:
myElement.lyric = 'bla bla'
我可以创建隐形元素吗?
答案 0 :(得分:1)
如果你想在music21
的“空”位置放歌词,答案很简单。只需创建一个note.Lyric
对象并将其放在base.ElementWrapper
中即可。例如:
s = stream.Measure()
n = note.Note()
n.lyric = "Hel-"
s.insert(0, n)
l = note.Lyric('-lo')
ew = base.ElementWrapper(l)
s.insert(1, ew)
现在你有一个带有音符的流,音符1(偏移0)上的歌词和节拍2(偏移1)上的抒情歌。
我已经猜到了你的下一个问题,“当我在[Finale / MuseScore / Sibelius / VexFlow / Lilypond]中展示它时为什么不显示?”
music21
中可以表示的内容与任何给定格式中可以导出的内容之间存在差异。一些格式,如Lilypond或Humdrum,能够将歌词直接放入乐谱中。一些可能的格式有music21支持(我相信只是Lilypond)。有些格式支持它,但music21没有。然后有些格式不支持它,例如MusicXML。但是,有一些解决方法,例如在某个位置创建休息,附加歌词,然后隐藏其余部分。这就是大多数MusicXML客户端所做的事情。然后存在music21
可能支持某个功能的问题,格式可能支持该功能,但音乐符号客户端可能不支持(例如,music21支持ossias; MusicXML也支持;而Finale也支持;但Finale确实如此;不支持导入或导出MusicXML ossias。)
了解可能性的最佳方法是在符号软件中创建所需内容,将其导出为musicxml。将musicxml导入music21并查看哪些类型的music21对象代表这些歌词。然后从music21导出回musicxml,然后重新导入您的乐谱软件。
对不起,这不是一个简单的答案。这是一件比较复杂的事情。
作为一种解决方法 - 许多人选择在该位置放置一个TextExpression()对象,并希望它可以看起来就像一首歌词。