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

标签 python music21

即使乐谱中该偏移处没有对应元素,我如何才能定期获得歌词?

我需要做的:

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/

相关文章:

python mysql 无法捕获异常

python - 自定义matplotlib图像显示添加copy/paste

python - Django 自定义 404 页面不工作

python - 如何在 Pandas 中用 NaN 替换浮点值?

python - 为什么插入后stream.Parts 的格式不正确?

python - music21 --> stream.chordify() 不起作用

python - Python(或一般的 CS)中的循环或分层字典式数据结构?

xml - music21格式流为ABC+并保存为文件

python - 你如何在 Music21 中给音符上色?