即使乐谱中的那个偏移量没有对应的元素,我怎么能有规律的间隔歌词?
我需要去做:
myElement.lyric = 'bla bla'
我可以创建隐形元素吗?
如果您想将歌词放在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() 对象,并希望它可以看起来像一首歌词。