即使乐谱中该偏移处没有对应元素,我如何才能定期获得歌词?
我需要做的:
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() 对象,并希望它看起来像歌词。
关于python - music21 如何创建一个 element.lyric 即使在该偏移处没有音符或元素(创建一个不可见的元素?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35175982/