music21如何创建一个element.lyric,即使该偏移处没有音符或元素(创建一个不可见的元素?)

时间:2016-02-03 11:36:43

标签: python music21

即使分数中的偏移量没有相应的元素,我怎样才能定期播放歌词?

我需要这样做:

myElement.lyric = 'bla bla'

我可以创建隐形元素吗?

1 个答案:

答案 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()对象,并希望它可以看起来就像一首歌词。