2

即使乐谱中的那个偏移量没有对应的元素,我怎么能有规律的间隔歌词?

我需要去做:

myElement.lyric = 'bla bla'

我可以创建隐形元素吗?

4

1 回答 1

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

于 2016-02-03T17:15:20.093 回答