Music21 如何创建一个元素.Lyric,即使该偏移量没有音符或元素(创建一个不可见的元素?



即使乐谱中没有相应的元素,我怎么能定期有歌词?

我需要做:

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 不支持导入或导出 MusicXML 骨。

查看可能性的最佳方法是在制谱软件中创建所需的内容,将其导出为musicxml。 将 musicxml 导入 music21 并查看哪些类型的 music21 对象代表这些歌词。 然后从 music21 导出回 musicxml,并重新导入到您的制谱软件中。

对不起,这不是一个简单的答案。 这是更复杂的事情之一。

作为解决方法 - 许多人选择将TextExpression((对象放在该位置,并希望它可以看起来像歌词一样。

最新更新